Vérification des adresses par Postfix


ATTENTION ATTENTION ATTENTION

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.

Quelles vérifications d'adresse Postfix peut-il faire pour vous

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 :

Comment marche la vérification d'adresse

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.

Limites de la vérification d'adresse

Vérification des adresses de destination

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.

Vérification des adresses d'expédition pour les messages de domaines fréquemment forgés

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.

Vérification des adresses d'expédition pour tous le courrier

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.

Base de données de vérification d'adresse

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

Gestion des base de données de vérification d'adresse

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.

Contrôle du routage des sondages de vérification d'adresse

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 domaineTransport régulierTransport 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.

Exemples de routage forcé du sondage

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

Limites du routage forcé du sondage

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.

Valid HTML 4.01! traduction par Xavier Guimard - Retour au menu