Qual servidor de e-mail você está executando no host PHP? Para vários aplicativos PHP, sou responsável por usar o Exim e, com o Exim I, configurar um roteador de transporte. Isso significa que o Exim aceitará a mensagem e, em seguida, executará um script PHP e passará a mensagem para o script PHP STDIN. O script PHP faz as coisas com base no conteúdo da mensagem.
O roteador / config abaixo aceitará mensagens para [email protected], [email protected] e tckt-{id#}@helpdesk.example.org. Com o Exim, a configuração de transporte e roteador é extremamente flexível, a seguir é apenas uma maneira possível de configurar isso. Eu duvido que o que eu configurei se aplicaria diretamente ao seu projeto, você provavelmente precisaria ler em Exim . Eu também tenho certeza que outros servidores de email também são capazes de fazer a mesma coisa. Eu não estou familiarizado com eles.
### router/050_helpdesk_router
#################################
helpdesk_router:
driver = accept
domains = helpdesk.example.org
caseful_local_part = true
local_parts = lsearch;/etc/exim4/helpdesk
local_part_suffix_optional
local_part_suffix = -*
transport = helpdesk_transport
### transport/20_helpdesk_router
#################################
helpdesk_transport:
driver = pipe
command = /usr/bin/php ${lookup{$local_part}lsearch{/etc/exim4/helpdesk}} $local_part '${if def:local_part_suffix {$local_part_suffix}}'
# return the data from the script on a failure
return_fail_output = true
# temporary error
temp_errors = 10
# set a timeout for 30 seconds
timeout = 30s
current_directory = /home/helpdeskadmin/
home_directory = /home/helpdeskadmin/
user = helpdeskadmin
group = helpdeskadmin
### /etc/exim4/helpdesk
#################################
helpdesk: /srv/www/helpdesk.example.org/www/helpdesk/mail/recv.php
tckt: /srv/www/helpdesk.example.org/www/helpdesk/mail/recv.php
Para dar um ponto de partida na parte de análise de correspondência da pergunta. Eu uso Zend_Mail para analisar a mensagem recebida e enviar e-mail.
Would you have time to also tell me advantages/disadvantages of your method vs. Ben's method?
Com um gancho no MTA, como eu descrevo.
- Não há sondagem de pesquisa. Quando o servidor de envio de e-mails se conecta, seu processo será iniciado imediatamente para aceitar a mensagem. Com uma caixa de correio e pesquisa, você terá que esperar até o próximo ciclo de votação.
- Você pode rejeitar ou responder a mensagens inválidas imediatamente e não arriscar o potencial do seu aplicativo ser uma fonte de back-scatter. Talvez você queira rejeitar a mensagem se o endereço não estiver correto.
- Você disse que tinha muitos projetos. Com um transporte, você não precisa criar muitas caixas de correio e pesquisar cada caixa de correio separadamente. Se você definir seu transporte adequadamente, poderá obter uma configuração de transporte para lidar com tudo.
Normalmente, com o PHP, é feita uma pesquisa de caixa de correio a partir do cron. Do cron você teria que ter muito cuidado para ter certeza de que sua pesquisa faz algum tipo de bloqueio para que você não responda ou processe a mesma mensagem duas vezes.