我们有一个运行 Dovecot 和 Postfix 的电子邮件服务器。
我收到很多包含奇怪的中文/日文或其他亚洲字符的垃圾邮件。
我们的组织不需要这些电子邮件,我们也不会与使用亚洲字符的人交流。
我们如何指示 Postfix 阻止所有包含亚洲字符的电子邮件?
我们已经使用“body_checks”来丢弃包含一些正则表达式字符串的电子邮件......但我们如何对亚洲字符执行此操作?
Server [/etc/postfix] # cat body_checks
/free mortgage quote/ DISCARD
/repair your credit/ DISCARD
/From:.*<>/ DISCARD
Server [/etc/postfix] # cat main.cf |grep body
body_checks = pcre:/etc/postfix/body_checks
Server [/etc/postfix] #
答案1
答案2
我试过了,但没成功。我总是先解决问题,然后再在论坛上发帖。通常,论坛是最后一个寻求帮助的地方,而且所有其他尝试都失败了。
问题很简单:我想过滤亚洲字符。
这是我的 header_checks 文件:
/free mortgage quote/ DISCARD
/repair your credit/ DISCARD
这是我的 body_checks 文件: https://pastebin.com/mF0VLCzY
如果我从 body_checks 文件的列表中测试任何亚洲字符,过滤效果会很好。
问题是我收到的电子邮件是用 Base64 编码的(电子邮件客户端显示亚洲字符,但消息源是用 Base64 编码的)。例如:连在 Base64 中是“6YCj”,而我的消息源充满了 Base64 编码的文本。
我也尝试过这些:
/^Subject:.*=\?(?:GB2312|big5)\?/ DISCARD
/^Content-Type:.*\bcharset="?(?:GB2312|big5)\b/ DISCARD
/(?:[a-z0-9]?[\200-\377]){8,}/ DISCARD
这给了我以下问题:
postmap: warning: header_checks, line 5: unbalanced '"' in '/^Content-Type:.*\bcharset="?(?:GB2312|big5)\b/ DISCARD' -- ignoring this line
另外,如果我将这些留在 header_checks 中,它仍然不会过滤 base64 编码的字符......