我注意到设置系统主机名的“首选”方法在 Red Hat/CentOS 和 Debian/Ubuntu 系统之间有着根本的不同。
CentOS 文档和RHEL 部署指南说主机名应该是 FQDN:
HOSTNAME=<value>
, 哪里<value>
应该是完全限定域名 (FQDN),例如hostname.example.com
,但可以是任何必要的主机名。
在RHEL安装指南稍微有些含糊:
安装程序会提示您为此计算机提供主机名,可以是格式为hostname.domainname的 完全限定域名(FQDN),也可以是格式为hostname 的短主机名。
Debian 参考说主机名不应该使用 FQDN:
3.5.5. 主机名
内核维护系统主机名。运行级别 S 中的 init 脚本符号链接到“ /etc/init.d/hostname.sh ”,它在启动时(使用hostname命令)将系统主机名设置为存储在“ /etc/hostname ”中的名称。此文件应仅包含系统主机名,而不是完全限定的域名。
我还没有看到 IBM 提出任何关于使用哪个的具体建议,但某些软件似乎有偏好。
我的问题:
我尝试使用 phpmail()
函数发送电子邮件,但不知何故失败,抱怨需要真实域名。在邮件日志中观察到以下内容:
sendmail 4984 r25984:from=apache,size=273,class=0,nrcpts=1,msgid=<201.r25@localhost.localdomain>,relay=apache@localhost
sendmail 4985 r25985:规则集=check_mail,arg1=,relay= mydomain.com [127.0.0.1], reject=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,relay=[127.0.0.1] [127.0.0.1],dsn=5.6.0,stat=数据格式错误
sendmail 4984 r25984:r259 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
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有任何影响。php 邮件功能中的地址标题已经设置好了。我还确保httpd_can_sendmail
启用了 SELinux 。我还需要做什么才能使邮件送达?