Difference between revisions of "Mysmpt-t"
m («Mysmpt-t» переименована в «Gateway:SMTP:Mysmpt-t»: Для консистентности имен) |
m (Опечатка в категории Howto --> How To) |
||
(15 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | '''MySMTP-t''' - легковесный шлюз Jabber-SMTP, который осуществляет прозрачное преобразование Jabber трафика в SMTP и обратно. | + | '''MySMTP-t''' - легковесный шлюз Jabber-SMTP (транспорт в терминологии jabber), который осуществляет прозрачное преобразование Jabber-трафика в SMTP и обратно. Транспорт '''MySMTP-t''' написан на [[Perl]]. |
− | Целевая аудитория: администраторы | + | Целевая аудитория документа: администраторы серверов Jabber. |
---- | ---- | ||
+ | == Установка MySMTP-t == | ||
Скачать все необходимые файлы можно из SVN svn://mytlt.ru/mysmtp-t | Скачать все необходимые файлы можно из SVN svn://mytlt.ru/mysmtp-t | ||
− | На данный момент проект насчитывает | + | На данный момент (май 2008) проект насчитывает четыре файла: |
− | smtp | + | ; smtp : отвечает за регистрацию пользователей, отправку сообщений из Jabber в SMTP, работает в режиме демона; |
− | smtpbot | + | ; smtpbot : отвечает за приём сообщений от почтового сервера и отправку их в Jabber, отправляет сообщения на авторизацию; |
− | smtp.ini | + | ; smtp.ini : конфигурационный файл; |
+ | ; tidy.cfg : конфигурационный файл Tidy. | ||
В процессе использования будет создан ещё файл smtp.db, который содержит информацию о пользователях. | В процессе использования будет создан ещё файл smtp.db, который содержит информацию о пользователях. | ||
Для работы потребуется: | Для работы потребуется: | ||
− | Perl5 (проверялось на Perl-5.8.8)модули: | + | * [[Perl|Perl5]] (проверялось на Perl-5.8.8) и модули к нему: |
− | + | *# внешние: | |
− | + | *#* DBI; | |
− | + | *#* DBD::SQLite; | |
− | + | *#* HTML::Tidy; | |
− | + | *#* HTTP::Request; | |
− | + | *#* [[Net::Jabber]] (и [[Net::XMPP]]); | |
− | + | *#* Mail::Sendmail; | |
− | MTA Postfix | + | *#* MIME::Parser; |
− | + | *#* MIME::Base64; | |
+ | *#* MIME::QuotedPrint; | ||
+ | *# стандартные: | ||
+ | *#* utf8; | ||
+ | *#* Data::Dumper; | ||
+ | *#* Getopt::Long; | ||
+ | *#* Encode. | ||
+ | * 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: полное доменное имя вашего 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, то изменения конфигурации для поддержания дополнительного домена будут минимальные, в случае необходимости настройки следует обратиться к [http://www.postfix.org официальной документации], так как объём данного документа не позволяет нам покрыть даже часть возможных вариантов настройки почтового сервера пусть даже небольшого масштаба. | ||
+ | |||
+ | Итак, для настройки 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 и наоборот. | ||
+ | |||
+ | [[Category:Gateway]] | ||
+ | [[Category:HowTo]] |
Latest revision as of 10:01, 5 June 2008
MySMTP-t - легковесный шлюз Jabber-SMTP (транспорт в терминологии jabber), который осуществляет прозрачное преобразование Jabber-трафика в SMTP и обратно. Транспорт MySMTP-t написан на Perl.
Целевая аудитория документа: администраторы серверов Jabber.
Contents
Установка MySMTP-t[edit]
Скачать все необходимые файлы можно из SVN svn://mytlt.ru/mysmtp-t На данный момент (май 2008) проект насчитывает четыре файла:
- smtp
- отвечает за регистрацию пользователей, отправку сообщений из Jabber в SMTP, работает в режиме демона;
- smtpbot
- отвечает за приём сообщений от почтового сервера и отправку их в Jabber, отправляет сообщения на авторизацию;
- smtp.ini
- конфигурационный файл;
- tidy.cfg
- конфигурационный файл Tidy.
В процессе использования будет создан ещё файл smtp.db, который содержит информацию о пользователях.
Для работы потребуется:
- Perl5 (проверялось на Perl-5.8.8) и модули к нему:
- внешние:
- DBI;
- DBD::SQLite;
- HTML::Tidy;
- HTTP::Request;
- Net::Jabber (и Net::XMPP);
- Mail::Sendmail;
- MIME::Parser;
- MIME::Base64;
- MIME::QuotedPrint;
- стандартные:
- utf8;
- Data::Dumper;
- Getopt::Long;
- Encode.
- внешние:
- MTA, например, Postfix
- собственно сервер Jabber
Настройка производится в нескольких местах: сам транспорт, база данных транспорта, почтовый агент, Jabber-сервер.
Настройка самого транспорта[edit]
Настройка транспорта производится в файле 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
- полное доменное имя вашего Jabber-сервера.
- port
- прослушиваемый порт Jabber-сервера, к которому следует подключаться транспорту.
- password
- пароль на подключение сервиса.
- logfile
- имя файла журнала.
- debug
- включение режима отладки.
Следует отметить, что при отсутствии имени сервиса оно будет выбрано автоматически путём добавления к имени сервера префикса smtp и точки. Например, для сервера jabber.org автоматически выбранное имя будет smtp.jabber.org.
Настройка сервера Jabber[edit]
В сервере Jabber нужно настроить порт для приёма соединения от транспорта, для примера из предыдущего параграфа - 5333.
Пример для ejabberd, в случае, если транспорт установлен на том же сервере:
{5333, ejabberd_service, [{access, all}, {ip, {127, 0, 0, 1}}, {hosts, ["smtp.jabber.org.net.ru"], [{password, "seCREt"}]} ] } ,
Настройка MTA Postfix[edit]
Если у Вас уже имеется настроенный MTA Postfix, то изменения конфигурации для поддержания дополнительного домена будут минимальные, в случае необходимости настройки следует обратиться к официальной документации, так как объём данного документа не позволяет нам покрыть даже часть возможных вариантов настройки почтового сервера пусть даже небольшого масштаба.
Итак, для настройки postfix нам необходимо внести изменения в файлы main.cf и master.cf, которые можно отнести, пожалуй, к самым главным файлам настройки postfix и в файле transport, который указывает на маршрутизацию писем по получателю.
Изменения в файле main.cf[edit]
В пункт 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[edit]
Добавляем следующие строки для транспорта:
jabber unix - n n - - pipe \ flags=DRhu user=jabber argv=/opt/jabber/mailgate/smtpbot ${sender} ${recipient}
Здесь в поле user указывается пользователь, с правами которого работает jabber-сервер, и в параметре argv указывается полный путь до файла smtpbot в файловой системе сервера.
Изменения в файле transport[edit]
В файл transport вписываем строчку для нашего домена (на примере jabber.org):
jabber.org jabber:
Проверка и запуск[edit]
После завершения настройки необходимо выполнить команду postmap transport, задать postfix команду перечитать конфигурацию (в Linux - /etc/init.d/postfix reload) и в файле /var/log/mail проверить, что postfix работает нормально. Затем можно в клиенте jabber подключаться к транспорту и пересылать сообщения из jabber на email и наоборот.