如何将电子邮件转发到PHP脚本?

时间:2012-05-22 02:18:37

标签: php procmail email-forwarding fetchmail

我正试图弄清楚如何使用fetchmail将电子邮件转发(或管道)到PHP脚本。我从来没有这样做,甚至不确定我是否在正确的轨道上。根据我的阅读,我认为我需要使用MDA来转发邮件。我使用procmail作为我的MDA。

这是我的fetcmailrc文件

set daemon 150
set logfile /local/web/sites/sitename/mail/fetchmail.log
poll blahblah with proto IMAP
user Username there with password userpassword is Username here
ssl
fetchall
no rewrite
mda "/usr/bin/procmail -d Username -f %F -d %T $HOME/.procmailrc";

这是我的procmailrc文件。您可以在底部看到我正在尝试将电子邮件传输到PHP脚本。

SHELL=/bin/csh
DEFAULT=/var/mail/Username/ 
MAILDIR=/var/mail/Username/    

:0
! `/usr/local/bin/php -f /local/web/sites/stack/htdocs/bin/catchmail.php`

我运行fetchmail并且fowarding(管道到PHP)不起作用。我的fetchmail.log说:

procmail:  Insufficient prvileges
procmail:  Unknown user

任何指针?我是否朝着正确的方向前进?

1 个答案:

答案 0 :(得分:1)

您没有使用PHP,您正在向PHP脚本输出的地址发送电子邮件。您可能希望将感叹号(!)更改为管道(|),以便配方执行您所描述的操作。

来自Procmail的错误消息表明您正在调用它,或者它缺少setuid位或类似的东西。我不是Fetchmail专家,但是mda行看起来很可疑 - 你至少不想要两个冲突的-d标志。也许这就是那里的问题。 .procmailrc的路径将由Procmail使用-d选项推断。尝试使用更简单的东西,例如:

mda "/usr/bin/procmail -f %F -d %T"

顺便说一句,作业SHELL=/bin/csh似乎真的不合时宜。根据我的经验,尝试在Procmail中使用cshtcsh根本不起作用。 (无论如何,请阅读Csh Programming Considered Harmful。)如果你确切知道自己在做什么,请解释为什么你在那里。否则,在你做任何其他事情之前把它取出来。