qmail 故障 454 oops, unable to write pipe and I can't auth (#4.3.0) 的解决办法

在进行发送邮件验证时出现454 oops, unable to write pipe and I can't auth (#4.3.0)

但有时是没有问题的,可以验证成功。成功的机率大约在50%。

从网络上搜索处理办法:基本上都是每次都不能验证成功的例子,大多数是没有设置对 -u 和 -g 参数。但上述情况是没有解决方案的!

 

通过调试代码发现qmail-smtpd.c:authenticate函数中execvp(*childargs, childargs); 的*childargs为/bin/true

我的启动脚本如下:

${TCPSERVER} -v -H -R -l $HOSTNAME -x /etc/tcp.smtp.cdb -c 2048/
        -u $QMAILDUID -g $QMAILDGID 0 smtp /
        /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true  2>&1 | /var/qmail/bin/splogger smtpd 3 &

发现vchkpw没有执行,没有启动用户验证的作用。

 

解决方法1:

   变更启动脚本:

${TCPSERVER} -v -H -R -l $HOSTNAME -x /etc/tcp.smtp.cdb -c 2048/
        -u $QMAILDUID -g $QMAILDGID 0 smtp /
        /var/qmail/bin/qmail-smtpd $DOMAIN /home/vpopmail/bin/vchkpw /bin/true  2>&1 | /var/qmail/bin/splogger smtpd 3 &

 

解决方法2:

   修改qmail-smtpd.c:main函数“childargs = argv + 2;”变更为“childargs = argv + 1;”

   重新编译qmail-smtpd,并cp到执行目录

你可能感兴趣的:(qmail 故障 454 oops, unable to write pipe and I can't auth (#4.3.0) 的解决办法)