将所有收到的邮件重定向到脚本

将所有收到的邮件重定向到脚本

我对邮件递送一无所知。

我需要将所有传入的电子邮件(*@mydomain.com)重定向到 php 脚本。

我正在使用 Debian

是否存在一个简单的邮件服务器来做到这一点?(无需 exim、postfix 等)

我只需要重定向所有邮件请求。

如果没有 exim、postfix 等就无法做到这一点,我该怎么做?

谢谢!

答案1

当您说“PHP 脚本”时,您是指其他地方的网络服务器上的 PHP 脚本,还是在本地命令行上运行的 PHP 脚本?

我已经使用 exim4 和 curl 将邮件发送到其他地方的网站,通过创建如下自定义传输:

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

如果您使用 Debian 的“拆分配置”选项,则应创建一个包含/etc/exim4/conf.d/transport/此内容的文件。此处command将整个电子邮件(标题和正文)传递到mail.php变量中$_REQUEST["mail"]。您需要让 PHP 脚本处理标题。

要触发传输,您需要配置一个与router您想要接收的任何电子邮件相匹配并使用上述内容transport发送的配置。使用拆分配置,路由器进入/etc/exim4/conf.d/router/。为了捕获全部特定域的邮件,我还没有测试过,但我认为这是正确的:

catchall_mail:
  driver = accept
  domains = mydomain.com
  transport = send_to_site

Debian 对路由器目录中的文件进行编号,以设置路由器签入的顺序。第一个匹配的路由器将用于处理电子邮件。从我这里的配置来看,您可能希望将您的路由器编号为 450 左右,放在别名之后,处理本地用户(如hubusers和 )的路由器之前procmail

将这些文件添加到传输和路由器目录后,您将需要运行update-exim4.conf以让 Debian 创建 exim 实际读取的配置文件。

答案2

您需要设置 POP3 或(最好)IMAP 服务器。然后像平常一样在那里创建您的电子邮箱。使用适当的 PHP 函数模拟邮件客户端并定期轮询电子邮箱中是否有新邮件。

答案3

我会使用 postfix 托管 @yourdomain catchall 帐户,然后让脚本使用 catchall 帐户邮箱作为脚本的基础。另一个选项是执行类似于这家伙确实如此,但前提是你希望通过管道接收邮件而不是从目录中读取邮件。

答案4

我知道你可以用 hypermail 做类似的事情,但那是用 perl 编写的。不确定 php 实现是否可行。

相关内容