ばーろぐわにる

SIerからWEB系?インフラエンジニアにジョブチェンジした見習いの備忘録。投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

メールヘッダーのRFCを読んだメモ

なにこれ

RFC5322を読んだメモ

この辺を使って読みました。フィールド定義のところしか読めてないですが

Mouse Dictionary - Chrome Web Store

Google Translate - Chrome Web Store

RFC日本語訳一覧

イントロダクション

  • RFC5322はRFC2822の更新版
  • メールヘッダー(封筒って言われている)の仕様のみを記載している

フィールド定義

  • フィールド名:フィールド値 で書かれる
  • フィールドの順序は保証されていない
  • 必須のフィールドはorigination date(orig-date), originator address(from)のみ。他はオプション扱い

The Origination Date Field

orig-date

  • orig-date = "Date:" date-time CRLF
    • 作成者がメッセージを作成完了し、メール転送準備が整ったとき。
      • メールの送信ボタンを押したときとか。
      • 転送の開始時間などは考慮されてない

Originator Fields

  • from = "From:" mailbox-list CRLF
    • 送信元
  • sender = "Sender:" mailbox CRLF
    • Fromに複数のメールボックス情報が含まれている場合、Senderに単一のメールボックス情報が含まれる
    • 作成者と送信者が異なる場合、Senderに送信者が入る
      • RFCには秘書がメールを送信した場合のケースが書かれているが、具体的にどんな場面で使われるのか想像がつかない
      • Fromが複数=連名で送る場合とからし
  • reply-to = "Reply-To:" address-list CRLF
    • 返信時に送信すべき宛先。なければFromに対して送信される

Destination Address Field

  • to = "To:" address-list CRLF
  • cc = "Cc:" address-list CRLF
    • cc -> carbon copyの略
  • bcc = "Bcc:" [address-list / CFWS] CRLF
    • bcc -> blind carbon copy
    • to, ccのメールアドレスに送るときにはbccは削除される
    • bccのアドレスに送信するときはそのまま残る
      • 実装によってはbccのリストに載っているメールアドレスに対して、個々のメールアドレスのみを記載したbccで送信してくれる
      • bccに1つもアドレスを含めずにTo, Ccへ送信することで、誰かにbccが送信されたことを示す実装がある
      • bccの使い方は実装によって異なる

Identification Fields

  • message-id = "Message-ID:" msg-id CRLF
    • 3.6の図だとオプショナル扱いだが、全てのメッセージに必要(SHOULD)
    • 特定のバージョンの特定のメッセージを特定できる一意な識別子。一意であることは生成するホストで保証する
    • メッセージが変更されてもmessage-idは変更されない
  • in-reply-to = "In-Reply-To:" 1*msg-id CRLF
    • 全てのReplyのメッセージに必要(SHOULD)
    • 親メッセージ(返信元)のmessage-idが含まれる。親メッセージが複数の場合は複数
    • 新しいメッセージの場合、in-reply-toフィールド自体が存在しない
  • references = "References:" 1*msg-id CRLF
    • 親メッセージにrefelencesフィールドが存在する場合
      • 親のreferencesフィールドに親のmessage-idを加える
    • 親メッセージにrefelencesフィールドが存在しないが、in-reply-toフィールドが存在する場合
      • 親in-reply-toフィールドの値をreferencesに格納、その後に親のmessage-idを加える
    • 親メッセージにin-reply-to, references, message-id(これは必須では?)が含まれない場合
      • referencesフィールドは付与しない
        • これだけ見ると最初の返信メッセージにはreferencesフィールドは付与しないように見えるが、Gmailでは最初に返信したメッセージにもreferencesフィールドが付与されている
      • スレッド機能はreferencesフィールドをたどることで実装されている。故に複数の親メッセージを持つreplyに対してreferencesフィールドを生成することは非推奨
  • msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS]
    • グローバルにユニークなidになっていること
    • 生成方法はいくつかあるが以下を推奨
  • id-left = dot-atom-text / obs-id-left
  • id-right = dot-atom-text / no-fold-literal / obs-id-right
  • no-fold-literal = "[" *dtext "]"

Informational Fields

  • 読み飛ばした

Resent Fields

  • 読み飛ばした

Trace Fields

  • 読み飛ばした

単語メモ

  • envelope
    • 封筒, 包むもの
  • semantics
    • セマンティクス。意味論?
  • facilitate
    • 楽にする、容易にする
  • dictate
    • 口述する、意図する
  • consist
    • 構成する、成り立つ
  • for instance
    • 例えば

参考

メール関連のRFC | SendGridブログ