我对邮件递送一无所知。
但我需要将所有传入的电子邮件(*@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 实现是否可行。