J’ai un serveur d’e-mail que j’ai un peu envie de bidouiller. Je souhaiterai faire un programme qui reçoive les e-mails en clair, tels que reçus par Postfix, fasse une analyse dessus afin de demander à Postfix de refuser l’e-mail avec un message spécifique (ou de l’accepter si tout va bien).
Je saurais faire le programme par moi-même (et l’adapter selon la méthode et le format de communication de Postfix), mais je ne vois pas comment l’intégrer dans Postfix.
Oui, j’ai déjà vu ça, mais cette méthode ne semble pas permettre le rejet de message, seulement son analyse complète, voire sa modification. Mon but n’est pas de modifier le message, mais de le rejetter s’il ne convient pas. Et, de plus, le rejetter avec un message d’erreur à afficher en retour à l’expéditeur via Postfix (comme le ferait l’analyseur SPF ou le postgrey).
Si je regarde comment se configure postgrey ici, ça se branche sur postfix par un socket déclaré par check_policy_service dans le main.cf
Il faudrait creuser, mais j’imagine que le script à l’autre bout du socket doit répondre vrai ou faux suivant qu’il faut laisser passer le mail ou pas.
Je creuserais de ce coté là.
Effectivement, c’est l’autre moitié (envoyer un message d’erreur en cas de refus), mais postfix n’envoie pas l’e-mail tel qu’il l’a reçu, mais à l’aide de champs définis. Mon but est d’analyser l’e-mail en entier.
En tout cas, c’est le sentiment que cela me donne selon ce qu’il écrit :
This is because what I needed is that mails come to my Python code BEFORE processed using virtual table and they get processed using virtual table AFTER
Ah, je crois que je comprend comment fonctionne ce truc : en fait, il récupère les e-mails renvoyés par le serveur, il les analyse et s’ils doivent être délivrés, les renvoie au postfix. D’où le mot « loop » dans le nom du programme.