Procmail和PHP脚本
我正在使用postfix和procmail。但是我对procmail和php有一个问题。 php代码Procmail和PHP脚本,php,procmail,Php,Procmail,我正在使用postfix和procmail。但是我对procmail和php有一个问题。 php代码/home/www/cron/mail_visirun.php运行时没有任何问题,但是如果日志文件上应该运行/home/www/cron/mail_selva.php,则会出现错误消息: 我的邮件文件: 我的php文件/home/www/cron/mail_selva.php: LOGFILE=/var/log/procmailrc.log VERBOSE=yes ATTACHinvoice=`e
/home/www/cron/mail_visirun.php
运行时没有任何问题,但是如果日志文件上应该运行/home/www/cron/mail_selva.php
,则会出现错误消息:
我的邮件文件:
我的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
echo "OK";
?>
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
echo "OK";
?>
我无法理解为什么一个脚本运行而另一个脚本出现错误。错误在于您的PHP脚本无法读取其标准输入。Procmail检测到这一点,并认为传递不成功 如果脚本的计划是使用标准输入来做一些有用的事情,那么就这样做,错误就会消失 如果没有,可以更详细地解释一下(现在可能是在一个新问题中)您的脚本做了什么,以及当Procmail将当前消息导入脚本时您希望发生什么
文体评论:
- 您想摆脱在backticks中疯狂无用地使用
。将echo
更改为variable=`echo value`
(如果值不需要引号,则可能不带引号)variable='value'
- 最终配方上的
标志很奇怪。我不知道你能期望它做什么。你的意图是什么w
- 重复的条件不是错误,而是有点问题。我会进行重构,以便在需要时只更新一个正则表达式
那么您仍然需要使用
^To*selva@domain.it
具有相同的交付操作。也许事情仍然可以重构。那么,脚本是否有所不同?如果是这样,那么这就是为什么一个运行而另一个给出错误。