Дано:
Виртуальная машина(VM) с установленной ОС CentOS 6.4. Локальная сеть с доменом OFFICE.COM
Задача:
Настроить корпоративный jabber(icq)сервер, с авторизацией через LDAP.
Решение.
Для решения поставленной задачи будем использовать бесплатное ПО ejabberd 2.1.11 под Linux. Есть вариант и под windows.
В официальном репозитарии CentOS ejabberd не присутствует, поэтому подключим сторонний репозитарий EPEL
Для x32
# rpm -Uhv http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Для x64
# rpm -Uhv http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
Если на момент установки у вас будет другая версия CentOS, то тогда можно перейти по адресу http://download.fedoraproject.org/pub/epel/ и далее выбрать свою версию, свою платформу, и последний релиз epel.
После установки репозитария запустим обновление пакетов.
# yum update
Запускаем установку ejabberd
# yum install ejabberd
Для настройки авторизацию в ejabberd через LDAP, предварительно создадим группу JABBER и пользователя(userjab), через которого будем читать каталог контроллера.
Переходим в каталог /etc/ejabberd и приступаем к редактированию файла конфигурации ejabberd.cfg
# vi /etc/ejabberd/ejabberd.cfg
Часть строк в этом файле закомментирована, поэтому в некоторых строках надо будет убрать признак комментария %%. Обращаем внимание на окончание строк, в конце, перед комментарием, должна стоять точка!
Внизу приведены только те строки, которые были изменение.
%% Override global options (shared by all ejabberd nodes in a cluster).
override_global.
%%
{hosts, [“office.com”]}. %%Указываем свой домен
%% Authentication using LDAP
{auth_method, ldap}. %% Разрешаем авторизацию через LDAP
%% List of LDAP servers:
{ldap_servers, ["ХХ.ХХ.ХХ.ХХ"]}. %% ip иди ДНС-имя контроллера домена
%% Port to connect to on LDAP servers:
{ldap_port, 389}. %% порт LDAP по умолчанию
{ldap_rootdn, "userjab@office.com"}. %% имя пользователя, которого мы предварительно создали. Примечание: %% пользователю не надо давать права администратора, т.к. ejabberd будет только читать данные, поэтому %% стандартных прав вполне достаточно.
%% Password of LDAP manager:
{ldap_password, "password_user"}. %% Пароль пользователя userjab.
%% Search base of LDAP directory:
{ldap_base, "DC=office,DC=com"}. %%где ищем пользователей
% LDAP attribute that holds user ID:
{ldap_uids, [{“sAMAccountName”,”%u”}]}. %%Формат чтения данных
%% LDAP filter:
%% Отбор пользователей AD по фильтру группы JABBER.
{ldap_filter, "(memberOf=OU=JABBER,DC=office,DC=com)(|(userAccountControl=66050)(userAccountControl=66048))"}.
%%
{acl, admin, {user, "admin", "office.com"}}. %% указываем имя администратора ejabberd(admin@office.com), это %% может быть любой пользователь домена, даже если он не администратор домена!
{language, "ru"}. %%Устанавливаем язык консоли администрирования
%% Модуль, позволяющий получать информацию о пользователи из каталога домена, а также для отображении %% в списке контактов, так, как он заведен в домене(ФИО)
{mod_vcard_ldap,
[{ldap_vcard_map,
[{“NICKNAME”, “%s”, [“displayname”]},
{"GIVEN", "%s", [“givenName”]},
{"MIDDLE", "%s", [“initials”]},
{"FAMILY", "%s", [“sn”]},
{"FN", "%s", [“displayName”]},
{"EMAIL", "%s", [“mail”]},
{"ORGNAME", "%s", [“company”]},
{"ORGUNIT", "%s", [“department”]},
{"CTRY", "%s", [“c”]},
{"LOCALITY", "%s", [“l”]},
{"STREET", "%s", [“streetAddress”]},
{"REGION", "%s", [“st”]},
{"PCODE", "%s", [“postalCode”]},
{"TITLE", "%s", [“title”]},
{"URL", "%s", [“wWWHomePage”]},
{"DESC", "%s", [“description”]},
{"TEL", "%s", [“telephoneNumber”]}]},
{ldap_search_fields,
[{"User", "%u"},
{"Name", "givenName"},
{"Family Name", "sn"},
{"Email", "mail"},
{"Company", "company"},
{"Department", "department"},
{"Role", "title"},
{"Description", "description"},
{"Phone", "telephoneNumber"}]},
{ldap_search_reported,
[{"Full Name", "FN"},
{"Nickname", "NICKNAME"},
{"Email", "EMAIL"}]}
]},
{mod_version, []}
]}.
Приведенных настроек достаточно, чтобы запустить ejabberd. Далее необходимо открыть два внешних порта: tcp 5280 и tcp 5222. Порт 5280 – для администрирования через браузер, 5222 – для подключения клиентов.
# iptables -I INPUT -p tcp –dport 5280 -m state –state NEW -j ACCEPT
# iptables -I INPUT -p tcp –dport 5222 -m state –state NEW -j ACCEPT
# iptables-save > /etc/sysconfig/iptable
или
# service iptables save
Теперь добавим ejabberd в автозагрузку:
# chkconfig ejabberd on
Запускаем ejabberd:
# /etc/init.d/ejabberd start
Проверить статус:
# /etc/init.d/ejabberd status
В случае, если ejabberd не запустился, то нужно смотреть логи: /var/log/ejabberd
Если статус – running, то можно заходить в панель администрирования по адресу:
http://ХХ.ХХ.ХХ.ХХ:5280/admin
Пути расположения файлов:
/etc/ejabberd – файлы конфигурации
/var/log/ejabberd – файлы логов
/usr/lib64/ejabberd – файлы модулей
/var/lib/ejabberd/spool – файлы базы данных
В качестве клиента можно использовать любое свободно по(PSI, Miranda, QIP и др). Адрес подключения клиента:
Сервер: ip сервера, где стоит ejabberd, порт 5222
Ejabberd позволяет подключить MySQL базу, где можно сохранять историю сообщений.
Автор: Юрий(wdiz@bk.ru)