如何为发件人地址配置真实域名


10

我试图使用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 。我还需要做些什么才能发送邮件?


你编辑sendmail.mc,改变了线路localhost.localdomain,并localhost为有意义和MC文件编译成sendmail.cf
fboaventura

@fboaventura,不,我删除了这两行,以取消注释dnl
2013年

您可以在要调用的地方添加PHP脚本的相关部分mail()吗?而且,这sendmail.mc不是正确的配置文件,必须sendmail.cf使用将该文件编译为m4
fboaventura 2013年

@fboaventura,谢谢,我知道关于编译要求,我现在可以使它工作。请参阅下面的答案。感谢您的帮助:)
问题溢出问题2013年

Answers:


10

我想我已经解决了。我在/ etc / hosts中有以下内容:

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会认为它使用的是真实域来发送电子邮件。


3
您可以肯定地接受您自己的答案,那就是解决方案...作为旁注,通常是/etc/hosts(带有“ s”),除此之外:好的答案!
莱维特2015年

2

您必须在脚本中将电子邮件的标头配置为具有From: sender@domain.com


抱歉,我应该提到已经在标题中设置了它。
2013年

1

在您的sendmail.mc添加中:

LOCAL_CONFIG
Djmyserver.com

sendmail.cf重新编译,重新启动sendmail,您应该就可以了


1

就我而言,在AWS实例上的Ubuntu 16.04上,需要添加到/etc/mail/sendmail.mc

define(`confDOMAIN_NAME', `mydomainname.com')dnl

MAILER_DEFINITIONS文件末尾的前一行,并将同一行添加到的末尾/etc/mail/submit.mc。然后输入sudo suroot权限,并使用以下命令编译为config:

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

...然后exitsudo。最后,sudo service sendmail restart重新启动sendmail,然后从域名开始显示电子邮件。不需要其他任何FEATURE或MASQUERADE命令,也不需要/etc/hosts文件中的条目。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.