Linux

如何為發件人地址配置真實域名

  • January 10, 2018

我嘗試使用 php 函式發送一封電子郵件,mail()但它以某種方式失敗,抱怨需要一個真實的域名。在郵件日誌中觀察到以下內容:

sendmail 4984 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 … 發件人地址需要真實域名
sendmail 4984 r25984: to=external@server.com, ctladdr=apache (48/48), delay=00:00:01, xdelay=00: 00:00,郵件=中繼,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。我還需要做什麼才能讓郵件送達?

我想我剛剛解決了它。我在*/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會認為它正在使用一個真實的域來發送電子郵件。

您必須在腳本中配置電子郵件的標頭以具有From: sender@domain.com.

引用自:https://serverfault.com/questions/484777