postfix – vérifications d'en-tête différentes pour le courrier entrant et sortant

Comment puis-je appliquer différents header_checks d'en- header_checks pour l'input et l'expulsion du courrier à l'aide de Postfix?

Par défaut, tous les header_checks sont appliqués aux inputs et aux sorties.

header_checks se fait par cleanup donc je ne pense pas pouvoir l'appliquer uniquement pour les header_checks ou les header_checks .

smtp_header_checks est appliqué uniquement pour le courrier sortant (client smtp)

S'il y a un en-tête de courrier que vous pouvez utiliser pour identifier qui est entrant et qui est un courrier sortant, avec postfix 3.2 ou plus récent, vous pouvez court-circuiter les header_checks , comme:

 /^Received: .*detect_outgoing_mails/ PASS /^X-Something: this rule will only match on incoming mails/ HOLD 

(mais il ne vous donne encore que l'option de faire correspondre TOUT (comme précédemment) ou de faire correspondre uniquement le courrier entrant ou le courrier sortant, et nécessite une nouvelle version postfix relativement récente)

En tant que meilleure alternative, si vous pouvez toujours recevoir un courrier "sortant" (courrier de clients pour lesquels vous agissez en tant que server de relais de messagerie) sur un port (soumission: tcp / 587) et courrier entrant sur tcp / 25, vous devriez pouvoir utilisez master.cf pour replace header_checks pour chacun d'entre eux, comme ceci:

 submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_ressortingctions=permit_sasl_authenticated,reject -o header_checks=pcre:/etc/postfix/header_checks.relay smtp inet n - - - 200 smtpd -o ssortingct_rfc821_envelopes=yes -o header_checks=pcre:/etc/postfix/header_checks.mx 

mais cela ne fonctionnera pas si vos clients pour lesquels vous reliez utilisent également tcp / 25 comme rest du monde. S'ils le font, vous pourriez configurer un autre port pour eux et cela fonctionnerait, mais la faisabilité de cela dépend de votre capacité à persuader tous vos users de modifier leurs parameters.

Si vous disposez d'un IP supplémentaire, vous pourriez également le rendre plus transparent pour les users: disons que vous avez eu smtp.example.org en tant que server de relais pour les users et que votre MX avec IP aaaa , vous pouvez changer le MX du domaine sur IP bbbb , puis utilisez un server smtpd à aaaa avec un set de vérifications d'en-tête, et un autre server smtpd à bbbb avec un autre set de vérifications d'en-tête. Ceci est encore plus facile si vous ne relisez que les users de 192.168.xx / 24 lorsque vous pouvez même conserver le même nom DNS et utiliser les vues DNS pour présenter une IP interne pour les clients internes et une IP externe pour le rest du monde.

Et la troisième façon est donc d'utiliser la fonction de header_check postfix au lieu de header_check – au lieu d'une correspondance de regexp simple, elle transmettra un message entier à votre script personnalisé pour le traitement, ce qui peut facilement distinguer les courriers entrants et sortants en inspectant les en-têtes, puis en faire après le traitement souhaité.

Si je comprends correctement votre question, vous devriez pouvoir le faire via le file /etc/postfix/header_checks , quelque chose comme ceci pour le courrier sortant /^From: "spammer/ REJECT /^To: bob@here.com/ REDIRECT bob@there.com

Je l'ai fait depuis longtime, alors ne vous souvenez pas de tous les détails, mais vous pouvez get plus d'informations ici DOC

Cela vous permettrait de définir une action selon que le courrier soit entrant ou sortant, j'espère que cela répond à votre question.