最近,我的 Linux 服务器 sendmail 程序停止工作,每次我发送电子邮件时都会出现此错误:
警告:mail()[function.mail]:无法在/usr/sbin/sendmail中执行邮件传送程序/var/www/includes/Swift-4.0.6/lib/classes/Swift/Transport/SimpleMailInvoker.php在线的50
现在,我已经检查了我的 Web 应用程序,肯定没有问题。所以,问题在于执行 sendmail。它以前可以正常工作,所以我不确定为什么它会突然停止,我也不记得做过任何服务器更改。我也尝试过重新安装 sendmail,但仍然出现相同的错误。
我注意到的一件事是 /usr/sbin/ 中没有名为 sendmail 的文件。但是,/usr/sbin/ 中有一个名为 sendmail 的完整文件夹,其中有可执行文件和 sendmail 文件(存在 sendmail.8、sendmail.h 和 sendmail.0 文件)。它们的执行权限也设置得很好。这值得担心吗?
关于如何解决此问题有什么建议吗?
提前致谢。
答案1
您的安装某种程度上存在问题。
在 Unix 上,通常有一个程序位于 /usr/sbin/sendmail$ 中,它充当本地 MTA 的接口。现在这个 MTA 很少是 sendmail,但其他 MTA 有一个兼容的程序安装在这里。
sendmail.h 是 sendmail 源代码的一部分,而 sendmail.0 和 sendmail.8 是手册页,因此看起来你已经在 /usr/sbin 中获得了正确的 sendmail 源代码
您需要清理这个问题,并将适当的 sendmail 程序放入 /usr/sbin/sendmail 以修复 php。由于您没有告诉我们发行版,也没有告诉我们您实际使用的 MTA,所以没有人可以帮助您。
$ = 实际上,/usr/lib/sendmail 和 /usr/bin/sendmail 以及 /usr/sbin/sendmail 中的一个或多个,程序将搜索这些路径,或者将一个或多个硬编码到这些路径中,或者在安装时询问。看起来您的程序正在使用 /usr/sbin/sendmail。无论哪种情况,MTA 的安装都会执行此操作。