Arrêt des notifications indésirables


Introduction

Les fonctionnalités décrites ici sont disponibles sur les versions 2.0 et supérieures de Postfix

Sujets abordés dans ce document :

Que sont les notifications indésirables ?

Lorsque les spammers ou les vers envoient du courrier avec des adresses d'expédition forgées, les sites innocents sont envahits par des avis de non remise. C'est ce qu'on appelle les notifications indésirables (backscatter mail).

Comment bloquer les notifications à destination d'adresses aléatoires ?

Si votre machine reçoit des notifications indésirables à destination d'adresses aléatoires, configurez Postfix pour rejeter le courrier des utilisateurs inexistants comme décrit dans les pages LOCAL_RECIPIENT_README (destinataires locaux) et STANDARD_CONFIGURATION_README (configuration standard).

Si vous utilisez une version 2.0 de Postfix ou antérieure, désactivez la fonctionnalité "attendre avant rejet" ("pause before reject") du serveur SMTP. Si vous système est soumis à une forte charge, il ne doit pas perdre de temps.

/etc/postfix/main.cf:
    # Pas nécessaire avec Postfix versions 2.1 et supérieures.
    smtpd_error_sleep_time = 0

Comment bloquer les notifications à destination d'adresses réelles ?

Lorsque les notifications passent la barrière "destinataire inconnu", il ne faut pas desespérer. Beaucoup de systèmes insèrent les en-têtes du message d'origine dans la notification. Ces en-têtes de message contiennent des informations que vous pouvez utiliser pour reconnaître et bloquer les indésirables.

Bloquer les notifications avec un HELO renseigné

Bien que mon adresse mail soit "wietse@porcupine.org", tous mes systèmes de messagerie s'annoncent comme "machine.porcupine.org" dans la commande SMTP HELO. Ainsi si un message retourné contient un en-tête Received: tel que suit :

Received: from porcupine.org ...

Alors je sais que qu'il s'agit d'un message forgé. Les messages réellements envoyés par mes systèmes ressemblent à :

Received: from machine.porcupine.org ...

Pour les mêmes raisons, les en-têtes suivants semblent être le résultat d'un message forgé :

Received: from host.example.com ([1.2.3.4] helo=porcupine.org) ...
Received: from [1.2.3.4] (port=12345 helo=porcupine.org) ...
Received: from host.example.com (HELO porcupine.org) ...
Received: from host.example.com (EHLO porcupine.org) ...

Un autre signe fréquent de forgeage est l'en-tête Message-ID:. Mon système produitk un Message-ID: du style <stuff@hostname.porcupine.org>. Les suivants sont forgés, en particulier le premier 

Message-ID: <1cb479435d8eb9.2beb1.qmail@porcupine.org>
Message-ID: <yulszqocfzsficvzzju@porcupine.org>

Pour bloquer de telles notifications, j'utilise les paramètres header_checks et body_checks comme suit :

/etc/postfix/main.cf:
    header_checks = regexp:/etc/postfix/header_checks
    body_checks = regexp:/etc/postfix/body_checks

/etc/postfix/header_checks:
    /^Received: +from +(porcupine\.org) +/
        reject forged client name in Received: header: $1
    /^Received: +from +[^ ]+ +\(([^ ]+ +[he]+lo=|[he]+lo +)(porcupine\.org)\)/
        reject forged client name in Received: header: $2
    /^Message-ID:.*@(porcupine\.org)/
	reject forged domain name in Message-ID: header: $1

/etc/postfix/body_checks:
    /^[> ]*Received: +from +(porcupine\.org) /
        reject forged client name in Received: header: $1
    /^[> ]*Received: +from +[^ ]+ +\(([^ ]+ +[he]+lo=|[he]+lo +)(porcupine\.org)\)/
        reject forged client name in Received: header: $2
    /^[> ]*Message-ID:.*@(porcupine\.org)/
	reject forged domain name in Message-ID: header: $1

Notes :

Avertissements

Les clients de messagerie Netscape (and par conséquent Mozilla) envoient un nom de domaine identique à celui de l'expéditeur dans le HELO. Si vous utilisez de tels clients, alors les correspondances précédentes bloqueront le courrier légitime.

Je n'ai qu'une telle machine sur mon réseau et pour éviter que son courrier soit bloqué, je l'ai configuré pour envoyer le courrier avec une adresse utilisateur@machine.porcupine.org. Sur le serveur Postfix, une correspondance canonique traduit cette adresse temporaire en utilisateur@porcupine.org.

/etc/postfix/main.cf:
    canonical_maps = hash:/etc/postfix/canonical

/etc/postfix/canonical:
    @hostname.porcupine.org @porcupine.org

C'est pratique si vous avez peu de systèmes qui envoient de telles commandes HELO et que vous n'avez jamais besoin d'envoyer du courrier à ces machines.

Une alternative consiste à supprimer le nom de machine avec le masquage d'adresse comme décrit à la page ADDRESS_REWRITING_README.

Bloquer les notifications contenant un expéditeur

Comme beaucoup de personnes, j'ai quelques adresses dans des domaines que j'utilisait autrefois. Le courrier de ces adresses est transféré vers mon adresse actuelle. La majorité des notifications indésirables que je reçois provient de ces adresses. De telles notifications sont faciles à stopper.
/etc/postfix/main.cf:
    header_checks = regexp:/etc/postfix/header_checks
    body_checks = regexp:/etc/postfix/body_checks

/etc/postfix/header_checks:
    /^(From|Return-Path):.*[[:<:]](user@domain\.tld)[[:>:]]/ 
        reject forged sender address in $1: message header: $2

/etc/postfix/body_checks:
    /^[> ]*(From|Return-Path):.*[[:<:]](user@domain\.tld)[[:>:]]/ 
        reject forged sender address in $1: message header: $2

Notes :

Bloquer les notifications avec d'autres informations

Un autre signe de forgeage peut être détecté dans les adresses IP enregistrées dans l'en-tête Received: suivant votre nom de machine ou domaine HELO. Ces informations doivent être utilisées avec précaution. Certains serveurs sont derrière un traducteur d'adresses et ne voient jamais l'adresse IP réelle du client.

Bloquer les notifications des antivirus

Après l'élimination des messages forgés reconnus, il reste une catégorie de notification à éliminer : les notifications des logiciels anti-virus. Malheureusement, certains ne savent pas que les virus forgent les adresses d'expédition. Pour ne rien arranger, ces logiciels ne savent pas non plus rapporter le problème de livraison, nous devons donc utiliser d'autres techniques.

Reconnaître les antivirus est un processus enclin d'erreurs car il y a beaucoup de formats de rapports différents. La suite est seulement un petit exemple de reconnaissance d'en-têtes de messages. Pour obtenir une liste plus grande d'expression caractérisant les notifications des antivirus, consultez la page http://www.dkuug.dk/keld/virus/ ou http://www.t29.dk/antiantivirus.txt.

/etc/postfix/header_checks:
    /^Subject: *Your email contains VIRUSES/ DISCARD virus notification
    /^Content-Disposition:.*VIRUS1_DETECTED_AND_REMOVED/
        DISCARD virus notification
    /^Content-Disposition:.*VirusWarning.txt/ DISCARD virus notification

Reclamation auprès des opérateurs : s'il vous plait, n'aggavez pas le problème en retournant les messages forgés. Vous n'harcelez que des innocents. Si vous devez retourner le message au supposé expéditeur, renvoyez tous les en-têtes pour qu'il puisse se défendre des messages forgés.

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