Sieve
permet de créer des règles de filtrage des e-mail reçus.
ManageSieve
permet a l'utilisateur de gérer ses propres règles.
~~READMORE~~
Dovecot
doit être opérationnelle et livrer les mails via Dovecot-LDA
ou Dovecot-LMTP .
# aptitude install dovecot-sieve ... Creating config file /etc/dovecot/conf.d/90-sieve.conf with new version ...
Le fichier 90-sieve.conf
contient :
plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve }
On change (un peu) cette configuration de base, et on la compléte dans local.conf
(ma conf pour Dovecot
) :
plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve.d sieve_before = ~/.dovecot_before.sieve sieve_max_script_size = 2M sieve_quota_max_scripts = 30 sieve_quota_max_storage = 300M }
“sieve_before
” , parce que lorsqu'on installera “ManageSieve
, ce qu'on aurait pondu dans le fichier ~/.dovecot.sieve
sera simplement écrasé !
Pour finir cette installation, on ajoute le plugin “sieve” dans la section protocol lmtp
pour avoir:
mail_plugins = $mail_plugins sieve
Eventuellement, on peut aussi ajouter:
lda_mailbox_autocreate = yes
Ainsi, les “sous-répertoires” seront automatiquement créés par Sieve
, lorsque nécessaire.
A ajouter dans le fichier ”.dovecot_before.sieve
“ d'un utilisateur.
Si le sujet commence par ”[SPAM]
“ , marquer comme lu et déplacer dans le dossier ”Junk
“ :
require ["regex","fileinto","imap4flags"]; if anyof (header :regex "Subject" "^[[]SPAM[]]") { # Marque "lu" setflag "\\Seen"; # Deplace dans "Junk" fileinto "Junk"; # N'execute pas d'autres règles stop; }
anyof( a , b , c )
: équivalent de “a” ou “b” ou “c”
allof( a , b , c )
: équivalent de “a” et “b” et “c”
NOTA: Evidement, dans l'exemple, le ”anyof()
“ est superflu.
Automatiquement, la première fois, ce scripte sera compilé avant d'être exécuté. On peut forcer la compilation maintenant, mais attention a bien donner les droits d'écriture pour l'utilisateur.
# sievec .dovecot_before.sieve
(Tout va bien: un fichier ”.dovecot_before.svbin
“ est apparu)
# chown <USER>: .dovecot_before.svbin
(Parce qu'en cas de modification, la re-compilation se fera dans le contexte de ”<USER>
“)
require ["vacation"]; # ^^^ a ajouter a la première ligne "require" if anyof (true) { vacation :days 1 :addresses ["<USER>@tjaouen.fr"] :subject "[Vacation] Je suis en vacances !" text: Bonjour, *** Ceci est un message automatique *** J'ai bien reçu votre message, mais je crains de ne pouvoir y répondre avant le 27 octobre 2013. Cordialement Thierry Jaouen -- Ni dieu ni maître, juste une chaine au cou. . ; }
Note:
:days 1
“ pour faire des tests, il faudrait mettre ”:days 0
“ et aussi dans la conf du plugin ”sieve_vacation_min_period = 0
“:addresses …
“ parce que ça ne fonctionne pas sans… Je cherche encore pourquoi (voir aussi: ”sieve_vacation_dont_check_recipient = yes
“
Pour désactiver ce script, il suffit de remplacer ”anyof (true)
“ par ”anyof (false)
“
Son protocole est proche de celui d'IMAP
.
On va l'installer avec le support SSL, parce que c'est bien.
# aptitude install dovecot-managesieved ... Creating config file /etc/dovecot/conf.d/20-managesieve.conf with new version ...
Le fichier installé est totalement commenté.
# cd /etc/dovecot # cd private # openssl genrsa 2048 > ssl-managesieve-tjaouen-fr.key # chmod 0600 ssl-managesieve-tjaouen-fr.key # cd .. # openssl req -new -key private/ssl-managesieve-tjaouen-fr.key -x509 -days 3650 -out ssl-managesieve-tjaouen-fr.pem
… qu'on peut alimenter ainsi:
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]: France Locality Name (eg, city) []:Paris Organization Name (eg, company) [Internet Widgits Pty Ltd]:Eez.fr Corp. Organizational Unit Name (eg, section) []:ManageSieve Common Name (e.g. server FQDN or YOUR name) []:managesieve.tjaouen.fr Email Address []:NOSPAMpostmaster_at_tjaouen.fr
On a maintenant 2 fichiers:
ssl-managesieve-tjaouen-fr.pem private/ssl-managesieve-tjaouen-fr.key
Dans la conf de Dovecot
, soit local.conf
:
service managesieve-login { inet_listener sieve { port = 4190 } #process_min_avail = 5 } protocol sieve { # Pour debug de sieve #mail_debug = yes # "protocol managesieve" ssl_cert = </etc/dovecot/ssl-managesieve-tjaouen-fr.pem ssl_key = </etc/dovecot/private/ssl-managesieve-tjaouen-fr.key # FIXME: ça marche ou pas ? ssl = required # force STARTTLS disable_plaintext_auth = yes # idem }
Un module sieve existe, et permet, donc, de composer ces scripts et de les activer (1 seul a la fois) à distance.
Un plugin Sieve
intégré dans le webmail Roundcube
donne le pouvoir à n'importe quel utilisateur de créer des règles simples (dont la “vacation” ) .
En supposant que Roundcube
est déjà installé .
# aptitude install roundcube-plugins-extra
Configurer le plugin:
Une conf par defaut est déjà en forme là: /usr/share/roundcube/plugins/sieverules/config.inc.php.dist
# cp /usr/share/roundcube/plugins/sieverules/config.inc.php.dist /etc/roundcube/plugins/sieverules/config.inc.php
Dans le fichier /etc/roundcube/plugins/sieverules/config.inc.php
, voici mes changements:
$rcmail_config['sieverules_host'] = 'mail.local.eez.fr'; $rcmail_config['sieverules_port'] = 4190; #$rcmail_config['sieverules_usetls'] = true;
Le usetls
n'est pas indispensable dans un reseau local
Puis ajouter le plugin dans la conf de chaque webmail , exemple:
$rcmail_config['plugins'] = array('sieverules');
On peut alors créer différents filtres. Pour information, on voit que ces filtres sont écrit dans :
.dovecot.sieve -> sieve.d/roundcube.sieve