Pour supprimer l'adresse IP de l'expéditeur de l'en-tête Reçu pour les nouvelles soumissions de courrier, utilisez la header_checksclé au lieu de l' smtp_header_checksoption:
header_checks = regexp:/etc/postfix/header_checks_submission
L' smtp_header_checksoption s'applique uniquement au courrier envoyé de Postfix à des serveurs externes, tandis que l' header_checksoption s'applique au courrier entrant envoyé par votre client à Postfix.
Voir aussi Comment Postfix reçoit le courrier sur http://www.postfix.org/OVERVIEW.html pour une vue d'ensemble des composants, le courrier passe de smtpd -> nettoyage -> file d'attente entrante. Le smtpdprocessus reçoit du courrier et injecte l'en- Receivedtête avec l'adresse IP de l'expéditeur. L' header_checks(5)option est traitée par le cleanup(8)composant qui nettoie les en-têtes des e-mails.
Il n'est pas recommandé de définir une telle header_checksoption globalement dans votre main.cf car cela modifierait l'en-tête Received dans tous les e-mails, même ceux reçus de serveurs externes. Au lieu de cela, vous devez configurer votre client pour envoyer des e-mails via un service de soumission dédié sur le port 587, et configurer Postfix pour réécrire les en-têtes pour ces soumissions authentifiées uniquement.
Dans /etc/postfix/master.cf, ajoutez les -olignes suivantes après la submissionligne:
submission inet n - y - - smtpd
# Require SASL authentication
-o smtpd_sasl_auth_enable=yes
# Require TLS transport security, do not leak your credentials in plaintext.
-o smtpd_tls_security_level=encrypt`
# Disallow unauthenticated users from sending mail through this port.
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# Use a different cleanup service (see below)
-o cleanup_service_name=ascleanup
Il est temps de configurer le nettoyage service pour un uthenticated s ubmissions. Je choisis le nom ascleanuppour le garder court et aligné, mais tout nom fonctionne. Pour ce faire, dupliquez la ligne de service de nettoyage dans le même master.cffichier, mais renommez le premier champ et ajoutez une nouvelle option pour sélectionner le fichier de filtre:
cleanup unix n - y - 0 cleanup
ascleanup unix n - y - 0 cleanup
-o header_checks=pcre:/etc/postfix/header_checks_submission
(L'utilisation de la pcretable nécessite une installation postfix-pcresur Debian, qui se chargera automatiquement de la mise à jour du fichier dynamicmaps.cf. Aucune autre modification n'est nécessaire pour cela.)
La dernière pièce est la configuration réelle du filtre /etc/postfix/header_checks_submission. Vous pourriez potentiellement utiliser quelque chose comme:
/^Received: .*/ IGNORE
ce qui supprimera la ligne d'en-tête Received complète, mais à la place, vous pouvez également supprimer la from helo.host (reverse.host.name [192.0.2.1])pièce tout en préservant les autres informations:
/^Received: from [^ ]+ \([^ ]+ \[[IPv0-9a-f:.]+\]\)\s+(.* \(Postfix\) with .+)$/ REPLACE Received: $1
Si vous avez changé l' mail_nameoption, changez le Postfixmot pour qu'il corresponde à votre configuration. (Ce modèle est précis sur la base du code source de Postfix, smtpd / smtpd.c .)
J'ai testé cela avec postfix 3.4.7-0 + deb10u1 sur Debian buster. Pour une autre description intéressante avec la même approche, voir Lors de l'envoi d'e-mails avec Postfix, comment puis-je masquer l'adresse IP et le nom d'utilisateur de l'expéditeur dans l'en-tête Reçu?
Avec la modification ci-dessus, ce qui suit est transformé en Received: by ...:
Received: from debian (unknown [IPv6:fe80::b036:2ff:fe6e:73f4])
by mail.example.nl (Postfix) with ESMTPSA id 1571B910B
for <some@example.com>; Sun, 12 Jan 2020 02:23:15 +0000 (UTC)