在Postfix的helo_restrictions中是否有一种白名单和地址或域的方法?

我正在使用postfix helo_restrictions来黑名单一些垃圾邮件倾向的域名。 其中之一是为需要电子邮件地址的人提供电子邮件服务的服务,但不想运行邮件服务器。 我在我的check_helo_access文件中阻止了这项服务:

domainemailsvc.net拒绝没有垃圾邮件请。

但不幸的是,有几个人通过相同的服务发送合法邮件。 我应该只是从check_helo_access删除该行,并希望spamassassin做它的工作,或有办法将这些特定的电子邮件地址或子域白名单?

来自我的朋友([email protected])的消息示例日志文件条目:

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 

…但这似乎并不奏效。

EHLO / HELO SMTP命令(这是check_helo_access的东西的作用)只有一个主机名作为数据,所以这是所有这个特定的filter可以操作。 因此,您不能使用check_helo_access文件来允许您阻止的主机名/域的特定发件人。

你应该,你想要从这个域中的特定用户的邮件,允许它与check_helo_access。

如果我记得,那么你可以使用sender_access来允许特定的地址,并阻止来自这个域的其他东西。

在postfix中考虑这些检查的一个好方法就是每个人都在SMTP会话的特定部分进行操作,而SMTP会话又具有特定的数据。 领域与HELO发挥作用。 RCPT TO涉及本地地址以供投递。 MAIL FROM涉及发件人地址。 等等。 确定要过滤的SMTP对话的哪一部分,然后使用与之关联的Postfix检查。

感谢@malcolmpdx指引我正确的方向。 sender_access实际上是如何使用一些基本的正则expression式来完成的:

在main.cf中:

 smtpd_sender_restrictions = check_sender_access pcre:/etc/postfix/sender_access 

在sender_access中:

 /^.*[email protected]$/ OK /^.*domainemailsvc.net$/ REJECT