Email 筛滤器未运行

Email 筛滤器未运行,email,postfix-mta,dovecot,sieve,lmtp,Email,Postfix Mta,Dovecot,Sieve,Lmtp,我正在尝试自动将检测为垃圾邮件的邮件移动到垃圾邮件文件夹,但我的筛选过滤器未运行。 我可以发送和接收邮件,邮件被检测为垃圾邮件 X-Virus-Scanned: amavisd-new at ... X-Spam-Flag: YES X-Spam-Score: 999.802 X-Spam-Level: **************************************************************** X-Spam-Status: Yes, score=999.80

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

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发送邮件,但我不明白为什么

我的系统:

  • ArchLinux
  • 后缀3.3.2-3
  • 多佛科特2.3.4.1-1
我一次又一次做过或检查过的事情

  • 安装了一个孔
  • dovecot lmtp套接字存在于/var/spool/postfix/private中,可对postfix进行读写
  • postfix main.cf中的虚拟_传输设置为lmtps:unix:private/dovecot lmtp
  • dovecot.conf中存在lmtp服务和协议块,协议值包含lmtp
  • 全局筛选脚本的路径似乎是正确的
  • 筛选脚本正在编译,没有错误
  • 存在文件夹垃圾
  • 即使设置了mail_debug=yes,Dovecot也不会记录与lmtp相关的任何内容
我真的不知道了。下面是一些相关信息。希望有人能帮我把这件事做好

这里是postfix日志的摘录,其中postfix总是sais…status=sent(发送到maildir)

在postfix main.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
...
...
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";
}

指向全局筛选脚本链接的位置<代码>插件{sieve\u global\u path=/path/to/default.sieve}嘿!非常感谢您的回复。我没有这个参数,因为它已经去润滑,现在由参数'sieve_before=/path/to/a/global.sieve'和'sieve_after=/path/to/global.sieve'处理。此脚本应在用户定义的筛选脚本运行之前和之后运行:指向全局筛选脚本链接的位置<代码>插件{sieve\u global\u path=/path/to/default.sieve}嘿!非常感谢您的回复。我没有这个参数,因为它已经去润滑,现在由参数'sieve_before=/path/to/a/global.sieve'和'sieve_after=/path/to/global.sieve'处理。此脚本应在用户定义的筛选脚本运行之前和之后运行:
require "fileinto";

if header :contains "X-Spam-Flag" "YES" {
    fileinto "Junk";
}