我有一台 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)并且信封发件人是不是发自[电子邮件保护],发送至 1.1.1.1
2)否则发送至 2.2.2.2
有没有简单的方法可以做到这一点(不需要过滤机)?
答案1
您可以组合两个 sendmail.cf 配方:
1) MailertableRuleSets - 它允许选择 sendmail.cf 自定义规则集,通过 mailertable 进行电子邮件路由(按收件人域进行自定义路由)
警告:它需要对用于生成 sendmail.cf 的文件之一进行几行修补
anfi 撰写的“Mailertable 规则集 (sendmail)”(2004 年)
2)SmartTable - 它显示如何根据信封发件人地址进行路由($f
)
anfi 的“智能表 (sendmail)”(1999年,2002年)
警告:
$f
sendmail在发送退回邮件时保留原始发件人地址
(AFAIR 在“立即”传递尝试中)。