Назад | Перейти на главную страницу

Spamassassin, Dovecot и Postfix: переместить спам в папку

Я пытаюсь переместить спам, обнаруженный spamassassin, автоматически в папку нежелательной почты в Debian Jessie.

Установил Spamassassin и отредактировал конфиги:

local.cf (папка spamassassin)

rewrite_header Subject *****SPAM*****

main.cf

spamassassin_destination_recipient_limit = 1

master.cf

smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=spamassassin

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

90-plugins.conf (голубятня)

plugin {
  #setting_name = value
  sieve = /etc/dovecot/sieve/default.sieve
}

default.sieve

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

15-mailboxes.conf (постфикс)

mailbox Junk {
   auto = subscribe
   special_use = \Junk
}

Спам помечается как *****SPAM***** правильно, но не перемещается в папку нежелательной почты (я использую roundcube в качестве почтового клиента, папка нежелательной почты даже не отображается. mail.info войти либо:

Mar 18 17:22:29 *************** postfix/smtpd[6184]: connect from mail-io0-f173.google.com[209.85.223.173]
Mar 18 17:22:29 *************** postfix/smtpd[6184]: DD759241A7B: client=mail-io0-f173.google.com[209.85.223.173]
Mar 18 17:22:30 *************** postfix/cleanup[6189]: DD759241A7B: message-id=<CALvS7dGxMQDAVn7WaVe4xhqyejU_1MBu20QMu__mVyLjggHi9w@mail.gmail.com>
Mar 18 17:22:30 *************** postfix/qmgr[4489]: DD759241A7B: from=<***************m>, size=2492, nrcpt=1 (queue active)
Mar 18 17:22:30 *************** spamd[4506]: spamd: connection from ip6-localhost [::1]:46206 to port 783, fd 6
Mar 18 17:22:30 *************** spamd[4506]: spamd: processing message <CALvS7dGxMQDAVn7WaVe4xhqyejU_1MBu20QMu__mVyLjggHi9w@mail.gmail.com> for vmail:5555
Mar 18 17:22:30 *************** postfix/smtpd[6184]: disconnect from mail-io0-f173.google.com[209.85.223.173]
Mar 18 17:22:30 *************** spamd[4506]: spamd: identified spam (1000.3/2.0) for vmail:5555 in 0.2 seconds, 2547 bytes.
Mar 18 17:22:30 *************** spamd[4506]: spamd: result: Y 1000 - FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GTUBE,HTML_MESSAGE,RCVD_IN_MSPIKE_H2,SPF_PASS,TVD_SPACE_RATIO,T_DKIM_INVALID scantime=0.2,size=2547,user=vmail,uid=5555,required_score=2.0,rhost=ip6-localhost,raddr=::1,rport=46206,mid=<CALvS7dGxMQDAVn7WaVe4xhqyejU_1MBu20QMu__mVyLjggHi9w@mail.gmail.com>,autolearn=no autolearn_force=no
Mar 18 17:22:30 *************** spamd[4505]: prefork: child states: II
Mar 18 17:22:30 *************** dovecot: lda(***************): msgid=<CALvS7dGxMQDAVn7WaVe4xhqyejU_1MBu20QMu__mVyLjggHi9w@mail.gmail.com>: saved mail to INBOX
Mar 18 17:22:30 *************** postfix/pipe[6192]: DD759241A7B: to=<***************>, relay=spamassassin, delay=0.63, delays=0.32/0/0/0.3, dsn=2.0.0, status=sent (delivered via spamassassin service)
Mar 18 17:22:30 *************** postfix/qmgr[4489]: DD759241A7B: removed

В моем случае меня не хватало include conf.d/*.conf линия в dovecot.conf и dovecot не считал конфигурацию из этих файлов, включая 90-plugins.conf.

Но я не включил эту строку, потому что вся моя конфигурация уже находится в dovecot.conf и conf.d/*.conf файлы переопределят его настройками по умолчанию, поэтому я просто включил эти строки в dovecot.conf:

plugin {
    sieve = /etc/dovecot/sieve/default.sieve
}

protocol lda {
    mail_plugins = $mail_plugins sieve
}

Все остальные настройки в порядке и должны работать (кажется, вы получаете их из этот ответ).

Для управления правилом фильтрации вы можете использовать решето на голубятне. Вы можете поместить его как глобальное сито или сито для каждого пользователя.

Для глобального сита используйте конфигурацию в /etc/dovecot/dovecot.conf:

sieve_global_path = /home/vmail/sieve/dovecot.sieve

Конфигурация сита для каждого пользователя:

sieve = /%Lh/sieve/dovecot.sieve

который% Lh === dovecot заменит его на каталог почтового ящика пользователя

Это пример содержимого сит-файлов:

if header :contains "*****SPAM*****" "YES"
{
    fileinto "Junk";
    stop;
}