Courrier électronique

Notions

Le service du courrier électronique repose en réalité sur plusieurs services :

  • la prise en charge et la transmission du courrier sortant par un serveur de courrier (mail exchanger ou MX) ;
  • la réception du courrier entrant, toujours par le serveur de courrier ;
  • la livraison du courrier dans des boîtes aux lettres, par un agent de livraison (mail delivery agent, ou MDA) ;
  • la mise à disposition du courrier livré, par un serveur de boîtes aux lettres.

Nous allons détailler une suggestion de configuration complète fonctionnelle, en utilisant :

  • Postfix comme serveur de courrier ;
  • Postfix et Procmail comme agent de livraison ;
  • Dovecot comme serveur de boîtes aux lettres.

De plus, la configuration proposée utilisera les comptes Unix de votre système comme comptes de messagerie.

Adresse électronique

On apprend en général qu'une adresse électronique a pour forme utilisateur@fournisseur. C'est en fait une vision déformée de la réalité, qui est plutôt : utilisateur@ordinateur.

Ainsi, quand vous envoyez un message à tournesol@example.net, votre message sera envoyé à l'ordinateur example.net, pour être livré à l'utilisateur tournesol. Ainsi, n'importe qui sur Internet peut recevoir du courrier sur son propre ordinateur, pour peu :

  • qu'il ait un nom de domaine (sinon, il faut utiliser l'adresse IP de l'ordinateur : tournesol@[192.0.2.42], ça marche, mais ça le fait moyen…) ;
  • qu'il ait un serveur de courrier qui tourne et accepte le courrier.

Nom de domaine de messagerie

Avant de commencer, il faut disposer d'un nom de domaine. Pour pouvoir y recevoir du courrier, vous devez définir un enregistrement de type MX, pointant vers votre serveur de messagerie :

example.com.        MX   tintin.example.com.
tintin.example.com. A    192.0.2.12
tintin.example.com. AAAA 2001:db8:4212:4212:4212:4212:4212:4212

Serveur de courrier

Il existe plusieurs serveurs logiciels sous GNU/Linux. Nous vous conseillons d'utiliser Postfix si vous n'avez pas de contrainte particulière.

Vous pouvez tester votre serveur de courier SMTP en envoyant un email à ping_arobase_zici_point_fr et vous receverez un email en retour avec le tag [pongSmtp] en sujet (Page du projet libre pongSmtp - pour éventuellement offrir ce service)

Postfix

Postfix est un serveur de courrier conçu pour être efficace, sécurisé et agréable à administrer.

Exim

Exim est un serveur de courrier très flexible et robuste. C'est le choix par défaut de la distribution Debian.

qmail

qmail est un serveur de courrier très modulaire et sécurisé, conçu par le cryptologue D. J. Bernstein.

Serveur de boîtes aux lettres

POP3 ou IMAP ?

Il existe deux protocoles standards de service de boîtes aux lettres :

  • POP3 (post office protocol ou protocole de bureau de poste, version 3), qui permet de relever son courrier dans une boîte aux lettres unique, en en retirant les messages au fur et à mesure ;
  • IMAP (Internet message access protocol, ou protocole d'accès aux messages sur Internet, version 4), qui permet de consulter son courrier dans des boîtes aux lettres multiples, qui restent sur le serveur.

Alors, lequel utiliser ? Il est possible de servir les deux, et de laisser vos utilisateurs choisir selon leur préférence : POP3 s'ils préfèrent récupérer leur courrier sur leur propre machine pour le traiter, et IMAP s'ils préfèrent pouvoir le trier en le laissant sur le serveur pour y accéder depuis plusieurs machines. Sachez toutefois :

  • que l'utilisation d'IMAP n'empêche pas de consulter ses messages sans être forcément connecté au serveur : des clients de messagerie comme Thunderbird permettent de sauvegarder les messages en cache, précisément dans ce but ;
  • que l'utilisation d'IMAP n'exclut pas la récupération intégrale des messages sur une machine cliente : des outils de réplication comme isync ou OfflineIMAP permettent de copier toute la structure des boîtes aux lettres IMAP sur son ordinateur ;
  • que le service IMAP est beaucoup plus consommateur de puissance de calcul et d'accès aux données que POP3, surtout si vous conservez beaucoup de courrier sur le serveur et que vous allez souvent consulter de vieux messages.

Choisir un serveur

Il existe plusieurs serveurs de boîtes aux lettres sous GNU/Linux. Nous vous conseillons d'installer Dovecot si vous n'avez pas de contrainte particulière.

Dovecot

Dovecot est un serveur de boîtes aux lettre sécurisé, qui prend en charge les services POP et IMAP, et les boîtes aux lettres au format mbox ou Maildir.

Courier

Courier est un ensemble de serveurs dédiés au courrier électronique. Ils comprennent en particulier un serveur POP et un serveur IMAP, qui utilisent le format de boîtes aux lettres Maildir.

Relais de courrier avec identification

Vous pouvez maintenant recevoir du courrier et le consulter. Vous pouvez également faire de votre serveur un relais de courrier, qui vous permettra, à condition de vous identifier, d'envoyer du courrier depuis n'importe où sur Internet.

Relais de courrier

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 logiciels de messagerie usuels transmettent en fait tout le courrier à envoyer à un relais de courrier, toujours en SMTP. C'est ce relais qui s'occupe alors de résoudre les domaines destinataires et de transmettre les messages.

Les fournisseurs d'accès à Internet proposent pour cela à leurs abonnés un serveur relais. Ce serveur accepte tout le courrier provenant… d'une connexion de chez eux. Ici, il s'agit de mettre en place votre propre relais, qui acceptera tout le courrier, depuis n'importe quelle connexion, à condition de s'identifier avant, avec votre identifiant et votre mot de passe.

Pour fournir un relais de courrier avec identification, nous vous conseillons d'utiliser conjointement Postfix et Dovecot.

Sécurisation

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 de transmettre ce mot de passe en clair sur Internet, il est donc important d'utiliser un système de sécurisation comme SSL ou TLS. Sous Debian, l'installation de Postfix et de Dovecot a déjà mis en place une sécurisation acceptable, mais il est intéressant de préparer un système adapté à votre domaine.

Aller plus loin

Tri du courrier

Si vous recevez beaucoup de courrier, par exemple parce que vous êtes abonnés à plusieurs listes de distribution, vous pouvez mettre en place un système de tri de courrier.

Antispam

Vous allez être confronté au problème du spam. Vous pourrez donc mettre en place un système d'antispam côté client ou serveur.

Antivirus

Si vous utilisez des machines sous Windows pour lire vos mails reçus, il est recommandé d'installer un antivirus sur votre serveur mail, par exemple : ClamAV.

Webmail

Pour pouvoir accéder à votre courrier électronique depuis n'importe quel ordinateur disposant d'un accès au Web, vous pouvez installer un webmail.

SPF et DKIM

Vous pouvez améliorer votre service de courrier en définissant des politiques d'envoi de courrier, qui permettront aux serveurs destinataires de vérifier que le courrier prétendument en provenance de votre domaine a bien été envoyé 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 [dash] auth [at] verifier [dot] port25 [dot] com qui répondra automatiquement avec l'analyse faite par le serveur destinataire.

Récupérer le courrier de vos 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.

Plusieurs outils permettent de récupérer le courrier de boîtes externes, selon vos besoin et le type de boîte aux lettres (POP ou IMAP) :

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

Service d'adresse de redirection temporaire

Le projet emailPoubelle.php vous permet de mettre en place un petit service public d'adresses de redirection temporaires simplement.

Service personnel

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 couplée à une page Web d'inscription en PHP :

Pré-requis :

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.

Problèmes spécifiques

Listes noires

Il peut arriver que vous vous retrouviez sur liste noire ou DNSBL 1). Beaucoup de serveurs de courrier, notamment ceux de certains gros fournisseurs, se basent directement sur ces listes pour rejeter des messages. Si votre adresse figure sur une de ces listes, vous recevrez des avis d'échec de livraison assortis de messages ressemblant à :

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 une de ces listes en utilisant un moteur de recherche dédié à cela, comme celui de Anti-Abuse ou de Valli.org. Cela peut arriver :

  • suite à l'émission de spam depuis votre adresse, par exemple par son locataire précédent ;
  • parce que votre adresse IP est affectée de façon dynamique ;
  • parce que votre adresse IP n'est associée à aucun nom DNS inverse ;
  • parce que votre adresse est celle d'un abonné chez un FAI (ça leur suffit parfois…) ;
  • par erreur.

Pour éviter ce désagrément, si vous avez bien une adresse IP fixe, vous pouvez :

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

Rejets faute de nom DNS inverse

Certains fournisseurs de courrier électronique, notamment Google, refusent les messages provenant d'adresses IPv6 sans nom DNS inverse. Si c'est votre cas, vous recevrez des avis 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 fournisseur d'accès de définir un nom inverse correspondant à l'adresse de votre serveur. Malheureusement, les fournisseur d'accès grand public ne proposent généralement pas ce service. Vous pourrez alors contourner cette restriction [[http://tanguy.ortolo.eu/blog/article109/google-ipv6-smtp-restrictions|en passant en IPv4 pour livrer les messages à destination de Gmail]. Avec Postfix, il faut définir un service de livraison spécialisé :

master.cf
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
1) DNS-based Blackhole List, liste d'adresses IP considérées comme envoyant du spam
2) À titre personel, j'ai (jocelyndelalande) eu à me retirer de la liste d'adresses IP dynamiques de Spamhaus, ce qui fut très simple et effectif en une demi-heure.
services/courrier_électronique.txt · Dernière modification: Tue Sep 17 16:07:22 2013 par elessar
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante : CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Run by Debian Driven by DokuWiki