usar script interprete ejemplo ejecutar ejecutable desde crear consola compilar como comandos python email procmail

script - interprete de python



Quiere que procmail ejecute un script de python personalizado, cada vez que aparece un nuevo correo (2)

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

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

Donde mi script de python personalizado (privilege_emails_forward.py) escaneará a través del correo electrónico actualmente recibido y realizará algunas operaciones en el contenido del correo. Pero no puedo hacer que el script se ejecute en el primer disparo (y mucho menos escanear el contenido del correo).

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

Eso está bien, solo ponga fw después de :0 ( :0 fw ). Su programa python recibirá el correo en stdin . Tienes que ''repetir'' el correo posiblemente transformado en stdout .

fw significa:

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

Mi corrector SPAM (Bogofilter) simplemente funciona así. Agrega encabezados y las reglas posteriores 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. Esperaría que procmail registrara un error si la ejecución fallara.

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 la secuencia de comandos a Procmail solo si tuvo éxito al 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 su configuración de sudo, tendría que ejecutar esto como root. Ah, y asegúrese de utilizar rutas de archivos absolutas.