在 Postfix 中的 virtual_alias 上运行 SpamAssassin

在 Postfix 中的 virtual_alias 上运行 SpamAssassin

自从我开始使用 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

有没有办法在转发之前让邮件通过 SpamAssassin 运行virtual_alias_maps

答案1

您目前没有描述如何进行 SA 过滤,但如果您目前没有通过它发送虚拟邮件,我假设您没有使用 content_filter,这是它通常连接的方式。从快速浏览来看,SpamAssassin wiki 似乎很好地涵盖了此设置:http://wiki.apache.org/spamassassin/IntegratedSpamdInPostfix

答案2

远程 MTA 通过 SMTP 向 Postfix 发送邮件。收件人列表是一系列 RCPT 命令。每个 RCPT 命令都会添加一个收件人地址。当 Postfix 在 vi​​rtual_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。

答案3

高度依赖于您的操作系统和/或发行版,以及您想要以何种用户身份运行 SA 等等……

在 master.cf 中输入如下内容:

# aa.bb.cc.dd == your IP
# example.com == your hostname

aa.bb.cc.dd:smtp      inet    n       -       n       -       -       smtpd
    -o content_filter=spamassassin
    -o myhostname=example.com
    -o smtp_bind_address=aa.bb.cc.dd

# (note content_filter)
#
# -snip-
#

spamassassin unix -     n       n       -       -       pipe
  user=sa argv=/usr/bin/spamc -e /etc/alternatives/mta -oi -f ${sender} ${recipient}

# change 'user=sa' to whatever user you have setup.
# change '/etc/alternatives/mta' to whatever you're using to put
# mail back into the queue. (eg: /usr/local/sbin/sendmail )
# change /usr/bin/spamc to the location of your spamc binary, obviously. :)

相关内容