Voulez-vous que procmail exécute un script python personnalisé, chaque fois qu'un nouveau message apparaît
J'ai plutôt une exigence habituelle avec procmail, mais je n'arrive pas à obtenir les résultats d'une certaine manière. J'ai procmailrc un fichier avec le contenu:
:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py
Où mon custom script python(privilege_emails_forward.py) sera d'analyse par l'intermédiaire de l'email en cours de réception et de faire quelques opérations sur le contenu du courrier. Mais je n'arrive pas à obtenir l'obtenir script exécuté lors de la première prise de vue(sans parler de la numérisation à travers le contenu du courrier).
- Est-ce une bonne façon d'invoquer un programme externe(python) dès qu'un nouveau mail arrive?
- Et comment mon programme en python(privilege_emails_forward.py) recevra le mail comme entrée? Je veux dire que sys.argv ou stdin????
source d'informationauteur None-da
Vous devez vous connecter pour publier un commentaire.
Qui est tout simplement parfait, il suffit de mettre
fw
après:0
(:0 fw
). Votre programme en python recevra le mail surstdin
. Vous avez à 'echo' éventuellement transformé mail surstdout
.fw
signifie:f
Envisager la pipe comme un filtre.w
Attendre pour le filtre ou du programme et de vérifier son exitcode (normalement ignoré); si le filtre est infructueuse, le texte n'aura pas été filtré.Mon SPAM checker (bogofilter) fonctionne comme ça. Il ajoute des en-têtes et plus tard procmail-règles de faire quelque chose en fonction de ces en-têtes.
La extrait du journal de indique clairement que votre script est exécuté, même si ce n'est pas l'effet désiré. Je m'attends à procmail pour se connecter à une erreur si l'échec de l'exécution.
De toute façon, assurez-vous que l'utilisateur (uid) que procmail est exécuté avec les autorisations appropriées pour l'exécution de votre script. Fil le script dans procmail uniquement si vous avez réussi les tests avec quelque chose comme ceci (remplacer 'procmail' avec le bon uid):
En fonction de votre configuration de sudo, vous devez exécuter ce en tant que root. Oh, et assurez-vous d'utiliser absolue chemins d'accès de fichier.