我最近升级到了 Ubuntu 14.04.1 LTS (trusty),并按照https://help.ubuntu.com/14.04/serverguide/mail-filtering.html并且可以正常发送和接收邮件。
虽然我确实X-Virus-Scanned
在邮件中看到了标题,这表明邮件确实正在处理中,但我没有看到任何X-Spam-Level
标题X-Spam-Score
被添加到邮件中。这使得下游procmailrc
和客户端过滤更加困难。
虽然/etc/amavis/conf.d/20-debian_defaults 确实大大减少了发往我收件箱的垃圾邮件,但在调整之前我担心会出现误报,而且不知道会出现什么情况,所以暂时$final_spam_destiny = D_DISCARD
将其设置为。这暴露了问题。D_PASS
我不确定从哪里开始诊断问题(否则我会发布一个可疑的配置文件)。
/etc/amavis/conf.d/15-content_filter_mode 有以下几行未注释启用病毒和垃圾邮件检查,并且病毒检查似乎正在根据标题进行工作。
Spam Assassin 似乎也启动得很顺利。
SpamAssassin 调试设施:信息
SA 信息:缩放:能够使用 360/360“body_0”编译规则(100%)
SpamAssassin 加载的插件:AskDNS、AutoLearnThreshold、Bayes、BodyEval、Check、DKIM、DNSEval、FreeMail、HTMLEval、HTTPSMismatch、Hashcash、HeaderEval、ImageInfo、MIMEEval、MIMEHeader、Pyzor、Razor2、RelayEval、ReplaceTags、Rule2XSBody、SPF、SpamCop、URIDNSBL、URIDetail、URIEval、VBounce、WLBLEval、WhiteListSubject
SpamControl:SpamAssassin 上的 init_pre_fork 已完成
我也在 /etc/amavis/conf.d/50-user 中进行设置$log_level = 2;
,但在日志中没有看到任何明显的错误。
问:下一步有什么建议吗?
更新(看来我已经有了正确的设置):
/etc/amavis/conf.d$ grep sa_tag_level_deflt *
20-debian_defaults:# $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
20-debian_defaults:$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
答案1
/etc/amavis/conf.d/20-debian_defaults
http://pastebin.com/5xuvNVtD
将第 36 行更改为如下内容:
$sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
保存并重新启动服务或重新加载配置后,所有电子邮件都应具有 x-spam-status 标头。
答案2
命令的输出head -n 1 /etc/mailname
必须是您的域,例如example.com
。
mail.example.com
如果输出类似这就是问题所在。
因此,你可以通过更改文件来解决这个问题/etc/amavis/conf.d/05-domain_id
解决方案 #1
里面/etc/amavis/conf.d/05-domain_id
:
改变:
chomp($mydomain = `head -n 1 /etc/mailname`);
到:
chomp($mydomain = `hostname -d`);
PS: 的输出hostname -d
必须是您的域,例如example.com
。
比以往最简单的解决方案:
里面/etc/amavis/conf.d/05-domain_id
:
改变:
chomp($mydomain = `head -n 1 /etc/mailname`);
到:
$mydomain = "example.com";
答案3
所以,问题解决了,这只是一堆事情的集合,我会在这里详细说明,以便其他遇到同样问题的人能够了解到。
首先,垃圾邮件刺客似乎在使用 ipv6 运行时存在问题(在某些环境中)。不知道为什么。编辑/etc/default/spamassassin
,或者/etc/init.d/spamassassin
如果您没有,请将其添加--ipv4
到OPTIONS
列表中。然后使用service spamassassin restart
退回服务,并service spamassassin status
检查 spamd 是否正在运行。此步骤对于您的配置可能不是必需的。
接下来,确保您有一个/etc/procmailrc
文件,它的权限是全世界可读的,并且它包含如下内容:
DROPPRIVS=yes
:0fw
| /usr/bin/spamc
:0
* ^X-Spam-Status: Yes
$HOME/mail/possible-spam
接下来,如果你正在运行网页管理工具你需要检查 procmail 服务,确保它没有向你发出警告后缀未配置为使用进程邮件。在 中/etc/postfix/main.cf
,您需要注释掉默认运行 deliver 并将其替换为 procmail。编辑后mailbox_command
您需要运行。service postfix restart
#mailbox_command = /usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -m "${EXTENSION}"
mailbox_command = procmail -a "$EXTENSION"
如果您已手动将垃圾邮件移至名为的邮件文件夹中spam
,那么您需要像这样训练垃圾邮件杀手:
sa-learn --progress --dbpath ~/.spamassassin --spam --mbox ~/mail/spam
请注意,可以进行一些进一步的调整,并且需要service spam assassin restart
在之后进行,但这可能会有所帮助。
一、如果您收到大量垃圾邮件,请将 的值/etc/spamassassin/local.cf
设置为稍低一些:required_score
# Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 4.0
在同一个文件中/etc/spamassassin/local.cf
,通过在末尾添加以下内容,还可以按垃圾邮件较多的国家/地区进行过滤。以下是俄罗斯和中国,根据一些电子邮件分析,这两个国家/地区在历史上的垃圾邮件贡献率非常高。
# Filter Russia
header RELAYCOUNTRY_RU X-Relay-Countries =~ /RU/
describe RELAYCOUNTRY_RU Relayed through Russia
score RELAYCOUNTRY_RU 8.0
# Filter China
header RELAYCOUNTRY_CN X-Relay-Countries =~ /CN/
describe RELAYCOUNTRY_CN Relayed through China
score RELAYCOUNTRY_CN 8.0
report_header 1
fold_headers 1
detailed_phrase_score 1
以上不仅解决了丢失的标题,我怀疑是procmail没有被调用。