Outils pour utilisateurs

Outils du site


serveur_de_mail

À propos

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).

Cette note n'est pas entièrement terminée.

En cours de réorganisation pour le passage à Debian 7.

Préparation

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.

Mise à jour du système

On commence par une simple mise-à-jour du système :

# aptitude update && aptitude safe-upgrade

Ouverture des ports

Il faut ouvrir les ports 25 (SMTP) et 993 (IMAPS) sur votre *box et éventuellement sur IPTABLES si nécessaire.

Nom de domaine

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.

Je détaillerai cette partie plus tard (si le temps me le permettra).

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

Serveur SMTP : Postfix

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.

Installation

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.

Si vous êtes trompé, vous pouvez relancer la configuration avec la commande suivante :
# 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
Si le serveur de mail est hébergé chez soi, il se peut que le test ne marche pas car les FAI bloquent le port 25 pour lutter contre le spam. Chez certains FAI, il est possible de débloquer ce port en ajoutant l'option relayhost dans le fichier /etc/postfix/main.cf :
relayhost = [serveur_smtp_fai]:port

Autres paramètres

Taille des e-mails

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

Serveur IMAP : Dovecot

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.

Depuis Debian 7 Wheezy, Dovecot v2.x est présent dans le dépôt officiel. La configuration de Dovecot v2.x est différente de la v1.x. Ici, je détaille uniquement la configuration de Dovecot v2.x.

Installation

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/.

Si vous avez désactivé le support d'IPv6 sur Debian, le lancement de Dovecot échouera avec ce genre d'erreurs :
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 = *

Relais de courrier avec identification

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.

Traiter ses mails avec procmail

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.

Installation et configuration de base

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
Pour ne pas avoir à créer cela pour les futurs utilisateurs, on peut créer le dossier Maildir et le fichier .procmailrc dans /etc/skel/. La commande adduser les copiera automatiquement dans les homes des utilisateurs

É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

Récupérer ses mails avec fetchmail

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

Lutter contre le spam

Spamassassin est un programme en Perl qui vérifie les mail pour détecter les éventuels spam.

Installation et configuration

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

Whitelist et Blacklist

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).

Éduquer spamassassin

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

Supprimer des mails après X jours

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/

Filtrer les e-mail avec Procmail

Webmail (Roundcube)

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

Conclusion

Sources

serveur_de_mail.txt · Dernière modification: 2016/02/16 23:11 (modification externe)