防止垃圾邮件被Postfix转发(本地传递到垃圾邮件文件夹)

我们有一个非常标准的Postfix / Amavis设置,我们使用Dovecot LDA在本地发送邮件。 Amavis通过了垃圾邮件,我们使用Sieve将其放入用户的Junk文件夹中。

问题是我们的Amavis标记为垃圾邮件的邮件不应该被转发到外部地址。 我不明白如何实现这一点。

我find了一些对Postfix header_checks的引用,但是这些是由Amavis开始检查之前的清理过程处理的。 转发像这样:

Dec 13 23:13:32 mail postfix/smtpd[14405]: connect from ... Dec 13 23:13:32 mail postfix/smtpd[14405]: Anonymous TLS connection established from ... SSLv3 with cipher AES128-SHA (128/128 bits) Dec 13 23:13:32 mail postfix/smtpd[14405]: 5659141F35: client=..., sasl_method=PLAIN, sasl_username=test.piet@... Dec 13 23:13:32 mail postfix/cleanup[14251]: 5659141F35: message-id=<[email protected]> Dec 13 23:13:32 mail postfix/qmgr[13623]: 5659141F35: from=<test.piet@...>, size=1701, nrcpt=1 (queue active) Dec 13 23:13:32 mail postfix/smtpd[14405]: disconnect from ... Dec 13 23:13:37 mail postfix/smtpd[14358]: connect from localhost[127.0.0.1] Dec 13 23:13:37 mail postfix/smtpd[14358]: ACF4F42260: client=localhost[127.0.0.1] Dec 13 23:13:37 mail postfix/cleanup[14251]: ACF4F42260: message-id=<[email protected]> Dec 13 23:13:37 mail postfix/smtpd[14358]: disconnect from localhost[127.0.0.1] Dec 13 23:13:37 mail postfix/qmgr[13623]: ACF4F42260: from=<test.piet@...>, size=2408, nrcpt=1 (queue active) Dec 13 23:13:37 mail amavis[11530]: (11530-14) Passed SPAM, [188.142.56.16] [188.142.56.16] <test.piet@...> -> <mark.ruys@...>, Message-ID: <[email protected]>, mail_id: iTVFrnGF7RaS, Hits: 999.001, size: 1701, queued_as: ACF4F42260, 5305 ms Dec 13 23:13:37 mail postfix/smtp[14253]: 5659141F35: to=<mark.ruys@...>, orig_to=<mark@...>, relay=127.0.0.1[127.0.0.1]:10024, delay=5.4, delays=0.11/0/0/5.3, dsn=2.0.0, status=sent (250 2.0.0 from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as ACF4F42260) Dec 13 23:13:37 mail postfix/qmgr[13623]: 5659141F35: removed Dec 13 23:13:37 mail postfix/smtp[14414]: Trusted TLS connection established to gmail-smtp-in.l.google.com[173.194.65.26]:25: TLSv1.1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits) Dec 13 23:13:38 mail postfix/smtp[14414]: ACF4F42260: to=<mark.ruys@...>, relay=gmail-smtp-in.l.google.com[173.194.65.26]:25, delay=0.84, delays=0/0.02/0.08/0.73, dsn=2.0.0, status=sent (250 2.0.0 OK 1386972818 f8si3542819eep.162 - gsmtp) Dec 13 23:13:38 mail postfix/qmgr[13623]: ACF4F42260: removed 

一般解决scheme

如果你有另一台服务器,那么解决scheme是微不足道的。 据说,另一个框叫做second.example.com。 在您的原始框中,在main.cf中设置一个relayhost到second.example.com

 relayhost = [second.example.com]:25 

在second.example.com中,设置header_checks来检查电子邮件是否可能是垃圾邮件,通过检查主题中的垃圾邮件字词或通过检查邮件头中的垃圾邮件分数。 对于这个例子,我将使用主题检查方法。 header_checks语法是

 /^Subject: \[SPAM\]/ DISCARD 

完成。 现在,别名电子邮件将stream经second.example.com,并在垃圾邮件时被删除。


如果您没有其他服务器,那么您可能的select是在master.cf或Postfix Multiple Instances中设置附加的smtpd守护进程。

附加的smtpd守护进程

状态:不起作用

这个想法是添加新的smtpd监听另一个端口,并覆盖header_checks和relayhost的configuration。 在main.cf中将relayhostconfiguration添加到另一个smtpd守护进程。

 relayhost = [127.0.0.1]:12225 

master.cf定义并覆盖header_checks来检查垃圾邮件标记的电子邮件并清空relayhost ,使其不会循环到自身。

 [127.0.0.1]:12225 inet n - n - - smtpd -o header_checks=pcre:/etc/postfix/killspam -o relayhost= 

不幸的是,这是行不通的。 根据man 8 smtpd ,smtpd默默拒绝了这个man page中列出的参数以外的参数。 所以,它仍然使用main.cf中的旧configuration。

后缀多个实例

状态:有效

这个想法是设置一个默认的实例来处理传入的电子邮件和另一个处理传出的电子邮件像上面的设置。 我不给你一个细节,但你应该调整一些参数来获得二次运行。 然后添加像空relayhostheader_checks其他configuration。