我已创建系统用户userA
。
在/home/userA/
我放了一个文件.forward
和一个php脚本script.php
在.forward
我把/home/userA/script.php
在script.php
中我放了
#!usr/bin/php -q
<?php
mail('userB@myDomain.com','something','something else');
?>
脚本中的电子邮件是正确的,服务器工作。(我的意思不是发送电子邮件,而是得到一些确认脚本已执行)
当我向userA@myDomain.com
发送邮件时,邮件无法发送,我得到一个mailer-demon错误:
----- The following addresses had permanent fatal errors -----
/home/userA/script.php
(reason: Can't create output)
有什么问题吗?
好了,两件事或者三件事就可以了。
此解决方案适用于sendmail。
:
chmod 777 /home/userA/script.php
second:将/etc/smrsh
中的simlink添加到script.php
文件
ln -s /home/userA/script.php script.php
第三:添加一个总是在/etc/smrsh
的simlink到php bin本身!不要问为什么……
ln -s /usr/bin/php php
在/home/userA/
.forward
文件中只写一行,开头是|
,然后是php
,然后是filePath
ex |php /home/userA/script.php
在script.php
文件中,在<?php bla... ?>
之前添加#!/usr/bin/php -q
(我不确定是否有必要,但它可以工作…)
在这个例子中,php位于/usr/bin/php
,你可以执行$ which php
来查找php二进制文件的位置。
在script.php
中,如果你想访问你转发的邮件,你可以这样做
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
在某些版本的sendmail中,你必须自己配置它,使它使用smrsh而不是sh(安全shell vs经典shell)。你必须在sendmail.mc
中添加smrsh。配置sendmail使用smrsh
现在你可以发送电子邮件到userA@myDomain.com
,你的电子邮件将被传递到一个php脚本。太棒了! ?
如果你想调用php脚本并执行它,你需要这样的命令:php/home/userA/script.php它比#!usr/bin/php -q方法(我确信它有效)
另外,我不认为你可以用。forward方法将电子邮件转发给命令。
您可以做的是将邮件接收到userA邮箱中,然后使用守护进程(php或bash脚本)执行检查收件箱中是否有新邮件的脚本。或者,如果你只想转发到另一个电子邮件地址,只需把地址放在。forward中,就可以了。