Il progetto Pigeonhole fornisce il supporto Sieve a livello di plugin per il Local Delivery Agent (LDA) di Dovecot e anche per suo servizio LMTP. Il plugin è un interprete Sieve che filtra i messaggi in arrivo usando uno script scritto in linguaggio Sieve. Lo script Sieve è fornito dall'utente e, con il suo utilizzo, l'utente può personalizzare come i messaggi in arrivo sono trattati. I messaggi possono essere spediti a una cartella specifica, reindirizzati, rispediti al mittente, scartati, etc.
Il Server Dovecot Managesieve è un servizio per gestire la collezione di script Sieve dell'utente.
- Info: http://pigeonhole.dovecot.org/ - https://doc.dovecot.org/configuration_manual/sieve/
- Versione usata: 0.5.21.1
- Scarica: http://pigeonhole.dovecot.org/download.html
Se vuoi supportare i filtri per le email, devi gestire le Sieve
rules per mezzo del server dovecot-pigeonhole
. Quando crei un filtro con la tua webmail o il tuo client di posta, stai scrivendo uno script in linguaggio Sieve per personalizzare il modo in cui i tuoi messaggi saranno recapitati, vale a dire se saranno inoltrati a qualcun altro, scartati o salvati in delle cartelle particolari. Ma per fare questo Dovecot
deve agire anche come un Local Delivery Agent al posto di vpopmail/vdelivermail
, ovvero deve essere Dovecot
a salvare i messaggi nella tua cartella Maildir. Questa guida cercherà di spiegare come raggiungere questo obiettivo.
Installare come segue:
PIGEONHOLE_VER=0.5.21.1 cd /usr/local/src wget https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-${PIGEONHOLE_VER}.tar.gz tar xzf dovecot-2.3-pigeonhole-${PIGEONHOLE_VER}.tar.gz chown -R root:root dovecot-2.3-pigeonhole-${PIGEONHOLE_VER} cd dovecot-2.3-pigeonhole-${PIGEONHOLE_VER} # the program has to find the dovecot-config file in /usr/local/dovecot/lib/dovecot/ ./configure \ --prefix=/usr/local/dovecot-pigeonhole \ --with-dovecot=/usr/local/dovecot/lib/dovecot/ make
Se una versione precedente di pigeonhole
è già installata, sarà bene rimuovere a questo punto il link simbolico prima di procedere con l'installazione:
rm /usr/local/dovecot-pigeonhole
Ora si può procedere con l'installazione
make install cd /usr/local mv /usr/local/dovecot-pigeonhole /usr/local/dovecot-2.3-pigeonhole-${PIGEONHOLE_VER} ln -s /usr/local/dovecot-2.3-pigeonhole-${PIGEONHOLE_VER} /usr/local/dovecot-pigeonhole
Configurazione
cd /usr/local/dovecot/etc/dovecot/conf.d cp -p ../../../share/doc/dovecot/example-config/conf.d/20-managesieve.conf . cp -p ../../../share/doc/dovecot/example-config/conf.d/90-sieve.conf .
Ora abilitare (se non è già stato fatto) il plugin nel file 15-lda.conf
protocol lda { mail_plugins = $mail_plugins sieve }
e modificare il file conf.d/20-managesieve.conf secondo le proprie esigenze. Questo è il file che funziona per me e che si trova nella tarball:
## ## ManageSieve specific settings ## # Uncomment to enable managesieve protocol: protocols = $protocols sieve # Service definitions service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } # Service configuration protocol sieve { }
Ora modificare il file conf.d/90-sieve.conf. Queste impostazioni funzionano per me (questo file dovrebbe essere anche nell tua directory di configurazione se hai scaricato la mia tarball):
## ## Settings for the Sieve interpreter ## # Do not forget to enable the Sieve plugin in 15-lda.conf and 20-lmtp.conf # by adding it to the respective mail_plugins= settings. plugin { sieve = file:~/.sieve;active=~/.sieve/dovecot.sieve sieve_before = /usr/local/dovecot/etc/dovecot/sieve/ sieve_extensions = +notify +imapflags +spamtest }
Ora riavviare dovecot
dovecotctl restart
Impostazione dei file dot-qmail per abilitare Dovecot LDA e Sieve
Leggere questo per maggiori informazioni su come funzionano i file dot-qmail.
Se si vogliono usare le sieve
rules il delivery agent dovrà essere settato su Dovecot-LDA
. Ciò può essere ottenuto abilitando Dovecot-LDA
nel file dot-qmail
che dovrà gestire il recapito dei messaggi in questo modo:
|/var/qmail/bin/preline -f /usr/local/dovecot/libexec/dovecot/deliver -d $EXT@$USER
Allo stesso tempo vorremmo avere il controllo anche sui rendirizzamenti di qmail
, che al contrario necessaita di vpopmail
vdelivermail
come delivery agent. La soluzione che adotteremo è avere vdelivermail
nei .qmail-default dei domini, che eventualmente gestirà i forward, e Dovecot-LDA
nei file .qmail di tutti gli utenti, file che sarà responsabile di gestire il recapito delle email e i filtri basati su sieve
. Se si è patchato vpopmail
con la mia patch combinata e configurato con l'opzione --enable-defaultdelivery
i dot-qmail
saranno gestiti da vpopmail
secondo questa logica. Leggere questa pagina per avere informazioni più dettagliate.
Impostare una regola sieve anti-spam
Info:
Se si è deciso di far in modo che simscan lasci passare lo spam con un punteggio al di sotto di spam_hits
(file qmail/control/simcontrol), sarà il caso di metterlo nella cartella Spam. In tal caso sieve eseguirà uno script prima di processare gli script degli utenti cosicchè i messaggi di spam saranno scartati o spostati in Spam e le altre regole ignorate.
Prima di tutto creiamo una cartella dove salvare i nostri script globali e assegnamo all'utente vpopmail i privilegi di scrittura in questa cartella:
cd /usr/local/dovecot/etc mkdir sieve chown -R vpopmail.vchkpw sieve
Modifichiamo conf.d/90-sieve.conf per abilitare le estensioni necessarie di sieve e caricare lo script che vogliamo eseguire prima di quelli dell'utente:
sieve_extensions = +spamtest +spamtestplus +relational +comparator-i;ascii-numeric sieve_before = /usr/local/dovecot/etc/sieve/
Ora creiamo lo script /usr/local/dovecot/etc/sieve/move-spam.sieve (l'estensione deve essere .sieve altrimenti il file sarà ignorato):
require ["fileinto"]; if anyof (header :contains "X-Spam-Flag" "YES") { fileinto "Junk"; } /* Other messages get filed into INBOX */
Ogni volta che si modificano i file globali si deve pre-compilarli usando il programma sievec
(maggiori info qui):
su vpopmail cd /usr/local/dovecot/etc/sieve /usr/local/dovecot-pigeonhole/bin/sievec .
Test di managesieve
Prima di tutto controlliamo se il server risponde alla porta 4190 via telnet:
# telnet 0 4190 Trying 0.0.0.0... Connected to 0. Escape character is '^]'. "IMPLEMENTATION" "Dovecot Pigeonhole" "SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date spamtest spamtestplus" "NOTIFY" "mailto" "SASL" "PLAIN LOGIN CRAM-MD5" "STARTTLS" "VERSION" "1.0" OK "Dovecot ready."
Se si crea una sieve rule con il proprio client email (Mozilla Thunderbird ad esempio fornisce un add-on qui https://addons.mozilla.org/en-US/thunderbird/addon/2548/) o attraverso la webmail (leggere la prossima pagina riguardante Roundcube webmail), questo è ciò che si dovrebbe vedere nel log nel caso di un semplice filtro per redirect:
Oct 22 00:03:13 lda(test@yourdomain.net): Info: sieve: msgid=<c3445037f979a8cb793df1f858b7a4f9@somedomain.com>: forwarded to <someone@somewhere.net>
Commenti
Update Upload per questo pagina che comincia con un link Wrong
Mcmax 20 agosto 2014 14:00 CET
La pagina originale per upload del pluging è cambiata va usata quella del sito ufficale del plugin pigeonhole su dovecot.org.
wget http://pigeonhole.dovecot.org/releases/2.2/dovecot-2.2-pigeonhole-0.4.3.tar.gz
Rispondi | Permalink
grazie dell'avviso
roberto puzzanghera Mcmax 20 agosto 2014 14:24 CET
grazie dell'avviso, ora aggiorno :)
Rispondi | Permalink
Sbaglio o gli alias smettono di funzionare?
Alessio 19 settembre 2012 10:35 CET
Ciao Roberto, apprezzo molto il tuo lavoro di documentazione per unire dovecot e vpopmail nel delivery locale delle email. Ma mi sbaglio o togliendo vdelivermail dal .qmail-default si perde la possibilità di gestire gli alias (valias) in quanto il delivery di dovecot non ne sa niente della loro esistenza?
Rispondi | Permalink
vpopmail e --enable-valias
roberto puzzanghera Alessio 19 settembre 2012 15:00 CET
Ciao Alessio, si l'ho notato anch'io. Ho scoperto però che si può ovviare al problema mettendo gli alias su mysql, ovvero compilando vpopmail con --enable-valias
Rispondi | Permalink
Io ho valias e non funziona,
Alessio roberto puzzanghera 24 settembre 2012 12:34 CET
Io ho valias e non funziona, solo vdelivermail sa se gli alias sono nel DB o nei file .qmail e se il delivery delle email lo fa dovecot-lda questa funzionalità è ignorata.
Sei sicuro che a te funzioni con valias? Chi dice a dovecot-lda di cercare e come cercare gli alias nel DB?
Rispondi | Permalink
Scusa la confusione
roberto puzzanghera Alessio 24 settembre 2012 14:35 CET
Scusa la confusione, ma è da un po' che non installo nuovi mail server.
Come ho scritto nella pagina di vpopmail:
Quindi è il contrario. dovecot-lda funziona senza valias. Ho infatti ricontrollato ed è cosi che sto compilando vpopmail
Rispondi | Permalink