所以昨天 Webmin 删除了我的/etc/passwd
,尽管看起来一切正常,但是在 PHP 脚本中使用时我无法让 sendmail 工作。
使用mail()
将返回 false,使用PHPMailer
将导致“邮件程序无法执行 sendmail”。
我 100% 确定该问题是由于该passwd
文件引起的,我只是想不出如何解决它。
我注意到有几个用户已经腐败,我不得不替换他们。
编辑:我可能应该提一下,如果我尝试发送它发送邮件它本身运行完美。
对于那些说恢复 /etc/passwd 的人,我已经这样做了,但问题仍然存在。
11 月 8 日 09:13:15 jbrunton sendmail[31494]: NOQUEUE: SYSERR(UID48): /etc/mail/submit.cf: 第 432 行: readcf: 选项 RunAsUser: 未知用户 smmsp: 权限被拒绝
11 月 8 日 09:13:15 jbrunton sendmail[31494]: NOQUEUE: SYSERR(UID48): /etc/mail/submit.cf: 第 451 行: readcf: 选项 TrustedUser: 未知用户 smmsp: 权限被拒绝
11 月 8 日 09:13:15 jbrunton sendmail[31494]: NOQUEUE: SYSERR(UID48): 无法写入队列目录 /var/spool/clientmqueue/ (RunAsGid=0, required=51): 权限被拒绝
答案1
您能从备份中恢复旧的 /etc/passwd 文件吗?如果可以,我会这样做并进行比较。运行您的 PHP 脚本的用户可能不再存在,并且操作系统(甚至 sendmail)正在尝试查找该用户以检查它是否可以运行 Sendmail。
答案2
在 passwd 文件中将 smmsp 的 UID 从 48 更改为 51,它就可以起作用了。