19 aprile 2022 Roberto Puzzanghera 6 commenti
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.
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.
La versione testata al momento della scrittura di questa pagina è la 0.5.20. E' consigliabile testare quanto sotto con l'ultima versione rilasciata.
cd /usr/local/src wget https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-0.5.20.tar.gz tar xzf dovecot-2.3-pigeonhole-0.5.20.tar.gz chown -R root.root dovecot-2.3-pigeonhole-0.5.20 cd dovecot-2.3-pigeonhole-0.5.20 # 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-0.5.20 ln -s /usr/local/dovecot-2.3-pigeonhole-0.5.20 /usr/local/dovecot-pigeonhole
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
Leggere questo per maggiori informazioni su come funzionano i file dot-qmail.
La cosa importante da capire è che se si vogliono usare le Sieve rules, vdelivermail non dovrà più avere in carico il recapito dei messaggi ma questo sarà un compito che dovrà essere assolto da Dovecot LDA. In altre parole, in ogni dominio dove si vuole abilitare le regole sieve si deve modificare .qmail-default
come segue:
|/var/qmail/bin/preline -f /usr/local/dovecot/libexec/dovecot/deliver -d $EXT@$USER
Naturalmente si può decidere di limitare le regole sieve solo a certi utenti, in questo caso è sufficiente ritoccare il file .qmail-utente nella cartella del dominio o nella cartella home dell'utente stesso.
Se è stata applicata la mia patch di vpopmail
e se si è compilato con --enable-defauldelivery
come suggerito in questa guida, il default delivery sarà copiato da /var/qmail/control/defaultdelivery
. Pertanto sarà bene salvare in questo caso la linea scritta sopra:
echo '|/var/qmail/bin/preline -f /usr/local/dovecot/libexec/dovecot/deliver -d $EXT@$USER' > /var/qmail/control/defaultdelivery
NB: non usare i doppi apici nel comando di sopra, poichè in tal caso la variabile $EXT@$USER
sarà sostituita l'account corrente (@root per esempio).
Se si è deciso di abilitare sieve per default, si può sempre modificare /var/qmail/control/defaultdelivery a condizione che si lasci vuoto il file .qmail-default dei domini appena creati (basta rimuovere la prima riga, mai cancellare il file se non si vuole compromettere il funzionamento di vpopmail), anche se ciò non è una buona idea. Infatti, modificare defaultdelivery e svuotare .qmail-default comporta il rischio di mandare in confusione qmailadmin quando si elencano le mailing-lists, poichè una mailing-list "default" fittizia appare in qualche caso (per lo meno questo è ciò che ho osservato io :-). Ogni commento su questo sarebbe gradito.
Info: http://tools.ietf.org/html/rfc5235 - http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples
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 .
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>
RBL and Bordermailer
20 marzo 2023 09:31
RBL and Bordermailer
20 marzo 2023 09:13
RBL and Bordermailer
18 marzo 2023 15:52
Bug in dknewkey
18 marzo 2023 11:35
What is qq_internal_bug_?
18 marzo 2023 11:28
What is qq_internal_bug_?
18 marzo 2023 11:08
What is qq_internal_bug_?
18 marzo 2023 08:48
What is qq_internal_bug_?
18 marzo 2023 08:08
What is qq_internal_bug_?
18 marzo 2023 07:43
What is qq_internal_bug_?
18 marzo 2023 04:37
Tags
apache clamav dkim dovecot ezmlm fail2ban ftp guide hacks lamp letsencrypt linux linux-vserver lxc mariadb mediawiki mozilla mysql openboard owncloud patches php proftpd qmail qmail to postfix qmail-spp qmailadmin rbl roundcube rsync sieve simscan slackware solr spamassassin spf ssh ssl tcprules tex ucspi-tcp vpopmail vqadmin
Commenti
Update Upload per questo pagina che comincia con un link Wrong
Mcmax 20 agosto 2014 14:00
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
grazie dell'avviso, ora aggiorno :)
Rispondi | Permalink
Sbaglio o gli alias smettono di funzionare?
Alessio 19 settembre 2012 10:35
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
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
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
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