У меня есть сервер SendMail. Я хочу, чтобы трафик, идущий на "специальные" домены, перенаправлялся в другое место. Я сделал это, рассматривая некоторые домены как «локальные» и используя простую логику маршрутизации:
1) При отправке на специальные домены (например, DOMAINA.com или DOMAINB.com) отправьте на 1.1.1.1.
dnl # define mail_hub to special route
define(`MAIL_HUB',`relay:[1.1.1.1]')dnl
dnl # define list of 'local' domains that will be forwarded to the mail hub
define(`confCW_FILE',`/etc/mail-tls/special_domains')dnl
2) В противном случае отправьте в 2.2.2.2
define(`SMART_HOST',`relay:[2.2.2.2]')dnl
Кажется, это отлично работает. Но теперь у меня есть требование усложнить логику:
1) При отправке на специальные домены (например, DOMAINA.com или DOMAINB.com) и отправитель конверта НЕ отправка с sender@mydomainexample.com, отправить на 1.1.1.1
2) В противном случае отправьте в 2.2.2.2
Есть ли простой способ сделать это (не требуя milter)?
Вы можете комбинировать два рецепта sendmail.cf:
1) MailertableRuleSets - позволяет выбрать настраиваемый набор правил sendmail.cf для маршрутизации электронной почты через mailertable (настраиваемая маршрутизация по домену получателя)
Предупреждение: требуется патч из нескольких строк одного из файлов, используемых для генерации sendmail.cf
"Наборы правил Mailertable (sendmail)" от anfi (2004)
2) SmartTable - показывает, как выполнять маршрутизацию на основе адреса отправителя конверта ($f
)
"Умный стол (sendmail)" от anfi (1999,2002)
ПРЕДУПРЕЖДЕНИЕ: sendmail сохраняет исходный адрес отправителя в
$f
при отправке сообщений о недоставке
(AFAIR при попытке доставки "сразу").