Io strumento che più mi ha aiutato a raggiungere e mantenere l’obiettivo #inbox0 sono stati i filtri di GMail, utilissimi per smazzare automaticamente le email nelle directory giuste. Da un paio di mesi però, fortemente invogliato dal Datagate, ho deciso di prendere un server virtuale in cui tengo un paio di siti e un server mail. La cosa che più mi manca di GMail è però appunto la gestione dei filtri.
Fortunatamente non è una cosa che si sia inventato Google, quindi l’alternativa c’è, anche se ho trovato un po’ difficoltoso implementarla, più che altro per mancanza di guide aggiornate per CentOS 6, quelle dedicate a CentOS 5 non funzionano. La tecnologia in questione si chiama “sieve“, ed ha eccitato i miei sensi di geek. Non si tratta infatti di una interfaccia clikkosa ma di un vero e proprio linguaggio di progrmmazione dedicato al mail filtering.
Inoltre è possibile avviare un server “managesieve” che permette di modificare da remoto gli script.
Installazione e configurazione su Dovecot
Il plugin di dovecot che implementa il protocollo sieve si chiama pigeonhole, installiamolo con yum.
# yum install -y dovecot-pigeonhole
Ora dobbiamo attivare supporto sieve editando alcuni files nella directory /etc/dovecot/conf.d:
10-master.conf : aggiungiamo il servizio lmtp.
service lmtp { executable = lmtp -L unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } }
20-lmtp.conf: adattiamo il file aggiungendo le configurazioni del protocollo lmtp.
protocol lmtp { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve postmaster_address = postmaster@site.eu # required info_log_path = /var/log/dovecot-lmtp.log }
20-managesieve: decommentiamo la linea “protocol” .
# Uncomment to enable managesieve protocol: protocols = $protocols sieve
10-auth : dovrebbe essere a posto, però inizialmente non mi riconosceva gli utenti quando inviavo le email. La soluzione è stata specificargli il formato dello username
auth_username_format = %Ln
Configurazione postfix
Adesso dobbiamo dire a postfix come comunicare con lmtp configurando il file /etc/postfix/main.cf
mailbox_transport = lmtp:unix:/var/spool/postfix/private/dovecot-lmtp
Reload dei servizi
Per caricare le configurazioni dobbiamo fare il reload dei servizi.
# service dovecot reload # service postfix reload
Verifichiamo che lmtp sia attivo verificando che lo unix socket sia attivo:
ls -l /var/spool/postfix/private/dovecot-lmtp
E verifichiamo che il siege manager sia anch’esso attivato verificando che abbia per lo meno fatto il bind della porta
# netstat -tlnp | grep 4190 tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 5277/dovecot tcp 0 0 :::4190 :::* LISTEN 5277/dovecot
Ora potremmo inserire gli script nella directory ~/sieve editandoli con vim o con qualsiasi altro editor di testo. Ma avendo abilitato il managesieve possiamo collegarci da remoto con un client sieve e configurare i filtri più comodamente.
Configurazione Thunderbird
Esistono vari client sieve, io per ora sto utilizzando il plugin di thunderbird.
Per installarlo andiamo su Tool > Plugins e cerchiamo la parola chiave “sieve” clicchiamo su “installa”
Fatto questo è tutto pronto per funzionare: selezioniamo Tools > Sieve Messages Filters . Il plugin prende le impostazioni del server imap e propone tutti i parametri di default per sieve che, se non abbiamo modificato nulla sul server, funzionano egreggiamente.
Una prima schermata ci permette di vedere una lista di files e cliccando su uno di questi o cliccando su “new” si apre un editor interno che supporta l’evidenziazione e il controllo della sintassi.
Ad esempio per dividere le mail delle mailing list nelle directory imap usiamo uno script di questo tipo:
require ["fileinto", "envelope"]; if header :contains "List-Id" "gullp.lists.garl.ch" { fileinto "Linux.GULLP"; }elsif header :contains "List-Id" "ambassadors-it.lists.fedoraproject.org" { fileinto "Linux.Fedora.Ambassadors-it"; } else { keep; }
Sul sito di dovecot c’è una serie di esempi molto utili per capire come sieve funziona e le sue possibilità.
Immagine “Letters with tilt shift” di mbgrigby