A Sieve nem más, mint egy levélszűrő nyelv, amelynek segítségével ügyes kis szabályokat tudunk készíteni, amelyekkel a levelek további sorsa felől dönthetünk. Például a ***SPAM*** jelöléssel rendelkező leveleket egyből a Junk mappába helyezhetjük, mielőtt még egyetlen levelezőprogrammal bejelentkeznénk a postafiókba. De ezzel a kiegészítővel tudunk vakációs (házon kívül vagyok) típusú automatikus válasz üzeneteket is küldeni.
A Dovecot rendelkezik ezzel a kiegészítéssel, és a Roundcube is tudja kezelni ezeket a szabályokat egy erre a célra kifejlesztett plugin segítségével.
Telepítsük fel a szükséges csomagokat:
aptitude install dovecot-sieve dovecot-managesieved
A /etc/dovecot/conf.d/15-lda.conf fájl tartalmát módosítsuk így:
protocol lda {
mail_plugins = $mail_plugins quota sieve
}
Látható, hogy a quota plugin után bekerült a sieve is. A /etc/dovecot/conf.d/90-sieve.conf fájl tartalma a következő legyen:
plugin {
sieve = /srv/mail/sieve/%d/%n/.dovecot.sieve
sieve_dir = /srv/mail/sieve/%d/%n/sieve
}
A /etc/dovecot/conf.d/20-managesieve.conf fájl tartalma a következő legyen:
protocols = $protocols sieve
service managesieve-login {
inet_listener sieve {
port = 4190
}
service_count = 1
process_min_avail = 0
vsz_limit = 64M
}
service managesieve {
process_limit = 1024
}
protocol sieve {
managesieve_max_line_length = 65536
mail_max_userip_connections = 10
managesieve_logout_format = bytes=%i/%o
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_max_compile_errors = 5
log_path = /var/log/sieve.log
info_log_path = /var/log/sieve.log
}
Készítsük el a sieve szkriptek mappáját:
mkdir /srv/mail/sieve chown vmail:vmail /srv/mail/sieve
Indítsuk újra a Dovecot szervert:
service dovecot restart
A Dovecot mostantól támogatja a Sieve protokollt, amelyet egy erre alkalmas levelezőprogrammal már akár most is kipróbálhatunk. Nézzük meg, hogyan kell a Roundcube webes levelezőprogramot megtanítani a sieve szűrők kezelésére.
Először is, a Roundcube config.inc.php fájlját egészítsük ki így:
$config['plugins'] = array('password','managesieve');
Készítsük fel a Managesieve plugint a használatra:
cd ./plugins/managesieve cp config.inc.php.dist config.inc.php
A Managesieve plugin config.inc.php fájl tartalma:
<?php
$config['managesieve_port'] = 4190;
$config['managesieve_host'] = 'localhost';
$config['managesieve_auth_type'] = null;
$config['managesieve_auth_cid'] = null;
$config['managesieve_auth_pw'] = null;
$config['managesieve_usetls'] = false;
$config['managesieve_conn_options'] = null;
$config['managesieve_default'] = '/etc/dovecot/sieve/global';
$config['managesieve_script_name'] = 'managesieve';
$config['managesieve_mbox_encoding'] = 'UTF-8';
$config['managesieve_replace_delimiter'] = '';
$config['managesieve_disabled_extensions'] = array();
$config['managesieve_debug'] = false;
$config['managesieve_kolab_master'] = false;
$config['managesieve_filename_extension'] = '.sieve';
$config['managesieve_filename_exceptions'] = array();
$config['managesieve_domains'] = array();
$config['managesieve_vacation'] = 1;
$config['managesieve_notify_methods'] = array('mailto');
Ezzel készen van a Roundcube is. Ha bejelentkezel és rákattintasz a Beállítások menüpontra, a bal oldalon új menüpontok jelennek meg a Beállítások alatt: az Üzenetszűrők és a Vakáció. Mivel van két postafiókod, így ki is tudod próbálni a vakációs üzeneteket is. Ismételten: jó felfedezést!
Ha most küldesz levelet a másik teszt felhasználónak, a syslog üzenetek is láthatóan megváltoznak: a "dovecot: lda" sorokban a címzett után megjelenik a "sieve" szó is. Egyszóval, a szerver oldali üzenetszűrő köszöni, jól van, és várja a parancsaidat. Akarom mondani, szűrő szkriptjeidet. ;-)
May 18 21:04:54 mailserver postfix/smtpd[3283]: connect from localhost[::1] May 18 21:04:54 mailserver postfix/smtpd[3283]: 2D681BFE15: client=localhost[::1], sasl_method=LOGIN, sasl_username=bolemanyi.attila@comega7.local May 18 21:04:54 mailserver postfix/cleanup[3287]: 2D681BFE15: message-id=<a95131bfd373ad82ac848567dd8ab5dc@comega7.local> May 18 21:04:54 mailserver postfix/qmgr[1626]: 2D681BFE15: from=<bolemanyi.attila@comega7.local>, size=1528, nrcpt=1 (queue active) May 18 21:04:54 mailserver dovecot: lda(wattacukor@comega7.local): sieve: msgid=<a95131bfd373ad82ac848567dd8ab5dc@comega7.local>: stored mail into mailbox 'INBOX' May 18 21:04:54 mailserver postfix/pipe[3289]: 2D681BFE15: to=<wattacukor@comega7.local>, relay=dovecot, delay=0.09, delays=0.03/0.01/0/0.05, dsn=2.0.0, status=sent (delivered via dovecot service) May 18 21:04:54 mailserver postfix/cleanup[3287]: 411D2BFE2E: message-id=<20150518190454.411D2BFE2E@mailserver.comega7.local> May 18 21:04:54 mailserver postfix/bounce[3292]: 2D681BFE15: sender delivery status notification: 411D2BFE2E May 18 21:04:54 mailserver postfix/qmgr[1626]: 411D2BFE2E: from=<>, size=2894, nrcpt=1 (queue active) May 18 21:04:54 mailserver postfix/qmgr[1626]: 2D681BFE15: removed May 18 21:04:54 mailserver dovecot: imap-login: Login: user=<bolemanyi.attila@comega7.local>, method=PLAIN, rip=::1, lip=::1, mpid=3294, TLS, session=<klqB3l8WxgAAAAAAAAAAAAAAAAAAAAAB> May 18 21:04:54 mailserver dovecot: lda(bolemanyi.attila@comega7.local): sieve: msgid=<20150518190454.411D2BFE2E@mailserver.comega7.local>: stored mail into mailbox 'INBOX' May 18 21:04:54 mailserver postfix/pipe[3289]: 411D2BFE2E: to=<bolemanyi.attila@comega7.local>, relay=dovecot, delay=0.07, delays=0.01/0.01/0/0.06, dsn=2.0.0, status=sent (delivered via dovecot service) May 18 21:04:54 mailserver postfix/qmgr[1626]: 411D2BFE2E: removed May 18 21:04:54 mailserver postfix/smtpd[3283]: disconnect from localhost[::1]