J’ai besoin d’un serveur mail interne (il ne sera pas ouvert vers l’exterieur) pour recevoir les posts de l’infra en general, routeur switch ou rapports de backup on va faire ca avec postfix et dovecot sur une ubuntu 24.04, les mails sont destinés a un user AD existant
1. Joindre le serveur au domaine Active Directory avec SSSD
Installer les packages nécessaires
sudo apt update
sudo apt install realmd sssd sssd-tools adcli samba-common-bin libnss-sss libpam-sss
Découvrir et rejoindre le domaine
# Vérifier que le domaine est accessible
realm discover mondomaine.local
# Joindre le domaine (un compte AD avec droits suffisants est requis)
sudo realm join --user=Administrateur mondomaine.local
Vérifier la jointure
realm list
On doit voir quelque chose comme :
mondomaine.local
type: kerberos
realm-name: MONDOMAINE.LOCAL
domain-name: mondomaine.local
configured: kerberos-member
server-software: active-directory
client-software: sssd
Configuration de SSSD
Le fichier /etc/sssd/sssd.conf est généré automatiquement par realm join. En voici un exemple typique après jointure :
[sssd]
domains = mondomaine.local
config_file_version = 2
services = nss, pam
[domain/mondomaine.local]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = MONDOMAINE.LOCAL
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = mondomaine.local
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = permit
Simplifier les noms d’utilisateurs
Par défaut, SSSD utilise le format utilisateur@mondomaine.local pour les noms et les répertoires home (/home/utilisateur@mondomaine.local). Pour simplifier en utilisateur seulement, modifier deux paramètres dans /etc/sssd/sssd.conf :
use_fully_qualified_names = False
fallback_homedir = /home/%u
Appliquer les changements :
sudo systemctl restart sssd
sudo sss_cache -E
# Vérifier
getent passwd nomutilisateur
# Résultat attendu : nomutilisateur:*:XXXX:XXXX::/home/nomutilisateur:/bin/bash
⚠️ Attention : Si un compte Unix local porte le même nom qu’un compte AD, il sera utilisé en priorité par Postfix. Vérifier avec
getent passwd nomutilisateuret supprimer tout doublon si nécessaire avecsudo userdel -r nomutilisateur.
⚠️ Attention : Avec
use_fully_qualified_names = False, tous les utilisateurs AD sont accessibles sans suffixe de domaine. Cette option est adaptée aux environnements à domaine unique. En multi-domaines, conserverTrue.
2. Installer Postfix et Dovecot
sudo apt install postfix dovecot-imapd dovecot-pop3d mailutils
Lors de l’installation de Postfix, sélectionner “Site Internet” ou “No configuration” selon la préférence, la config sera faite manuellement.
3. Configurer Postfix
/etc/postfix/main.cf
Voici les paramètres essentiels pour un serveur mail interne :
# Identité du serveur
myhostname = mailsrv.mondomaine.local
mydomain = mondomaine.local
myorigin = $mydomain
# Réseau
inet_interfaces = all
inet_protocols = ipv4
# Domaines locaux acceptés
mydestination = $myhostname, localhost.$mydomain, localhost, mondomaine.local
# Livraison en Maildir
home_mailbox = Maildir/
# Réseau autorisé à relayer sans authentification
mynetworks = 127.0.0.0/8 192.168.1.0/24
# Restrictions de relay
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
# SASL — authentification SMTP déléguée à Dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
Redémarrer Postfix :
sudo systemctl restart postfix
4. Configurer Dovecot
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
namespace inbox {
inbox = yes
}
/etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login
disable_plaintext_auth = no
passdb {
driver = pam
}
userdb {
driver = passwd
}
Dovecot utilise PAM pour l’authentification, qui s’appuie sur SSSD pour valider les credentials AD. Aucune configuration supplémentaire n’est nécessaire côté PAM dans la plupart des cas.
/etc/dovecot/conf.d/10-master.conf
Ajouter le socket SASL pour Postfix dans le bloc service auth. Ce socket permet à Postfix de déléguer l’authentification SMTP à Dovecot :
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-master {
mode = 0600
user = root
group = root
}
user = root
}
⚠️ Vérifier qu’il n’existe pas de doublon de socket dans d’autres fichiers de configuration Dovecot avant d’ajouter ce bloc :
grep -rn "unix_listener" /etc/dovecot/
Redémarrer Dovecot :
sudo systemctl restart dovecot
5. Préparer le Maildir utilisateur
Postfix livre les mails dans ~/Maildir/ mais ce répertoire doit exister au préalable. Le créer pour chaque utilisateur :
sudo mkdir -p /home/nomutilisateur/Maildir/new
sudo mkdir -p /home/nomutilisateur/Maildir/cur
sudo mkdir -p /home/nomutilisateur/Maildir/tmp
sudo chown -R nomutilisateur /home/nomutilisateur/Maildir
sudo chmod 750 /home/nomutilisateur
💡 Astuce : Les accolades (
{new,cur,tmp}) ne fonctionnent pas dans les chemins entre guillemets. Créer les trois sous-dossiers séparément comme ci-dessus.
💡 Astuce : Pour les utilisateurs AD, le nom du groupe principal peut contenir des espaces. Utiliser uniquement
chown -R nomutilisateursans spécifier le groupe pour éviter les erreurs.
6. Tester la chaîne complète
Envoyer un mail de test
echo "Test mail" | mail -s "Test Postfix" nomutilisateur@mondomaine.local
Vérifier la livraison dans les logs
sudo tail -20 /var/log/syslog | grep postfix
On doit voir une ligne indiquant la livraison réussie :
postfix/local: to=<nomutilisateur@mondomaine.local>, status=sent (delivered to maildir)
Vérifier que le mail est dans le Maildir
sudo ls /home/nomutilisateur/Maildir/new/
Tester l’authentification IMAP avec telnet
telnet localhost 143
Une fois connecté, taper :
a login nomutilisateur@mondomaine.local "MotDePasseAD"
a select INBOX
Réponses attendues :
a OK Logged in— authentification réussie* 1 EXISTS— un mail présent dans la boîte
Pour quitter : a logout ou Ctrl+] puis quit.
7. Configurer un client IMAP (Outlook / Thunderbird)
| Paramètre | Valeur |
|---|---|
| Serveur entrant (IMAP) | mailsrv.mondomaine.local |
| Port IMAP | 143 |
| Chiffrement | Aucun (ou STARTTLS si SSL configuré) |
| Serveur sortant (SMTP) | mailsrv.mondomaine.local |
| Port SMTP | 25 |
| Authentification SMTP | Oui (login / mot de passe AD) |
| Login | nomutilisateur@mondomaine.local |
Points de vigilance
Conflits de comptes : Si un compte Unix local a le même nom qu’un utilisateur AD, Postfix lui livrera les mails en priorité. Toujours vérifier avec getent passwd nomutilisateur avant la mise en production et supprimer les doublons.
Permissions du Maildir : Le répertoire home doit appartenir à l’utilisateur AD. En cas d’erreur Permission denied, vérifier avec ls -la /home/nomutilisateur/.
Espace disque : En IMAP, les mails restent sur le serveur dans le Maildir. Surveiller l’espace avec df -h /home et envisager des quotas Dovecot à terme pour éviter une saturation.
Ordre de démarrage : Dovecot doit être démarré avant que Postfix ne tente d’utiliser le socket SASL. En cas de problème d’auth SMTP, vérifier que les deux services sont actifs avec systemctl status postfix dovecot.
SSL/TLS : Cette configuration fonctionne sans chiffrement, ce qui est acceptable en réseau interne isolé. Pour une exposition hors LAN, ajouter un certificat (Let’s Encrypt ou PKI interne) et activer STARTTLS.
Voila, vous avez une solution de messagerie interne légère, robuste et parfaitement intégrée à Active Directory.