送信者アドレスの実際のドメイン名を構成する方法


10

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、mailer = relay、pri = 30273、relay = [127.0.0.1] [127.0.0.1]、dsn = 5.6.0、stat =データ形式エラー
sendmail 4984 r25984:r25984: DSN:データ形式エラー

cronは、logrotateに問題がある場合はいつでも、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メール関数のアドレスからのヘッダーはすでに設定されています。また、SELinux httpd_can_sendmailが有効になっていることを確認しました。メールを配信するには、他に何が必要ですか?


を編集しsendmail.mc、行localhost.localdomainを変更localhostして意味のあるものに変更し、mcファイルをコンパイルしてsendmail.cf
fboaventura 2013年

@fboaventura、いや、私は2つの行のdnl前を削除してコメントを外しました。
質問のオーバーフロー2013年

起動している場所に、phpスクリプトの関連部分を追加できますmail()か?また、これsendmail.mcは適切な構成ファイルではありません。このファイルは、をsendmail.cf使用してコンパイルする必要がありますm4
fboaventura 2013年

@fboaventura、ありがとうございます。コンパイル要件に関しては、今すぐ機能させることができます。以下の私の答えを参照してください。ご協力いただきありがとうございます:)
質問オーバーフロー2013年

回答:


10

私はそれを解決したと思います。私は/ 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が実際のドメインを使用して電子メールを送信していると見なすようにすることです。


3
あなたは自分の答えを間違いなく受け入れることができます。それが解決策でした...補足として、それは通常/etc/hosts( "s"付き)ですが、それ以外は:良い答えです!
Levite、2015年


1

あなたのsendmail.mc追加で:

LOCAL_CONFIG
Djmyserver.com

sendmail.cf再コンパイルして、sendmailを再起動してください。


1

私の場合、AWSインスタンスのUbuntu 16.04では、次のものを追加する必要がありました/etc/mail/sendmail.mc

define(`confDOMAIN_NAME', `mydomainname.com')dnl

MAILER_DEFINITIONSファイルの終わりに向かう行の前の行で、同じ行をの終わりに追加します/etc/mail/submit.mc。次にsudo su、ルート権限を入力し、次のようにコンパイルして構成します。

m4 sendmail.mc > sendmail.cf
m4 submit.mc > submit.cf

...そしてexitsudo。最後に、sudo service sendmail restartsendmailを再起動すると、ドメイン名から送信されたようにメールが表示されていました。他のFEATUREコマンドやMASQUERADEコマンドは必要なく、/etc/hostsファイルのエントリも必要ありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.