Jabber-сервер для нескольких доменов

Опубликовано

Продолжаю цикл заметок о Jabber.Давайте рассмотрим следующую ситуацию, есть два проекта один - корпоративный сайт (super-corp.ru, второй - информационно развлекательный портал (super-portal.ru), оба принадлежат одной конторе и для каждого нужно сделать Jabber. Естественно - для корпоративного сайта нужно чтобы он был в домене super-copr.ru и на нем нельзя было регистрироваться кому попало, а для портала напротив нужно разрешить публичную регистрацию. Ставить два Jabber-сервера было бы

весьма расточительно в плане расхода ресурсов и материальных средств, но разработчики сервера ejabberd позаботились о такой ситуации, данный сервер умеет работать с т.н. виртуальными хостами, позволяя их по разному настраивать, назначать разных администраторов и т.п. Сегодня на простом примере мы рассмотрим как эту функцию можно использовать.Как всегда возьмем самый обычный VDS, под управлением ОС FreeBSD.Лирическое отступление:Почему я всегда ставлю на VDS? Да все просто, потому что аренда сервера требует более серьезных денежных вливаний, а ставить свои эксперименты на живом сервере, где помимо моих крутятся еще чьи-то сайты мне не позволяет воспитание. Естественно если требуется обслуживание большого количества клиентов нужно арендовать выделенный сервер в Швейцарии. Почему в Швейцарии, да просто так, как пример.Ejabberd мы уже установили и настроили в одной из предыдущих статей, поэтому останавливаться на этом смысла нет.Идем в конфигурационный файл /usr/local/etc/ejabberd/ejabberd.cfg и ищем там

% Host name:{hosts, ["domain.ru"]}.

Приводим вот к такому виду.

% Host name:{hosts, ["domain.ru", "domain2.ru"]}.

Идем в начало конфига, ищем

{acl, admin, {user, "admin"}}.

Приводим к виду

{acl, admin, {user, "admin", "domain.ru"}}.

Это нужно чтобы администратор имел доступ к администрированию всех доменов, обслуживаемых сервером.И что же это нам даст? А даст нам это возможность иметь разные настройки для разных доменов

{host_config, "domain.ru",[{access, register, [{allow, all}]}]}.{host_config, "domain2.ru",[{access, register, [{deny, all}]}]}.

В данном примере для первого домен разрешена публичная регистрация, а для второго запрещена. Как еще применить - каждый придумывает сам.