Mysmpt-t

From JaWiki (Jabber/XMPP wiki)
Revision as of 11:15, 1 June 2008 by Grumbler (Talk | contribs) (Установка MySMTP-t: - уточнён список модулей Perl)

Jump to: navigation, search

MySMTP-t - легковесный шлюз Jabber-SMTP (транспорт в терминологии jabber), который осуществляет прозрачное преобразование Jabber-трафика в SMTP и обратно. Транспорт MySMTP-t написан на Perl.

Целевая аудитория документа: администраторы серверов Jabber.


Установка MySMTP-t

Скачать все необходимые файлы можно из SVN svn://mytlt.ru/mysmtp-t На данный момент (май 2008) проект насчитывает четыре файла:

  • smtp
    отвечает за регистрацию пользователей, отправку сообщений из Jabber в SMTP, работает в режиме демона;
  • smtpbot
    отвечает за приём сообщений от почтового сервера и отправку их в Jabber, отправляет сообщения на авторизацию;
  • smtp.ini
    конфигурационный файл;
  • tidy.cfg
    конфигурационный файл Tidy.

В процессе использования будет создан ещё файл smtp.db, который содержит информацию о пользователях.

Для работы потребуется:

  • Perl5 (проверялось на Perl-5.8.8) модули:
    1. внешние
      DBI
      DBD::SQLite
      HTML::Tidy;
      Net::Jabber (и Net::XMPP)
      Mail::Sendmail
      MIME::Parser
    2. стандартные
      utf8;
      Data::Dumper;
      Getopt::Long;
      Encode;
      HTTP::Request;
      MIME::Base64;
      MIME::QuotedPrint;
  • MTA, например, Postfix
  • собственно сервер Jabber

Настройка производится в нескольких местах: сам транспорт, база данных транспорта, почтовый агент, Jabber-сервер.

Настройка самого транспорта

Настройка транспорта производится в файле smtp.ini. Пример данного файла приводится в дистрибутиве:

# Our service name (FQDN)
name=smtp.jabber.org.net.ru
# Jabbber server
server=jabber.org.net.ru
# Port on jabber server
port=5333
# Secret that is using while connecting to jabber server
password=seCREt
# Logfile to output information
logfile=log.txt
# Turn on debugging
# debug=1

name - это полное имя сервиса в Jabber. То есть имя вида: smtp.my.jabber.server.ru, где my.jabber.server.ru - имя Вашего сервера Jabber.
server - полное DNS имя Вашего Jabber-сервера.
port - прослушиваемый порт Jabber-сервера, к которому следует подключаться транспорту.
password - пароль на подключение сервиса.
logfile - имя файла для логов.
debug - включение режима отладки.

Следует отметить, что при отсутствии имени сервиса оно будет выбрано автоматически путём добавления к имени сервера префикса smtp и знака точки. То есть для сервера jabber.org автоматически выбранное имя будет smtp.jabber.org.


Настройка сервера Jabber

В сервере Jabber нужно настроить порт для приёма соединения от транспорта, для примера из предыдущего параграфа - 5333.

Пример для ejabberd, в случае, если транспорт установлен на том же сервере:

{5333, ejabberd_service, [{access, all},
                          {ip, {127, 0, 0, 1}},
                          {hosts, ["smtp.jabber.org.net.ru"], [{password, "seCREt"}]}
                         ]
}
,

Настройка MTA Postfix

Если у Вас уже имеется настроенный MTA Postfix, то изменения конфигурации для поддержания дополнительного домена будут минимальные, в случае необходимости настройки следует обратиться к официальной документации, так как объём данного документа не позволяет нам покрыть даже часть возможных вариантов настройки почтового сервера пусть даже небольшого масштаба.

Итак, для настройки postfix нам необходимо внести изменения в файлы main.cf и master.cf, которые можно отнести, пожалуй, к самым главным файлам настройки postfix и в файле transport, который указывает на маршрутизацию писем по получателю.

Изменения в файле main.cf

В пункт mydestination необходимо добавить обслуживаемый jabber-домен, например для jabber.org:

mydestination = $myhostname, localhost, jabber.org

(в данном случае добавлен только jabber.org в конец списка) Также требуется отключить проверку пользователей домена jabber на присутствие в системе:

local_recipient_maps =

То есть достаточно присвоить этому параметру пустое значение. (Такая настройка небезопасна в отношении спама!) Чтобы исключить опасность, необходимо создать дополнительный файл, который будет содержать запись, что все пользователи jabber-домена являются допустимыми. Подробнее об этом можно прочитать в документации по postfix. Если параметр transport_maps ещё не включает в себя файл transport, то добавьте его:

transport_maps = hash:/etc/postfix/transport

Изменения в файле master.cf

Добавляем следующие строки для транспорта:

jabber  unix  -       n       n       -       -       pipe \
 flags=DRhu user=jabber argv=/opt/jabber/mailgate/smtpbot ${sender} ${recipient}

Здесь в поле user указывается пользователь, с правами которого работает jabber-сервер, и в параметре argv указывается полный путь до файла smtpbot в файловой системе сервера.

Изменения в файле transport

В файл transport вписываем строчку для нашего домена (на примере jabber.org):

jabber.org         jabber:

Проверка и запуск

После завершения настройки необходимо выполнить команду postmap transport, задать postfix команду перечитать конфигурацию (в Linux - /etc/init.d/postfix reload) и в файле /var/log/mail проверить, что postfix работает нормально. Затем можно в клиенте jabber подключаться к транспорту и пересылать сообщения из jabber на email и наоборот.