
Configurei o postfix para executar um script quando o email for recebido. O script é acionado sempre que um email é recebido no postfix. Porém o problema é que ele está sendo acionado em todas as contas de email ao invés de apenas em uma conta que adicionei no arquivo de acesso do postfix. Aqui está minha configuração: mestre.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
E aqui está o meuprincipal.cfarquivo:
smtpd_recipient_restrictions =check_recipient_access hash:/etc/postfix/access, permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
Aqui está o conteúdo do meu arquivo de acesso:
robot@domain FILTER myhook:dummy
Depois de fazer as alterações acima, executei:
postmap access
postfix reload
Ainda assim, todos os e-mails estão sendo roteados para esse script, e não apenas aqueles que são enviados para robot@domain
Perdi algo? Eu segui este tutorial para configurações:
https://thecodingmachine.io/triggering-a-php-script-when-your-postfix-server-receives-a-mail
Responder1
ATUALIZAÇÃO: descobri que existem duas abordagens para isso
Abordagem 1
Criartransporte_mapas:
/^robot@domain/ myhook:dummy /.*/ :
Isso força qualquer e-mail destinado a robot@domain ir direto para o gancho. Qualquer outra coisa é processada normalmente.
Modificarprincipal.cfadicionar:
transport_maps = regexp:/etc/postfix/transport_maps
Não se esqueça de correr postmap /etc/postfix/transport_maps
epostfix reload
Abordagem 2
Limitação: o correio entregue para robot@domain através do transporte local não será filtrado
Eu fiz isso funcionar usando umdestinatário_acessoarquivo assim (observe que estou usando a sintaxe regexp):
/^robot@domain$/ FILTER myhook:dummy /.*/ OK
Isso forçará os e-mails para robot@domain através do filtro e permitirá que todos os outros e-mails sejam entregues.
Emprincipal.cf:
check_recipient_access = regexp:/etc/postfix/recipient_access
E finalmente emmestre.cf:
smtp inet n - y - - smtpd -o smtpd_recipient_restrictions=$check_recipient_access
Fazernãoespecifique -o content_filter=webhook:dummy
porque isso altera o roteamento de todas as mensagens.