Category: Без рубрики

  • Ejabberd XMPP server

    \"\"

    В этой статье будет описана поэтапная установка и настройка jabber-сервера ejabberd в Debian-совместимых системах (Ubuntu, Linux Mint и т.п.).

    В первую очередь, перед установкой самого сервера, рекомендуем внести DNS-записи для будущего сервера, новые записи, как правило, активизируются не сразу. Может пройти до 72 часов до того, как они вступят в силу. Допустим, вы устанавливаете xmpp-сервер на домен myxmpp.ru, для этого у регистратора (или у того, чьи DNS-сервера вы используете) надо внести две SRV-записи:

    _xmpp-server._tcp.myxmpp.ru. 86400 IN SRV 5 0 5269 myxmpp.ru.
    _xmpp-client._tcp.myxmpp.ru. 86400 IN SRV 5 0 5222 myxmpp.ru.

     

    Здесь вы можете подробнее прочитать о DNS SRV-записях и их проверке.

    Они нужны для успешного s2s (server to server) сообщения, если вы не планируете связываться с другими xmpp-серверами, а делаете, например, внутренний корпоративный сервер – то вносить эти DNS-записи нет необходимости.

    Для установки свежей версии ejabberd рекомендуем использовать apt-репозиторий apt.jabber.at. Добавляется он так, под рутом введите:

    apt-get install apt-transport-https
    echo \"deb https://apt.jabber.at <dist> ejabberd\" \\
    > /etc/apt/sources.list.d/jabber.at.list
    wget -qO- https://apt.jabber.at/gpg-key | apt-key add -
    apt-get update

     

    Где <dist> замените на название вашего дистрибутива, например на jessie. Список поддерживаемых репозиторием дистрибутивов можно посмотреть здесь.

     

    После этого для установки свежей версии xmpp-сервера достаточно сделать:

    apt-get install ejabberd

     

    Далее, рекомендуем использовать доверенный сертификат, а не самоподписанный, для того, чтобы im-клиенты не задавали лишних вопросов при добавлении вашего сервера. Если вы используете сертификаты от letsencrypt, то для создания файла для ejabberd вам понадобится помимо сертификатов самого домена ещё и Intermediate Certificates Authority X3. Загрузите его:

    wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt

     

    И если у вас уже установлены сертификаты letsencrypt для вашего домена, то создайте файл:

    cat /etc/letsencrypt/live/myxmpp.ru/privkey.pem /etc/letsencrypt/live/myxmpp.ru/fullchain.pem ~/lets-encrypt-x3-cross-signed.pem.txt >> /etc/ejabberd/xmpp.pem

    (где “~/lets-encrypt-x3-cross-signed.pem.txt” – путь к загруженному ранее intermediate-сертификату)

    Теперь перейдём к редактированию конфигурационного файла /etc/ejabberd/ejabberd.yml (может быть ejabberd.cfg в некоторых версиях). Ниже мы отметим только критичные для минимальной установки строки, которые необходимо отредактировать:

    hosts:
      - \"myxmpp.ru\"
    
    listen:
      -
        port: 5222
        certfile: \"/etc/ejabberd/xmpp.pem\"
      -
        port: 5280
        certfile: \"/etc/ejabberd/xmpp.pem\"
        s2s_certfile: \"/etc/ejabberd/xmpp.pem\"
        s2s_use_starttls: optional
    
    acl:
      admin:
        user:
          - \"admin@myxmpp.ru\"
    

     

    Отмеченное цветом это – то, что должно быть обязательно расскоментированно и необходимо изменить в соответствии, с вашим доменом и расположением файла сертификата.

    Значение s2s_use_starttls: true долнжо быть именно optional для того, чтобы работала s2s связь c gmail.com (google talk). Иначе, при попытке связаться с контактами google (хотя с другими XMPP-серверами соединение будет проходить успешно) будет ошибка:

    Closing s2s connection: myxmpp.ru -> gmail.com (invalid dialback key)

     

    Наконец, создайте пользователя, которому выделены права администратора:

    ejabberdctl register admin myxmpp.ru 123456

     

    Где “123456” – пароль.

    И перезагрузите ejabberd:

    /etc/init.d/ejabberd restart

     

    Всё, после этого xmpp-сервер ejabberd должен работать. Можете добавлять пользовотеля admin@myxmpp.ru в xmpp-клиент, создавать по-аналогии других пользователей, изменять конфигурацию, а также использовать администраторский веб-интерфейс по адресу:

    https://myxmpp.ru:5280/admin

     

    – с логином и паролем указанными выше.

    Если после указанных настроек s2s не работает, не происходит авторизации и в логе подобные ошибки:

    @ejabberd_s2s_out:srv_lookup:1215 The DNS servers timed out on request for \"somedomain.com\" IN SRV. You should check your DNS configuration.
    @ejabberd_s2s_out:open_socket:271 s2s connection: myxmpp.ru -> somedomain.com (remote server not found)
    @ejabberd_s2s_out:handle_info:990 Reconnect delay expired: Will now retry to connect to somedomain.com when needed.

     

    – проверьте свой resolv.conf подобно тому, как это описано здесь.