1

我正在尝试自动将检测为垃圾邮件的邮件移动到垃圾文件夹,但我的筛子过滤器没有运行。我可以发送和接收邮件并且邮件被检测为垃圾邮件。

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";
}
4

0 回答 0