web-dev-qa-db-ja.com

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

Php mail()関数を使用してメールを送信しようとしましたが、実際のドメイン名が必要であるという不満があり、どういうわけか失敗しました。メールログで次のことが確認されます。

sendmail 4984 r25984:from = Apache、size = 273、class = 0、nrcpts = 1、msgid = <[email protected]>、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:[email protected]、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:Data format error

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 有効になっています。メールを配信するには、他に何が必要ですか?

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が実際のドメインを使用してメールを送信していると見なすようにすることです。

10

スクリプトで、メールのヘッダーをFrom: [email protected]に設定する必要があります。

2
fboaventura

あなたのsendmail.mc 追加:

LOCAL_CONFIG
Djmyserver.com

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

1
adamo

私の場合、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

...次にexit Sudo。最後に、Sudo service sendmail restartを使用してsendmailを再起動すると、メールはドメイン名から送信されたように見えました。他のFEATUREコマンドやMASQUERADEコマンドは必要なく、/etc/hostsファイルのエントリも必要ありませんでした。

1
Theo d'Or