Forum Linux.debian/ubuntu Postfix header_checks ne fonctionne pas

Posté par . Licence CC by-sa.
1
9
juin
2017

Hello !

Sur un serveur j'ai plusieurs services qui envoient des mails, et j'aurais besoin de rediriger tous les mails qui sortent, vers une seule adresse mail (pas gérée par le postfix du serveur) sauf pour un seul service identifié par le From: ou là, les mails doivent partir normalement (sans être redirigés).

J'ai pas mal fouillé le net et je trouve un max de catch-all pour la redirection (ce que je sais déjà faire) mais pas trouvé grand chose pour mon besoin.

Donc en mixant plusieurs petits trucs, j'ai fini par faire ça :

dans le main.cf

header_checks = pcre:/etc/postfix/headers_check

et donc dans headers_check

/From:((?!projects@mondomaine.fr).)*$/ REDIRECT redirect@mondomaine.fr

ou projects@mondomaine.fr est le From: qui ne doit pas être redirigé.

Quand je joue avec

postmap -q "From: root <root@mondomaine.fr>" pcre:/etc/postfix/headers_check

j'ai bien

REDIRECT redirect@mondomaine.fr

Mais quand j'envoie un mail en ligne de commande, par ex.

php -r "mail('toto@example.com', 'test', 'test');"

dans les logs, je vois malheureusement

[…] 4DA7541BAE: from=<root@projects.mondomaine.fr>, size=348, nrcpt=1 (queue active)
[…] 4DA7541BAE: to=<toto@example.com>, relay=mx1.ovh.net[137.74.125.138]:25, delay=7, delays=0.98/0/5.9/0.13, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as D8BA3ED2)
[…] 4DA7541BAE: removed

Donc le mail part bien sans être redirigé.

Est-ce que ce que je veux faire est possible ?
Et surtout pouquoi avec postman la regexp matche, et que postfix semble s'en cogner (même pas de log de header_checks) ?

J'ai fais un peu de nettoyage des infos au-dessus, mais ca ne change rien à la compréhension je pense.

Merci d'avance.

  • # recipient_canonical_map + sender_dependent_relayhost_maps

    Posté par (page perso) . Évalué à 1.

    A priori je verrais ça comme ça:

    • mise en place d'un process smtp supplementaire avec une recipient_canonical_map qui re-ecrit les destinataires vers redirect@mondomaine.fr

    • dans le main, ajout d'un sender_dependent_relayhost_maps qui gère l'exception du projets@mondomaine.fr

    Quelque chose dans ce gout la:

    master.cf

    127.0.0.1:10025 inet n       -       -       -       -       smtpd
      -o recipient_canonical_map=regexp:/etc/postfix/recipient_canonical_map
      -o recipient_canonical_classes=envelope_recipient
    

    main.cf

    relayhost=<normal-relay-conf>
    sender_dependent_relayhost_maps=hash:/etc/postfix/sender_dependent_relayhost_maps
    

    /etc/postfix/sender_dependent_relayhost_maps

    projects@mondomaine.fr DUNNO
    @mondomaine.fr smtp:127.0.0.1:10025
    

    /etc/postfix/recipient_canonical_map

    !/mondomaine/ redirect@mondomaine.fr
    
    • [^] # Re: recipient_canonical_map + sender_dependent_relayhost_maps

      Posté par (page perso) . Évalué à 1.

      En théorie ta solution devrait marcher d'ailleurs,

      Il existe une autre methode moins bourine que la mienne avec les restrictions classes, et autre trouvable ici:

      https://serverfault.com/questions/284702/redirect-specific-e-mail-address-sent-to-a-user-to-another-user

    • [^] # Re: recipient_canonical_map + sender_dependent_relayhost_maps

      Posté par . Évalué à 1.

      Merci de t'être penché sur le problème :-).

      Je vais essayer ta proposition.

      Mais ce que j'arrive pas comprendre c'est pourquoi postfix ne traite pas le fichier header_checks (alors qu'en testant avec postman c'est pile poil ce dont j'ai besoin).
      C'est vraiment un truc de fou.

      J'avais vu le lien que tu as mis, mais ca me semble être plutôt pour marcher dans l'autre sens, en réception.

      Je suis sidéré de ne rien trouver sur le net, ça m'avait semblé plutôt trivial comme besoin au départ …

      • [^] # Re: recipient_canonical_map + sender_dependent_relayhost_maps

        Posté par (page perso) . Évalué à 1. Dernière modification le 14/06/17 à 12:41.

        Mais ce que j'arrive pas comprendre c'est pourquoi postfix ne traite pas le fichier header_checks (alors qu'en testant avec
        postman c'est pile poil ce dont j'ai besoin).

        postmap ne fait que tester une map, il ne permet pas de determiner si postfix comprendra son resultat au moment ou cette map sera utilisée.

        Il y a quelques warnings sur (smtp_)header_checks et REDIRECT qui parlent de l'impossibilité d'utiliser REDIRECT lors des checks smtp:

        This feature is not supported with smtp header/body checks.
        

        mais dans le même temps de nombreux exemples existent de REDIRECT basé sur des sujets, from,…

        J'avais vu le lien que tu as mis, mais ca me semble être plutôt pour marcher dans l'autre sens, en réception.

        c'est possible dans l'exemple, mais pour postfix la reception ou l'emission c'est peut ou prou la même chose à ce niveau.

        Je suis sidéré de ne rien trouver sur le net, ça m'avait semblé plutôt trivial comme besoin au départ …

        Hum trivial faut pas exagerer non plus ;)
        Et il y a max d'exemple sur le net d'ailleurs de header_checks+REDIRECT

        D'ailleurs, n'aurait tu pas un "receive_override_options=no_header_body_checks" qui trainerait quelque part dans ta configuration (main/master) ? Il est dangereux de ne fournir qu'un extrait de config, surtout avec postfix

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.