Procmail和PHP脚本

时间:2014-12-02 11:11:18

标签: php procmail

我正在使用postfix和procmail。但我有procmail和php的问题。 php代码/home/www/cron/mail_visirun.php运行没有任何问题,但如果在日志文件上运行/home/www/cron/mail_selva.php则会出现错误消息:

我的procmail文件:

我的php文件/home/www/cron/mail_selva.php

LOGFILE=/var/log/procmailrc.log
VERBOSE=yes
ATTACHinvoice=`echo /home/dok/dispo/RGein`
ATTACHselva=`echo /home/dok/dispo/Selva`
:0
* ^From:.*visirun
| /usr/bin/php /home/www/cron/mail_visirun.php

:0c
* ^To.*invoice@domain.it
! Rechnung@domain.it

:0
* ^To.*invoice@domain.it
| munpack -q -C $ATTACHinvoice

:0c
* ^From:.*selva
! info@domain.it

:0c
* ^From:.*selva
| munpack -q -C $ATTACHselva

:0
* ^From:.*selva
| /usr/bin/php /home/www/cron/mail_selva.php

:0
* ^To.*selva@domain.it
| /usr/bin/php /home/www/cron/mail_selva.php

:0 w
! hannes@domain.it

php文件/home/www/cron/mail_selva.php

<?php
echo "OK";
?>

我的logile:

procmail: Executing "/usr/bin/php,/home/www/cron/mail_selva.php"
procmail: Error while writing to "/usr/bin/php"
procmail: Assigning "LASTFOLDER=/usr/bin/php /home/www/cron/mail_selva.php"

我无法理解为什么一个脚本运行而另一个脚本出错。

1 个答案:

答案 0 :(得分:1)

错误是您的PHP脚本无法读取其标准输入。 Procmail检测到这一点,并认为交付失败。

如果计划是让脚本对其标准输入做一些有用的事情,那就这样做,错误就会消失。

如果没有,也许可以更详细地解释一下(可能在现在的一个新问题中)你的脚本做什么以及当Procmail将当前消息输入其中时你希望发生什么。


文体评论:

  • 你想摆脱反叛中疯狂无用的echo。将variable=`echo value`更改为variable='value'(如果值不需要引号,则可能没有引号)。
  • 最终食谱上的w标志很奇怪。我不确定你的期望是什么。你的意图是什么?
  • 重复的条件不是错误,但有些问题。我会重构,以便你只需要一个正则表达式来更新,如果你需要的话。
:0
* ^From:.*selva
{
  :0c
  ! info@domain.it

  :0c
  | munpack -q -C $ATTACHselva

  :0
  | /usr/bin/php /home/www/cron/mail_selva.php
}

然后,你仍然坚持使用相同的投放操作^To.*selva@domain.it。也许事情仍然可以重构。