Sieve + Dovecot

В портах, согласно UPDATING, убрали версии с индексом 2 и оставили только такую

/usr/ports/mail/dovecot-pigeonhole
make install clean

дописываем (у меня *.conf одним файлом)

ee /usr/local/etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp sieve

в секции services

service lmtp {
      unix_listener /var/spool/postfix/private/dovecot-lmtp {
      user = postfix
      mode = 0660
      group = postfix
      }
}

service managesieve-login {
      inet_listener sieve {
      port = 4190
 }
      process_min_avail = 0
      service_count = 1
      vsz_limit = 64M
}

service managesieve {
     process_limit = 1024
}

В секции protocol

protocol lmtp { 
     mail_plugins = $mail_plugins sieve
}
protocol lda {
     mail_plugins = $mail_plugins sieve
}
protocol imap {
     mail_max_userip_connections = 10
     mail_plugins = $mail_plugins imap_sieve
}
protocol sieve {
  managesieve_max_line_length = 65536
  mail_max_userip_connections = 10
  managesieve_logout_format = bytes=%i/%o
  managesieve_implementation_string = Cyrus timsieved v2.2.13
  managesieve_sieve_capability =
  managesieve_notify_capability =
  managesieve_max_compile_errors = 5
}

В protocol imap дописываем

  mail_plugins = $mail_plugins imap_sieve

В секцию plugin

plugin {
 sieve_plugins = sieve_imapsieve
 sieve = /var/vmail/%d/%n/.dovecot.sieve
 sieve_before = /usr/local/etc/dovecot/sieve/spam.sieve
 sieve_dir = /var/vmail/%d/%n/.dovecot.sieve

 sieve_default = /usr/local/etc/dovecot/sieve/default.sieve
 sieve_global = /usr/local/etc/dovecot/sieve/global/
 sieve_global_path = /usr/local/etc/dovecot/sieve/global/spam.sieve

 sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
 sieve_execute_socket_dir = sieve-execute

 sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
 sieve_filter_socket_dir = sieve-filter

 #sieve_default_name = roundcube
 sieve_max_actions = 32
 sieve_max_redirects = 8
 sieve_max_script_size = 1M

 sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
 sieve_pipe_socket_dir = sieve-pipe
 sieve_quota_max_scripts = 30
}

Далее создаем директорию

mkdir /usr/local/etc/dovecot/sieve/global

Затем создаем скрипт с таким содержанием

ee spam.sieve
require ["regex", "fileinto", "imap4flags"];
# rule:[SPAM]
if allof (header :contains "subject" "***Spam*** ")
{
       setflag "\\Seen";
       fileinto "Junk";
       stop;
}
chmod 0750 spam.sieve
chown nobody spam.sieve

И компилируем

sievec spam.sieve

Добавим поддержку в Roundcube и добавим roundcube-markasjunk2 (чтобы из браузера в спам кидать)

/usr/ports/mail/roundcube-markasjunk2
make install clean
cd /usr/local/www/roundcube/plugins/markasjunk2
cp config.inc.dist config.inc.php

Далее

cd /usr/local/www/roundcube/plugins/managesieve
cp config.inc.dist config.inc.php

Нужно немного поправить

ee config.inc.php
$config['managesieve_port'] = 4190;
$config['managesieve_auth_type'] = PLAIN;
$config['managesieve_default'] = '/usr/local/etc/dovecot/sieve/global';

Теперь подключим плагины в roundcube – в самом низу дописываем в секции плагины

ee /usr/local/www/roundcube/config/config.inc.php
$config['plugins'] = array(
       'additional_message_headers', 'managesieve', 'markasjunk2'
);

Проверка.

Шлем себе на ящик письмо с таким содержанием

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Подключаемся по IMAP и видим, что письмо, опознанное Spamassassin-ом как 100% спам, было перемещено в папку Junk.

 

Leave a Reply

Your email address will not be published. Required fields are marked *