在 Ubuntu 22.04 上运行 Postfix,我想确保所有来自服务器的外发邮件(例如网站上的邮件表单等)都经过过滤,以防垃圾邮件和恶意软件。我使用的是 Amavis,它可以过滤入站邮件,但不过滤出站邮件。
例如,如果我尝试发送如下 EICAR 测试:
echo "$email_message" | mailx -a "From:My name <[email protected]>" -s "EICAR test" [email protected]
我在日志中看到了这一点(Gmail 阻止了它,但没有阻止 Amavis):
Oct 30 08:26:08 servername.uk postfix/pickup[1912445]: 60743BA7BC: uid=1000 from=<[email protected]>
Oct 30 08:26:08 servername.uk postfix/cleanup[1919542]: 60743BA7BC: message-id=<[email protected]>
Oct 30 08:26:08 servername.uk postfix/qmgr[1412608]: 60743BA7BC: from=<[email protected]>, size=461, nrcpt=1 (queue active)
Oct 30 08:26:09 servername.uk postfix/smtp[1919543]: 60743BA7BC: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[2a00:1450:400c:c04::1a]:25, delay=0.64, delays=0.06/0/0.18/0.4, dsn=5.7.0, status=bounced (host gmail-smtp-in.l.google.com[2a00:1450:400c:c04::1a] said: 552-5.7.0 This message was blocked because its content presents a potential 552-5.7.0 security issue. Please visit 552-5.7.0 https://support.google.com/mail/?p=BlockedMessage to review our 552 5.7.0 message content and attachment content guidelines. v21-20020a05600c471500b0040641a9f008si5224346wmo.224 - gsmtp (in reply to end of DATA command))
我看到它正在使用postfix/pickup
服务,而 Amavis 服务已启用postfix/smtp
。我可以向 中添加 Amavis 过滤器吗pickup
?我该怎么做?
编辑:我认为“网站上的邮件表格等”可能涉及其他技术(因此可能是一个单独的问题),但无论哪种方式,我都希望过滤本地邮件。
答案1
当邮件不是通过 smtp 到达时,Postfix 会以不同的方式处理邮件,例如当邮件直接使用命令提交时[/usr/lib/]sendmail
。
不幸的是:这通常是许多邮件表单和库用来发送邮件的默认方法,也是mailx
默认使用的方法。
您可以使用以下方式向通过该 sendmail 路由发送的邮件添加筛选器/过滤器:non_smtpd_milters
设置,但这会带来一个很大的警告:
非 SMTP Milter 应用程序处理通过 Postfix sendmail(1) 命令行或 Postfix qmqpd(8) 服务器到达的邮件。它们通常用于对邮件进行数字签名。尽管非 SMTP 过滤器可用于过滤不需要的邮件,但存在一些限制,如本节后面所述。...
这
通常按预期工作,但只有一个例外:非 SMTP 过滤器不得 REJECT 或 TEMPFAIL 模拟的 RCPT TO 命令。
当 non_smtpd_milters 应用程序 REJECT 或 TEMPFAIL 收件人时,Postfix 将报告配置错误,并且邮件将保留在队列中。
查看 https://www.postfix.org/MILTER_README.html以获得更详细的解释。