Sendmailを備えたサーバーがあり、PHPからメールを送信する必要があります。同じサブネット上に内部SMTPサーバーがあるため、FEATURE(
nullclient '、mail.server.local')dnl
を使用してsendmailを構成しました。ここで、mail.server.localは/etc/hosts
の内部IPで解決されます
from
アドレスとドメインを変更する方法はありません。常に[email protected].
です
Mar 20 16:18:48 nameoftheserver sm-mta[16402]: v2KFImVi016402: from=<[email protected]>, size=406, class=0, nrcpts=1, msgid=<[email protected]>, 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()
関数は「From:」アドレスをすでに処理しているため)を試みています。これは、genericstableデータベースを構築して、入力送信者アドレスを目的のアドレスにマップすることで実現できます。
マッピングを含むテキストファイル/etc/mail/genericstable
を作成し、
www-data [email protected]
root [email protected]
最初の値は元のユーザー名で、2番目の値は目的のアドレスです。または、これがノードサーバーで機能しない場合は、元の送信者アドレスの形式も可能です。
[email protected] [email protected]
改行で区切られたドメインを含む別のファイル/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