Sélectionner une page

Les notions de base à connaitre pour gérer votre service auto-hébergé d’e-mails

Le service de courrier électronique est basé sur un certain nombre de services :

  1. Le processus de réception et d’envoi de messages par le biais d’un serveur de courrier (échangeur de courrier ou MX)
  2. Le courrier entrant est toujours distribué par le serveur de messagerie, qu’une architecture client-serveur ait été configurée ou non
  3. Un agent de distribution du courrier (MDA ou Mail Delivery Agent) reçoit les articles liés au courrier et les distribue dans une boîte aux lettres.
  4. La mise à disposition du courrier livré, par un serveur de boîtes de réception.

Nous allons procéder à une installation pratique complète, en utilisant les éléments suivants :

  • Postfix comme serveur de courrier ;
  • Postfix et Procmail comme agent de livraison ;
  • Dovecot comme serveur de boîtes de réception.

La configuration proposée utilisera les comptes Unix de votre système comme adresses électroniques.

Qu’est-ce qu’une adresse électronique ou adresse e-mail ?

On dit à la plupart d’entre nous qu’une adresse électronique a la structure user@provider, ce qui est incorrect. En réalité, il s’agit de user@computer.

Lorsque vous envoyez un courrier électronique à genevieve@example.com, votre message sera remis à l’utilisateur de tournesol sur l’ordinateur de example.com. Par conséquent, toute personne utilisant une connexion Internet peut lire votre courrier, que son propre ordinateur soit utilisé ou non :

qu’il ait un nom de domaine (sinon, il faut utiliser l’adresse IP de l’ordinateur : genevieve@[192.0.2.42], ça fonctionne, mais ce n’est pas terrible…) ;
qu’il ait un serveur de courrier qui soit fonctionnel et qui accepte le courrier.

Qu’est-ce qu’un nom de domaine de messagerie ?

Un nom de domaine est nécessaire pour commencer. Pour pouvoir recevoir du courrier, vous devez créer un enregistrement MX qui pointe vers votre serveur de messagerie.
example.com. MX genevieve.example.com.
genevieve.example.com. A 192.0.2.12
genevieve.example.com. AAAA 2001:db8:4212:4212:4212:4212:4212:4212

Qu’est-ce qu’un serveur mail ou serveur de courrier ?

Il existe de nombreux serveurs logiciels GNU/Linux. Si vous n’avez pas de limitations, nous vous recommandons d’utiliser Postfix.

Vous pouvez tester votre serveur de messagerie SMTP en vous envoyant un e-mail à l’adresse ping@zici.fr. Vous recevrez ensuite un courriel avec l’étiquette [pongSmtp] en objet.

Postfix, ça sert à quoi ?

Postfix est un serveur de messagerie conçu pour être rapide, sûr et simple à gérer.

Exim, ça sert à quoi ?

Exim est un serveur de courrier électronique puissant et adaptable. C’est le choix de facto pour les systèmes Debian.

Qmail, ça sert à quoi ?

Le cryptologue D. J. Bernstein a créé Zmailer, qui est maintenant connu sous le nom de Qmail, comme un serveur de courrier électronique très modulaire et sécurisé.

Qu’est-ce qu’un serveur de boîtes aux lettres ?

Faut-il utiliser POP3 ou plutôt IMAP ?

Il existe deux méthodes dominantes de gestion des boîtes aux lettres :

  • Vous pouvez recevoir votre courrier en utilisant le protocole standard Post Office Protocol 3 (POP3), qui vous permet de rassembler vos envois par e-mails dans une seule boîte de réception et de les vider au fur et à mesure.
  • IMAP (Internet message access protocol, version 4) est la méthode la plus populaire pour accéder au courrier électronique sur un ordinateur. Elle vous permet de visualiser votre courrier dans plusieurs boîtes de réception, qui sont toutes disponibles sur le serveur.

Lequel devriez-vous choisir ? Il est possible de servir les deux, et de laisser vos utilisateurs choisir entre les deux : POP3 s’ils veulent que leur courrier soit traité sur leur propre ordinateur, et IMAP s’ils veulent qu’il soit trié en le laissant sur le serveur pour y accéder depuis plusieurs appareils. Cependant, gardez ceci à l’esprit :

  • Même lorsque vous ne pouvez pas vous connecter à un serveur, vous pouvez accéder à vos courriels en utilisant IMAP en les téléchargeant sur le stockage local de votre appareil. Thunderbird vous permet d’enregistrer des messages en cache, précisément dans ce but.
  • Le maintien d’une copie locale de la boîte aux lettres, ainsi que de toutes les autres informations sur l’ordinateur client (par exemple, les éléments de calendrier stockés), n’empêche pas la récupération complète des messages. Des outils de réplication comme isync ou OfflineIMAP permettent de sauvegarder la structure entière des boîtes aux lettres IMAP sur son ordinateur.
  • En revanche, IMAP est beaucoup plus gourmand en temps et en données que POP3, surtout si vous avez beaucoup de courrier sur le serveur et que vous revenez souvent en arrière pour lire des messages antérieurs.

Comment choisir un serveur mail ?

Sous GNU/Linux, il existe une variété de serveurs de messagerie parmi lesquels choisir. Si vous n’avez aucune limite, nous vous suggérons d’installer Dovecot.

Dovecot, ça sert à quoi ?

Dovecot est un serveur de messagerie sécurisé qui prend en charge les formats POP, IMAP et mbox et Maildir.

Courier, ça sert à quoi ?

Un groupe de serveurs dédiés au courrier électronique est connu sous le nom de Courier. Ils comprennent un serveur POP et un serveur IMAP, qui fonctionnent avec la spécification de boîte aux lettres Maildir.

Comment mettre en place un relais de courrier avec identification ?

Vous pouvez maintenant réceptionner votre courrier et le lire. Vous pouvez également configurer votre serveur en tant que relais de messagerie, ce qui vous permet d’envoyer du courrier électronique depuis n’importe quel endroit sur Internet si vous vous identifiez.

Classiquement, quand on envoie un message, c’est le serveur de courrier de l’ordinateur d’où le message est envoyé qui se charge :

  • de résoudre les noms de domaines des destinataires ;
  • de transmettre, en SMTP, le message aux serveurs de messagerie de ces domaines.

Aujourd’hui, peu d’ordinateurs de bureau disposent de leur propre serveur de messagerie. C’est pourquoi les programmes de messagerie standard transmettent en fait toute la correspondance à un relais de messagerie, qui se charge ensuite de résoudre les domaines des destinataires et de relayer les messages.

Les FAI fournissent un serveur relais à leurs clients. Ce serveur reçoit tout le courrier qui provient d’une connexion. Il s’agit simplement d’établir votre propre relais, qui acceptera tout courrier électronique provenant de n’importe quelle connexion à condition que vous vous annonciez auparavant avec votre login et votre mot de passe.

Nous recommandons d’utiliser Postfix et Dovecot ensemble pour fournir un relais de messagerie avec identification.

Comment sécuriser vos système de messagerie auto-hébergé ?

Pour utiliser les services de boîte aux lettres et de relais avec identification, vous devez fournir votre identifiant et votre mot de passe. Pour éviter d’envoyer ce mot de passe en clair sur Internet, utilisez un mécanisme de sécurité tel que SSL ou TLS pour le sécuriser. L’installation de Postfix et Dovecot sur Debian a déjà établi un système de sécurité acceptable, mais il est vital d’en créer un qui soit personnalisé en fonction de vos besoins spécifiques.

Voici quelques informations complémentaires pour aller encore plus loin

Tri du courrier

Si vous avez beaucoup de courrier, par exemple si vous êtes abonné à de nombreuses listes de diffusion, envisagez d’utiliser un système de tri du courrier.

Antispam

Vous rencontrerez des spams dans votre travail. Par conséquent, vous pouvez mettre en place un mécanisme anti-spam du côté du client ou du serveur.

Antivirus

C’est une bonne idée d’installer un antivirus sur votre serveur de messagerie, tel que ClamAV, si vous utilisez des ordinateurs Windows pour lire vos messages entrants

Webmail

Vous pouvez configurer un webmail afin d’accéder à votre courrier électronique depuis n’importe quel ordinateur disposant d’une connexion Internet.

SPF et DKIM

Vous pouvez améliorer votre service de messagerie en créant des paramètres de transfert de courrier électronique, ce qui permettra aux serveurs de réception de confirmer que les messages envoyés depuis votre domaine ont bien été envoyés par vous. Il s’agit des services SPF et DKIM.

Pour vérifier facilement vos réglages SPF et DKIM, un e-mail peut être envoyé vers l’adresse check_auth@verifier.port25.com qui répondra automatiquement avec l’analyse faite par le serveur destinataire.

Comment récupérer vos e-mails depuis d’autres adresses ?

Si vous voulez centraliser votre courrier sur votre serveur, vous pouvez récupérer le courrier de vos adresses externes (fournisseur d’accès, fournisseur de courrier grand public, université…). Il existe deux solutions pour cela :

si votre fournisseur externe le permet, définir une redirection de votre courrier sur votre adresse personnelle ;
récupérer directement le courrier dans la boîte aux lettre qu’il vous fournit.

En fonction de vos besoins personnels et du type de boîte aux lettres, vous pouvez utiliser différents outils pour récupérer les e-mails des boîtes aux lettres externes :

  • Fetchmail : récupération POP ou IMAP pour stockage local ou transfert vers une autre adresse ;
  • Retch Mail : une alternative à Fetchmail, optimisée pour la vitesse ;
  • fdm : un outil de tri de courrier qui permet aussi de récupérer du courrier par POP ou IMAP ;
  • OfflineIMAP : un outil de synchronisation de boîtes aux lettres IMAP et Maildir.

Utilisation de services d’adresse de redirection temporaire

Le projet emailPoubelle.php vous permet de mettre en place rapidement un modeste service public d’adresses de redirection temporaires.

Ce système permet de fournir facilement un tel service à d’autre utilisateurs. Si vous souhaitez seulement mettre en place des redirections temporaires pour votre usage personnel, vous pouvez vous contenter d’éditer manuellement votre fichier /etc/aliases et de le recharger avec la commande newaliases.

Il s’agit d’une configuration du serveur de courrier Postfix liée à une page Web d’inscription en PHP.

Pré-requis :

  • un serveur Web avec PHP ;
  • un serveur de courrier Postfix.

Ce logiciel dépend de la bibliothèque PHP Net_DNS2 :

# pear install Net_DNS2

Installer les sources :

# mkdir -p /srv/www/emailPoubelle/postfix
# cd /srv/www/emailPoubelle/
# wget -O emailPoubelle.zip http://forge.zici.fr/p/emailpoubelle-php/source/download/master/
# unzip emailPoubelle.zip
# mv emailpoubelle-php-master/* .
# rm emailPoubelle.zip

Configurer Postfix, dans /etc/postfix/main.cf :

virtual_alias_maps = hash:/www/emailPoubelle/postfix/virtual

Puis créer le fichier d’aliases qui sera utilisé par ce service :

# touch /www/emailPoubelle/postfix/virtual
# chown www-data /www/emailPoubelle/postfix/virtual
# postmap /www/emailPoubelle/postfix/virtual

Il ne reste plus qu’à faire un include(‘/www/emailPoubelle/emailpoubelle.php’) dans un site PHP.

Quelques problèmes spécifiques que vous pourriez rencontrer avec vos e-mails

Blocages par des listes noires

Il est possible d’être inscrit sur une liste noire ou de voir son adresse DNSBL bloquée. De nombreux serveurs de messagerie, notamment ceux de certaines grandes entreprises, s’appuient sur ces listes pour vérifier et rejeter les messages. Si votre adresse est répertoriée dans l’un de ces fichiers, vous recevrez des notifications d’échec de livraison avec le texte suivant : « Votre message a été rejeté car il a été identifié comme étant [ le nom de la liste noire] ».

Les listes noires les plus connues sont :

  • SORBS : vérifie si des adresses IP ont été utilisées pour envoyer du spam. Cette liste est également utilisée par le service DNSBL ;
  • Spamhaus : une liste noire d’adresses IP liées à des sources de spam connues. Ce site fournit également des listes de domaines disposés à relayer du spam ou qui ont été détournés et ne sont donc pas fiables (la liste « ZEN ») ;

Voici les logs que vous pourriez retrouver dans votre serveur dans un tel cas de figure :

mail.log

SMTP error from remote mail server after initial connection:
host mx2.mail.eu.yahoo.com [77.238.184.241]: 553 Mail from 12.34.56.78 not allowed - 5.7.1 [BL21] Connections not accepted from IP addresses on Spamhaus PBL; see http://postmaster.yahoo.com/errors/550-bl21.html [550]

Vous pouvez vérifier si vous figurez sur l’une de ces listes en utilisant un moteur de recherche conçu à cet effet, comme Anti-Abuse ou le moteur de recherche de Valli.org.

Voici les principales causes de mise en liste noire :

  • Si, par exemple, votre l’utilisateur précédent a envoyé des spams à partir de votre adresse,
  • Parce que votre adresse IP est affectée de façon dynamique ;
  • Comme votre adresse IP n’est pas liée à un nom DNS inverse, elle ne peut pas être associée à vous de manière positive.
  • Parce que votre adresse est celle d’un abonné chez un FAI (ça leur suffit parfois…) ;
  • Il s’agit parfois d’une simple erreur.

Pour éviter ce problème, si vous disposez d’une adresse IP statique, vous pouvez :

  • vous inscrire sur une liste blanche ;
  • demander le retrait des listes sur lesquelles vous figurez.

Vos e-mails sont rejetés parce que vous n’avez pas de nom DNS inverse

Certains fournisseurs de courrier électronique, comme Gmail, rejettent les courriels provenant d’adresses IPv6 sans noms DNS inversés. Si cela vous arrive, vous recevrez des notifications d’échec de livraison avec l’explication suivante :

mail.log

host gmail-smtp-in.l.google.com[2a00:1450:400c:c05::1b] said: 550-5.7.1 [2001:db8:8e3f:43c7::12 16] Our system has detected that this message does not meet IPv6 sending guidelines regarding PTR records and authentication. Please review https://support.google.com/mail/?p=ipv6_authentication_error for more information. e9si11530274wjb.156 - gsmtp (in reply to end of DATA command)

Idéalement, vous devriez pouvoir demander à votre FAI de créer un nom inversé pour l’adresse de votre serveur. Malheureusement, cela n’est généralement pas possible avec les FAI grand public. Avec Postfix, il faut définir un service de livraison spécialisé :

smtp4 unix - - - - - smtp -o inet_protocols=ipv4

Puis utiliser une table de transport :

main.cf

transport_maps = hash:/etc/postfix/transport

Et dans cette table, préciser qu’il faut utiliser le service précédemment défini pour le courrier à destination de gmail.com :

transport

gmail.com smtp4:

Enfin, hacher cette table puis demander à Postfix d’appliquer ces modifications, qui prendront effet pour les nouveaux messages — mais pas pour les messages actuellement en file d’attente :

# postmap /etc/postfix/transport
# service postfix reload