我已经使用 spamassassin 配置了 postfix。master.conf 如下。
spamfilter unix - n n - - pipe
flags=Rq user=spamfilter argv=/usr/local/bin/spamfilter -f ${sender} -- ${recipient}
smtp inet n - n - 20 smtpd
-o content_filter=spamfilter:dummy
上述配置工作正常。
我想在 spamfilter 后添加 spampd 代理。我尝试了以下方法,但没有效果。
spamfilter unix - n n - - pipe
flags=Rq user=spamfilter argv=/usr/local/bin/spamfilter -f ${sender} -- ${recipient}
125 inet n - y - - smtpd
-o content_filter=spamfilter:dummy
-o content_filter=smtp:192.168.0.51:10025
127.0.0.1:10026 inet n - n - 10 smtpd
-o content_filter=
我需要使用 spampd 代理连接其他 mta 进行用户身份验证。因此,我想在将请求/数据发送到 spampd 之前过滤并丢弃垃圾邮件。有人能在这方面帮助我吗?如果在 SpamPD 中有任何选项可以在将垃圾邮件发送到最终目的地之前丢弃垃圾邮件,这也适合我的场景。
答案1
在 Postfix 中,有两种方法可以插入内容过滤器:排队之前和排队之后。
如果你想将电子邮件存储在队列中,然后后将其发送到过滤器(后队列),您必须使用选项content_filter
。在这里,您必须以在运输表:transport:nexthop
其中传输是 smtp,nexthop 是 spampd 监听的地址。请注意,如果您的 nexthop 是 IP 地址,则必须将其括在方括号中。因此,对于您的情况:
-o content_filter=smtp:[192.168.0.51]:10025
如果你想过滤你的电子邮件前Postfix 将其存储在其队列中(预排队),那么您必须使用smtpd_proxy_filter
选项。在这种情况下,地址的格式与 中的格式不同content_filter
。在这种情况下,您可以简单地忘记方括号和传输方法:
-o smtpd_proxy_filter=192.169.0.51:10025