En envoyant une copie conforme à l'utilisateur de archive@domain.tld, nous faisons pas vous voulez que des personnes reçoivent cette liste Bcc, en dehors de l'"utilisateur" archive@domain.tld.
Objectif
- Nous voulons archiver tous les mails passant par postfix, envoyés et reçus. La configuration utilise :
- postfix,
- Dovecot authentification avec les utilisateurs Pam (tirés de Ldap),
- et la livraison aux boîtes aux lettres via LMTP de Dovecot .
-
Nous voulons inclure les destinataires Bcc dans l'archive des messages.
-
Nous faisons pas vous voulez que des personnes reçoivent cette liste Bcc, en dehors de l'"utilisateur" archive@domain.tld.
Procès
-
Utilisation de always_bcc = archive@domain.tld fonctionne. Mais les destinataires Bcc (qui, selon les droits, sont dans l'enveloppe comme RCPT TO et non dans un en-tête) sont perdus.
-
En utilisant : (selon Quelles sont les options disponibles pour archiver le courrier électronique Postfix et préserver les informations BCC dans l'en-tête ? )
main.cf smtpd_recipient_restrictions = check_recipient_access pcre:/etc/postfix/prepend.pcre
alors que l'expression pcre est :
prepend.pcre
/(.+)/ PREPEND X-Envelope-To: $1
qui fonctionne comme un charme : mon message stocké a les en-têtes To: ; Cc ; X-Envelope-To. Si un jour on a besoin de creuser, on peut savoir qui a reçu le message même en Cci. (NB : le X-Envelope-To inclut les personnes To et Cc, ainsi que les destinataires des domaines externes).
-
Pour éliminer le X-Envelope-To : Pour l'envoi :
smtp_header_checks = pcre:/etc/postfix/smtp_header_checks.pcre
Avec le contenu :
smtp_header_checks.pcre
/^X-Envelope-To:/ IGNORE
Tout va bien jusque là.
Problème
Pour éliminer le X-Envelope-To des emails qui ne quittent pas le serveur. Je l'ai fait :
lmtp_header_checks = pcre:/etc/postfix/lmtp_header_checks.pcre
lmtp_header_checks.pcre
/^X-Envelope-To:/ IGNORE
Mais ce n'est pas sélectif, même archive@domain.tld perd l'en-tête qui a été "sauvegardé" dans la liste Bcc.
Je n'arrive pas à trouver un moyen d'effectuer ce contrôle sélectif de l'en-tête car il n'évalue que la ligne elle-même et ne peut pas utiliser le destinataire pour créer une condition (même en utilisant le "if" du pcre). ( http://www.postfix.org/pcre_table.5.html )
Y a-t-il une variable qui puisse être utilisée ? J'ai pensé à : inclure "archive@domain.tld" dans le préambule de l'en-tête X-Envelope-To, dans le fichier lmtp_header_checks.pcre, inclure quelque chose comme : archive@domain.tld n'est pas égal à $LMTP_DELIVERY_RECIPIENT Delivered-To ou X-Delivered-To restent un en-tête séparé que le pcre ne peut pas évaluer comme une variable.
Sinon, y a-t-il un moyen de faire en sorte que lmtp déclenche un milter ? Et un simple filtre lmtp_milter que je peux utiliser pour cela ?
J'ai cherché pendant des jours dans tous les documents possibles, Merci d'avance