Dernière mise à jour : 03/08/2004
Nous allons voir dans ce tutoriel comment installer un serveur de mail local avec des utilisateurs. Nous considérerons que vous avez un domaine appellé toto.org et qui peut envoyer et recevoir des emails entre l'intérieur et l'extérieur. Pour cette configuration, j'ai utilisé Debian sarge, mais comme d'habitude, il est sans doute possible de faire aussi simple avec d'autres distributions. Les outils utilisés ici seront : postfix pour le serveur de courrier électronique, courier pour le serveur pop3s/imaps et maildrop pour la partie reception des mails.
Commençons donc par installer postfix apt-get install postfix. Il faut ensuite le paramétrer afin d'indiquer quelques paramètres expliqués dans le fichier de configuration ci-dessous. Editez donc votre /etc/postfix/main.cf et vérifiez que vous avez au moins ces lignes. Dans notre exemple, le serveur s'appelle facteur et son domaine toto.org. Une petite note sur la configuration : mynetworks est crucial pour le bon fonctionnement de postfix, autorisant les plages d'adresses mentionnées ci-dessous.
-
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
setgid_group = postdrop
append_dot_mydomain = no
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
delay_warning_time = 4h
smtpd_client_restrictions = permit_mynetworks
virtual_maps = hash:/etc/postfix/virtual_maps
myhostname = facteur
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = facteur.toto.org
mydestination = facteur.toto.org, facteur, titi.org, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8, 192.168.1.0/16
mailbox_command = maildrop
mailbox_size_limit = 0
recipient_delimiter = +
Notez que j'autorise ici toto.org, localhost et titi.org comme domaines. Cela veut dire que postfix laissera passer tout mail venant de ces domaines vers l'extérieur. Le fichier /etc/postfix/virtual_maps contient des adresses de domaine virtuel (ici titi.org) et redirigeant vers un utilisateur réel de la machine. Il suffit donc de rentrer le domaine virtuel que l'on veut gérer et ajouter les mappings. Voici son contenu :
-
titi.org DOMAIN
webmaster@titi.org frlinux@toto.org
Le fichier /etc/aliases est un fichier classique contenant des aliases pour délivrer un mail aux utilisateurs du domaine, voici un fichier minimal avec un utilisateur local du nom de frlinux (étonnant non ? ;) Notez que dans l'exemple ci-dessous, il est important d'avoir un utilisateur réel pour les emails root (vous vérifiez souvent vos emails en tant que root vous ?!?).
-
webmaster: root
postmaster: root
root: frlinux
frlinux: frlinux@toto.org
Nous sommes à présent prêts à installer maildrop par un apt-get install maildrop, il suffit ensuite d'éditer le fichier de configuration /etc/maildroprc afin qu'il soit pour tout le système puis d'y mettre : DEFAULT="$HOME/Maildir". Postfix a en effet besoin d'un livreur de mails vers les utilisateurs, c'est ici la fonction de maildrop (comme son nom l'indique d'ailleurs). Il faut ensuite installer courier et créer le Maildir qui contiendra les nouveaux mails. Faites donc un apt-get install courier-base courier-imap-ssl courier-pop3-ssl. Debian se chargera tout seul d'installer le reste des paquets nécessaires. Editez ensuite le fichier /etc/courier/imapd.cnf pour y entrer vos paramètres de domaine :
-
[ req_dn ]
C=FR
ST=France
L=votre_ville
O=Toto.org
OU=Genere par l'admin
CN=toto.org
emailAddress=postmaster@toto.org
Puis effacez les certificats *.pem afin d'en recréer avec les bonnes informations. Lancez ensuite un dpkg-reconfigure courier-imap-ssl courier-pop3-ssl et jetez un oeil à vos nouveaux certificats. Dans les fichiers /etc/courier/imapd,pop3d, assurez vous que vous avez en fin cette variable : MAILDIRPATH=Maildir. Lancez ensuite les démons, par un : /etc/init.d/postfix restart et de même pour courier, courier-authdaemon et courier-imap-ssl. Vérifiez que tout est bien lancé par un netstat -an |grep 993 (c'est imap-ssl).
Il vous faut ensuite créer le Maildir de l'utilisateur (frlinux dans mon exemple). Ainsi que créer un fichier permettant de filtrer les emails entrants avec maildrop. Pour cela, exécutez les commandes : suivantes :
-
su - frlinux
maildirmake.courier Maildir
Il faut a présent créer un fichier /home/frlinux/.mailfilter qui contient les commandes ci-dessous. Pour ajouter le filtrage des spams, faîtes un apt-get install spamassassin. Si vous ne l'utilisez pas, commentez la ligne spamassassin dans le fichier mailfilter.
-
xfilter "/usr/bin/spamc"
logfile ".maillog"
if( /^X-Spam-Flag: YES.*/ )
{
to /dev/null
}
Comme vous pouvez le constater, mon filtrage est brutal. S'il considère que c'est un spam, il va directement à la trape. J'ai testé cette config pendant un bon moment avant de décider de jeter les spams. Notez aussi la ligne logfile permettant de vérifier si les messages sont bien délivrés.
Le paramétrage est à présent terminé, il ne vous reste plus qu'à tester des envois de messages vers vos utilisateurs et vous assurer qu'ils arrivent bien. Pour cela, consultez les fichiers suivants :
- /var/log/mail.log : fichier de log du serveur de mail et des démons courier
- /var/log/mail.err : fichier de log des problèmes recontrés par courier et postfix
- /home/frlinux/.logfile : fichier de log des emails reçus par l'utilisateur
Voilà pour le moment. Ce petit tutoriel devrait vous permettre de mettre en place un serveur de mail simple sous Linux. Pour une utilisation avancée (spam/antivirus/filtrage), consultez cet article.