ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

SPFレコードに悩まされて

メールの不達理由に悩まされて

株式会社ROBOT PAYMENT(以下、ロボペイ)CRE課の山下です。
ロボペイのCREについての興味がありましたら、過去の記事をぜひ読んでみてください!↓ tech.robotpayment.co.jp

今回は、「Undelivered Mail」というメールでよく目にする、いわゆる不達となったメールの理由に悩まされたことについて話そうと思います。

メールのサービスの不達について

当社の提供するアプリケーション、『請求管理ロボ』には、請求書をメールで送信する機能が備わっています。このサービスの詳細については、以下のURLからご確認いただけます。 www.robotpayment.co.jp

請求書のメール送信には、『SendGrid』というサービスを利用しています。しかし、請求管理ロボの利用者にとっては、メールはロボペイから送信されていることになります。
したがって、メールが届かない場合の問い合わせはすべてロボペイに寄せられます。

不達になったメールには、一般的に以下のようなエラーメッセージが返却されます。
『550 <××××@×××××>: User unknown』
『User unknown』
などであればわかりやすいですが、メールのエラーについてのノウハウがあるエンジニアは少ないため、問い合わせがある度に検索エンジンでエラーを調べ、回答を提供しています。

SPFレコードのエラー

実際に受けた不達に関する問い合わせの中で、最も時間を要したのはSPFレコードに関するエラーでした。 具体的には、以下のようなエラーが主でした。

『550-5.7.26 The MAIL FROM domain [××××××.××××] has an SPF record with a hard fail』

このエラーは、一般的に、メールの送信元を認証するために使用されるSPF(Sender Policy Framework)レコードに認証情報の不備がある場合に発生します。 ドメイン所有者が許可する送信元メールサーバーを指定することができ、これにより、なりすましメールを防ぎメールの信頼性を高めることができます。

請求管理ロボではSendGridの独自ドメイン利用設定という認証機能を使用しており、利用者様で独自のメールアドレスを送信元アドレスとしたい場合は、認証に必要な設定をご案内しております。 初めは認証の設定に問題があることも疑いましたが、エラーが一部の送信に限定されていることから、認証情報の問題ではないと結論しました。 では一体何が原因なのか、色々調べてみましたがSPFレコードの不備につながるような内容しか確認できませんでした。 我々では、どうにもならないというところでSendGridに問い合わせしようということになりました。 SendGridに問い合わせた結果、以下のリンクが提供されました。
https://support.sendgrid.kke.co.jp/hc/ja/articles/360000373262

このリンクに書かれていることを簡単に説明すると、セキュリティサービスを通じてリレーされたり、転送されたメールの場合、SPF認証に使用されるIPアドレスが転送元の情報で変更されることがあるとのことです。
もちろん転送先でのSPF認証はエラーとなるわけです。

IPアドレスが変更されるのであれば、当社サービスを利用するか関わらず、いかなるメールの送信がエラーになるのではないかという疑問が残りました。であるのであれば受信側で気づかないわけがない。
しかし最終的には、そういった問題も転送元の設定仕様に関わるため、送信者側での対策は難しいという結論に至りました。

  • 転送ドメインを参照するようにエンベロープ送信者を変更する。(MAIL FROMの上書き)
  • 転送元でARCヘッダーの設定を行い転送前の認証結果を転送先がわかるようにする など、メールを受け取る側から見て送信元と認証情報を一致させるか転送時の認証結果をわかるようにする必要があります。

対策としてわかりやすい記事
support.google.com salt.iajapan.org

まとめ

SPF件のように、メール機能の対応には弊社側ではどうにもならないものが多いです。
なので、「送信先や連携先の管理者様に確認をお願いします」と定型文で伝えることも多いです。

ベストなのはユーザーが自らエラーについての解決に向かう行動が取れることです。 こう言った情報がユーザーに届くようにすることで、
ステークホルダーの余分な対応がへり、わかりやすく安心できるようにしていきたいなと思っています。



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp