送信するだけのメールサーバーでgmaiの550-5.7.26エラーに悩まされた件

2020年7月15日

テクノロジー

ある日突然、構築してあったwebサービスで、メール送信ができなくなっていることに気がついた、ユゲタです。 メールの送信先をgmailにすると、サーバーエラーで、メールが送信されなくなる事象です。 これまで何度もこのエラーに悩まされてきましたが、DNSのtxtレコードにspf情報を登録すればいいという事で、googleのサイトに書いてあるとおりに登録していたのですが、今回はさらにそれに加えて登録情報が必要だったので、その対応についての備忘録を残しておきます。 同じエラーに悩まされる人の助けになれば幸いです。

本日のIT謎掛け

「gmail」と、かけまして・・・ 「ファミレスのドリンク」と、ときます。 そのココロは・・・ フリーの定番でしょう。 (無料で使えるgmailと、フリードリンク)

エラー事象

これは、自分の構築しているメールサーバーにメール送信すると、普通に送信ができて、gmailドメインのアドレスに送信すると、サーバーでは以下のようなエラーが発生しているという事象です。 Jun 29 12:16:22 [localhost] postfix/pickup[15808]: D3888171B26: uid=993 from=<nginx> Jun 29 12:16:22 [localhost] postfix/cleanup[15823]: D3888171B26: message-id=<20200629031622.D3888171B26@mail.example.com> Jun 29 12:16:22 [localhost] postfix/qmgr[15809]: D3888171B26: from=<nginx@mail.example.com>, size=1364, nrcpt=1 (queue active) Jun 29 12:16:24 [localhost] postfix/smtp[15825]: D3888171B26: to=<hoge@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.204.27]:25, delay=1.2, delays=0.01/0/0.36/0.83, dsn=5.7.26, status=bounced (host gmail-smtp-in.l.google.com[74.125.204.27] said: 550-5.7.26 This message does not have authentication information or fails to 550-5.7.26 pass authentication checks. To best protect our users from spam, the 550-5.7.26 message has been blocked. Please visit 550-5.7.26 https://support.google.com/mail/answer/81126#authentication for more 550 5.7.26 information. c7si22504154pgw.429 - gsmtp (in reply to end of DATA command)) Jun 29 12:16:24 [localhost] postfix/cleanup[15823]: 12A24171B38: message-id=<20200629031624.12A24171B38@mail.example.com> Jun 29 12:16:24 [localhost] postfix/qmgr[15809]: 12A24171B38: from=<>, size=3982, nrcpt=1 (queue active) Jun 29 12:16:24 [localhost] postfix/bounce[15829]: D3888171B26: sender non-delivery notification: 12A24171B38 Jun 29 12:16:24 [localhost] postfix/qmgr[15809]: D3888171B26: removed Jun 29 12:16:24 [localhost] postfix/local[15830]: 12A24171B38: to=<nginx@mail.example.com>, relay=local, delay=0.01, delays=0/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox) mail.example.comが送信側のドメインだと考えてください。 ポイントは、"This message does not have authentication information or fails to 550-5.7.26 pass authentication checks. To best protect our users from spam, the 550-5.7.26 message has been blocked. Please visit 550-5.7.26 https://support.google.com/mail/answer/81126#authentication for more 550 5.7.26 information. c7si22504154pgw.429 - gsmtp (in reply to end of DATA command))"の箇所で、 エラーメッセージが"550-5.7.26"という事を表していて、googleの指定するサイトに言ってみたところ、550-5.7.xという解説はあるけど、.26のマイナーバージョンの明確kな解説はされていませんでした。

DNSのSPF設定

Google解説サイトにかかれているのは、以下の内容でDNSのTXTレコードをセットせよ。との事でした。 TYPE=TXT TTL=3600 VALUE="v=spf1 include:_spf.google.com ~all" とりあえず、なんにもセットしていない状態では、送信すらされなかったのですが、この設定をして、DNSが反映されると、送信はできるようになりました。 しかし、gmailサーバーでは、「スパムフォルダ」に入れられてしまい、迷惑メール扱いになってしまいます。 ちゃんと認証しろつったから、書かれているとおりにしたのに、スパム扱いって、どんなやねん!!!

追加対応

次に必要な対応は、sendmail設定です。 今回は、postfixを使っているので、main.cfの設定で以下の内容で登録することで、スパムフォルダに入ることなく送信できるようになりました。 # メールサーバーのホスト名 myhostname = example.com # ドメイン名 mydomain = example.com # 差出人のメールアドレスに使用されるドメイン名 myorigin = example.com # メール受信を許可するアドレス(ローカルから外部への配送のみを許可) # inet_interfaces = 127.0.0.1 inet_interfaces = localhost # IPv4 のみを有効にする inet_protocols = ipv4 # メールサーバー自身に配送されたとみなすドメインのリスト mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # メールのリレー(転送)を許可するネットワーク(ローカルからのメールのみ転送を許可) mynetworks = 127.0.0.0/8 ちゃんと、ドメイン名を登録してあげないと、不正扱いになるようです。 もちろん、PHP側でも、fromには、同じドメインで送信する必要があるし、mail関数には、-fオプションを付けて上げることで、総仕上げになります。 いや〜、半日かかった・・・、いや、捨てた?、いやいや、勉強になった!!!!

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。