Postfix VERP Howto


Postfix VERP support

Les version 1.1 et supérieures de Postfix supportent les chemins d'adresses de retour variables dans l'enveloppe. Lorsque la livraison type VERP est demandée, chaque destinataire d'un message reçoit une copie personnalisée de ce message, avec sa propre adresse de destination encodée dans l'adresse d'expédition de l'enveloppe.

Par exemple, lorsque la livraison type VERP demandée, Postfix delivre le message avec comme expéditeur "nom-de-la-liste@origine" pour un destinataire "user@domain", avec l'adresse d'expédition encodant le destinataire comme suit :

owner-listname+user=domain@origin

Ainsi, le courrier non livrable peut révéler l'adresse de destination non livrable sans imposer au propriétaire de la liste de traiter les rejets.

Le concept VERP a été popularisé par la MTA qmail MTA et par le gestionnaire de listes ezmlm. Lisez http://cr.yp.to/proto/verp.txt pour connaître les idées ayant initié ce concept.

Sujets abordés par ce document :

Paramètres de configuration VERP de Postfix

Avec Postfix, l'ensemble du processus est controllé par quatre paramètres de configuration.
default_verp_delimiters (défaut : +=)

Caractères utilisés par Postfix comme délimiteur VERP lorsque ce type de livraison est requis sans que soit précisé les délimiteurs.

verp_delimiter_filter (défaut : -+=)

Caractères acceptés par Postfix comme délimiteurs VERP sur la ligne de la commande sendmail et dans les commandes SMTP. De nombreux caractères ne doivent pas être utilisés comme délimiteur VERP, soit parce qu'ils ont déjà un sens particulier dans les adresses mail (tels @ et %), soit parce qu'ils sont utilisés comme partie des noms d'utilisateurs ou des noms de domaines (tels les caractères alphanumériques), soit parce qu'ils sont des caractères non-ASCII ou de contrôle. Et comme chacun sait, certains caractères peuvent engendrer des bugs dans les logiciels vulnérables, et nous ne souhaitons pas que celà arrive.

smtpd_authorized_verp_clients (défaut : aucun)

Clients SMTP autorisés à demander la livraison type VERP. Le serveur QMQP de Postfix utilise son propre mécanisme de contrôle d'accès et les soumissions locales (via /usr/sbin/sendmail etc.) sont toujours autorisées. Pour autoriser une machine, listez son nom, adresse IP, sous-réseau (réseau/masque) ou son .domaine parent.

Avec les versions 1.1 et 2.0 de Postfix, ce paramètre est appelé authorized_verp_clients (défaut : $mynetworks).

disable_verp_bounces (défaut : no)

Détermine si Postfix envoie un rapport de rejet global pour les messages VERP multi-destinataires, ou un rapport par destinataire. Par défaut, un rapport par destinataire comme demandé par ezmlm.

Utiliser VERP avec les gestionnaires de liste Majordomo etc...

Pour utiliser VERP avec les listes de diffusions Majordomo etc., vous devrez configurer le gestionnaire de liste pour soumettre les messages sous l'une de ces deux formes :

Postfix 2.3 et supérieurs :

% sendmail -V -f owner-listname other-arguments...

% sendmail -V+= -f owner-listname other-arguments...

Postfix 2.2 et antérieurs (Postfix 2.3 comprend l'ancienne syntaxe à des fins de compatibilité, mais il enregistre un avertissement qui vous rappelle que vous utilisez une syntaxe obsolète) :

% sendmail -V -f owner-listname other-arguments...

% sendmail -V+= -f owner-listname other-arguments...

La première forme utilise les caractères de délimitation VERP par défaut de main.cf. La seconde forme vous autorise à indiquer ces caractères. L'exemple montre les valeurs recommandées.

Ce texte suppose que vous avez configuré un alias propriétaire des listes qui route le courrier non livrable à une personne réelle :

/etc/aliases:
    owner-listname: votre-nom+nom-de-liste

Pour traiter les rejets nous allons faire une utilisation extensive des tours d'extensions d'adresses.

Vous devez indiquer à Postfix que + est le séparateur entre une adresse et ces extensions optionnelles, que les extensions d'adresses sont ajoutées au noms des fichiers .forward file names, et que les extensions d'adresses sont ignorées lors des substitutions d'alias :

/etc/postfix/main.cf:
    recipient_delimiter = +
    forward_path = $home/.forward${recipient_delimiter}${extension},
        $home/.forward
    propagate_unmatched_extensions = canonical, virtual

(les deux derniers paramètres ont la valeur par défaut).

Vous devez créer un fichier nommé .forward+listname avec les commandes qui traitent tous les messages envoyés à l'adresse du propriétaire de la liste :

~/.forward+listname:
    "|/some/where/command ..."

Avec cette configuration, le courrier non livrable à destination de user@domain sera retourné à l'adresse suivante :

owner-listname+user=domain@votre.domaine

qui est traitée par votre commande située dans le fichier .forward+listname. Ce message devrait contenir, entre autres, un en-tête To: avec l'adresse d'expédition encapsulée dans l'adresse de destination :

To: owner-listname+user=domain@your.domain

Il est laissé comme exercice au lecteur l'extraction des valeurs user=domain de l'adresse de destination de l'en-tête To:.

Le support VERP dans le serveur SMTP de Postfix

Le serveur SMTP de Postfix implémente une commande XVERP pour activer la livraison type VERP. La syntaxe autorise deux formes :

MAIL FROM:<expéditeur@domaine> XVERP

MAIL FROM:<expéditeur@domaine> XVERP=+=

La première forme utilise les délimiteurs VERP par défaut de main.cf, la seconde forme les surcharge explicitement. Les valeurs montrées sont celles recommendées.

Le support VERP dans la commande sendmail de Postfix

La commande sendmail de Postfix dispose d'une option -V pour demander la livraison type VERP. Indiquez l'une des deux formes suivantes :

Postfix 2.3 et supérieurs

% sendmail -XV -f owner-listname ....

% sendmail -XV+= -f owner-listname ....

Postfix 2.2 et antérieurs (Postfix 2.3 comprend l'ancienne syntaxe à des fins de compatibilité, mais il enregistre un avertissement qui vous rappelle que vous utilisez une syntaxe obsolète) :

% sendmail -V -f owner-listname ....

% sendmail -V+= -f owner-listname ....

La première forme utilise les délimiteurs VERP par défaut de main.cf, la seconde forme les surcharge explicitement. Les valeurs montrées sont celles recommendées.

Le support VERP dans le serveur QMQP de Postfix

Lorsque le serveur QMQP de Postfix reçoit le message avec une adresse d'expédition dans l'enveloppe sous la forme :

listname-@your.domain-@[]

Postfix génère les adresses d'expédition "listname-user=domain@your.domain", en utilisant "-=" comme délimiteurs VERP car qmail/ezmlm les imposent.

Plus généralement, une adresse d'expédition of "prefix@origin-@[]" requiert une livraison type VERP avec des adresses d'expéditions sous la forme "prefixuser=domain@origin". Toutefois, Postfix autorise seulement les délimiteurs VERP qui sont indiqués avec le paramètre verp_delimiter_filter. En particulier, le délimiteur "=" est requis pour la compatibilité qmail (lisez la page de manuel addresses(5) de qmail pour plus de détails).

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