我正试图弄清楚如何使用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
任何指针?我是否朝着正确的方向前进?
答案 0 :(得分:1)
您没有使用PHP,您正在向PHP脚本输出的地址发送电子邮件。您可能希望将感叹号(!
)更改为管道(|
),以便配方执行您所描述的操作。
来自Procmail的错误消息表明您正在调用它,或者它缺少setuid位或类似的东西。我不是Fetchmail专家,但是mda
行看起来很可疑 - 你至少不想要两个冲突的-d
标志。也许这就是那里的问题。 .procmailrc
的路径将由Procmail使用-d
选项推断。尝试使用更简单的东西,例如:
mda "/usr/bin/procmail -f %F -d %T"
顺便说一句,作业SHELL=/bin/csh
似乎真的不合时宜。根据我的经验,尝试在Procmail中使用csh
或tcsh
根本不起作用。 (无论如何,请阅读Csh Programming Considered Harmful。)如果你确切知道自己在做什么,请解释为什么你在那里。否则,在你做任何其他事情之前把它取出来。