Sendmail
無法更改 sendmail 中的發件人地址/域
我有一個帶有 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()
函式已經處理了“發件人:”地址)。這可以通過建構一個通用的穩定數據庫來將輸入的發件人地址映射到所需的地址來實現。
- 創建一個
/etc/mail/genericstable
包含映射的文本文件,www-data desired.site.address@example.com root root@example.com
其中第一個值是原始使用者名,第二個值是所需的地址。或者,如果這不適用於您的節點伺服器,原始發件人地址也可以採用格式
www-data@nameoftheserver.localdomain.local desired.site.address@example.com
- 創建另一個
/etc/mail/generics-domains
包含域的文件,用換行符分隔。(請注意,該文件必須包含您的伺服器的規範域名。)- 將相應的語句添加到
/etc/mail/sendmail.mc
:FEATURE(`genericstable',`hash -o /etc/mail/genericstable.db')dnl GENERICS_DOMAIN_FILE(`/etc/mail/generics-domains')dnl
- 重新配置 Sendmail 後執行正常程序,例如
cd /etc/mail /usr/bin/make /usr/bin/newaliases systemctl restart sendmail.service