¿Quieres que procmail ejecute un script de Python personalizado, cada vez que aparezca un nuevo correo?

Tengo un requisito bastante habitual con procmail pero no puedo obtener los resultados de alguna manera. Tengo el archivo procmailrc con este contenido:

:0 * ^To.*@myhost | /usr/bin/python /work/scripts/privilege_emails_forward.py 

En donde mi script de Python personalizado (privilege_emails_forward.py) escaneará el correo electrónico recibido actualmente y realizará algunas operaciones en el contenido del correo. Pero no puedo lograr que el script se ejecute en la primera toma (y mucho menos escanear el contenido del correo).

  • ¿Es esta una forma correcta de invocar un progtwig externo (python) tan pronto como llega el nuevo correo?
  • ¿Y cómo recibe mi correo el progtwig como python (privilege_emails_forward.py)? Quiero decir como sys.argv o stdin ????

Eso está bien, simplemente ponga fw después de :0 ( :0 fw ). Su progtwig de Python recibirá el correo en stdin . Tienes que ‘repetir’ el correo posiblemente transformado en la stdout .

fw significa:

  • f Considere la tubería como un filtro.
  • w Espere a que finalice el filtro o progtwig y verifique su código de salida (normalmente se ignora); Si el filtro no tiene éxito, entonces el texto no se habrá filtrado.

Mi SPAM checker (bogofiltro) funciona así. Agrega encabezados y, posteriormente, las reglas de procmail hacen algo dependiendo de estos encabezados.

El extracto del registro indica claramente que su script se ejecuta, incluso si no muestra el efecto deseado. Espero que procmail registre un error si la ejecución falla.

De todos modos, asegúrese de que el usuario (uid) con el que se ejecuta procmail tenga los permisos correctos para ejecutar su script. Conecte el script a procmail solo si logró probar con algo como esto (reemplace ‘procmail’ con el uid correcto):

 # sudo -u procmail / bin / sh -c '/ bin / cat /work/scripts/mail.txt |  / usr / bin / python /work/scripts/privilege_emails_forward.py '

Dependiendo de la configuración de sudo, tendrías que ejecutar esto como root. Ah, y asegúrate de usar rutas de archivos absolutas.