Php

Sendmail 不會發送到同一個域

  • March 28, 2013

我在我的網路伺服器上使用 sendmail,到目前為止工作正常。但是,當我將電子郵件發送到我從中發送電子郵件的同一域時,它們永遠不會送達。我暫時將我的應用程序中的電子郵件資訊更改為另一個域,此時它發送到我的域郵件帳戶沒有問題。

// does not work
$from = 'noreply@mydomain.com'
$to = 'admin@mydomain.com'
// works fine
$from = 'noreply@someotherdomain.com'
$to = 'admin@mydomain.com'

此外,執行此伺服器的伺服器與設置了郵件帳戶和域的伺服器是單獨的伺服器。(+我在Linux上)

sendmail 使用預設配置。

我已經嘗試使用以下命令進行測試,但是我似乎收到了一堆未經驗證的發件人錯誤。當我使用我的 gmail 帳戶執行此操作時,一切正常。

echo -e "To: test@mydomain.com\nSubject: Test\nTest\n" | sendmail -bm -t -v

編輯

事實證明,它只需要它來自的電子郵件地址存在。有沒有辦法繞過這個?

正如您已經發現的那樣,這是因為發送地址無效。

大多數郵件伺服器在接受電子郵件時會檢查域是否有效,但通常不會嘗試驗證實際地址。(如果您詢問某些郵件伺服器,它們會假裝地址存在,即使它不會阻止自動系統建立有效地址列表)

但是,您自己的郵件伺服器知道 noreply@ 不是有效地址,因此會拒絕該電子郵件。

解決此問題的最簡單方法是將 noreply@ 設置為有效地址,然後丟棄發送給它的電子郵件。在 UNIX/Linux 上,您通常可以將地址指向別名中的條目,該條目將傳遞到 |/dev/null。

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