Postfix MTA – 匹配头字段中的string

我试图通过过滤邮件头中的一些字段来阻止一些垃圾邮件发送者,但它不起作用。 垃圾邮件发送者正在头部添加随机域,但“用户”总是相同的,如: www-data@ domain1.comwww-data @ domain2等。 我不希望有任何人发送发件人名称为“www-data”的合法邮件,所以我可以放弃。

正在尝试使用但不工作的正则expression式是:

/^(From|Return-Path|Reply-To):.*www-data@.*/ DISCARD known spam sender in $1: header: $2 

我有其他规则也过滤其他方面,如伪造我自己的域,这是工作:

 /^(From|Return-Path|Reply-To):.*\b(@mydomain\.com)\b/ DISCARD forged sender address in $1: header: $2 

我可能做错了什么? 谢谢!

www-data是Web服务器用户的名称,经常用于交易电子邮件,例如Wikipedia通知,因此您应该考虑阻止合法邮件以及受损服务器发送的邮件。 无论如何,你通常不会在From标题中看到它。 更可能是在信封发件人,这可能是为什么你的正则expression式不工作 – 它看错了地方。

要阻止信封发件人,请在smtpd_sender_restrictions中添加一个check_sender_access表,并指定一个localpart @来拒绝。 你不需要使用正则expression式,尽pipe你可以使用pcre: tabletypes。

在正则expression式中,您应该像\@一样逃离\@ 。 还要注意,在你的第一个例子中,没有$2模式,因为你只有一组括号。 有关man 5 postconf更多信息,或者查看SMTPD_ACCESS_README