PHP邮件过滤脚本:.QMail文件中未识别的退出代码
-
01-10-2019 - |
题
短篇故事
我使用.QMAIL文件有一个PHP脚本过滤传入邮件。该脚本运行良好并记录所有活动,但据我所知,当我的脚本返回DOT-QMAIL EXIT CODE 99时,不应执行最后一个.QMail行,该代码99应该停止进一步处理.QMail行。
很长的故事:
我正在使用Linux 2.6.18-4-686下的Plesk面板9.3.0版本。
我的PHP CLI版本是5.2.0-8+ETCH16(CLI)(构建:2009年11月24日11:14:47)。
对Spamassassin,Web博士和Zen.spamhaus.org及其结果不满意,我决定创建自己的PHP脚本来过滤所有传入邮件。
(除了某些人可能认为“这个人正在重新发明轮子”的人:我个人和他们的特定需求,因此,经过成千上万的测试,这是最好的选择,因为它避免了黑匣子型号和让我以全面的方式控制该过程,还可以释放服务器资源并打开其他酷功能的门)。
但是,我很难在服务器上安装脚本。
Qmailfilter是我的脚本,您可以在 http://titanpad.com/1ifdj1jvb0
我在 /var/qmail/mailnames/customerdomain.com/username/.qmail
成为:
|/var/my/qmailfilter/qmailfilter
|/usr/bin/deliverquota ./Maildir
当我向该用户帐户发送消息时,QmailFilter PHP脚本完美地执行和日志,返回出口代码(丢弃消息的99,为0来继续前往Next .Qmail线以传递消息)。
事实证明,无论我尝试过的许多退出代码,它都会传达信息。
脚本(请参阅第174行)在没有任何空格之前或之后输出一个文本退出代码。我试过 exit($code)
, print $code
, echo($code)
乃至 file_put_contents("php://stdout", $code)
, ,并且 exit(chr($code))
.
dot-qmail
代码是:
0-成功(转到Next .Qmail线)
99-成功和中止(请勿执行下一行)
100-永久错误(反弹)
111-软错误(稍后重试)
资料来源:大Qmail图片。
其他尝试/实验:
删除了 希邦 线 (
#!/usr/bin/php
)并更改了第一个.qmail
线到|php -q /var/my/qmailfilter/qmailfilter
检查了脚本的最后一行以进行白色
阅读dot-qmail人文件,但没有找到任何结论
加入.qmail线:
|/var/my/qmailfilter/qmailfilter |/usr/bin/viresquota ./maildir
在这种情况下,我收到的消息只有适当的返回代码,而没有任何标头,主题或消息主体。
评论(#)第二
.qmail
行,但停止接收任何类型的消息。编辑
/var/qmail/control/defaultdelivery
添加第一行:| php/var/my/qmailfilter/qmailfilter |/usr/bin/virssquota ./maildir
并更名为用户 .qmail
归档到 _qmail
. 。相同的结果。
我应该通过PHP脚本传递消息并忘记退出代码吗?
如果是这样,是否足以将消息保存到用户MailDir/New?
如果是这样,消息文件名很重要?
任何想法都将不胜感激。非常感谢!
更新:对于那些需要它的人,我在Icebex.com上发布了最终脚本
解决方案
我只快速查看代码,但是看起来您正在使用字符串值。 exit('99')
和 exit(99)
不一样。确保使用整数而不是字符串。
出口('99')将打印99并返回0。
出口(99)将返回99。