0

我正在使用 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";
?>

我的逻辑:

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"

我不明白为什么一个脚本运行而另一个脚本出错。

4

1 回答 1

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相同的交付操作。也许事情仍然可以重构。

于 2014-12-03T05:45:58.000 回答