Quando você diz "um script PHP", você quer dizer um script PHP em um servidor web em outro lugar, ou um script PHP é executado na linha de comando localmente?
Eu enviei o e-mail para um site em outro lugar usando o exim4 e o curl, criando um transporte personalizado da seguinte forma:
send_to_site:
driver = pipe
command = /usr/bin/curl https://example.com/mail.php --data-urlencode "mail@-"
user = nobody
group = nogroup
return_path_add
delivery_date_add
envelope_to_add
Se você estiver usando a opção "split configuration" do Debian, você deve criar um arquivo em /etc/exim4/conf.d/transport/
com este item. O command
aqui passará todo o email (cabeçalhos e corpo) para mail.php
na variável $_REQUEST["mail"]
. Você precisará ter seu script PHP para lidar com os cabeçalhos.
Para acionar o transporte, você precisará ter um router
configurado que corresponda ao email que deseja receber e use o transport
acima para enviá-lo. Com a configuração dividida, os roteadores entram em /etc/exim4/conf.d/router/
. Para capturar ALL o e-mail de um domínio específico, não testei isso, mas acho que está correto:
catchall_mail:
driver = accept
domains = mydomain.com
transport = send_to_site
A Debian numera os arquivos no diretório do roteador para configurar os roteadores de pedidos que foram registrados. O primeiro roteador correspondente será usado para manipular o email. Da minha configuração aqui, você provavelmente deseja numerar o seu em torno de 450 para ir atrás de aliases e antes dos roteadores que lidam com usuários locais como hubusers
e procmail
.
Após adicionar estes arquivos aos diretórios de transporte e roteador, você precisará executar update-exim4.conf
para que o Debian crie o arquivo de configuração que o exim realmente lê.