Sieve támogatás - szerver oldali üzenetszűrés

  • Beküldve: 2015. május 18, 20:39
  • Szerző: Bolemányi Attila

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
}

/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]