Table des matières

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… Nous verrons dans ce tuto comment supprimer les headers sensibles des mails expédiés.

Pré-requis

Le tutoriel devrait fonctionner sur toutes les versions Debian à partir de Stretch.
Il faut un service postfix fonctionnel.
Version minimale de postfix : Version postfix 2.5 et suivantes.

Difficulté
Facile

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 filtrés :

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])

Il faut créer un fichier /etc/postfix/sanitize :

nano /etc/postfix/sanitize

Dans ce fichier, nous copions les lignes suivantes. Ce sont des regex permet de détecter du contenu. La première règle détectera toutes les lignes commençant par Received: et appliquera le flag, ici IGNORE (ignore la ligne et la supprime).

/^Received:.*/     IGNORE
/^X-Originating-IP:/    IGNORE
/^user-agent:/ IGNORE
/^x-mailer:    IGNORE

Un petit enregistrement.

Nous utilisons donc les expressions régulières (Regex) 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 sanitize. Pour cela, nous modifions le fichier /etc/postfix/main.cf

nano /etc/postfix/main.cf

Le fichier main.cf est le fichier de configuration général de votre postfix. Nous utilisons le paramètre : smtp_header_checks

Voici la ligne à ajouter à votre main.cf, vous pouvez le rajouter à la fin de votre fichier de configuration.

smtp_header_checks = regexp:/etc/postfix/sanitize

Et pour finir, nous relançons postfix avec la commande suivante :

postfix reload

Notes de version

Auteurs et sources