Le service du courrier électronique repose en réalité sur plusieurs services :
Nous allons détailler une suggestion de configuration complète fonctionnelle, en utilisant :
De plus, la configuration proposée utilisera les comptes Unix de votre système comme comptes de messagerie.
Adresse électronique
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 :
tournesol@[192.0.2.42]
, ça marche, mais ça le fait moyen…) ;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
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 à et vous receverez un email en retour avec le tag [pongSmtp] en sujet (Page du projet libre pongSmtp - pour éventuellement offrir ce service)
Postfix est un serveur de courrier conçu pour être efficace, sécurisé et agréable à administrer.
Exim est un serveur de courrier très flexible et robuste. C'est le choix par défaut de la distribution Debian.
qmail est un serveur de courrier très modulaire et sécurisé, conçu par le cryptologue D. J. Bernstein.
Il existe deux protocoles standards de service de boîtes aux lettres :
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 :
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 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 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.
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
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.
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.
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.
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.
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.
Pour pouvoir accéder à votre courrier électronique depuis n'importe quel ordinateur disposant d'un accès au Web, vous pouvez installer un webmail.
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.
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 :
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) :
Le projet emailPoubelle.php vous permet de mettre en place un petit service public d'adresses de redirection temporaires simplement.
Service personnel
/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.
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 à :
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 :
Pour éviter ce désagrément, si vous avez bien une adresse IP fixe, vous pouvez :
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 :
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é :
smtp4 unix - - - - - smtp -o inet_protocols=ipv4
Puis utiliser une table de transport :
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
:
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