メールヘッダ入門
- 2018年6月29日
- by SendGrid
- Category: 技術ネタ
はじめに
以前、マルチパートメールの記事で、メールメッセージがヘッダとボディから構成されるというお話をしましたが、今回はヘッダ(メールヘッダ)について少し詳しく見ていこうと思います。普段、メールヘッダをじっくりと眺める機会はあまりないと思いますが、メールヘッダからどんな情報が得られるか知っておくと、メール配信のトラブルシューティングに役立つ場合があるはずです。
メールヘッダの確認方法
メールヘッダの確認方法はメーラによって異なります。Gmailをはじめ、いくつかのメーラでの確認方法はこちらのページが参考になるでしょう。
メールヘッダから得られる情報
メールヘッダから得られる主な情報は次のとおりですが、これ以外にもさまざまな情報が得られます。
- トレース情報
- 送信ドメイン認証関連の情報
- メッセージのメタ情報
- 本文の文字コードやエンコード方式
- 日時
- 宛先、送信者情報
- メッセージの識別ID
- 件名
主なメールヘッダ
トレース情報
トレース情報にはメールがリレーされた経路や不達通知の送り先などが含まれます。トレース情報を確認することで、例えば配送遅延の発生箇所や遅延時間などが確認できます。
- Return-Path
Return-Pathヘッダは別名エンベロープFromとも呼ばれ、メッセージが配送される過程で何らかのトラブルにより届けられなかった場合のエラーの通知先として利用されます。このエラー通知は、「不達通知」や「バウンスメール」、「Non-Delivery Receipt(NDR)」、「配信不能レポート」などさまざまな呼び名があります。
一般的に、メールは宛先に届くまでの間に複数のサーバを経由して配信されますが、Return-Pathにエラーを通知することで、どこで配送トラブルが起きても送信者側で検知できる仕組みになっています。 - Received
Receivedヘッダにはメールがリレーされたホストの情報とその時刻が記録されています。メッセージを受けたメールサーバはヘッダの最上部にReceivedヘッダを追記して、自分自身が処理するメッセージ以外は次のサーバにリレーします。この挙動は最終的な宛先に配信されるまで繰り返されます。このため、メールヘッダのReceivedヘッダを下から順に見ていくと、そのメッセージのリレー経路が確認できます。Receivedヘッダの時刻情報を見ると、各ホストでリレーに要した時間が確認できます。
Receivedヘッダは少し見づらいですが、G Suite ToolboxのMessageheaderというツールを使うとリレー経路と各経路の所要時間が見やすく表示されます。
Return-PathやReceivedヘッダの詳細についてはRFC5321(section 4.4)を参照してください。
送信ドメイン認証関連の情報
送信ドメイン認証はメールの信頼性と到達率の向上に影響を与える重要な要素です。送信ドメイン認証が正しく行われているか確認するにはここで紹介するヘッダを確認するとよいでしょう。
- Authentication-Results
Authentication-ResultsヘッダにはSPFやDKIMなどの送信ドメイン認証の結果が記録されます。結果は「認証方式 = 認証結果」のような形式で記録され、例えば次のような情報が読み取れます。- dkim=pass:DKIMの認証成功
- spf=softfail:SPFの認証に失敗している可能性がある
詳しくはRFC7601を参照してください。
- DKIM-Signature
DKIM-SignatureヘッダはDKIMの認証に必要な署名データと公開鍵のパスを特定するための情報が記録されます。DKIM-Signatureヘッダの詳細についてはRFC6376(section 3.5)を参照してください。
メッセージのメタ情報
メールヘッダではこの他に、宛先、送信者、件名、本文の文字コードやエンコード方式などメッセージのメタ情報が確認できます。
- Content-Type
マルチパートメールの記事でも触れましたが、メール本文のMIMEタイプ(テキストメール、マルチパートメールなど)や文字コードを表すヘッダです。 - Content-Transfer-Encoding
base64やquoted-printableなど、MIMEで使用するエンコード方式を表すヘッダです。 - Date
メッセージが作成された日時を表すヘッダです。 - To、Cc、Bcc、From
おなじみの宛先および送信者情報が記録されたヘッダです。これらのうちBccヘッダだけは特殊で、クライアントで指定したBccヘッダはサーバで削除され、同じ内容のメッセージがBccヘッダで指定した宛先に送信されます。 - Message-ID
メッセージを一意に特定するためのヘッダです。 - Subject
こちらもおなじみのいわゆるメールの「件名」を表すヘッダです。
これらのヘッダの詳細については、RFC5322(メッセージフォーマット)やRFC2046(MIMEタイプ)を参照してください。
さいごに
今回ご紹介したもの以外にも、メールヘッダには標準仕様で定められているものや、標準仕様にはないがデファクトスタンダードとして使用されているもの、推奨されていないものなど数多くの種類があります。一般的なヘッダについてはRFC2076にもまとめられているので、興味のある方はご参照ください。