Table des matières

Sieve

Introduction

Les règles sieves permettent une gestion des mails sur le serveur. C'est à dire que le tri des messages est exécuté sur le serveur par le serveur . Ce qui permet d'établir des règles de message sur un webmail … Exemple de type de règle : tu viens de la mailing maison du libre , je te déplace dans la poub…heu dans le dossier prévu a cet effet e

Prerequis

avoir installé les services postfix,ldap, dovecot, roundcube …etc selon les pages du wiki En bref c'est d'avoir suivi toute ces doc

Mise à jour de dovecot

Nous allons activer les dépots backports pour installer la dernière version de dovecot. Son moteur de gestions sieve a été entierement revu.

Ajout du dépôt backports dans /etc/apt/sources.list

vi /etc/apt/sources.list

Et ajouter la ligne

deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free

Ensuite on crée le fichier /etc/apt/preferences pour que le système installe le dovecot du backports par défaut.

vi /etc/apt/preferences

et lui mettre

# APT PINNING PREFERENCES
Package: dovecot-common
Pin: release a=lenny-backports
Pin-Priority: 999

Package: dovecot-pop3d
Pin: release a=lenny-backports
Pin-Priority: 999

Package: dovecot-imapd
Pin: release a=lenny-backports
Pin-Priority: 999
         

Le deliver dovecot

C'est dovecot qui gère les règles sieve et exécute ces règles. il faut donc que le depot du mail passe par dovecot. C'est donc le deliver de dovecot qu'il faut utiliser.

nous allons éditer le main.cf

vi /etc/postfix/main.cf

et ajouter

# Dovecot LDA
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

mailbox_command = /usr/lib/dovecot/deliver

ensuite dans le fichier master.cf

vi /etc/postfix/master.cf

ajoutez

# Dovecot LDA
dovecot    unix  -       n       n       -       -       pipe
   flags=DRhu user=utilisateurmail:utilisateurmail argv=/usr/lib/dovecot/deliver -d $recipient

Puis on modifie le dovecot.conf pour paramétrer le LDA (le deliver dovecot) nous allons en profiter pour modifier la structure du répertoire /var/mail/uid. pour que ca deviennent /var/mail/[trois premières lettres de l'uid]/l'uid

de cette configuration nous en retirons au moins deux bénéfices. nous serons sur d'utiliser le LDA dovecot. Ainsi si jamais les règles sieves ne fonctionne pas, nous serons sur que le pb ne vient pas de la non utilisation de dovecot pour la délivrance des mails.

cela apporte aussi une stabilité au niveau des perf. mettre toutes les boites mails dans un même répertoire, les perfs du système de fichier diminueront au fur et à mesure que le nombre d'utilisateur augmentera.

donc on édite le fichier /etc/dovecot/dovecot.conf

vi /etc/dovecot/dovecot.conf

et ajoute les lignes ci dessous(du a l'installation de dovecot backports)

mail_uid= 2009
mail_gid= 2009

on modifie la ligne

mail_location = maildir:/var/mai/%n

en

mail_location = maildir:/var/mail/%3n/%n

on ajoute le bloc ci dessous

protocol lda {
      postmaster_address = postmaster
      auth_socket_path = /var/run/dovecot/auth-master
      #log_path = /var/log/dovecot-local-deliver.log
      #info_log_path = /var/log/dovecot-local-deliver.log
}

juste apres le bloc

passdb ldap {
      args = /etc/dovecot/dovecot-passdb-ldap.conf
}

on insere le bloc

userdb ldap {
      args = /etc/dovecot/dovecot-userdb-ldap.conf
}

et on vérifie le bloc master pour qu'il soit identique que le bloc lda

master { 
      # doit etre identique que pour le lda 
      path = /var/run/dovecot/auth-master 
      mode = 0666 
 }

et enfin on crée le fichier /etc/dovecot/dovecot-userdb-ldap.conf

vi /etc/dovecot/dovecot-userdb-ldap.conf

on on insère dedans

hosts = ldap.mdl29
default_pass_scheme = PLAIN
auth_bind = yes
ldap_version = 3
base = dc=mdl29,dc=net
deref = never
scope = subtree
user_attrs = uid=user
user_filter = (&(|(mail=%u)(uid=%u))(mailhost=mail.mdl29.net))

On redemarre postfix , dovecot

/etc/init.d/postfix restart
/etc/init.d/dovecot restart

et on envoi un mail pour voir si tout fonctionne , pour voir si le LDA dépose bien dans /var/mail/[3 lettre UID]/uid . si ce n'est pas le cas alors la doc est mal faite il faut la corriger

si c'est le cas on continue

Activation de sieve dans dovecot

bien maintenant que le LDA fonctionne nous allons pouvoir activer les règles sieves pour ce faire on édite dovecot.conf

vi /etc/dovecot/dovecot.conf

et dans le bloc LDA on insère la ligne

mail_plugins = sieve

ce qui nous donne

protocol lda {
      postmaster_address = postmaster
      auth_socket_path = /var/run/dovecot/auth-master
      mail_plugins = sieve
      #log_path = /var/log/dovecot-local-deliver.log
      #info_log_path = /var/log/dovecot-local-deliver.log
}

et en dessous de ce bloc on ajoute le bloc ci dessous

plugin {

sieve = /var/sieve-scripts/%3u/%u/perso.sieve
sieve_dir = /var/sieve-scripts/%3u/%u
}

on redémarre dovecot

/etc/init.d/dovecot restart

maintenant on peut créer une règle sieve a la main pour tester si sieve fonctionne donc nous créeons le fichier /var/sieve-scripts/%3u/%u/perso.sieve

vi /var/sieve-scripts/%3u/%u/perso.sieve

et lui mettre dedans

require ["fileinto"];
# rule:[ma petite regle]
if anyof (header :contains "From" "maison-du-libre@mdl29.net")
{
      fileinto "trash";
      stop;
}

Bien entendu vous pouvez modifier le from et le fileto (ici trash) qui doit être un répertoire qui existe si tout marche bien les messages from maison-du-libre@mdl29.net devrait atterrir dans trash (la corbeille)

activation du protocole manage sieve

bon créer les scripts à la main c'est gentil mais ce n'est pas très très userfriendly. Il existe un protocole sieve qui permet a n'importe quel client (sieve) de générer les scripts sieves. on va activer le daemon dans /etc/dovcote/dovecot.conf on modifie la ligne

protocols =imap pop3

pour qu'elle ressemble a cela

protocols =imap pop3 managesieve

et on ajoute le bloc

protocol managesieve {
 # Specify an alternative address:port the daemon must listen on
 # (default: *:2000)
 listen = *:2000
 mail_debug=yes
 managesieve_logout_format = bytes ( in=%i : out=%o )
 mail_executable =/usr/lib/dovecot/managesieve
 login_executable = /usr/lib/dovecot/managesieve-login
}

on referme on restart dovecot

/etc/init.d/dovecot restart

on vérifie qu'il y a bien un processus managesieve-login

et on peut installer le plugin manage sieve dans roundcube

installation du plugin manage sieve dans rouncube

Le plugin sieve de roundcube est déjà installé (il est compris dans rouncube en fait), il suffit de l'activer. Pour cela, il suffit de modifier le fichier de configuration de roundcube (le main.inc.php). et d'ajouter le plugin.

// List of active plugins (in plugins/ directory)
$rcmail_config['plugins'] = array('managesieve');

voilà.