Php 将所有新电子邮件传输到数据库

Php 将所有新电子邮件传输到数据库,php,email,Php,Email,我正在为我的linux邮件服务器使用postfix。目标是将任何传入的邮件转储到带有标题和消息信息的数据库中,然后从邮件服务器中删除该电子邮件。有没有办法让postfix在每次收到新邮件时都将邮件发送到php文件,然后删除该邮件?我能看到的唯一其他方法是编写一个脚本来轮询电子邮件服务器,读取每封邮件并将内容传输到数据库,然后从邮件服务器删除邮件。能够让postfix为所有新收到的邮件自动执行php脚本将是一个更好的选择。如果有区别,那么邮件服务器和包含php文件的服务器是相同的。对此问题的任何指

我正在为我的linux邮件服务器使用postfix。目标是将任何传入的邮件转储到带有标题和消息信息的数据库中,然后从邮件服务器中删除该电子邮件。有没有办法让postfix在每次收到新邮件时都将邮件发送到php文件,然后删除该邮件?我能看到的唯一其他方法是编写一个脚本来轮询电子邮件服务器,读取每封邮件并将内容传输到数据库,然后从邮件服务器删除邮件。能够让postfix为所有新收到的邮件自动执行php脚本将是一个更好的选择。如果有区别,那么邮件服务器和包含php文件的服务器是相同的。对此问题的任何指导都将不胜感激。

使用.forward、/etc/alias、hashtable等将邮件转发到脚本

在/etc/alias中,我有

mysite-confirm: |/home/mysite/confirm.sh
在confirm.sh中,我有

#!/bin/sh
basedir=/home/mysite/www
php -d include_path=$basedir/includes -f $basedir/cli/confirm.php
在confirm.php中,奇迹发生了:

$contents = file_get_contents("php://stdin");
do_magic_with_mail($contents);

一切都很简单和僵硬。唯一的缺点是你可以给我的网站发邮件-confirm@any_domain_I_host.com,但您可以使用正确的别名/虚拟地图等来修复此问题。

如何使用邮件()实现“魔法”?似乎没有在php.net上作为函数列出
do\u magic\u with\u mail()
只是您在实现对数据库的插入查询。哦,是的,对不起,我没有拼出来。。。您的邮件在
$contents
中,您认为您可以从那里处理吗?我很感激thusfar的建议,但似乎无法使其正常工作:/I我对邮件服务器不是很在行,但我正在努力。因为脚本是通过cli调用的,所以我无法判断脚本是否正在执行,消息是否被不正确地读取,或者消息是否被正确地写入数据库。我希望有一种方法可以将服务器配置为自动将邮件转储到数据库,但这似乎是痴心妄想。也许您需要执行
chmod 755 confirm.sh
,以便邮件服务器可以执行脚本。然后,尝试
文件内容(“/tmp/maildump”,$contents)并查看发生了什么。此外,检查任何你能得到的日志文件,特别是邮件日志。如果你一点也不知道从哪里开始,只需做
tail-n20/var/log/*/var/log/*/*/*| less
,然后寻找一些有趣的东西。