====== 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