我试着用php mail()函数发送一封电子邮件,但以某种方式失败了,抱怨说需要一个真正的域名。在邮件日志中可以看到以下内容:
r25984: from=apache,size=273,class=0,nrcpts=1,msgid=201.r25@localhost.localdomain,relay=apache@localhost sendmail 4985 r25985: ruleset=check_mail,arg1=,relay=mydomain.com 127.0.0.1,reject=553 5.5.4发件人address sendmail 4984 r25984: to=external@server.com,ctladdr=apache (48/48),delay=00:00:01,xdelay=00:00:00,mailer=relay,pri=30273,relay=127.0.0.1,dsn=5.6.0,stat=Data format error sendmail 4984 r25984: r25984: DSN:数据格式错误所需的真实域名
每当出现日志旋转问题时,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邮件函数中的标头地址。我还确保启用了SELinux httpd_can_sendmail。我还需要做些什么才能把邮件送走?
发布于 2013-03-05 13:07:21
我想我刚刚解决了这个问题。我在/etc/host中有以下内容:
127.0.0.1 www.mydomain.com test.mydomain.com
127.0.0.1 cdn.mycdn.com
127.0.0.1 localhost.localdomain localhost myserver.com我需要的是将myserver.com放在localhost.localdomain行的前面,这样sendmail就会认为它正在使用一个真正的域发送电子邮件。
发布于 2018-01-10 09:11:20
在我的例子中,在AWS实例的Ubuntu16.04上,需要添加到/etc/mail/sendmail.mc中:
define(`confDOMAIN_NAME', `mydomainname.com')dnl在指向文件末尾的MAILER_DEFINITIONS行之前的一行,并将同一行添加到/etc/mail/submit.mc的末尾。然后为根权限键入sudo su,并将其编译为以下配置:
m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf...then exit sudo.最后,sudo service sendmail restart重新启动sendmail,并从中显示出来自域名的电子邮件。不需要任何其他特性或伪装命令,也不需要/etc/hosts文件中的条目。
发布于 2013-03-05 11:13:48
您必须在脚本中配置电子邮件的标题,以获得From: sender@domain.com。
https://serverfault.com/questions/484777
复制相似问题