Перенаправить всю входящую электронную почту на скрипт Python

В этом случае вам необходимо явно обрабатывать подстановочные знаки с помощью wildcardфункции (по крайней мере в GNU Make):

%.foo: %.bar
    cp $< $@

foos = $(patsubst %.bar,%.foo,$(wildcard *.bar))

test: $(foos)
    echo $(foos)

$(wildcard *.bar)заменяется на все файлы, оканчивающиеся на .bar, вызов patsubstзаменяет .barна .foo, после чего все цели обрабатываются, как и ожидалось.

2
21.11.2017, 16:07
3 ответа

procmailes considerado problemático por Philip Guenther (y posiblemente sea inútil en este caso, ya que los archivos .forwardo equivalentes pueden enviar los correos directamente a su programa, omitiendo la complejidad innecesaria deprocmail).

Executive summary: delete the procmail port; the code is not safe and should not be used as a basis for any further work.

As people may know, I was the upstream maintainer of procmail back in the late 1990's though 2001.

Por tanto, puede ser aconsejable alguna otra solución; esto depende del Agente de transporte de correo (MTA ). Otra opción sería usar el MTA para entregar a un archivo local o IMAP, luego hacer que su programa analice ese archivo o IMAP. Esto tiene la ventaja de seguir aceptando correo electrónico y guardarlo en algún lugar; ¿Qué sucede cuando su programa tiene errores o falla al ejecutarse? Un problema menor que durante la entrega de correo en vivo...

Salida

Probablemente copie el método Sendmail .forwardo descubra cómo hacerlo correctamente en Eximese. (Aborté porque me estaba tomando mucho tiempo revisar los documentos de Exim. )Hayelspysi desea realizar en -SMTP -escaneo de tiempo de forma MILTER...

Postfijo

https://serverfault.com/questions/258469/how-to-configure-postfix-to-pipe-all-incoming-email-to-a-script#258491

Vaya, eso parece largo y complicado.

Enviar correo

Configure una entrada mailertablepara reenviar todos los correos del dominio (y .domainpara los subdominios, si es necesario )a un usuario local, aquíjdoe

example.com     local:jdoe
.example.com    local:jdoe

y luego configure un archivo .forwardpara que ese usuario ejecute el código necesario

$ cat ~jdoe/.forward
"|/etc/smrsh/process"
$ 

que podría ser tan simple como

$ cat /etc/smrsh/process
#!/bin/sh
cat >> /home/jdoe/allmails
$ 

debido a que los correos electrónicos se introducen en la entrada estándar (, esto podría ser malo si se ejecutan varias instancias de este processa la vez; presumiblemente, su código real maneja tales condiciones de carrera o es idempotente... ¿verdad? ). Este método también puede funcionar para cualquier otro MTA que copie la sintaxis de reenvío de Sendmail,suponiendo que pueda obtener el MTA para redirigir todos los correos a un usuario en particular.

Esto supone que el soporte mailertableestá habilitado, confFORWARD_PATHestá configurado, que Sendmail puede ejecutar el código (consulte smrsh(8)aunque tenga en cuenta que algunos proveedores pueden cambiar el directorio sin actualizar la documentación (en ejecución strings /the/path/to/smrsh | fgrep /puede ayudar ))y que algo como selinux tampoco está rompiendo cosas.

Otra opción para Sendmail es usar un MILTER como MIMEDefang y realizar allí cualquier lógica comercial que sea necesaria. (Varios otros MTA admiten MILTER, o tienen algo similar.)

Daemon del protocolo simple de transferencia de correo (OpenBSD)

De un vistazo asmtpd.conf(5)(actualizado para los cambios de OpenBSD 6.4)

action "mymda" mda "/path/to/your/command" user jdoe
match from any for domain example.com action "mymda"
7
27.01.2020, 21:50

Esta parecía una pregunta bastante común... Encontré esto ya respondido, que es lo que sugeriría. Procmail es un agente de entrega local... lo que creo que significa que algo ya recibió el correo de la red y lo entregó a procmail para la entrega local u otro filtrado. En este caso, postfix sería esa cosa. Habiendo ejecutado postfix en producción, es una herramienta sólida y muy flexible para el manejo de correo personalizado.

https://serverfault.com/questions/258469/how-to-configure-postfix-to-pipe-all-incoming-email-to-a-script#258491

3
27.01.2020, 21:50

Мне нравится почта -в -стеке ящиков -, который использует Postfix и Dovecot. После их установки вы можете сделать следующее, чтобы выполнить скрипт при получении почты на определенные адреса:

  1. создайте свой скрипт (т.е.mail_processor.py)в каталоге /usr/lib/dovecot/sieve-execute/:

    #!/usr/bin/python3
    from sys import stdin
    with open('/var/log/mail_processor.log', 'a') as logfile:
        for line in stdin:
            print(line.rstrip(), file=logfile)
    
    • убедитесь, что ваш сценарий и целевые файлы имеют правильные разрешения:

      $ chmod +rx /usr/lib/dovecot/sieve-execute/mail_processor.py
      $ chmod 0777 /var/log/mail_processor.log
      
  2. включить плагин sieve_extprograms:

    • изменить раздел плагина \etc\dovecot\conf.d\90-sieve.confследующим образом:

      sieve_extensions = +vnd.dovecot.execute
      sieve_plugins = sieve_extprograms
      sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
      
    • перезагрузить голубятню:

      $ service dovecot restart
      
  3. создать сетчатый фильтр (т.е. в Roundcube перейдите кsettings->filters->actions->edit filter set):

    require ["vnd.dovecot.execute"];
    # rule:[mail processing]
    if true
    {
        execute :pipe "mail_processor.py";
    }
    

Теперь вся почта, доставленная в любой почтовый ящик с этим сетчатым фильтром, будет проходить через mail_processor.pyдля принятия мер.

Сито Pigeonhole :Плагин Extprograms для справки

1
11.05.2021, 05:50

Теги

Похожие вопросы