Как отправлять SMTP-письма через другой сервер?

Я использую несколько серверов Debian/Ubuntu, с одним основным, основным сервером, к которому подключаются все остальные веб-серверы. Однако сейчас, когда наш главный сервер отправляет электронное письмо (например, кто-то отправляет электронное письмо через наш административный веб-интерфейс), в первом заголовке "Received:" указывается адрес нашего главного сервера, которого мы хотим избежать.

Поэтому я планировал настроить способ отправки электронного письма через сервер, с которого оно действительно должно исходить. Поэтому, когда мы отправляем электронное письмо от программного обеспечения на www.backend.com, я бы хотел, чтобы заголовки отражали www.frontend.com. Я попытался найти SMTP-прокси для Ubuntu, но ничего не нашел, кроме как искать что-то под названием MTA.

Я играл с nullmailer и msmtp, но я не могу заставить их работать так, как я ожидаю, например, настроить учетные данные SMTP на www.backend.com, чтобы эта учетная запись указывала на www.frontend.com и подключите сервер переднего плана к нашему поставщику электронной почты. Возможно ли то, что я пытаюсь сделать?


РЕДАКТИРОВАТЬ TL;DR

Я продолжаю пытаться настроить SMTP-серверы ретрансляции, но не могу подключиться к своему SMTP-серверу с постфиксом удаленно. Как настроить простой сервер ретрансляции электронной почты в Debian Ubuntu? Не уверен, что это даже правильный термин, потому что, кажется, есть сотни статей, объясняющих, как, но я не могу заставить работать ни одну.

1 ответ

Решение

Ваш MTA - это постфикс, и вы хотите использовать его дважды; в качестве хоста INTRANET и граничного реле. Поэтому первым шагом является не удаление полученного заголовка, а проверка того, что реле разрешено и происходит, что добавит ретранслятор "внешнего интерфейса" в заголовки. Как только реле функционирует, реле может удалить или заменить строки заголовка.

ретрансляция

На реле (FRONTEND) документы #relay_from

mynetworks = 127.0.0.0/8 IP_OF_BACKEND/32 ...others?

На отправителя (BACKEND) relayhost

relayhost = [www.frontend.com]

Фильтрация по реле

Для простых фильтров достаточно header_checks.

 header_checks = pcre:/etc/postfix/header_checks

(pcre - убедитесь, что установлена ​​поддержка postfix-pcre, или выполните отладку регулярных выражений POSIX в следующей ссылке.)

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

Таким образом, после изучения реально полученных заголовков, которые вы хотите заменить, и принятия решения о том, какую часть (и) оставить в качестве групп регулярных выражений, ваша замена может выглядеть примерно так:

 /^Received: from www.backend.com.*id\s(\w+).*/
   REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1]) with SMTP id $1

Удаление полученного заголовка по сути то же самое, но можно использовать IGNORE действие вместо REPLACE и требует более простого регулярного выражения, так как не существует замещающего заголовка для построения. Однако удаление заголовков с большей вероятностью вызовет проблемы при добавлении Milters и т. Д. Для последующих требований.

Другие вопросы по тегам