3

Web サイトがパスワード リセット メールを送信できるように Postfix をセットアップしようとしているときに、コマンド ラインからメールを送信するときに、

echo "body" | mail -s "subject" test@example.com

メールは問題なく届き、スパムとしてマークされていません。ただし、サイト サーバー内から送信する場合、ヘッダーは localhost から受信したものとして設定されるため、スパムとしてマークされます。

Received: from example.com (localhost [127.0.0.1])
by example.com (Postfix) with ESMTPS id CE1299C435
for <my_email@gmail.com>; Tue,  2 Aug 2016 05:28:41 +0000 (UTC)

注意として、dkim、spf、および dmarc はすべてのリストを合格としてテストするため、問題はありません。

また、上記の echo メソッドを使用して同じ内容の電子メールを送信しようとしましたが、正常に届きました (ただし、上記のように使用し、コンテンツ タイプ ヘッダーを追加しなかったためプレーンテキストでした)。

当初、これは smtp.SendMail を使用して送信されました

err := smtp.SendMail(hostname + ":25", nil, sender, recipients, []byte(msgstr))

これは送信ホストを設定する方法を提供しないため、これを修正しようとして、手動ダイヤルを使用して HELO メッセージを送信し、次に tls を開始することに切り替えました (HELO の前に tls を開始しようとすると、HELO が必要であるというパニックが発生しました)最初の電話)

c, err := smtp.Dial(host + ":25")
if err != nil {
    log.Panic(err)
}

if err = c.Hello(host); err != nil {
  log.Panic(err)
}

if err = c.StartTLS(config.TLS()); err != nil {
  log.Panic(err)
}

これでも電子メールは正常に送信されますが、受信したヘッダーに発信元として localhost が表示される前と同じように、HELO が呼び出しの発信元を特定するのに役立つと信じていたため、何か誤解しているように感じます。

あなたのアドバイスと助けに感謝します。MTA を設定してこのように使用しようとしたのはこれが初めてです。明らかにまだ終わっていない学習曲線が少しありました。

4

1 に答える 1

2

Juergen Gmeiner がコメントで示唆したように、私の問題は構成が不十分な/etc/hostsファイルが原因であり、他のサービスに影響を与えていませんでした。

既存のエントリは次のとおりです。

127.0.0.1 localhost example.com

これを次のように変更します。

127.0.0.1 example.com localhost

ローカルホストを適切に評価する必要がある既存のサービスを壊さずに、問題を解決しました。

リモートサーバーで同じ問題が発生し、リモートのIPとホスト名を使用して同等のものを作成する必要がある場合、このソリューションはローカルでホストされているサーバープロセスで機能しました。すなわち

<remote ip> <hostname>

注: この最後の部分は、ローカルの開発ビルドから実稼働サーバーに呼び出してテストしましたが、100% テストされたソリューションではありません。

ご協力いただきありがとうございます。私のこの間違いが、将来同様の間違いを犯した他の人の助けになることを願っています。

于 2016-08-03T10:55:26.770 に答える