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

sendmail и Smarthosting на основе определенного порта

У меня есть VPS с экземпляром sendmail, который используется для доставки почты с нескольких сайтов Wordpress, которые я размещаю. Sendmail находится на той же машине, что и сайты Wordpress, и я очень хочу сохранить его таким образом для более быстрой передачи локальной почты. Сервер sendmail прослушивает только локальные соединения и также защищен брандмауэром от входящих соединений.

Два моих клиента используют G-Suite, а один - Office 365. Оба из них могут принимать почту для ретрансляции, при условии, что они настроены на доверие IP-адресу отправляющего устройства. Другие отправляют напрямую и вносят этот сервер в белый список в своих записях SPF.

Можно ли настроить sendmail на автоматическое прослушивание дополнительных портов, а затем на smarthost почту, отправляемую через определенный порт, на конкретную службу?

G-Suite имеет одну точку ретрансляции (smtp-relay.gmail.com), тогда как каждый домен O365 имеет свой собственный уникальный домен example-com.mail.protection.outlook.com. Я не возражаю против настройки каждой комбинации порта / смарт-хоста, но хочу знать, возможно ли это, и если да, то как это настроить.

Например:

Затем я бы настроил каждый из экземпляров отправки почты для связи с определенным портом:

Что ж, в основном есть три способа справиться с этой проблемой, как обычно, лучший, олдскульный и джедайский :). Лучший способ - окончательно выбросить sendmail в 2018 году и начать использовать postfix или exim, где маршрутизацию почты можно было бы легче настроить.

Старый способ - и, вероятно, тот, который вы ищете, - это создание отдельных sendmail.cf файлы для каждого входящего порта, который вы хотите использовать, указав порт прослушивания и соответствующий смарт-хост в каждом из них, и запустить разные sendmail демоны с каждым. Это было то, что было до 8.10, когда sendmail наконец смог прослушивать несколько портов одновременно в качестве демона.

Способ джедаев - создать собственный набор правил, используя sendmail.cf синтаксис, в котором маршрутизация будет изменена в зависимости от значения $&{daemon_name} значение макроса и установите соответствующее значение для каждого экземпляра порта прослушивания через DaemonPortOptions('Name=MyServerName') вариант (пришлось отредактировать это из-за обратных кавычек). Вероятно, это будет участок кода длиной не более 8 строк, учитывая, что вы будете использовать хэш-таблицу для поиска смарт-хоста на основе этого значения.

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

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