Ceci est une ancienne révision du document !
Comment configurer un hébergement d'email sur un serveur Debian.
En bref :
Se base sur le tutoriel Postfix virtual MAILBOX example: separate domains, non-UNIX accounts et Ubuntu.com - PostfixVirtualMailBoxClamSmtpHowto
L'idée est d'avoir un utilisateur (ici vmail) qui va gérer tous les mails. Ils seront stocké selon la hiérarchie suivante :
/home/vmail/
example.com/
alice/
bob/
domain.net/
eve/
Pour chacun de vos domaine, créez les records suivants :
example.com MX 1 smtp.example.com smtp.example A 1.2.3.4 imap.example A 1.2.3.4
Postfix est le serveur SMTP.
Le fichier de config principal est /etc/postfix/main.cf
Voici un exemple de fichier fonctionnant, a adapter selon vos besoin.
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# remplacer par votre domaine
myhostname = smtp.example
mydomain = example.com
myorigin = $mydomain
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
# on va utiliser des virtual_mailbox_domains donc pas de domaine ici
mydestination = localhost
relayhost =
# la liste des ip depuis lesquelles on peut accéder au serveur smtp
# on commente car on va utiliser SASL-auth pour contrôler
# mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# 5GB de mailbox max
mailbox_size_limit = 5368709120
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
home_mailbox = Maildir/
# 50MB de piece jointe max
message_size_limit = 52428800
# SASL
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_sasl_security_options = noplaintext,noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth-client
# Virtual
# Les domaines depuis lesquels on va recevoir des mails
virtual_mailbox_domains = example.com, domain.net, monsite.org
# Dossier de base de stockage des mails
virtual_mailbox_base = /home/vmail
# C'est là qu'on va stocker la liste des emails
virtual_mailbox_maps = hash:/etc/postfix/vmaps
virtual_minimum_uid = 100
# UID du user et group vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual
# 5GB de taille max des boites virtuelles
virtual_mailbox_limit = 5368709120
On veut accéder au mail depuis le port 465 via SSL, pas le port 25 qui n'est pas protégé. Décommentez les lignes suivantes dans le fichier /etc/postfix/master.cf
smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
C'est l'utilisateur qui gère le tout
groupadd -g 5000 vmail useradd -m -u 5000 -g 5000 -s /bin/bash vmail
alice@example.com example.com/alice/ bob@example.com example.com/bob/ bob@domain.net domain.net/bob/ eve@domain.net domain.net/eve/
Notez qu'on a bob@example.com et bob@domain.net qui pointe vers le même dossier, ainsi bob a deux adresses mails pour le même compte.
Pour générer la base de donnée de vmaps.
postmap /etc/postfix/vmaps
Et on redémarre le serveur !
/etc/init.d/postfix restart
On teste que la réception de mail fonctionne bien
mail alice@example.com Cc: Subject: Un email Ceci est un email <ctrl-d>
Le mail doit être dans /home/vmail/example.com/alice/new/