Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
I completely understood email
Search
waneal
February 28, 2021
Technology
0
340
I completely understood email
waneal
February 28, 2021
Tweet
Share
More Decks by waneal
See All by waneal
Migrating Rails Applications from EC2 to ECS
waneal
0
120
Other Decks in Technology
See All in Technology
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
200
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
130
1人1サービス開発しているチームでのClaudeCodeの使い方
noayaoshiro
2
500
子育てで想像してなかった「見えないダメージ」 / Unforeseen "hidden burdens" of raising children.
pauli
2
300
障害対応訓練、その前に
coconala_engineer
0
140
SREには開発組織全体で向き合う
koh_naga
0
390
re:Invent 2025 ~何をする者であり、どこへいくのか~
tetutetu214
0
230
Agent Skillsがハーネスの垣根を超える日
gotalab555
3
1.3k
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
1k
re:Invent2025 3つの Frontier Agents を紹介 / introducing-3-frontier-agents
tomoki10
0
300
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
440
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Odyssey Design
rkendrick25
PRO
0
420
Accessibility Awareness
sabderemane
0
16
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
47
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
1.9k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Transcript
メール完全に理解した 2021/02/20
自己紹介 - waneal - @noobs_waneal - インフラエンジニアやっております - AWS/GCPで動くシステムのお世話 -
Go、Python、コンテナ技術に興味あります - 趣味 - TVゲーム - ApexとかValheimとかとか - バスケットボール - サンアントニオスパーズが好きです - 山登り・キャンプ - 最近できてないですが。。
アジェンダ - メールが届くしくみ - メールプロトコルのしくみ - メールの中身
メールってどういう仕組で届く?
メールが届くまでのイメージ Aさん メールクライアント SMTPサーバ SMTPサーバ Bさん メールクライアント Bさんへ 届けろ OK釈迦地蔵
メールが届くまでのイメージ SMTPサーバ SMTPサーバ SMTP Bさんへ 届けろ 受け取った Aさん メールクライアント Bさん
メールクライアント
メールが届くまでのイメージ SMTPサーバ SMTPサーバ 私宛のメー ルをよこせ POP3/IMAP OK 釈迦地蔵 Aさん メールクライアント
Bさん メールクライアント
メールプロトコルはどういう仕組?
POP3、IMAP - POP Version 3 - POP = Post Office
Protocol - メールサーバに届いているメールを自分のコンピュータに取り込む - 一度取り込まれたメールはメールサーバから削除される(設定にもよるけど) - IMAP - Internet Message Access Protocol - メールサーバのメールをそのまま読み込み、管理する 今回は範囲外
SMTP - Simple Mail Transfer Protocol - メール転送プロトコル - クライアント
- サーバモデル - ステートフル https://datatracker.ietf.org/doc/rfc5321/?include_text=1
SMTPの流れ https://www.afternerd.com/blog/smtp/
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> - メールデータの送信
メールってどういう中身になってる?
メールオブジェクト - メールオブジェクトはエンベロープとコンテンツで構成される - エンベロープ - 送信元アドレス - 1つ以上の転送先アドレス -
オプション - コンテンツ - ヘッダーセクション - ボディ
The Origination Date Field - orig-date - 作成者がメッセージを作成完了し、メール転送準備が整ったとき。
Originator Fields - from - 送信元 - sender - Fromに複数のメールボックス情報が含まれている場合、
Senderに単一のメールボックス情報が含 まれる - 作成者と送信者が異なる場合、 Senderに送信者が入る - reply-to - 返信時に送信すべき宛先。なければ Fromに対して送信される
Destination Address Field - to - 送信先 - cc -
送信先 - carbon copyの略 - bcc - 送信先 - blind carbon copyの略 - to, ccのメールアドレスに送るときは削除され、 bccのアドレスに送信するときはそのまま残る - bccアドレスの扱い方は実装によって異なる
Identification Fields - message-id - 特定のバージョンの特定のメッセージを特定できる一意な識別子。一意であることは生成するホス トで保証する - 生成方法はいくつかあるが以下を推奨 -
"絶対日時とその他にユニークな何かの組み合わせ @ドメイン名、もしくはIPアドレス" - in-reply-to - 全てのReplyメッセージに必要。親メッセージに message-idが含まれる - 新しいメッセージの場合、 in-reply-toフィールドが存在しない - references - in-reply-toに保存されているmessage-idの蓄積 - スレッド機能はこれを参考にしていると思われる
Trace Fields - trace - 1つ以上のreturn(Return-Path) - SMTPで送信元アドレスとして指定されたもの - SMTPの世界が終わると、エンベロープのデータは消えるため
Informational Fields、Resent Fields、Optional Fields comming soon...
まだわかってないところ - SMTPの拡張プロトコル - MIME - 実際にSMTPプロトコルを使ってメールを送る
参考資料 - 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 -