La fonctionnalité de vérification des adresses de destination/d'expédition décrite dans ce document n'est utilisable que sur des sites ayant une charge modérée. Elle décroit sensiblement les performances sous une charge élevée et risque de faire mettre votre site en liste noire de certains fournisseurs. Reportez-vous au paragraphe "Limites" ci-après pour plus de détails.
La vérification d'adresse est une fonctionnalité est une fonctionnalité qui permet au serveur SMTP de Postfix de bloquer une adresse d'expédition (MAIL FROM) ou de destination (RCPT TO) jusqu'à ce que l'adresse ait été vérifiée comme livrable.
Cette technique a d'évidents intérêts pour rejeter le courrier non désirable venant d'une adresse inexistante.
Elle peut également être pratique pour bloquer le courrier des destinataires inexistants, par exemple sur une machine relais qui n'a pas de liste de destinataires valides. Ceci évite de faire entrer en file d'attente des messages non livrables évitant ainsi le transport de messages MAILER-DAEMON en retour.
Cette fonctionnalité est disponible sur les versions 2.1 et supérieures de Postfix.
Sujets abordés dans ce document :
Une adresse d'expédition ou de destination est vérifiée en sondant le MTA (agent de transfert de messages) suivant sans délivrer immédiatement le message. Celui-ci peut être Postfix lui-même ou être un MTA distant (SMTP interruptus). Les messages de sondages sont des messages normaux si ce n'est qu'ils ne sont jamais livrés, retardés ou renvoyés; ils sont toujours jetés.
Internet -> Serveur
SMTP
Postfix<-> Serveur
de vérification
Postfix<-> Base de données
de vérification
d'adresse|
message
de sondage
v^
Status de
livraison
|File d'attente
Postfix-> Agents de
livraison
Postfix
Avec la vérification d'adresse de Postfix activée, le courrier normal souffrira seulement d'un court délai de moins de 6 secondes lorsqu'une adresse est vérifiée pour la première fois. Une fois ce status connu, il est caché et Postfix répond immédiatement.
Lorsque la vérification prend trop de temps, le serveur SMTP retarde l'adresse d'expédition ou de destination avec une réponse 450. Les clients de messagerie normaux se reconnecteront après un certain délai. La vérification d'adresse est configurable avec les paramètres address_verify_poll_count et address_verify_poll_delay du fichier main.cf. Reportez-vous à la page postconf(5) pour plus de details.
Pour vérifier une adresse distante, Postfix sonde le MTA suivant avec cette adresse, sans délivrer de message. Si le MTA suivant accepte l'adresse, alors Postfix suppose que l'adresse est livrable. En réalité, un message peut être rejeté APRÈS que le MTA ait accepté l'adresse de destination.
Certains sites risquent de vous mettre en liste noire lorsque vous l'aurez sondé trop souvent (un sondage est une session SMTP qui ne livre aucun message) ou lorsque vous l'aurez sondé trop souvent avec des adresses inexistantes. C'est une des raisons pour laquelle vous ne devrez utiliser la vérification d'adresse avec parcimonie et si, bien sûr, votre site reçoit beaucoup de courrier.
Normallement, les messages de sondage de vérification d'adresse suivent le même chemin que les messages reguliers. Toutefois, certains site envoient le courrier vers Internet au travers d'un relais, ce qui casse la vérification. Reportez-vous au paragraphe "Contrôle du routage des sondages de vérification d'adresse", pour voir comment surcharger le routage du message et pour les limites de cette approche.
Postfix suppose qu'une adresse n'est pas livrable lorsque le MTA suivant rejette le sondage sans regarder la raison de ce rejet (client rejeté, HELO rejeté, MAIL FROM rejeté, etc.). Ainsi Postfix rejète le message lorsque le MTA de l'expéditeur rejète le courrier de votre machine. C'est une bonne chose.
Malheureusement, certains sites majeurs tels YAHOO ne rejettent pas les adresses en réponse à la commande RCPT TO, mais reportent cette réponse à la fin de la commande DATA après que le message ait été transféré. La vérification ne fonctionnera pas avec ces sites.
Par défaut, les messages de sonde de Postfix utilisent l'adresse "postmaster@$myorigin" comme adresse d'expédition. C'est plus sûr car Postfix ne rejette pas le courrier de ces adresses.
Vous pouvez la changer en adresse nulle ("address_verify_sender ="). Ce n'est PAS sûr car la vérification échouera avec les sites mal configurés qui rejettent MAIL FROM: <>, alors que les sondages de "postmaster@$myorigin" auraient réussi.
Comme indiqué ci-avant, la vérification des adresses de destination peut être intéressante pour bloquer le courrier des destinataires non joignables sur un serveur relais qui n'a pas une liste des adresses de destination valides. Ceci peut éviter d'encombrer les files d'attente avec les messages MAILER-DAEMON.
Cette vérification est relativement sûre et sans surprises. Si un sondage de destinataire échoue, Postfix rejette le courrier à destination de cette adresse. S'il réussit, Postfix accepte le courrier à destination de cette adresse.
/etc/postfix/main.cf: smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination ... reject_unknown_recipient_domain reject_unverified_recipient ...
La restriction "reject_unknown_recipient_domain" bloque le courrier des domaines inexistants. La mettre avant "reject_unverified_recipient" évite la surcharge du sondage.
Le paramètre unverified_recipient_reject_code (défaut 450) indique comment Postfix doit répondre lorsqu'une adresse est connue pour rebondir. Changez cette valeur en 550 lorsque vous faites confiance au jugement de Postfix.
Il est relativement sûr d'activer la vérification des adresses d'expédition pour certains domaines qui apparaissent souvent dans les messages forgés.
/etc/postfix/main.cf: smtpd_sender_restrictions = hash:/etc/postfix/sender_access unverified_sender_reject_code = 550 # Note 1: Prenez connaissance du paragraphe "Cache" ci-dessous! # Note 2: Evitez les fichiers hash ici. Utilisez plutôt btree. address_verify_map = btree:/var/mta/verify /etc/postfix/sender_access: aol.com reject_unverified_sender hotmail.com reject_unverified_sender bigfoot.com reject_unverified_sender ... etc ...
Une liste des domaines fréquemment utilsés dans les MAIL FROM des messages forgés peut être trouvée à l'adresse http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
NOTE: Une des premières choses à faire est d'activer la vérification d'adresse pour tous vos domaines.
Malheureusement, la vérification des adresses d'expédition ne peut être activée simplement pour tout le courrier - vous risquez de perdre le courrier légitime venant de systèmes mal configurés. Vous devrez sans doute utiliser des lestes blanches pour des adresses spécifiques ou même des domaines entiers.
Pour découvrir comment la vérification des adresses d'expédition va se comporter, utilisez "warn_if_reject reject_unverified_sender", vous verrez ainsi quels messages auraient été bloqué :
/etc/postfix/main.cf: smtpd_sender_restrictions = permit_mynetworks ... check_sender_access hash:/etc/postfix/sender_access reject_unknown_sender_domain warn_if_reject reject_unverified_sender ... # Note 1: Prenez connaissance du paragraphe "Cache" ci-dessous! # Note 2: Evitez les fichiers hash ici. Utilisez plutôt btree. address_verify_map = btree:/var/mta/verify
C'est également une bonne idée pour remplir votre cache avec les résultats des vérifications avant de réellement rejeter le courrier.
La restriction sender_access est obligatoire pour les listes blanches d'adresses ou de domaines connus pour être fiables. Ainsi, Postfix ne marquera pas une adresse connue pour être fiable comme mauvaise après un sondage raté, il vaut mieux être sûr que désolé.
NOTE: Vous devrez inscrire en liste blanche les sites tels securityfocus.com qui gèrent des listes de diffusion utilisant différentes adresses à chaque envoi (VERP). De telles adresses poluent rapidement le cache de vérification des adresses et génèrent d'inutiles sondage.
/etc/postfix/sender_access securityfocus.com OK ...
La restriction "reject_unknown_sender_domain" bloque le courrier des domaines inexistants. L'inscrire avant "reject_unverified_sender" évite une surcharge de génération de messages de sondage inutile.
Le paramètre unverified_sender_reject_code (défaut 450) indique comment Postfix doit répondre lorsqu'une adresse est connue pour rebondir. Changez ce paramètre en 550 lorsque vous faites confiance au jugement de Postfix.
NOTE : Par défaut, les informations de vérification d'adresse n'est pas stockée sur un fichier persistant. Vous devez en indiquer un dans le fichier main.cf (voir ci-dessous). Le stockage persistant est désactivé par défaut car il risque d'utiliser beaucoup d'espace disque.
Les informations de vérification d'adresse est cachée par le démon de vérification de Postfix. Postfix a différents paramètres pour contrôler le cache des réponses positives ou négatives. Reportez-vous à la page de manuel verify(8) pour plus de détails.
Le paramètre de configuration address_verify_map (NOTE : singulier) indique un fichier optionnel pour utiliser une base de données des résultats des vérifications d'adresse d'expédition et de destination. Si vous ne renseignez pas ce paramètre, toutes les informations de vérification sont perdues après un "postfix reload" or "postfix stop".
Si votre système de fichiers /var dispose d'assez d'espace, essayez :
/etc/postfix/main.cf: # Note: évitez les fichiers hash ici, utilisez plutôt btree. address_verify_map = btree:/var/mta/verify
NOTE : N'installez pas cette base dans un système de fichier qui risque d'être saturé. Lorsque la table de vérification des adresses est corrompue, plus aucun message ne peut être reçu et vous devez MANUELLEMENT effectuer les réparations décrites au paragraphe suivant.
Le processus démon verify(8) créera la nouvelle base si elle n'existe pas et l'ouvrira avant d'entrer dans la cage chroot et avants de perdre ses privilèges root
La page de manuel verify(8) décrit les paramètres qui contrôlent combien de temps les informations restent en cache avant d'être rafraichies et combien de temps elles peuvent rester en cache sans être rafraichies avant d'expirer. Postfix utilise différents contrôles pour les résultats positifs (adresse acceptée) et négatifs (adresse rejetée).
Actuellement, aucun outil n'est fourni pour gérer la base des vérifications d'adresse. Si le fichier devient trop gros ou corrompu, vous devez l'effacer manuellement ou le renommer puis lancer "postfix reload". Le nouveau démon verify créera la nouvelle base de données.
Par défaut, Postfix sends address verification probe messages via the same route as regular mail, because that normally produces the most accurate result. It's no good to verify a local address by connecting to your own SMTP port; that just triggers all kinds of mailer loop alarms. The same is true for any destination that your machine is best MX host for: hidden domains, virtual domains, etc.
Toutefois, certains sites ont une infrastructure complexe où le courrier n'est pas directement envoyé sur Internet, mais est transmis à un relayhost intermédiaire. C'est un problème pour les vérifications d'adresses car elles ne peuvent être effectuées que si Postfix se connecte directement sur l'hôte de destination.
Pour cette raison, Postfix vous permet de redéfinir les paramètres de routage lorsqu'il livre un message de sondage.
En premier lieu, le paramètre address_verify_relayhost vous permet de surcharger le paramètre relayhost et le paramètre address_verify_transport_maps le paramètre transport_maps. Le paramètre address_verify_sender_dependent_relayhost_maps effectue la même chose pour la sélection du relayhost en fonction du destinataire.
De plus, cahque classe d'adresses peut avoir sa propre valeur pour le transport comme indiqué dans le tableau ci-dessous. Les classes d'adresses sont définies dans la page ADDRESS_CLASS_README.
liste de domaine Transport régulier Transport de vérification mydestination local_transport address_verify_local_transport virtual_alias_domains (pas applicable) (pas applicable) virtual_mailbox_domains virtual_transport address_verify_virtual_transport relay_domains relay_transport address_verify_relay_transport (pas applicable) default_transport address_verify_default_transport
Par défaut, les paramètres qui contrôlent la livraison des messages de sondage ont la même valeur que ceux contrôlant la livraison normale.
Scénario typique : surcharge du paramètre relayhost pour les sondages de vérification d'adresse, le reste étant inchangé.
/etc/postfix/main.cf: relayhost = $mydomain address_verify_relayhost = ...
Les sites derrière un traducteur d'adresse réseau doivent utiliser un client SMTP différent qui envoie des informations de nom d'hôte correctes :
/etc/postfix/main.cf: relayhost = $mydomain address_verify_relayhost = address_verify_default_transport = direct_smtp /etc/postfix/master.cf : direct_smtp .. .. .. .. .. .. .. .. .. smtp -o smtp_helo_name=nat.box.tld
Des incohérences peuvent arrivées lorsque les messages ne suivent pas le même chemin que les messages normaux. Par exemple, un message peut être accepté lorsqu'il suit un chemin normal et être rejeté par la route forcée. L'inverse peut être vrai, mais plus rarement.
traduction par Xavier Guimard - Retour au menu