Supprimer les informations sensibles du header des mails envoyés avec Postfix

Lorsqu'on envoi un mail, le système lui adjoint toujours des méta-données (header). C'est une liste de champs permettant de donner des informations sur le message comme le destinataire, la provenance, le parcours, les tests anti-spam, etc…

Contenu des entêtes (header) d'un mail

Voici un petit extrait du header d'un mail

Return-Path: <bounce-debian-devel-announce=xxxxxxxxxxx@lists.debian.org>
Delivered-To: miel@chg-web.com
Received: from localhost (localhost.localdomain [127.0.0.1])
	by mx0.chg-web.net (Postfix) with ESMTP id E445D43C79
	for <miel@chg-web.com>; Sat, 28 Oct 2017 14:32:12 +0200 (CEST)
X-DSPAM-Processed: Sat Oct 28 14:32:12 2017
X-DSPAM-Confidence: 0.9899
X-DSPAM-Probability: 0.0000
X-Virus-Scanned: E-pullup at chg-web.net
X-Spam-Flag: NO
X-Spam-Score: -0.891
X-Spam-Level:
X-Spam-Status: No, score=-0.891 tagged_above=-9999.9 required=4.3
	tests=[BAYES_05=-0.5, RP_MATCHES_RCVD=-0.001, DSPAM.Innocent=-0.390]
	autolearn=no autolearn_force=no
X-DSPAM-Result: Innocent
X-DSPAM-Signature: 59f478cc64641093319906

Comme vous pouvez le voir, on peut apprendre énormément de choses en regardant les en-têtes d'un mail. Par exemple l'adresse ip local/externe de l'expéditeur et le client mail utilisé.

Supprimer les informations sensibles

Avec postfix, nous allons supprimer les entêtes sensibles comme l'adresse d'expédition locale de l'expéditeur, le client de mail utilisé ou le nom du script d'envoi du mail.

Il faut que postfix soit opérationnel sur votre serveur

Voici quelques exemples d'en-têtes qui seront filtrer :

X-Mailer: X-Mailer: PHPMailer 5.2.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
Received: from [192.168.1.xx] (xxxxxxxx-xxx-x-xxx-xx.xxx-xx.abo.wanadoo.fr [xx.xx.xx.xx])

On commence par créer un fichier /etc/postfix/header_cheks.cf :

nano /etc/postfix/header_checks.cf

Puis on y colle le contenu suivant :

/^Received:.*with ESMTPSA/  IGNORE
/^X-Originating-IP:/        IGNORE
/^X-Mailer:/                IGNORE
/^User-Agent:/              IGNORE

On enregistre. On utilise donc les expressions régulières pour détecter les informations sensibles que nous voulons supprimer des headers des mails.

Ensuite, il faut préciser à postfix qu'il doit utiliser notre fichier header_checks.cf. On tape la commande

nano /etc/postfix/main.cf

Le fichier main.cf est le fichier de configuration de postfix. On rajoute ensuite les lignes suivantes (lire en dessous où coller le contenu):

mime_header_checks = regexp:/etc/postfix/header_checks.cf
header_checks = regexp:/etc/postfix/header_checks.cf

Le contenu du fichier main.cf de postfix peut être différent d'un serveur à l'autre. Essayer de trouver cette ligne puis coller le code précédent juste au-dessus.

smtpd_client_restrictions =

Ensuite, pour permettre à postfix d'utiliser le fichier header_checks.cf, on le hash avec la commande postmap.

postmap header_checks.cf

Et pour finir, on relance postfix avec la commande suivante :

postfix reload

Notes de version

  • [10/12/2017] : Création de l'article

Auteurs et sources