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.
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.
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é.
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
Autres liens rapides pouvant vous intéresser