Serveur mail sur CentOS
Comme promis voici un petit article expliquant la mise en place d'un serveur mail sur CentOS avec accès IMAP sécurisé (chiffrement SSL). Nous parlons ici d'une situation très simple, les utilisateurs sont les comptes locaux du système, les messages sont enregistrés dans leur répertoire personnel. C'est ce que vous devriez faire pour un serveur perso ou avec peu d'utilisateurs.
Pour la fonction SMTP (envoi/réception) nous allons utiliser Postfix, et pour l'accès IMAP (consultation du courrier via un client de messagerie distant) ce sera Dovecot. Le serveur sera capable de recevoir du courrier, mais nous ne traiterons pas la partie envoi (vous pouvez passer par n'importe quel SMTP, par exemple celui de votre FAI) car de toutes manières le port 25 sortant est bloqué à l'extérieur.
Cas et pré requis
Vous devez disposer d'un nom de domaine sur internet redirigé chez vous (sans quoi la réception de courriers sera impossible). Si vous passez par un routeur avec une couche de NAT n'oubliez pas de rediriger le port 25 sur votre serveur.
Dans ce tuto nous prendrons comme domaine (fictif) : freeman.org
Installation
L'installation ne requiert pas de manipulation particulière. Si vous passez par le DVD, vous aurez le choix des "rôles", sélectionnez "Minimal".
Réseau
La configuration du réseau est détaillée sur cette page, ou alors sur la documentation de CentOS.
Dans system-config-network-tui, n'oubliez pas d'aller faire un tour dans "Configuration DNS" afin d'entrer votre nom d'hôte (par exemple mail.freeman.org).
Mise à jour et installation
Effectuez tout d'abord une mise à jour du système puis installez Postfix et Dovecot :
# yum update -y # yum install postfix dovecot
Puis on ajoute au démarrage ces deux daemons :
# chkconfig postfix on # chkconfig dovecot on
SSL
Avant d'aller plus loin on va devoir obtenir ou créer un certificat et une clé privée SSL. Vous pouvez le faire vous-même avec openssl, ou en demander gratuitement sur cacert.org (Linuxfr utilise ces certificats).
- La clé (freeman.key) est à mettre dans /etc/pki/tls/private/
- Le certificat (freeman.crt) est à mettre dans /etc/pki/tls/certs/
Puis on leur donne les bons droits :
# chmod 0400 /etc/pki/tls/private/freeman.key # chmod 0444 /etc/pki/tls/certs/freeman.crt
Nous verrons après que Dovecot se charge en root, il a donc théoriquement les droits de lecture sur freeman.key, mais SELinux le bloque. Pour palier à ça il faut effectuer la manipulation suivante :
# restorecon -RvF /etc/pki
Configuration de Postfix
La configuration se fait dans le fichier main.cf qui est situé dans /etc/postfix. Il faudra ensuite définir quelques alias dans /etc/aliases mais nous verrons plus tard.
# vi /etc/postfix/main.cf
Chaque paramètre est largement commenté et humainement compréhensible. Voici, dans le cadre de notre tutoriel, les paramètres à modifier :
myorigin = freeman.org inet_interfaces = all inet_protocols = ipv4 mydestination = freeman.org home_mailbox = Maildir/
Enregistrez et refermez. Nous allons ensuite définir les alias. Nous allons rediriger les mails destinés à root vers l'utilisateur "xavier" :
# vi /etc/aliases # Person who should get root's mail root: xavier
Appliquez les alias et lancez postfix :
# newaliases # service postfix start
Créer un compte
Comme vu précédemment nous allons faire le compte "xavier" :
# useradd -m xavier passwd xavier
L'adresse de ce compte est xavier@freeman.org. Astuce : pour avoir une adresse xavier.chotard@freeman.org, utilisez un alias (xavier.chotard: xavier).
Configuration de Dovecot
La configuration est astucieusement répartie dans plusieurs fichiers de configuration :
# vi /etc/dovecot/dovecot.conf protocols = imap
# vi /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:~/Maildir
# vi /etc/dovecot/conf.d/10-ssl.conf ssl_cert = </etc/pki/tls/certs/freeman.crt ssl_key = </etc/pki/tls/private/freeman.key
Lancez dovecot :
# service dovecot start
Configuration du parefeu
Par défaut, CentOS dispose d'une configuration assez restrictive de son parefeu. Vous allez devoir ouvrir les ports 25 (smtp) et 993 (imap-ssl). Pour faire cela simplement, utilisez l'outil system-config-firewall-tui. Si vous ne l'avez pas, reportez-vous à cet article.
Essais
Il va falloir tout d'abord tester le service SMTP, pour voir si les courriers sont bien reçus. Ensuite ce sera l'IMAP, pour vérifier si on peut configurer notre compte sur un Thunderbird distant.
Test SMTP
Le test le plus simple, c'est d'envoyer un mail sur votre nouvelle adresse. Vérifiez ensuite que le répertoire Maildir s'est bien créé dans /home/xavier. Autrement il est possible de procéder en telnet depuis une autre machine :
$ telnet IPSERVER 25 220 mail.freeman.org ESMTP Postfix HELO galactica 250 mail.freeman.org MAIL FROM:250 2.1.0 Ok RCPT TO: 250 2.1.5 Ok DATA 354 End data with . TEST . 250 2.0.0 Ok: queued as C0BB6A0116 QUIT
Test IMAP
Ajoutez votre compte IMAP dans votre client de messagerie favori...
Vous devez voir apparaitre votre mail de test dans la liste (après un message de validation du certificat de sécurité).