Vous êtes sur la page 1sur 9

Installer et configurer un serveur mail

sur CentOS
Introduction
Il existe des tas de façons différentes de mettre en place un serveur de mails. Ce tutoriel décrit
simplement une procédure permettant de faire fonctionner correctement un serveur mail
correspondant aux critères et besoins suivants :

 Fonctionnel sur un serveur CentOS


 Utilisation des outils Postfix et Dovecot
 Réception d'emails depuis plusieurs domaines
 Envoi d'emails à partir d'un seul serveur SMTP
 Utilisateurs gérés par le système (utilisateurs Linux)
 Utilisation de certificats SSL
 Si un email est envoyé à un utilisateur inexistant, il est transmis à l'administrateur (évite la
création de nouvelles adresses manuellement, augmente les risques de spams)
 Gestion du spam
Dans ce tutoriel, les domaines que j'utilise sont mail.domain.tld et mail.domain2.tld. Le
domaine mail.domain.tld est considéré comme principal et supportera l'accès IMAP et SMTP.

Mon utilisateur système sera arthur (original !).

Les logiciels
Commençons par installer les outils :

yum install postfix dovecot spamassassin procmail

Et les ajouter au démarrage du serveur :

chkconfig postfix on

chkconfig dovecot on

chkconfig spamassassin on

Le certificat SSL
Si vous n'en avez pas, générez un certificat SSL.

Le fichier .crt est à placer dans le répertoire /etc/pki/tls/certs/.


Le fichier .key est placer dans le répertoire /etc/pki/tls/private/.

On place les droits qui vont bien :

chmod 0400 /etc/pki/tls/private/server.key

chmod 0444 /etc/pki/tls/certs/server.crt

Configuration de Postfix
Modifier la configuration par défaut avec les options suivantes dans le
fichier /etc/postfix/main.cf :

A noter : Je reprends ces paramètres car ils fonctionnent. Certains d'entre eux ne sont peut être
pas parfaits, ou parfaitement adapté à vos besoins.

# Vérifiez, décommentez, modifez et ajouter si nécessaire :

myhostname = mail.$mydomain

mydomain = domain.tld

myorigin = $myhostname

inet_interfaces = all

inet_protocols = ipv4

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 127.0.0.0/8

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

home_mailbox = mail/

mailbox_command = /usr/bin/procmail

smtpd_banner = $myhostname ESMTP

Puis, à la fin du fichier ajouter :


# for SMTP-Auth settings

smtpd_sasl_type = dovecot

smtpd_sasl_path = private/auth

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain = $myhostname

smtpd_client_restrictions = permit_mynetworks,permit

smtpd_recipient_restrictions =
permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

virtual_alias_domains = domain2.tld

virtual_alias_maps = hash:/etc/postfix/virtual

Maintenant, il faut associer les adresses mail aux utilisateurs. On va déjà envoyer les mails
systèmes à arthur en modifiant le fichier/etc/aliases :

# Person who should get root's mail

root: arthur

Et maintenant, la redirection à partir des noms de domaine, dans le


fichier /etc/postfix/virtual.

# Tout envoyer à l'utilisateur système arthur

@domain.tld arthur

@domain2.tld arthur

D'autres choses sont possible, selon vos besoins :


# Redirection email

pierre@domain.tld pierre@caramail.com

# Plusieurs utilisateurs

all@domain.tld arthur, pierre, andre, edouard@gmail.com

# etc

Suite à toutes ces modifications, on va demander à Postfix et au système de les prendre en


compte :

newaliases

postmap /etc/postfix/virtual

service postfix restart

SMTP TLS pour Postfix


Votre serveur SMTP devrait fonctionner correctement avec la configuration actuelle sur le port
25. Mais, on préférera utiliser un connexion sécurisée avec le serveur SMTP, d'autant que le port
25 est bloqué sur la majorité des FAI.

Pour cela, on va créer un certificat SSL pour l'occasion. Commencez par le dossier :

mkdir /etc/postfix/tls

cd /etc/postfix/tls

Puis générez le certificat:

openssl req -new -key smtpd.key -out smtpd.csr

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key

openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -
days 3650

Maintenant, ajoutez à la fin du fichier /etc/postfix/main.cf :

smtpd_use_tls=yes

smtpd_tls_security = may

smtpd_tls_security_level = may

smtpd_tls_auth_only = no

smtpd_tls_key_file = /etc/postfix/tls/smtpd.key

smtpd_tls_cert_file = /etc/postfix/tls/smtpd.crt

smtpd_tls_CAfile = /etc/postfix/tls/cacert.pem

smtpd_tls_loglevel = 1

smtpd_tls_received_header = yes

smtpd_tls_session_cache_timeout = 3600s

tls_random_source = dev:/dev/urandom

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtp_tls_loglevel = 1

smtp_tls_note_starttls_offer = yes

Une dernière étape et notre serveur SMTP sera parfait. Ouvrez le


fichier /etc/postfix/master.cf, et décommentez la ligne suivante :
submission inet n - n - - smtpd

Configuration de Dovecot
On a déjà fait une bonne partie du boulot, reste maintenant à configurer Dovecot, notre serveur
IMAP.

Commençons par le fichier /etc/dovecot/dovecot.conf :

# Décommenter

protocols = imap

# Ajouter à la fin du fichier

service auth {

unix_listener /var/spool/postfix/private/auth {

mode = 0660

user = postfix

group = postfix

auth_mechanisms = plain login

Le fichier /etc/dovecot/conf.d/10-mail.conf maintenant :

mail_location =
maildir:~/mail:LAYOUT=maildir++:INDEX=~/mail/index:CONTROL=~/mail/control

Le fichier /etc/dovecot/conf.d/10-ssl.conf maintenant :


ssl_cert = </etc/pki/tls/certs/server.crt

ssl_key = </etc/pki/tls/private/server.key

On redémarre tout ça, et ça va commencer à rouler :

service dovecot start

SpamAssassin et Procmail
Dans la configuration précédente de Postfix, on a fait le choix de rediriger les nouveaux
messages vers procmail. Ca signifie que pour tous vous utilisateurs systèmes (ici, on a
seulement arthur), vous allez devoir créer un fichier .procmailrc qui explique au système ce
qu'il doit faire des emails.

De plus, c'est également dans ce fichier de configuration qu'on passer les emails entrants à la
moulinette anti-spam de SpamAssassin.

Créons donc notre vim ~/.procmailrc avec l'utilisateur arthur :

# Prelimiaries

SHELL=/bin/bash

MAILDIR=$HOME/mail/

DEFAULT=$MAILDIR

ORGMAIL=$MAILDIR

LOGFILE=/var/log/procmailrc.log

VERBOSE=yes

LOGABSTRACT=all

# Send spam to '~/mail/.Spam' folder

:0fw
| /usr/bin/spamc

:0:

* ^X-Spam-Status: Yes.*

${MAILDIR}.Spam/

# Accept all the rest to default mailbox

:0

Cette configuration est très basique, je vous invite à consulter l'ami Google si vous voulez
personaliser ça.

Dans l'état actuel, SpamAssassin va filtrer les emails selon ses filtres internes. Si vous voulez
que le système prenne en compte les messages que vous marquez comme étant du spam
(comportement GMail), consultez le tutoriel Marquer comme spam automatiquement avec
SpamAssassin.

Autorisations parefeu
Plutôt que de modifier à la main le fichier /etc/sysconfig/iptables, on va utiliser
l'outil system-config-firewall-tui (un coup de yum install system-config-firewall-
tui si nécessaire).

Après avoir activé le firewall “graphique”, cliquez sur Personnaliser et cochez :

 Courrier (SMTP)
 IMAP à travers SSL
Vérifiez quand même dans le fichier /etc/sysconfig/iptables, les ports suivants sont bien
ouverts:

 587 : SMTP avec STARTTLS


 993 : IMAP over SSL
Configuration DNS
L'une des dernières étapes est évidemment de faire pointer vos noms de domaine vers votre
serveur mail tout neuf. La manipulation dépendra de votre registrar et de l'interface
d'administration.

Mais globalement ce que vous devez faire, c'est modifier votre Zone DNS :
 Ajouter une entrée de type A (IPv4) pour faire pointer le domaine principal et ses sous
domaines vers votre serveur (parfois l'interface demande une *, parfois aucun sous
domaine).
 Ajouter une entrée de type A (IPv4) pour faire pointer le sous domaine mail vers votre
serveur (facultatif, mais ça sécurise si vous jouez avec par la suite).
 Ajouter une entrée de type MX (mail) vers le sous domaine (Record A) que vous avez
appelé mail.
Notez que la diffusion des DNS peut prendre un peu de temps, surtout si vous avez du
cache DNS sur votre OS.

Exemples :

Vous aimerez peut-être aussi