====== Gérer des domaines virtuels avec Postfix et Dovecot ====== Les autres tutoriels présent sur ce site sont dédié pour un serveur mail se basant sur des comptes UNIX. Ici, nous allons gérer des domaines dit "virtuels". C'est à dire que postfix saura accepter différents destinataires (tel que contact@domaine.com et contact@domaine2.com) que l'on aura au préalable autorisé à communiquer avec le serveur. Il existe plusieurs moyens de gérer des comptes, soit avec une base de donnée mysql, ou avec un annuaire LDAP ou mais encore par fichier. Nous allons utiliser la dernière solution car elle demande pas de nouvelle installation. ===== Configuration de postfix ===== Admettons que l'on parte de la configuration effectué [[serveur-mail-postfix|dans ce tutoriel]]. Cela concerne uniquement la rubrique SMTP et IMAP. On peut mettre de côté le chiffrement et l'installation de Rainloop. Commençons par ajouter dans le main.cf : #VIRTUEL virtual_mailbox_domains = domaine.com domaine2.com virtual_mailbox_base = /var/mail virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual Voici [[http://www.postfix.org/virtual.8.html|la documentation]] pour savoir à quoi servent ces directives. La plus importante est $virtual_mailbox_domains qui cite les domaines que l'on souhaite gérer. Attention! Le domaine ne doit pas être listé dans la directive $mydesination. Sinon il mettra le mail à l'emplacement /var/mail comme si c'était un compte UNIX. Pour s'assurer de ne pas perdre un mail en cours de route, on peut ajouter des alias de comptes UNIX vers les adresses mails virtuels : nano /etc/aliases contact: contact@domaine.com root: contact@domaine.com Appliquons ces changements : newaliases On se devra de créer les 2 fichiers ci-dessous avec le contenu respectif dont le contenu du 1er fichier est facultatif : nano /etc/postfix/virtual boss@toto.com user-unix contact@domaine.com contact@domaine2.com nano /etc/postfix/vmailbox contact@domaine.com domaine.com/contact/ user@domaine.com domaine.com/user/ contact@domaine2.com domaine2.com/contact/ user@domaine2.com domaine2.com/user/ Il reste plus que postfix prennent en compte ces modifications : postmap /etc/postfix/virtual postmap /etc/postfix/vmailbox /etc/init.d/postfix reload Ci-dessus, nous avons renseigné un uid et un gid à 5000 dont-il concernera un utilisateur spécifique qui aura pour rôle de placer les mails dans les boites respectives : groupadd vmail -g 5000 useradd vmail -r -g 5000 -u 5000 -d /var/mail -m -c "facteur" On indique que cet utilisateur sera le propriétaire de son dossier home : chown vmail /var/mail Ainsi, si un compte s'authentifie une première fois à l'aide de Dovecot, son dossier sera créé automatiquement. ===== Configuration de Dovecot ===== On peut commencer par activer les logs pour nous permettre de rapidement trouver l'éventuel soucis rencontré : nano /etc/dovecot/dovecot.conf log_path = /var/log/dovecot.log debug_log_path = /var/log/dovecot-debug.log info_log_path = /var/log/dovecot-info.log log_timestamp = "%Y-%m-%d %H:%M:%S " auth_verbose=yes auth_debug=yes mail_debug=yes Puis on ajoute ces directives pour que Dovecot puisse utiliser les comptes virtuel au lieu des comptes UNIX : # VIRTUEL : mail_access_groups = vmail default_login_user = vmail first_valid_uid = 5000 first_valid_gid = 5000 mail_location = maildir:/var/mail/%d/%n userdb { driver = static args = uid=5000 gid=5000 home=/var/mail/%d/%n allow_all_users=yes } passdb { driver = passwd-file args = scheme=SHA256 /etc/dovecot/passwd } ==== Forcer la génération des dossiers ==== Cette section est facultative mais peut être utile si l'on veut que l'utilisateur puisse utiliser des dossiers tel que Drafts, Junk, Trash, Sent, etc... Pour s'abonner à ses dossier, il faut modifier le fichier suivant en rajouter uniquement la directive "auto" : nano /etc/dovecot/conf.d/15-mailboxes.conf namespace inbox { # These mailboxes are widely used and could perhaps be created automatically: mailbox Drafts { special_use = \Drafts auto = subscribe } mailbox Trash { special_use = \Trash auto = subscribe } mailbox Sent { special_use = \Sent auto = subscribe } Vérifions qu'il n'y ait pas de soucis de syntaxe : doveconf -n > /dev/null ===== Comptes mails ===== Il reste plus qu'a créer les comptes compte : doveadm pw -s sha256 | cut -d '}' -f2 Il nous suffira alors d'ajouter ce mot de passe écrit en base64 dans le fichier suivant : nano /etc/dovecot/passwd contact@domaine.com:CT59X9uqz6kkSIYbEQdbP7pTKgfZRbSaRJGSUvXoMK0= ===== Effectuer des tests ===== Pour vérifier que tout fonctionne bien, vous pouvez utiliser le client Mutt dont voici un fichier d'exemple de configuration : # config de base set from = "user@domain.com" set realname = "Bruno TATU - Container" set editor = "vim -c 'set tw=72' -c 'set wrap'" set signature=~/.mutt/signature # compte imap : set imap_user = "user@domain.com" set folder = "imaps://mail.domain.com:993" set imap_check_subscribed set mail_check = 12 set timeout = 10 set imap_keepalive = 300 set spoolfile = "imaps://user@domain.com@mail.domain.com:993/INBOX" set spoolfile = "+INBOX" # compte smtp : set smtp_url = "smtps://user@domain.com@mail.domain.com:465/" set move = no set pager_index_lines=7 set pager_stop # comportement : set quit set delete set sidebar_visible = yes set sidebar_width = 24 color sidebar_new green default