我正在尝试自动将检测为垃圾邮件的邮件移动到垃圾文件夹,但我的筛子过滤器没有运行。我可以发送和接收邮件并且邮件被检测为垃圾邮件。
X-Virus-Scanned: amavisd-new at ...
X-Spam-Flag: YES
X-Spam-Score: 999.802
X-Spam-Level: ****************************************************************
X-Spam-Status: Yes, score=999.802 tagged_above=-999 required=5
tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,
DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, GTUBE=1000,
HTML_MESSAGE=0.001, SPF_PASS=-0.001, TVD_SPACE_RATIO=0.001]
autolearn=no autolearn_force=no
我认为问题是,postfix 不通过 dovecot 传递邮件,但我不知道为什么。
我的系统:
- Arch Linux
- 后缀 3.3.2-3
- 鸽舍 2.3.4.1-1
我一遍又一遍地做过或检查过的事情......
- pidgeonehole 已安装
- dovecot-lmtp 套接字存在于 /var/spool/postfix/private 并且对 postfix 是可读写的
- 后缀 main.cf 中的 virtual_transport 设置为 lmtps:unix:private/dovecot-lmtp
- dovecot.conf 中的 lmtp 服务和协议块存在并且协议值包含 lmtp
- 全局筛脚本的路径似乎是正确的
- 筛选脚本正在编译没有错误
- 文件夹垃圾存在
- 即使设置了 mail_debug = yes,Dovecot 也不会记录任何与 lmtp 相关的内容
我真的没有任何想法了。下面是一些相关信息。希望有人可以帮助我使其正常工作。
这是 postfix 日志的摘录,其中 postfix 总是 sais ...status=sent(发送到 maildir)
2 月 10 日 19:37:59 主机名 postfix/wxyz/postscreen[1133]:从 [209.85.208.174]:44008 连接到 [wxyz]:25 2 月 10 日 19:37:59 主机名 postfix/dnsblog[1136]:域 dnsbl.sorbs.net 列出的地址 209.85.208.174 为 127.0.0.6 2 月 10 日 19:37:59 主机名 postfix/dnsblog[1138]:地址 209.85.208.174 由域 hostkarma.junkemailfilter.com 列为 127.0.0.3 2 月 10 日 19:37:59 主机名 postfix/dnsblog[1138]:地址 209.85.208.174 由域 hostkarma.junkemailfilter.com 列为 127.0.1.1 2 月 10 日 19:38:00 主机名 postfix/wxyz/postscreen[1133]:PASS OLD [209.85.208.174]:44008 2 月 10 日 19:38:00 主机名 postfix/wxyz/smtpd[1142]:从 mail-lj1-f174.google.com[209.85.208.174] 连接 2 月 10 日 19:38:00 主机名 postfix/wxyz/smtpd[1142]:从 mail-lj1-f174.google.com[209.85.208.174] 建立匿名 TLS 连接:TLSv1.2 与密码 ECDHE-RSA-AES128-GCM- SHA256(128/128 位) 2 月 10 日 19:38:00 主机名 postfix/wxyz/smtpd[1142]:NOQUEUE:client=mail-lj1-f174.google.com[209.85.208.174] 2 月 10 日 19:38:02 主机名后缀/smtpd [1159]:从未知连接 [127.0.0.1] 2 月 10 日 19:38:02 主机名后缀/smtpd[1159]:6262DAE1876:client=unknown[127.0.0.1] 2 月 10 日 19:38:02 主机名后缀/清理 [1160]: 6262DAE1876: message-id= 2 月 10 日 19:38:02 主机名后缀/smtpd[1159]:断开未知 [127.0.0.1] ehlo=1 邮件=1 rcpt=1 数据=1 退出=1 命令=5 2 月 10 日 19:38:02 主机名 postfix/qmgr[28602]: 6262DAE1876: from=, size=5817, nrcpt=1 (queue active) 2 月 10 日 19:38:02 主机名后缀/smtpd [1159]:从未知连接 [127.0.0.1] 2 月 10 日 19:38:02 主机名后缀/smtpd[1159]: 67345AE1879: client=unknown[127.0.0.1], orig_client=mail-lj1-f174.google.com[209.85.208.174] 2 月 10 日 19:38:02 主机名后缀/清理 [1160]:67345AE1879:消息 ID = 2 月 10 日 19:38:02 主机名后缀/smtpd[1159]:断开未知 [127.0.0.1] ehlo=1 xforward=1 邮件=1 rcpt=1 数据=1 退出=1 命令=6 Feb 10 19:38:02 hostname postfix/qmgr[28602]: 67345AE1879: from=, size=3901, nrcpt=1 (queue active) 2 月 10 日 19:38:02 主机名 postfix/wxyz/smtpd[1142]: proxy-accept: END-OF-MESSAGE: 250 2.0.0 from MTA(smtp:[127.0.0.1]:10035): 250 2.0.0 Ok :排队为 67345AE1879;from= to= proto=ESMTP helo= 2 月 10 日 19:38:02 主机名后缀/虚拟 [1161]:6262DAE1876:to=,orig_to=,relay=virtual,delay=0.05,delays=0.02/0.02/0/0.01,dsn=2.0.0,status=sent (发送到邮件目录) 2 月 10 日 19:38:02 主机名后缀/qmgr [28602]:6262DAE1876:已删除 2 月 10 日 19:38:02 主机名后缀/虚拟 [1161]:67345AE1879:to=,relay=virtual,delay=0.02,delays=0.01/0.01/0/0,dsn=2.0.0,status=sent(发送到邮件目录) 2 月 10 日 19:38:02 主机名后缀/qmgr[28602]:67345AE1879:已删除
在后缀 master.cf 我设置:
...
lmtps unix - - - - - lmtp
-o lmtp_use_tls=yes
-o lmtp_tls_loglevel=1
-o lmtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
-o lmtp_enforce_tls=yes
-o lmtp_tls_mandatory_protocols=!SSLv2,!SSLv3
-o lmtp_tls_protocols=!SSLv2,!SSLv3
-o lmtp_tls_mandatory_ciphers=high
-o lmtp_tls_ciphers=high
-o lmtp_send_xforward_command=yes
-o lmtp_tls_security_level=encrypt
-o lmtp_tls_note_starttls_offer=yes
...
在后缀 main.cf 我设置:
...
virtual_transport = lmtps:unix:private/dovecot-lmtp
...
dovecot.conf:
...
protocols = imap lmtp sieve
...
service managesieve-login {
inet_listener sieve {
port = 4190
}
service_count = 1
process_min_avail = 2
vsz_limit = 128M
}
service managesieve {
process_limit = 256
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
user = vmail
}
...
protocol lmtp {
mail_plugins = quota sieve acl notify
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = ...
}
protocol sieve {
managesieve_max_line_length = 65536
mail_max_userip_connections = 10
mail_plugins =
managesieve_logout_format = bytes=%i/%o
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_sieve_capability =
managesieve_notify_capability =
managesieve_max_compile_errors = 5
}
...
plugin {
...
sieve_extensions = +spamtest
sieve_spamtest_status_type = score
sieve_spamtest_status_header = \
X-Spam_score: (-?[[:digit:]]+\.[[:digit:]]).*
sieve_spamtest_max_value = 5.0
# Own sieve filters are located in the home directory
sieve = file:~/sieve;active=~/.dovecot.sieve
# The global filter is located outside
sieve_before = /var/lib/dovecot/sieve/move_to_spam_folder.sieve
sieve_max_script_size = 1M
sieve_quota_max_scripts = 0
sieve_quota_max_storage = 0
# Continue even if the quota can not be determined
# Valid for the Postfix policy service provided from Dovecot
quota_status_success = DUNNO
quota_status_nouser = DUNNO
quota_status_overquota = "552 5.2.2 Mailbox is over quota"
sieve_plugins = sieve_imapsieve sieve_extprograms
# From elsewhere to Spam folder
imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_cause = COPY
imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/report-spam.sieve
# From Spam folder to elsewhere
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_cause = COPY
imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/report-ham.sieve
sieve_pipe_bin_dir = /var/lib/dovecot/sieve
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
}
最后是全局筛脚本:
require "fileinto";
if header :contains "X-Spam-Flag" "YES" {
fileinto "Junk";
}