Dovecot deliver comme LDA et Sieve / Pigeonhole

Pour remettre un message localement dans le bon répertoire de la bonne boîte aux lettres, un système de messagerie utilise un LDA (Local Delivery Agent). Le MTA (Mail Transfer Agent) Postfix est souvent utilisé pour cette tache par l’intermédiaire de son daemon virtual qui fait exactement cette tache, sans fioritures. C’est lorsque l’on veut un peu plus de fonctionnalités et de souplesse qu’il est intéressant de changer de LDA, dans ce tutoriel ce sera pour celui de Dovecot que nous connaissons déjà pour avoir mis en œuvre un serveur complet de messagerie basé sur Postfix et Dovecot. Le LDA de Dovecot se nomme deliver et la prochaine étape de ce tutoriel consistera à modifier notre configuration pour l’utiliser.

Postfix

On commence par informer Postfix du nouveau service de livraison locale dans le fichier master.cf en ajoutant ceci (il n’y a que 2 lignes, la seconde devant être indentée, les anti-slash signifient que j’ai coupé la ligne pour une meilleure lisibilité, il ne faut pas les écrire) :

dovecot unix - n n - - pipe
	flags=DRhu user=vmail:vmail \
	argv=/usr/libexec/dovecot/deliver \
	-f ${sender} -d ${recipient}

On passe au fichier principal main.cf en activant le nouveau mode de livraison :

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

On peut relancer Postfix.

postfix reload

La partie Postfix est terminée, passons à la suite.

Dovecot

On passe à notre serveur IMAP où plusieurs fichiers de configuration vont etre modifiés. Le but final avoué de ce tutoriel est d’utiliser Sieve/Pigeonhole pour faire du filtrage de messages. Avant d’aller plus loin, il faut savoir qu’il est bon d’avoir des répertoires home pour les utilisateurs virtuels de notre serveur de messagerie. Attention on parle là de répertoires home au niveau de la messagerie et pas des utilisateurs du système, c’est un point à bien comprendre. Il faut également distinguer le répertoire home du répertoire de destination des messages, le premier est mail_home et le second mail_location. Plus d’informations sur le sujet à cette adresse : http://wiki2.dovecot.org/VirtualUsers/Home.
Le choix ici sera de garder notre arborescence sous /home/vmail/domaine/utilisateur, les messages étant là (cur, new, tmp, dovecot*, etc) et un nouveau répertoire home est crée au même niveau qui sera le fameux répertoire home. Donc à modifier/ajouter dans 10-master.conf :

mail_home = /home/vmail/%d/%n/home
mail_location = maildir:/home/vmail/%d/%n

Toujours dans ce fichier, on ajoute :

unix_listener auth-userdb {
	mode = 0600
	user = vmail
	group = vmail
}

Nous pouvons créer un première règle de test dans un fichier .dovecot.sieve sous home donc.

# Déplace les messages contenant "Test" dans le sujet 
# dans le dossier IMAP Junk
require ["fileinto"];
if header :contains "Subject" "Test" {
	fileinto "Junk";
}

On continue en éditant le fichier 15-lda.conf :

protocol lda {
	mail_plugins = $mail_plugins sieve
	postmaster_address = fabien@feub.net
	hostname = le_hostname_du_serveur
	log_path = /var/log/dovecot-lda-errors.log
	info_log_path = /var/log/dovecot-lda.log
}

Où Dovecot va-t-il lire les règles Sieve, la réponse sera dans le fichier 90-sieve.conf :

plugin {
	sieve = ~/.dovecot.sieve
	sieve_dir = ~/sieve
}

Nous passons à Managesieve qui est un protocole permettant à des applications tierces (clients de messagerie) de gérer les règles. La configuration se fait dans le fichier 20-managesieve.conf :

protocols = $protocols sieve

service managesieve-login {
	inet_listener sieve {
		port = 4190
	}

	service_count = 1
	process_min_avail = 0
	vsz_limit = 64M
}

protocol sieve {
	managesieve_max_line_length = 65536
	managesieve_implementation_string = Dovecot Pigeonhole
}

A ce stade, on peut redémarrer Dovecot.

systemctl restart dovecot.service

Roundcube

Le webmail Roundcube 0.8 possède un plugin Sieve, il est très facile de l’activer. On commence par renommer le fichier [roundcube_installation]/plugins/managesieve/config.inc.php.dist en config.inc.php et on renseigne le port de Managesieve :

$rcmail_config['managesieve_port'] = 4190;

Le plugin s’active dans [roundcube_installation]/config/main.inc.php :

$rcmail_config['plugins'] = array('managesieve');

C’est tout, on peut voir qu’un nouvel élément de menu Filters apparait sous Settings. Normalement les anciennes régles (celles ajoutées à la main dans .dovecot.sieve sont importées, mais dans le doute et si vous en avez beaucoup, faites une copie de sauvegarde du fichier .dovecot.sieve).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *