Je présente ici comment installer et configurer un serveur de mail complet et fonctionnel (SMTP/IMAP et webmail) sous Debian (mais peut être adapté à d'autres distributions GNU/Linux).
En cours de réorganisation pour le passage à Debian 7.
Je considère qu'une distribution GNU/Linux est déjà installée. Dans le cas de cette note, j'ai utilisé Debian Wheezy mais on peut l'adapter facilement à d'autres distribution.
On commence par une simple mise-à-jour du système :
# aptitude update && aptitude safe-upgrade
Il faut ouvrir les ports 25 (SMTP) et 993 (IMAPS) sur votre *box et éventuellement sur IPTABLES si nécessaire.
Idéalement, il est préférable d'avoir une IP fixe et votre propre nom de domaine. Ajouter une entrée MX via l'interface de configuration DNS de votre registrar ou à votre propre serveur DNS.
Si vous n'avez pas une IP fixe et/ou ne voulez pas payer une nom de domaine, vous pouvez avoir un semblant d'adresse IP fixe et aussi un nom de domaine avec le service NO-IP gratuitement.
Vérifier ensuite que les mails envoyés à votre domaine seront bien redirigés avec la commande :
host -t MX mon-domaine.fr
Cette commande doit renvoyer un message de ce genre :
mon-domaine.fr mail is handled by 10 mon-domaine.fr
Ensuite éditer le fichier /etc/hosts et modifier la première ligne avec votre nom de domaine :
127.0.0.1 mon-domaine.fr
Et dans le fichier /etc/hostname, mettre votre nom de domaine uniquement :
mon-domaine.fr
Maintenant, relancer la machine :
# reboot
Postfix est un serveur de messagerie électronique et un logiciel libre développé par Wietse Venema et plusieurs contributeurs. Il se charge de la livraison de courriers électroniques (courriels) et a été conçu comme une alternative plus rapide, plus facile à administrer et plus sécurisée que l'historique Sendmail.
Pour l'installer :
# aptitude install postfix mailutils
Lors de l'installation, il vous est proposé de configurer Postfix. Choisir “Site Internet” :
A l'étape suivant, mettez votre nom de domaine dans le champ “Nom du courrier”. Si vous avez bien suivi l'étape de préparation, le champ est déjà bien rempli.
Pour la suite, vous pouvez laisser les valeurs par défaut.
# dpkg-reconfigure postfix
Ou sinon en éditant le fichier /etc/postfix/main.cf :
# vim /etc/postfix/main.cf
Maintenant, on va tester si Postfix fonctionne correctement en s'envoyant soi-même un mail :
$ echo 'Test local' | mail -s "Test" user@mon-domaine.home
Vérifier qu'on a reçu le mail avec la commande mail.
Tester ensuite, l'envoie d'un mail vers l'extérieur (par exemple vers votre FAI) :
$ echo 'Test local' | mail -s "Test" login@mon-fai.fr
relayhost = [serveur_smtp_fai]:port
Par défaut, la taille des mail sous Postfix est limitée à 10Mo. Pour augmenter cette taille (par exemple à 30Mo), il faut éditer le fichier de configuration /etc/postfix/main.conf et modifier (ou ajouter) le paramètre message_size_limit :
message_size_limit = 31457280
Dovecot est un serveur IMAP et POP3 pour les systèmes d'exploitation Unix et dérivés, conçu avec comme premier but la sécurité. Ici, j'installe que la partie IMAP.
Pour l'installer :
# aptitude install dovecot-imapd
Bien que la configuration par défaut suffit, on peut éventuellement modifier la configuration de Dovecot, éditant les fichiers dans /etc/dovecot/.
Error: service(imap-login): listen(::, 143) failed: Address family not supported by protocol Error: socket() failed: Address family not supported by protocol Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocol Fatal: Failed to start listeners
Il suffit d'éditer le fichier /etc/dovecot/dovecot.conf et de décommenter (ou d'ajouter) la ligne :
#listen = *, ::
en :
listen = *
Jusqu'à maintenant, on pouvais envoyer du courrier uniquement depuis le serveur. Il faut donc configurer le serveur Postfix en relais. Cependant, Postfix ne gère pas directement l'identification. Pour cela, on va passer par Dovecot.
Ainsi, éditer le fichier de configuration Dovecot /etc/dovecot/conf.d/10-master.conf et décommenter (ou ajouter) les lignes suivantes :
service auth { … unix_listener auth-userdb { … } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 group = postfix } }
Relancer ensuite Dovecot.
Côté Postfix, ajouter les options suivantes dans /etc/postfix/main.cf :
smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Ensuite, il faut activer les services SMTPS (SMTP via une connexion SSL) et submission (service relais SMTP avec identification) en éditant le fichier /etc/postfix/master.cf :
smtp inet n - - - - smtpd submission inet n - - - - smtpd -o smtpd_enforce_tls=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes
Redémarrer Postfix. Ouvrir éventuellement le port submission 587 sur votre parfeu.
Par défaut sous Debian (et sous GNU/Linux en général?!), les mails arrivants sont stockés dans /var/mail/username sous format mbox. Les mails lus par l'utilisateur déplacés dans le dossier de l'utilisateur dans un fichier ~/mbox (toujours au format mbox.
Avec procmail, on va stocker les mails directement dans le home de l'utilisateur sous un format Maildir. De plus, il est possible d'effectuer facilement des filtres, des tris avec procmail.
Pour installer procmail :
# aptitude install procmail
Dans le home de l'utilisateur, créer le dossier ~/Maildir :
$ maildirmake ~/Maildir
Ensuite créer le fichier ~/.procmailrc toujours dans le home de l'utilisateur et copier les lignes suivantes :
MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ :0: $DEFAULT
Éditer ensuite le fichier de configuration de Postfix /etc/postfix/main.cf et ajouter (ou modifier) l'option home_mailbox comme suite :
home_mailbox = Maildir/
Éditer aussi le fichier de configuration de dovecot /etc/dovecot/conf.d/10-mail.conf et modifier l'option mail_location comme suite :
mail_location = maildir:~/Maildir
Redémarrer Postfix et Dovecot :
# /etc/init.d/postfix restart # /etc/init.d/dovecot restart
Fetchmail est un petit programme qui permet de récupérer ses mails dans différentes boites (par exemple, Gmail, Yahoo …). Pour l'installer :
# aptitude install fetchmail
Ensuite, créer le fichier ~/.fetchmailrc et pour chaque boite mail à récupérer, ajouter une ligne comme suite :
poll SERVERNAME protocol PROTOCOL username NAME password PASSWORD
Par exemple, pour récupérer les mails sur Gmail :
poll pop.gmail.com protocol POP3 username "username@gmail.com" password "mypassword"
Pour rediriger les mails vers procmail, ajouter à la fin du fichier :
mda "/usr/bin/procmail -Y -d %T"
Pour tester, il faut lancer fetchmail avec l'option k
fetchmail -kv
Si tout est bon, vous pouvez lancer fetchmail par cron (toutes les 5 minutes par exemple) :
*/5 * * * * /usr/bin/fetchmail &> /dev/null
Spamassassin est un programme en Perl qui vérifie les mail pour détecter les éventuels spam.
Pour l'installer, faites :
# apt-get install spamassassin
Pour utiliser spamassassin avec procmail, ajouter les lignes suivantes dans le fichier ~/.procmailrc :
# Pipe the mail through spamassassin (replace 'spamassassin' with 'spamc' # if you use the spamc/spamd combination) # # The condition line ensures that only messages smaller than 250 kB # (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam # isn't bigger than a few k and working with big messages can bring # SpamAssassin to its knees. # # The lock file ensures that only 1 spamassassin invocation happens # at 1 time, to keep the load down. # :0fw: spamassassin.lock * < 256000 | spamassassin :0 * ^X-Spam-Status: Yes .Junk/
Ensuite, créer le dossier des courriers indésirables :
maildirmake ~/Maildir/.Junk
Vous pouvez gérer une liste whiteliste/blacklist d'adresses mail ou de domaine dans le fichier $HOME/.spamassas/user_prefs. Le syntaxe est très simple (voir les exemples directement dans le fichier).
Il est possible d'éduquer spamassassion pour qu'il détecte mieux les spams car ils évoluent beaucoup. L'éducation se fait avec l'outil sa-learn. Il suffit d'ajouter les commandes suivants dans crontab :
@daily /usr/bin/sa-learn --spam $HOME/Maildir/.Junk/ &> /dev/null @daily /usr/bin/sa-learn --ham $HOME/Maildir/.INBOX.* &> /dev/null
Lorsqu'on reçoit beaucoup de spams, il est intéressant de supprimer automatiquement certains de ces spams après X jours. L'outils archivemail permet cela (et bien plus). Pour l'installer :
# aptitude install archivemail
Pour supprimer les mail spams de plus de 30 jours, il suffit de lancer la commande suivante (en tant que simple utilisateur) :
$ archivemail --delete --days=30 $HOME/Maildir/.Junk/
Et pour le lancer automatiquement, vous pouvez l'ajouter dans le cron. Par exemple, tous les jours :
@daily /usr/bin/archivemail --delete --days=30 $HOME/Maildir/.Junk/
Le wiki officiel possède un tuto en français pour l'installation de Roundcube.
Autres webmails : http://www.noupe.com/ajax/10-ajax-webmail-clients.html
http://doc.ubuntu-fr.org/serveur#courrier_electronique
http://doc.ubuntu-fr.org/serveur_mail_avec_postfix_et_fetchmail
http://trac.roundcube.net/wiki/Howto_Install_fr
Taille pièce jointe roundcube : http://julito.gayuxweb.fr/index.php?article45/taille-des-pieces-jointes-dans-roundcube
http://www.tuteurs.ens.fr/internet/courrier/procmail.html
Push Mail : http://www.jopa.fr/index.php/2009/08/05/push-mail-sur-serveur-imap-gmail/
Traitement de Queue : http://www.system-linux.eu/index.php?post/2009/01/27/Traitement-de-Queue-mail-Postfix