Upgrade to Pro — share decks privately, control downloads, hide ads and more …

I completely understood email

Caa4b3042cee0fed329d6c3f46a5090e?s=47 waneal
February 28, 2021

I completely understood email

Caa4b3042cee0fed329d6c3f46a5090e?s=128

waneal

February 28, 2021
Tweet

Transcript

  1. メール完全に理解した 2021/02/20

  2. 自己紹介 - waneal - @noobs_waneal - インフラエンジニアやっております - AWS/GCPで動くシステムのお世話 -

    Go、Python、コンテナ技術に興味あります - 趣味 - TVゲーム - ApexとかValheimとかとか - バスケットボール - サンアントニオスパーズが好きです - 山登り・キャンプ - 最近できてないですが。。
  3. アジェンダ - メールが届くしくみ - メールプロトコルのしくみ - メールの中身

  4. メールってどういう仕組で届く?

  5. メールが届くまでのイメージ Aさん メールクライアント SMTPサーバ SMTPサーバ Bさん メールクライアント Bさんへ 届けろ OK釈迦地蔵

  6. メールが届くまでのイメージ SMTPサーバ SMTPサーバ SMTP Bさんへ 届けろ 受け取った Aさん メールクライアント Bさん

    メールクライアント
  7. メールが届くまでのイメージ SMTPサーバ SMTPサーバ 私宛のメー ルをよこせ POP3/IMAP OK 釈迦地蔵 Aさん メールクライアント

    Bさん メールクライアント
  8. メールプロトコルはどういう仕組?

  9. POP3、IMAP - POP Version 3 - POP = Post Office

    Protocol - メールサーバに届いているメールを自分のコンピュータに取り込む - 一度取り込まれたメールはメールサーバから削除される(設定にもよるけど) - IMAP - Internet Message Access Protocol - メールサーバのメールをそのまま読み込み、管理する 今回は範囲外
  10. SMTP - Simple Mail Transfer Protocol - メール転送プロトコル - クライアント

    - サーバモデル - ステートフル https://datatracker.ietf.org/doc/rfc5321/?include_text=1
  11. SMTPの流れ https://www.afternerd.com/blog/smtp/

  12. SMTPコマンド - EHLO - セッションの開始、クライアントが利用できる拡張機能の要求 - MAIL - MAIL FROM:<reverse-path>

    [SP <mail-parameters> ] <CRLF> - reverse-pathはエラー報告の通知に利用するパス - Mailer Daemonの送信先 - RCPT - RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF> - 宛先メールアドレスを指定 - 何度でも繰り返し可能。複数の宛先を指定できる - DATA - DATA <CRLF> - メールデータの送信
  13. メールってどういう中身になってる?

  14. メールオブジェクト - メールオブジェクトはエンベロープとコンテンツで構成される - エンベロープ - 送信元アドレス - 1つ以上の転送先アドレス -

    オプション - コンテンツ - ヘッダーセクション - ボディ
  15. The Origination Date Field - orig-date - 作成者がメッセージを作成完了し、メール転送準備が整ったとき。

  16. Originator Fields - from - 送信元 - sender - Fromに複数のメールボックス情報が含まれている場合、

    Senderに単一のメールボックス情報が含 まれる - 作成者と送信者が異なる場合、 Senderに送信者が入る - reply-to - 返信時に送信すべき宛先。なければ Fromに対して送信される
  17. Destination Address Field - to - 送信先 - cc -

    送信先 - carbon copyの略 - bcc - 送信先 - blind carbon copyの略 - to, ccのメールアドレスに送るときは削除され、 bccのアドレスに送信するときはそのまま残る - bccアドレスの扱い方は実装によって異なる
  18. Identification Fields - message-id - 特定のバージョンの特定のメッセージを特定できる一意な識別子。一意であることは生成するホス トで保証する - 生成方法はいくつかあるが以下を推奨 -

    "絶対日時とその他にユニークな何かの組み合わせ @ドメイン名、もしくはIPアドレス" - in-reply-to - 全てのReplyメッセージに必要。親メッセージに message-idが含まれる - 新しいメッセージの場合、 in-reply-toフィールドが存在しない - references - in-reply-toに保存されているmessage-idの蓄積 - スレッド機能はこれを参考にしていると思われる
  19. Trace Fields - trace - 1つ以上のreturn(Return-Path) - SMTPで送信元アドレスとして指定されたもの - SMTPの世界が終わると、エンベロープのデータは消えるため

  20. Informational Fields、Resent Fields、Optional Fields comming soon...

  21. まだわかってないところ - SMTPの拡張プロトコル - MIME - 実際にSMTPプロトコルを使ってメールを送る

  22. 参考資料 - https://tex2e.github.io/rfc-translater/html/rfc5322.html - https://tex2e.github.io/rfc-translater/html/rfc5321.html - https://www.geekpage.jp/technology/ip-base/mail-2.php - https://www.youtube.com/watch?v=RdNErie6dKU -