null

Организация простого релеинга электронной почты

 
Ни для кого не секрет, что такой чудесный продукт как Zabbix умеет отправлять письма при определенных обстоятельствах.
Проблема заключается в том, что он пытается отправить письмо только единожды и, если внезапно целевой почтовый сервер будет недоступен, полезная информация так никогда и не дойдёт до получателя.
 
Решением проблемы является поднятие своего mail-сервера в локальной сети (или даже на той же машине), работающего в режиме релеинга и который гарантированно будет доступен.
Собственно, он займётся приёмом писем, их складированием в определенное место и настойчивой отправкой по назначению. Попытки отправки будут повторяться до победного.
 
Поднимать какой-нибудь толстый postfix ради такой небольшой задачи просто нецелесообразно, и я занялся поиском более "лёгкого" решения.
Критериями поиска являлись наличие в портах FreeBSD, лёгкость настройки и низкое потребление ресурсов.
 
И тут мой взор пал на /usr/ports/mail/emailrelay. Бинарник весит 800k и, по заверениям на официальном сайте, настраивается за 5 минут.
 
Работает он следующим образом: SMTP сервер принимает письма и складирует их в назначенную директорию. Далее, в зависимости от настройки, собранные письма разом отправляются получателям по таймеру или по желанию администратора.
 
Схема работы с официального сайта:
 
 
 
Сборка и настройка.
 
Начинается всё тривиально
$ cd /usr/ports/mail/emailrelay && make install clean
 
ВАЖНО! Если вы пользуетесь ipv4 (а я почему-то уверен, что вы пользуетесь именно этой версией), то перед сборкой следует поменять следующую строчку в Makefile:
 
$ diff -ru Makefile.old Makefile
-CONFIGURE_ARGS=        --without-pam --enable-ipv6
+CONFIGURE_ARGS=        --without-pam --disable-ipv6
 
В противном случае, emailrelay соберется с поддержкой ipv6 и БЕЗ поддержки ipv4. Аплодисменты разработчикам.
 
Конфиг находится тут: /usr/local/etc/emailrelay.conf и был мной написан следующим образом:
 
spool-dir /var/spool/emailrelay #тут указывается директория для складирования 
#писем(не забываем настроить права!)

forward-to mailserver.anydomain #почтовый сервер, куда письма будут 
#перенаправлены

poll 1 #время в секундах между попытками отправить письмо на сервер, 
#указанный в forward-to. Также может быть выствлен в 0. Тогда собранные письма
#нужно будет отправлять вручную командой emailrelay --as-client

port 2525 #порт, на котором будет сидеть emailrelay
 
Запускаем
 
$ emailrelay --as-server
 
Остаётся только сказать Zabbix'у, что почтовый сервер теперь на localhost:port (в случае установки релея на ту же машину).
Наслаждаемся письмами, которые теперь точно будут отправлены на вашу (или не вашу) почту.
 
Назад