Sendmail

無法更改 sendmail 中的發件人地址/域

  • March 20, 2017

我有一個帶有 sendmail 的伺服器,我需要通過 PHP 發送電子郵件。我在同一個子網上有一個內部 SMTP 伺服器,所以我用FEATURE(nullclient’ 配置了 sendmail,mail.server.local')dnl其中 mail.server.local 是用內部 IP 解決的/etc/hosts

我無法更改from地址和域。總是如此root@nameoftheserver.localhost.localdomain.

Mar 20 16:18:48 nameoftheserver sm-mta[16402]: v2KFImVi016402: from=<www-data@nameoftheserver.localdomain.local>, size=406, class=0, nrcpts=1, msgid=<201703201518.v2KFImVD016401@nameoftheserver.localdomain.local>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]  

的輸出 /etc/mail/sendmail.mc

     (short domain name) $w = nameoftheserver  
 (canonical domain name) $j = nameoftheserver.localdomain.local  
        (subdomain name) $m = localdomain.local  
             (node name) $k = nameoftheserver

我怎樣才能改變這個值?

因此,您正在嘗試使用 Sendmail更改信封發件人(因為 PHP 的mail()函式已經處理了“發件人:”地址)。這可以通過建構一個通用的穩定數據庫來將輸入的發件人地址映射到所需的地址來實現。

  1. 創建一個/etc/mail/genericstable包含映射的文本文件,
www-data       desired.site.address@example.com
root           root@example.com

其中第一個值是原始使用者名,第二個值是所需的地址。或者,如果這不適用於您的節點伺服器,原始發件人地址也可以採用格式

www-data@nameoftheserver.localdomain.local  desired.site.address@example.com
  1. 創建另一個/etc/mail/generics-domains包含域的文件,用換行符分隔。(請注意,該文件必須包含您的伺服器的規範域名。)
  2. 將相應的語句添加到/etc/mail/sendmail.mc
FEATURE(`genericstable',`hash -o /etc/mail/genericstable.db')dnl
GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl
  1. 重新配置 Sendmail 後執行正常程序,例如
cd /etc/mail
/usr/bin/make
/usr/bin/newaliases
systemctl restart sendmail.service

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