在配置为通常直接发送邮件(互联网站点)的 Postfix 邮件服务器上,我想对某些收件人域(在此示例中,为了简单起见,仅使用 gmail.com)实施条件标头检查,以让 Postfix 使用智能主机。但是,它没有使用智能主机 smtp.google.com 进行身份验证,而是直接发送收件人为 *@gmail* 的邮件(如果我故意设置了错误的密码,它不会抱怨)。
我在 /etc/postfix/ 中创建了以下文件:
中继密码:
smtp.google.com [email protected]:mypassword
标头检查:
^To: <*@gmail*>/ FILTER relay:smtp.gmail.com:25
并在 main.cf 中引用它们,并附加选项:
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/relay_passwd
header_checks = regexp:/etc/postfix/header_checks
现在我对文件进行了 postmap(并且从那时起多次重新启动了 postfix):
# postmap relay_passwd
# postmap header_checks
并发出警告:
postmap: warning: header_checks, line 1: record is in "key: value" format; is this an alias file?
但我想这不是问题,对吧?无论如何,我肯定做错了什么。
我找到了以下线索,但它们并不完全是我想要的:
main.cf 中的顺序是否相关?header_checks 中的正则表达式是否正确?
答案1
这应该可以做到,你的中继配置看起来不错。
/^To: (.*?)@gmail.com$/ FILTER smtp:smtp.gmail.com
此外,您不需要对正则表达式文件进行后期映射。
来源:马塞洛格