L'utilité des connexions SMTP avec authentification - Debian 6.0 Squeeze
Rédigé par Marc GUILLAUME | Aucun commentaireConfigurer l'envoi de mail avec une identification SMTP.
Le relayage
Avant de nous plonger dans l'authentification SMTP je voudrais que vous compreniez ce que signifie exactement un « relais ». A chaque fois que Postfix reçoit un mail et doit le renvoyer à un autre serveur cette action est appelée relayage. Voici les quelques types existants :
Email entrant
Lorsque quelqu'un sur Internet envoit un email à john@example.org un autre serveur de courrier va acheminer celui-ci vers votre propre serveur de courrier en utilisant SMTP. Postfix va vérifier qu'il est responsable des adresses mail dans le domaine example.org et accepter le courrier. John peut allors récupérer son mail sur votre serveur en utilisant POP ou IMAP.
Email sortant (sans authentification)
John est quelque part connecté à Internet et veut envoyer un mail à lisa@example.com. Comme votre serveur de courrier n'est pas responsable du domaine example.com il devrait transmettre celui-ci au serveur compétant. Votre serveur reçevant le mail de John doit simplement le transmettre (le relayer) au serveur s'occupant des adresses mail de la forme ...@example.com. Cela peut sembler tout à fait innocent, pourtant votre serveur de courrier va refuser le relais :
Pourquoi ? Parce que n'importe qui peut prétendre être John et demander à votre serveur de relayer du courrier. Si un attaquant (comme un spammeur) envoyait ainsi des millions de spams à travers votre serveur, les gestionnaires des domaines destinataires vous accuseraient vous d'être un sapmmeur. Votre serveur de courrier serait ce qu'on appelle un « open relay » (un relais ouvert). Ce n'est pas ce que vous voulez car ainsi l'adresse IP de votre serveur de courrier serait inscrite dans des listes noires et vous auriez de sérieux problèmes pour envoyer d'autres mails (même réguliers). Donc sans preuve que John est bien réellement John, votre serveur rejetera le mail.
Email sortant (avec authentification)
Alors comment John va-t-il pouvoir envoyer son mail ? Il doit utiliser l'authentification (authentification en anglais) SMTP. Le processus est le même que précdemment à la différence près que le programme d'envoi du courrier enverra préalablement son nom d'utilisateur et son mot de passe.
L'option de configuration mynetworks
En parallèle à l'usage de l'authentification SMTP vous pouvez configurer Postfix pour qu'il relaie toutjours les mails envoyés depuis certaines adresses IP. L'option de configuration mynetworks contient une liste de sous-réseaux ou d'addresses IP de confiance. Généralement vous y placez votre propre réseau local. La raison pour laquelle John doit s'identifier dans l'exemple précédent est parce qu'il n'envoit pas son mail depuis votre réseau local (c'est le cas le plus courant)
Activation de l'authentification SMTP dans Postfix
Pendant longtemps l'authentification SMTP avec Postfix a été très pénible à réaliser. Elle était effectuée à travers la bibliothèque SASL (Simple Authentication and Security Layer) qui faisait partie du serveur de mail Cyrus. C'était presque impossible à déboguer et renvoyait des messages d'erreur écrits en charabia qui induisaient très facilement en erreur. Heureusement de nos jours il est possible de faire en sorte que Postfix demande au serveur Dovecot de vérifier le nom d'un utilisateur et son mot de passe. Et comme vous avez déjà configuré l'aspect authentification de Dovecot pour la récupération du courrier tout va être maintenant très facile. Postfix a juste besoin d'une petite configuration supplémentaire :
postconf -e smtpd_sasl_type=dovecot postconf -e smtpd_sasl_path=private/auth postconf -e smtpd_sasl_auth_enable=yes postconf -e smtpd_recipient_restrictions=" \ permit_mynetworks \ permit_sasl_authenticated \ reject_unauth_destination"
smtpd_sasl_auth_enable active l'authentification SMTP de manière générale. Et smtpd_recipient_restrictions définit les règles à appliquer après que l'utilisateur distant ait envoyé la ligne RCPT TO: pendant le dialogue SMTP. Dans ce cas le relais est autorisé si :
- permit_mynetworks : l'utilisateur se connecte depuis le réseau local (mynetworks) ou si
- permit_sasl_authenticated : l'utilisateur est authentifié ou si
- reject_unauth_destination : le courrier est destiné à un utilisateur d'un domaine local ou d'un domaine virtuel sur le serveur (mydestination, virtual_alias_domains ou virtual_mailbox_domains).
Il y a de nouvelles restrictions :
- smtpd_client_restrictions
- smtpd_helo_restrictions
- smtpd_sender_restrictions
qui font l'objet de vérifications pendant les différentes étapes du dialogue SMTP (connexion IP, commande HELO/EHLO, commande MAIL FROM) mais pour l'instant vous devriez mettre toutes les restrictions dans smtpd_recipient_restrictions.
Si vous désirez voir comment fonctionne une session SMTP avec authentification au niveau TCP le guide pour Lenny contient des informations sur ce sujet : Connexion SMTP authentifiée.