我试图使用php mail()
函数发送电子邮件,但由于某种原因它失败了,抱怨要求提供真实域名。在邮件日志中观察到以下内容:
sendmail 4984 r25984:发件人= apache,大小= 273,类= 0,nrcpts = 1,msgid = <201.r25@localhost.localdomain>,中继= apache @ localhost
sendmail 4985 r25985:规则集= check_mail,arg1 =,relay = mydomain.com [127.0.0.1],拒绝= 553 5.5.4 ...发件人地址
sendmail 4984 r25984 所需的真实域名:to = external @ server.com,ctladdr = apache(48/48),delay = 00: 00:01,xdelay = 00:00:00,mailer = relay,pri = 30273,中继= [127.0.0.1] [127.0.0.1],dsn = 5.6.0,stat =数据格式错误
sendmail 4984 r25984:r25984: DSN:数据格式错误
只要logrotate存在问题,cron就能将电子邮件发送到external@server.com。我不确定为什么PHP无法做到这一点。我尝试使用以下命令对`sendmail.mc中的默认配置进行更改:
MASQUERADE_AS(`mydomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN(localhost)dnl
MASQUERADE_DOMAIN(localhost.localdomain)dnl
MASQUERADE_DOMAIN(mycom)dnl
但是,它似乎没有任何作用。php邮件功能中来自地址的标头已设置。我还确保httpd_can_sendmail
已启用SELinux 。我还需要做些什么才能发送邮件?
dnl
。
mail()
吗?而且,这sendmail.mc
不是正确的配置文件,必须sendmail.cf
使用将该文件编译为m4
。
sendmail.mc
,改变了线路localhost.localdomain
,并localhost
为有意义和MC文件编译成sendmail.cf
?