Ejabberd 14.12 на FreeBSD

Для настройки оповещений в системе мониторинга Zabbix решил использовать jabber, поскольку он является штатным средством оповещения.
Итак, имеется сервер FreeBSD-9.3. Ставим на него из портов jabber сервер - ejabberd. Настройки сделаем простейшие, будем использовать шифрование для соединения с клиентами.
Приступаем к установке.

portsnap fetch update
portmaster -D -b --force-config net-im/ejabberd
что установит ejabberd со всеми зависимостями, при этом в начале процесса будут вызваны диалоговые окна конфигурации опций сборки портов.
То же самое с использованием стандартной команды make
cd /usr/ports/net-im/ejabberd
make config-recursive
make install clean

Далее, копируем файлы с примерами конфигурации и проверяем запуск ejabberd
cp -p /usr/local/etc/ejabberd/ejabberd.yml.example /usr/local/etc/ejabberd/ejabberd.yml
cp -p ejabberdctl.cfg.example ejabberdctl.cfg
ejabberdctl start
Если все запустилось нормально и запустились процессы на портах 4369, 5222, 5269, 5280 и нет ошибок в /var/log/ejabberd/ejabberd.log, то все в порядке, идем дальше.
Настроим конфиг, имея ввиду что файл конфига чувствителен к табуляции, для этого изменим в ejabberd.yml следующие директивы.
hosts:
  - "mydomain.com" #наш домен
.....
.....
listen
.....
certfile: "/usr/local/etc/ssl/ejabberd/ssl.pem" # путь к к файлу ключа в формате pem
starttls_required: true # требовать шифрования
.....
acl:
  admin:
    user:
      - "admin_": "mydomain.com" # пользователь для доступа к конфигурации через web интерфейс

Добавим пользователя admin_, для этого (!) нужно с привилегиями пользователя ejabberd выполнить команду:
su ejabberd
ejabberdctl register admin_ mydomain.com password
ejabberdctl stop
, где password - пароль пользователя admin_
Сгенерируем сертификат и приватный ключ
mkdir /usr/local/etc/ssl/ejabberd
chown ejabberd:ejabberd /usr/local/etc/ssl/ejabberd
chmod 700 /usr/local/etc/ssl/ejabberd
cd /usr/local/etc/ssl/ejabberd
openssl req -new -x509 -nodes -newkey rsa:1024 -days 365 -keyout ssl.key -out ssl.crt
cat ssl.key >> ssl.crt
mv ssl.crt ssl.pem
rm ssl.key
chmod 600 ssl.crt

После этого добавляем в /etc/rc.conf
ejabberd_enable="YES"
и запускаем сервер
service ejabberd start

Проверяем, запустились ли процессы на портах и нет ли ошибок в логах. Далее открываем в файрволе порты 5280 для доступа к веб интерфейсу и 5222 для доступа клиентов к серверу. После можно подключиться к веб интерфейсу для управления по адресу mydomain.com:5280/admin, используя созданный аккаунт для admin_ ( имя пользователя это admin_@mydomain.com ).
Дополнительно нужно добавить пользователей, настроить опции безопасности, доступа и ротации логов.
См. https://www.process-one.net/docs/ejabberd/guide_en.html#htoc83
https://www.process-one.net/docs/ejabberd/guide_en.html#htoc26
https://www.process-one.net/docs/ejabberd/guide_en.html#htoc100
Также, для повышения безопасности, рекомендуется, сгенерировав сертификат и ключ pem для https, настроить доступ по защищенному протоколу к веб интерфесу и ограничить доступ к нему внутренней локальной сетью. Тогда доступ будет, например, по адресу
https://192.168.1.1:5282/admin
см. https://www.process-one.net/docs/ejabberd/guide_en.html#htoc80.
На этом простейшая настройка конфига завершена, для более тонкой настройки смотрим мануал
https://www.process-one.net/docs/ejabberd/guide_en.html
или доступный на сервере http://mydomain.com:5280/admin/doc/guide.html
Я подключался клиентом pidgin, все работает ))

Если jabber сервер расположен физически на сервере с доменным именем отличным от доменного имени, используемого в JID, смотрим сюда
http://jawiki.ru/DNS_SRV