自从我开始使用 Postfix virtual_alias_maps 将我所有的电子邮件转发到 gmail 以来,我收到的垃圾邮件比我在本地发送邮件并使用 SpamAssassin/spamd 过滤它时多得多。我已经在使用smtpd_recipient_restrictions
标准的垃圾邮件过滤器了。
smtpd_recipient_restrictions =
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unauth_pipelining,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client korea.services.net,
permit
无论如何在virtual_alias_maps
转发之前通过 SpamAssassin 运行邮件吗?
您目前没有描述您如何进行 SA 过滤,但如果您目前没有通过它放置虚拟邮件,我假设您没有使用 content_filter,这是通常的方式挂了。SpamAssassin wiki 似乎很好地涵盖了这个设置,快速浏览一下:http ://wiki.apache.org/spamassassin/IntegratedSpamdInPostfix
远程 MTA 通过 SMTP 将邮件发送到 Postfix。收件人列表是一系列 RCPT 命令。每个 RCPT 命令添加一个收件人地址。当 Postfix 在 virtual_alias_maps 中获取收件人地址时,它会用 virtual_alias_maps 查找的结果替换该地址。这发生在您的 smtpd(8) 进程中。
关于如何连接您选择的垃圾邮件过滤机制,您有一些选择。
您可以在扩展的收件人列表中使用 SpamAssassin。推荐的机制是使用 content_filter。有关详细信息,请参阅http://www.postfix.org/FILTER_README.html。最常用的过滤器是http://www.ijs.si/software/amavisd/
Mailscanner 存在问题,因为它直接查看队列文件而不是使用标准机制。当您升级 Postfix 时,它可以而且确实会中断。
第二个不太推荐的选项是通过 SMTP 代理 ( http://www.postfix.org/SMTPD_PROXY_README.html ) 或通过 milter ( http://www.postfix.org/MILTER_README ) 使用队列前过滤机制.html)。
如果您只想过滤发往某些收件人的邮件,请通过 check_recipient_access 使用 FILTER 目标。见http://www.postfix.org/access.5.html
如果你想在原始地址上运行 SpamAssassin,我会使用 amavisd-new 的 content_filter 方法。使用 master.cf 条目中的 -ovirtual_alias_maps 将您的 virtual_alias_maps 放入重新注入 smtpd。您可能需要在 smtpd_recipient_restrictions 中添加一个 check_recipient_access 映射,为您在 main.cf 中的有效地址返回 OK。
很大程度上取决于您的操作系统和/或发行版,以及您想要运行 SA 的任何用户,等等......
在 master.cf 中输入如下内容: