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]