Pourquoi faire ?

La configuration du serveur imap (l'utilisation de [:Dovecot/BackendMysql:dovecot] est vivement conseillée) doit bien entendu être synchrone à la configuration mysql de postfix.

Comment faire ?

Notez que les façons de faire sont multiples. Ceci n'est qu'une façon de faire parmi beaucoup.

Cette documentation part du principe que le schéma de base de données utilisé est [http://trac.sn.auf.org/guia/browser/trunk/guia/noyau/greffons/Postfix_MySQL/bases/postfix.sql celui de GUIA] et que la base de donnée est déjà crée et peuplée.

virtual_mailbox_domains = ca.auf.org, secours

# ce fichier défini la requête à faire pour récuperer les données
# ici, la requete sera "quel répertoire pour stocker les mails de telle adresse ?"
virtual_mailbox_maps = proxy:mysql:/etc/postfix/virtual_mailbox_maps.cf

# un préfixe à ajouter devant chaque chemin de boîte aux lettres. 
# Plutôt mettre des chemins absolus dans la base pour se simplifier la vie ensuite :
# certains soft (postfix) autorises l'ajout de préfixes, d'autre seulement de suffixe.
virtual_mailbox_base = /

virtual_gid_maps = static:127
virtual_uid_maps = static:127
virtual_minimum_uid = 127

user = utilisateur-mysql
password = pass-de-utilisateur-mysql
hosts = hote-mysql
dbname = nom-de-la-base-mysql
query = SELECT homedir FROM users WHERE mail = '%s'

et l'utilisateur mysql correspondant:

mysql> grant select on nom-de-la-base-mysql.* to utilisateur-mysql@'localhost' identified by 'pass-de-utilisateur-mysql';

virtual_maps = proxy:mysql:/etc/postfix/mysql_virtual.cf

Il suffit d'adapter la requête pour aller chercher les informations correspondantes. Ici, le contenu de mysql_virtual.cf pourra être :

user = utilisateur-mysql
password = pass-de-utilisateur-mysql
hosts = hote-mysql
dbname = nom-de-la-base-mysql
query = SELECT destination FROM virtual WHERE source = '%s'

Que faire lorsque ça ne fonctionne pas ?