
He configurado postfix para ejecutar un script cuando se recibe un correo electrónico. El script se activa cada vez que se recibe un correo electrónico en postfix. Sin embargo, el problema es que se activa en todas las cuentas de correo electrónico en lugar de solo en una cuenta que agregué en el archivo de acceso de postfix. Aquí está mi configuración: maestro.cf
myhook unix - n n - - pipe flags=F user=www-data argv=/var/www/public_html/production/hook/hook.php ${sender} ${size} ${recipient}
smtp inet n - - - - smtpd -o content_filter=myhook:dummy
Y aquí está miprincipal.cfarchivo:
smtpd_recipient_restrictions =check_recipient_access hash:/etc/postfix/access, permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
Aquí está el contenido de mi archivo de acceso:
robot@domain FILTER myhook:dummy
Después de realizar los cambios anteriores ejecuté:
postmap access
postfix reload
Aún así, todos los correos electrónicos se enrutan a ese script en lugar de solo aquellos que se envían a robot@dominio.
¿Me he perdido algo? He seguido este tutorial para configuraciones:
https://thecodingmachine.io/triggering-a-php-script-when-your-postfix-server-receive-a-mail
Respuesta1
ACTUALIZACIÓN: Descubrí que hay dos enfoques para esto.
Enfoque 1
Crearmapas_transporte:
/^robot@domain/ myhook:dummy /.*/ :
Esto obliga a que cualquier correo destinado a ir a robot@dominio vaya directamente al gancho. Todo lo demás se procesa normalmente.
Modificarprincipal.cfpara agregar:
transport_maps = regexp:/etc/postfix/transport_maps
No olvides correr postmap /etc/postfix/transport_maps
ypostfix reload
Enfoque 2
Limitación: el correo que se entregue a robot@dominio a través del transporte local no se filtrará
Conseguí que esto funcionara usando unacceso_destinatarioarchivo así (tenga en cuenta que estoy usando la sintaxis regexp):
/^robot@domain$/ FILTER myhook:dummy /.*/ OK
Esto forzará que los correos electrónicos dirigidos a robot@dominio pasen por el filtro y permitirá que se entreguen todos los demás correos electrónicos.
Enprincipal.cf:
check_recipient_access = regexp:/etc/postfix/recipient_access
Y finalmente enmaestro.cf:
smtp inet n - y - - smtpd -o smtpd_recipient_restrictions=$check_recipient_access
Hacernoespecifique -o content_filter=webhook:dummy
porque eso cambia la ruta de todos los mensajes.