Назад | Перейти на главную страницу

Пересылка только сообщений о недоставке на другой SMTP-сервер

У меня есть SMTP-сервер Postfix, который отправляет транзакционные электронные письма из веб-службы. Эти сообщения используют VERP в качестве обратного пути, поэтому отказы возвращаются на следующий адрес:

bounce-7232-useremail=userdomain.com@e.mydomain.com

Этот постфиксный сервер работает на e.mydomain.com используется исключительно для отправки электронной почты, нет локальных почтовых ящиков, доступа по протоколам POP или IMAP и т. д. Только системы в локальной сети могут ретранслировать почту через него.

Затем у меня есть отдельное настраиваемое приложение SMTP, которое обрабатывает только отказы, работающие на том же сервере (e.mydomain.com), но на другом порту (8025). Он отбрасывает все сообщения, которые не отправляются на правильно отформатированный адрес возврата. Принимаются электронные письма с правильно отформатированными адресами возврата.

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

Вот мои вопросы:

  1. Было бы лучше настроить мой SMTP-сервер обработки отказов (bounces.mydomain.com) для обработки отказов напрямую (и запускать на порту 25)? Или лучше, чтобы все отказы отправлялись на мой сервер postfix, а затем postfix пересылал только отказы приложению SMTP отказов?

  2. Если лучше, чтобы postfix обрабатывал все входящие сообщения, как мне настроить его для пересылки только сообщений, отформатированных, как указанный выше адрес, на другой SMTP-сервер, работающий на непривилегированном порту (8025)?

Я всегда неохотно предоставляю услуги портам, которые обычно не используются, - не из-за недостатка программного обеспечения, а из-за недостатка людей. Системный администратор, унаследовавший эту настройку, должен уметь отслеживать архитектуру того, «куда отправляются электронные письма при отскоке», иначе ваша документация должна быть довольно ясной (и ее легко найти).

Итак, чтобы ответить на ваш первый вопрос, я предлагаю создать отдельный сервер, который будет обрабатывать отказы. Это делает все хорошо документированным через dns, а не закапывается в файл конфигурации для postfix.

Если вы решите проигнорировать этот совет, использование транспортных карт postfix позволит вам это сделать. Например, добавив это в main.cf:

transport_maps = regexp:/etc/postfix/transport

и используя что-то вроде этого в вашем транспортном файле:

/bounce.*/      smtp:bounces.mydomain.com:8025

(не забудьте "postmap / etc / postfix / transport" и "postfix reload")

Если ваша служба 8025 подсчитывает только отказов для каждого получателя и отбрасывает их, вы также можете запустить отказы через Postfix и делегировать всю функциональность «базы данных отказов» службе политики Postfix. Вместо того, чтобы говорить по SMTP, серверу политик нужно только проанализировать тривиальный протокол, который с ним общается Postfix.