我正在使用 postfix helo_restrictions 将一些垃圾邮件倾向的域列入黑名单。其中一项服务是为那些想要在其域中使用电子邮件地址但不想运行邮件服务器的人提供电子邮件服务。我在 check_helo_access 文件中阻止了该服务:
domainemailsvc.net 拒绝 请勿发送垃圾邮件。
但不幸的是,有几个人通过同一服务发送合法邮件。我是否应该从 check_helo_access 中删除该行并希望 spamassassin 能够完成其工作,或者是否有办法将这些特定电子邮件地址或子域列入白名单?
来自我朋友的消息的日志文件条目示例 ([电子邮件保护]):
Sep 16 11:27:41 myserver postfix/smtpd[19223]: NOQUEUE: reject: RCPT from
bosmailout01.domainemailsvc.net[xx.xx.xx.xx]: 554 5.7.1
<bosmailout01.domainemailsvc.net>: Helo command rejected: No spam please.;
from=<[email protected]>
to=<[email protected]> proto=ESMTP helo=<bosmailout01.domainemailsvc.net>
我尝试将以下内容添加到我的 check_helo_access 文件中:
tomsdomain.com OK
[email protected] OK
...但这似乎不起作用。
答案1
EHLO/HELO SMTP 命令(check_helo_access 工具就是针对该命令的)仅将主机名作为数据,因此该特定过滤器只能针对主机名进行操作。因此,您无法使用 check_helo_access 文件来允许来自您用其阻止的主机名/域的特定发件人。
您应该,您想要从该域中的特定用户获取邮件,请使用 check_helo_access 允许它。
然后,如果我没记错的话,您可以使用 sender_access 来允许特定地址并阻止来自该域的所有其他地址。
在 Postfix 中考虑这些检查的一个好方法是,每个检查都针对 SMTP 对话的特定部分进行操作 - 而这又具有特定的数据。域与 HELO 一起发挥作用。RCPT TO 涉及要传递的本地地址。MAIL FROM 涉及发件人地址。等等。确定要过滤 SMTP 对话的哪个部分,然后使用与其关联的 Postfix 检查。
答案2
感谢@malcolmpdx 为我指明了正确的方向。sender_access 实际上是我使用一些基本的正则表达式来实现这一点的方法:
在main.cf中:
smtpd_sender_restrictions = check_sender_access pcre:/etc/postfix/sender_access
在 sender_access 中:
/^.*[email protected]$/ OK
/^.*domainemailsvc.net$/ REJECT