Введение

Серверное программное обеспечение

ejabberd — это сервер приложений для протокола расширяемого обмена сообщениями и присутствия (XMPP) и брокер MQ Telemetry Transport (MQTT), написанный преимущественно на языке программирования Erlang. Он может работать в различных Unix-подобных операционных системах, таких как macOS, Linux, FreeBSD, NetBSD, OpenBSD и OpenSolaris. Кроме того, ejabberd может работать под управлением Microsoft Windows. Название ejabberd происходит от Erlang Jabber Daemon (Jabber — прежнее название XMPP) и пишется только строчными буквами, что характерно для программного обеспечения-демона. ejabberd — это свободное программное обеспечение, распространяемое на условиях лицензии GNU GPL 2.0 или более поздней версии, и одно из самых популярных приложений с открытым исходным кодом, написанных на Erlang. В книге «XMPP: The Definitive Guide» (O'Reilly Media, 2009) ejabberd был отмечен за масштабируемость и возможности кластеризации, при этом указывалось, что использование Erlang может стать препятствием для принятия программного обеспечения пользователями и разработчиками. Создатель программного обеспечения, Алексей Щепин, был удостоен награды Erlang User of the Year на конференции пользователей Erlang в 2006 году. ejabberd используется в ряде известных проектов, таких как IETF Groupchat Service, BBC Radio LiveText, Nokia Ovi, KDE Talk, а также разрабатывается для Facebook. По состоянию на 2009 год ejabberd был самым популярным сервером среди небольших сайтов, использующих XMPP и зарегистрированных на xmpp.org. С выходом следующей крупной версии после 2.0 (ранее известной как ejabberd 3) схема версионирования была изменена, чтобы отражать дату выпуска в формате «Год.Месяц.Ревизия» (начиная с 13.04 beta1). Также было объявлено о разделении дальнейшей разработки на «ejabberd Community Server» и «ejabberd Commercial Edition», ориентированную на операторов связи, веб-сайты, поставщиков услуг, крупные корпорации, университеты, игровые компании, которым требуется высокий уровень поддержки от ProcessOne, стабильность, производительность и уникальный набор функций для успешного ведения бизнеса.

История проекта

Алексей Щепин начал разработку ejabberd в ноябре 2002 года по трем основным причинам: успех проекта Tkabber (его предыдущий проект, XMPP-клиент), довольно нестабильный первый альфа-релиз jabberd2 и его желание поэкспериментировать с возможностями Erlang. Щепин заявлял, что не стал бы разрабатывать ejabberd без Erlang. Ejabberd достиг версии 1.0 в декабре 2005 года.

Особенности

ejabberd обладает высокой степенью соответствия протоколу XMPP. Он предоставляет веб-интерфейс, который можно перевести на другие языки. ejabberd поддерживает распределенные вычисления посредством кластеризации, обновления в режиме реального времени, общие группы контактов и обеспечивает поддержку виртуальных хостов. Поддерживаемые системы управления базами данных включают PostgreSQL и MySQL, а также ODBC для подключения к другим системам. Поддерживается аутентификация через LDAP, а также вход с использованием SSL/TLS, SASL и STARTTLS. ejabberd расширяем с помощью модулей, которые могут предоставлять поддержку дополнительных функций, таких как сохранение офлайн-сообщений, подключение к каналам IRC или пользовательской базе данных, использующей vCard пользователей (сохранение vCard в LDAP или базе данных, совместимой с ODBC, возможно с использованием других модулей). Кроме того, модули могут обеспечивать поддержку расширений протокола XMPP, таких как MUC, HTTP-опрос, Publish-Subscribe и сбор статистики через XMPP. Начиная с версии 2.0.0, ejabberd также включает поддержку прокси-сервера передачи файлов Proxy65, позволяющего пользователям Jabber/XMPP, находящимся за брандмауэрами, обмениваться файлами через SOCKS 5 прокси. ejabberd может взаимодействовать с другими серверами XMPP, а также с сетями обмена мгновенными сообщениями, не использующими XMPP, посредством специального типа компонента XMPP, называемого транспортом или шлюзом.

Методы распределения

В дополнение к пакету исходного кода и двоичным установщикам для Linux, macOS и Windows, ejabberd также доступен в нескольких дистрибутивах операционных систем, что типично для проектов FOSS, включая Debian, Fedora, Gentoo, Ubuntu, Arch Linux, OpenSolaris, FreeBSD Ports, порты OpenBSD, порт NetBSD и Fink для Mac OS X. Другие способы получения ejabberd – библиотека виртуальных образов TurnKey Linux и Comprehensive Erlang Archive Network (CEAN). Устаревшая версия ejabberd включена в состав программного обеспечения для унифицированных коммуникаций Unison.