メール関連のRFC
- 2018年11月2日
- by 佐藤 航
- Category: 技術ネタ
サポートエンジニアの佐藤(@awwa500)です。
メールには長い歴史があるため、関連するインターネット標準(RFC)も数多く存在します。そこで今回は、メール関連で特に重要なRFC※をご紹介します。普段、メールの運用をしていてもRFCを読む機会はほとんどないと思いますが、挙動に疑問が生じた場合の拠り所となる情報ですので、主なRFCとその概要を把握しておくとトラブルシューティングなどの役に立つことがあるでしょう。
※今回はメール送信関連の基本的な内容に限定しています。記事では紹介していませんが、他にPOP3やIMAP4などメールボックスに保存されたメールへのアクセス方法を定めたものや、さまざまな認証方式、STARTTLSやS/MIMEなどの暗号化関連のドキュメントがあります。
SMTPとメッセージ形式
メールの世界で一番基本となる標準仕様はRFC 5321とRFC 5322の2つです。
- RFC 5321:Simple Mail Transfer Protocol(SMTP)
メールサーバ間におけるメッセージの転送方式を定めた標準仕様です。SMTPサーバが受け付けるSMTPコマンドや、SMTPサーバが返すステータスコード、メッセージが経由したホストのトレース情報の記録方法などが定められています。 - RFC 5322:Internet Message Format
メールサーバ間でやり取りされるメッセージ形式を定めた標準仕様です。メールアドレスの形式や、おなじみのToやCcなどのヘッダが定義されています。このRFCではメッセージで使える文字列はASCII文字(いわゆる7bit文字)のみと定められており、そのままでは日本語が扱えません。そこで後述するMIMEによってさまざまな拡張が行われています。
MIME(Multipurpose Internet Mail Extensions)
MIMEはASCII文字のみのシンプルなテキストメールしか扱えないメッセージ形式を拡張するための標準仕様です。MIMEにより、本文を複数の領域に分割して、HTMLや添付ファイルなどさまざまなコンテンツを扱えるようになりました。さらに、base64やquoted-printableなど、非ASCII文字(やバイナリデータ)とASCII文字の相互変換方式も定められました。関連するRFCはPart 1~5まで複数のドキュメントに分割されていますが、そのうちメッセージ形式に直接関係するものは次のとおりです。
- RFC 2045:MIME Part One: Format of Internet Message Bodies
- RFC 2046:MIME Part Two: Media Types
- RFC 2047:MIME Part Three: Message Header Extensions for Non-ASCII Text
ISO-2022-JP
ISO-2022-JP(旧称、JUNETコード)は、MIMEにおける非ASCII文字を扱う方法とは別に、7bit文字の範囲で日本語メールを送信することを目的として考えられたもので、「Informational」として公開されています。
- RFC 1468:Japanese Character Encoding for Internet Messages
送信ドメイン認証
送信ドメイン認証にはいくつかの種類がありますが、最近ではSPF、DKIM、DMARCに集約されつつあります。
- RFC 7208:SPF
メールの送信元IPアドレスが、あらかじめ宣言されたホストとなっていることをチェックするための仕組みです。 - RFC 6376:DKIM
メールに電子署名を付与して、送信者が公開する公開鍵でその電子署名をチェックすることにより改ざん検知を行うための仕組みです。 - RFC 7489:DMARC
SPFとDKIMの検証に失敗したメールの扱いを定めるための仕組みです。
迷惑メール対策
迷惑メールを送信しない、もしくは迷惑メールの被害を受けないためにメールサーバ側でできる対策のベストプラクティスをまとめたものです。メールを大量送信する際は迷惑メール送信者に間違われるような送信挙動を避ける必要がありますが、そんな時はこのベストプラクティスが参考になるでしょう。
- RFC 2505:Anti-Spam Recommendations for SMTP MTAs
さいごに
いかがだったでしょうか?一見、とっつきにくいRFCですが、シンプルで明快な文章が多いため意外と読みやすかったりもします。全部読むのはとても大変なのでお勧めしませんが、気になる箇所があったらチラッと目を通してみるのもいいかもしれません。