我遵循了这些说明,然后我从命令行运行它。我从命令行运行测试,如下所示:
echo "Just testing my sendmail gmail relay" \
| mail -s "Sendmail gmail Relay" [email protected]
虽然有延迟,但最终会发送电子邮件......
当我从 php 调用 mail() 时,它会超时或因“504 网关超时”错误而终止。
文章中说“如果在执行上述命令后遇到替换延迟,最可能的原因是,您没有为主机配置 FQDN。检查您的日志是否有警告:”
我在日志中找不到任何东西。我已重新启动服务器,但想不出其他任何方法可以尝试...我相信主机已正确配置:
127.0.1.1 server-name
127.0.0.1 localhost
我现在不确定还能尝试什么……
有什么提示、想法或建议吗?
答案1
和 都不server-name
是localhost
完全限定的;完全限定的主机名看起来像server-name.example.org
或localhost.localdomain
。sendmail
将通过命令显示它正在使用的域名
sendmail -d0.1 < /dev/null
查找系统上的邮件日志(这取决于syslog
守护进程配置)并准确查看哪个sendmail
进程(或多个进程)在抱怨什么也可能会有所帮助,因为我不知道您的 PHP 代码是否sendmail
像命令行示例一样经历(sendmail
-> MSA
-> MTA
)或者它是否直接提交给MTA
via SMTP
。
Sendmail 很大程度上依赖于正确配置的 DNS;你可以尝试通过以下方式解决它
FEATURE(`nocanonify', `canonify_hosts')
define(`confDIRECT_SUBMISSION_MODIFIERS', `C')
在submit.mc
配置中,尽管这可能会破坏一些东西(如果没有日志,我不知道这是否是问题的根源)。您可能还需要设置伪装,以便在将地址发送到 gmail 之前对其进行适当的标准化。
另一个选择是通过类似的方式来发送邮件ssmtp
。