Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
古い技術について—SMTP現代事情つまみ食い—
Search
azumakuniyuki
February 10, 2024
Technology
11k
33
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
古い技術について—SMTP現代事情つまみ食い—
YAPC::Hiroshima 2024
azumakuniyuki
February 10, 2024
More Decks by azumakuniyuki
See All by azumakuniyuki
SMTP RELIABILITY ENGNEERING
azumakuniyuki
1
2.1k
Other Decks in Technology
See All in Technology
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
210
AIをフル活用してオンコール機能のプロトタイプを2日で作った話 / Building an AI-Powered On-Call Prototype in Just Two Days
nari_ex
0
180
トークン最適化のためのユーザーストーリー分析 / User Story Analysis for Token Optimization
oomatomo
0
170
知見・人・API・DB・予算 ─ ナイナイ尽くしだった人事データ整備 with dbt、5年間の学び
ken6377
1
150
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
310
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
400
5分でわかる Amazon Connect_20260608
hwangbyeonghun
0
180
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
0
750
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
180
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
220
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
150
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2.1k
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Skip the Path - Find Your Career Trail
mkilby
1
160
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
250
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
600
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
The Curse of the Amulet
leimatthew05
2
13k
Facilitating Awesome Meetings
lara
57
7k
The Cult of Friendly URLs
andyhume
79
6.9k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
280
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Transcript
@azumakuniyuki YAPC::Hiroshima2024 | 02/10(土) 広島国際会議場さん 古い技術について SMTP 代 情 現
事 つまみ食い
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki YAPC::Hiroshima 2024 | 02/10(土)
広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 自己紹介 @azumakuniyuki Cubicroot Co. Ltd. 2 libsisimai.org nyaan.jp
ネコ紹介 3 道綱 「ニャーン」 YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
古い技術について SMTP 代 情 現 事 つまみ食い
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 5 SMTP(RFC821) 1982/08 SMTP(RFC2821)
2001/04 SMTP(RFC5321) 2008/10 STARTTLS(RFC2487) 1999/01 SPF(RFC4408) 2006/04 DKIM(RFC4871) 2007/05 ARC(RFC8617) 2019/07 DMARC(RFC7489) 2015/03 List-Unsubscribe(RFC8058) 2017/01 BIMI(DRAFT) 2019/08 SMTPUTF8(RFC5336) 2008/09 2000 2020 1980 2010 1990 MTA-STS(RFC8461) 2018/09 TLS-RPT(RFC8460) 2018/09 RRVS(RFC7293) 2014/07 DANE(RFC6698) 2012/08 NullMX(RFC7505) 2015/06 HTTP/1.0(RFC1945) 1996/05 IDとしての側面が強くなる傾向 Sendmail(1983) Postfix(1998) Exim(1995) Courier(2000) qmail(1998) OpenSMTPD(2013)
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 6 SMTP(42) /MA(?:IL|LE)/ RFC821
Aug. 1982
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 7 SMTP(42) /MA(?:IL|LE)/ RFC821
Aug. 1982 厄 年
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 8 Envelope Header エンベロープ
ヘッダー と
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 9 Envelope (?:From|To) *
SMTPの通信における送信者と受信者 * $ telnet mx.example.jp 25⏎ * MAIL FROM: <このメールアドレス> = 送信者 * RCPT TO: <このメールアドレス> = 受信者 * /var/log/maillogに現れるメールアドレス * from=<
[email protected]
>, … * to=<
[email protected]
>, … エンベロープ
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 10 Header (?:From|To): *
メールのヘッダーに書かれているメールアドレス * 送信者 = From: “雉虎” <
[email protected]
> * 受信者 = To: “道綱” <
[email protected]
> * MUAで表示される「差出人」と「宛先」 * アプリによっては”From: 雉虎”しか出ないかも * “From:”は必須ヘッダー(RFC5322) * “To: undisclosed-recipients:;”ってのもある ヘッダー
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 11 Envelope エンベロープ In
Email Headers Return-Path: <
[email protected]
> Received: from mx (m.example.com [192.0.2.1]) with ESMTPS id 4Tx3c… for <
[email protected]
>; Thu, 2 Feb Envelope-From Envelope-To
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 12 Domain Auth. SPF,
DKIM, DMARC, ARC, BIMI
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 13 SPF, DKIM Return-Path:
<
[email protected]
> Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: キジトラ <
[email protected]
> Subject: ニャーン 集会のお知らせですニャン SPF DKIM Sender Policy Framework DomainKeys Identified Mail
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 14 DMARC(alignment) Return-Path: <
[email protected]
>
Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: キジトラ <
[email protected]
> Subject: ニャーン 集会のお知らせですニャン SPF DKIM DMARC SPFアライメント DKIMアライメント Domain-based Message Authentication, Reporting and Conformance
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 15 DMARC 1. DMARC認証失敗時のメール処理方法を指示
* p=(?:reject|quarantine|none) 2. レポート(*.xml.gz)が来る 3. From:ヘッダーのドメインを認証する Domain-based Message Authentication, Reporting and Conformance
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 16 DMARC=FAIL Return-Path: <
[email protected]
>
Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: アマゾン <
[email protected]
> Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン 当選したネコ缶は二条城まで受け取りに来てくださいニャン SPF DKIM DMARC SPFアライメント DKIMアライメント Domain-based Message Authentication, Reporting and Conformance
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 17 DMARC=FAIL Return-Path: <
[email protected]
>
Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: アマゾン <
[email protected]
> Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン 当選したネコ缶は二条城まで受け取りに来てくださいニャン SPF DKIM DMARC SPFアライメント DKIMアライメント Domain-based Message Authentication, Reporting and Conformance 不一致 不一致
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 18 _dmarc.amazon.com $ dig
-4 TXT _dmarc.amazon.com “v=DMARC1; p=quarantine; …”
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 19 DMARC=PASS !? Return-Path:
<
[email protected]
> Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: 【アマゾン】
[email protected]
<
[email protected]
> Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン 当選したネコ缶は二条城まで受け取りに来てくださいニャン SPF DKIM DMARC SPFアライメント DKIMアライメント Domain-based Message Authentication, Reporting and Conformance
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 20 DMARC=PASS !? Return-Path:
<
[email protected]
> Received: from mx2 (mx.example.com [192.0.2.25]) … DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/ d=example.com; s=neko22; h=Date:From:To:Subject; Date: 2 Feb 2018 18:30:22 +0900 To: 道綱 <
[email protected]
> From: 【アマゾン】
[email protected]
<
[email protected]
> Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン 当選したネコ缶は二条城まで受け取りに来てくださいニャン SPF DKIM DMARC SPFアライメント DKIMアライメント Domain-based Message Authentication, Reporting and Conformance これ„
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 21 BIMI iPhoneではメールアドレスが出ない BIMIなどに関する説明ページが開く
Brand Indicators for Message Identification
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 22 BIMI $ dig
-4 TXT default._bimi.amazon.com⏎ "v=BIMI1; l=https://d3***_logo.svg; ロゴ画像 a=https://d3f***4.pem” 証明書(VMC) ↑まぁまぁ高い(〜30万円とか) EVと同じく組織の実在証明とか要る ↓商標登録されている必要あり Brand Indicators for Message Identification
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 23 Email Forwarding @EXAMPLE.COM
192.0.2.25 配信サーバー @NYAAN.JP 203.0.113.2 @GMAIL.COM example.com. IN TXT “v=spf1 ip4:192.0.2.0/24 -all” nyaan.jp. IN TXT “v=spf1 ip4:203.0113.2 -all” EHLO mx.nyaan.jp MAIL FROM: <
[email protected]
> RCPT TO: <
[email protected]
> DATA Subject: [neko-ml:0022] 集会のお知らせ From: キジトラ <
[email protected]
> To: 道綱 <
[email protected]
> DKIM-Signature: …; d=exmaple.com; … Reply-To: 近所ネコML <
[email protected]
> 集会ですニャン spf=fail dkim=fail REJECT
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 24 SRS @EXAMPLE.COM 192.0.2.25
配信サーバー @NYAAN.JP 203.0.113.2 @GMAIL.COM example.com. IN TXT “v=spf1 ip4:192.0.2.0/24 -all” nyaan.jp. IN TXT “v=spf1 ip4:203.0113.2 -all” EHLO mx.nyaan.jp MAIL FROM: <
[email protected]
> RCPT TO: <
[email protected]
> DATA Subject: [neko-ml:0022] 集会のお知らせ From: キジトラ <
[email protected]
> To: 道綱 <
[email protected]
> DKIM-Signature: …; d=example.com; … Reply-To: 近所ネコML <
[email protected]
> 集会ですニャン spf=pass dkim=fail Envelope Fromを 転送元ドメインに 書き換える Sender Rewriting Scheme
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 25 ARC @EXAMPLE.COM 192.0.2.25
配信サーバー @NYAAN.JP 203.0.113.2 @GMAIL.COM example.com. IN TXT “v=spf1 ip4:192.0.2.0/24 -all” nyaan.jp IN TXT “v=spf1 ip4:203.0113.2 -all” MAIL FROM: <
[email protected]
> RCPT TO: <
[email protected]
> DATA ARC-Authentication-Results: i=1; mx.n… spf=pass; dkim=pass; dmarc=pass; … ARC-Message-Signature: i=1; d=nyaan.jp; ARC-Seal: i=1; d=nyaan.jp; s=neko22; … DKIM-Signature: …; d=example.com; … Subject: [neko-ml:0022] 集会のお知らせ From: キジトラ <
[email protected]
> To: 道綱 <
[email protected]
> spf=fail dkim=fail arc=pass 「うちのサーバーで受け 取った段階ではSPFも DKIMもDMARCも全て PASSでしたよ」 「ARCのとこに書 いておきますので 確認してね」 Authenticated Received Chain
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 26 Domain Protection SPF,DKIM,DMARC,NullMX
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 27 SPF/Shadow MTA #
grep ‘from=<‘ /var/log/maillog⏎ …, from=<
[email protected]
>, …, to=<
[email protected]
>, … …, from=<
[email protected]
>, … …, from=<admin@www5>, … Webサーバーが勝手に 直接メールを外部に 送ってるやん!? www5.example.jp. IN TXT “v=spf1; +a:www5 …” www5用の SPFが必要 FQDNになっ てませんなぁ
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 28 SPF/NullMX $ dig
-4 TXT libsisimai.org “v=spf1 -all” $ dig -4 MX libsisimai.org 0 . メールは 送らない MXの優先度は0, ホスト名は”.”のみ メールは 受け取らない
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 29 SPF/Hard Fail (-all)
- “v=spf1 +mx +ip4:192.0.2.0/24 ~all” + “v=spf1 +mx +ip4:192.0.2.0/24 -all” DMARC導入でメールの出所は全て把握するし やれるはず
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 30 Encryption STARTTLS, MTA-STS,
TLS-PRT
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 31 STARTTLS @NYAAN.JP 203.0.113.2
@GMAIL.COM EHLO mx.nyaan.jp ⏎ … 250-STARTTLS … STARTTLS ⏎ 220 2.0.0 Ready to start TLS MAIL FROM: <
[email protected]
> ⏎ RCPT TO: <
[email protected]
> ⏎ DATA … よし 話せ 盗聴防止を 「暗号回線に切り替えてくれ」「よし」
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki mjl-/mox (Go) stalwartlabs/mail-server (Rust)
Sendmail 8.17.1 (Experimental) Postfix + mta-sts-resolver $smtp_tls_policy_maps version: STSv1 mode: enforce mx: gmail-smtp-in.l.google.com mx: *.gmail-smtp-in.l.google.com max_age: 86400 32 MTA-STS, TLS-RPT @NYAAN.JP 203.0.113.2 @GMAIL.COM _mta-sts.gmail.com. IN TXT "v=STSv1; id=20190429T010101;" GET https://mta-sts.gmail.com/.well-known/mta-sts.txt Gmail「うちは MTA-STSを使っ てるで」 MTA-STSの ポリシー確認 するか! うちとこTLS 1.2 以上でSTARTTLS が必須やねんわ STARTTLS 証明書ちゃん と見てな? STARTTLSの強制とレポート _smtp._tls.gmail.com. IN TXT "v=TLSRPTv1;rua=mailto:…” アカンかったらレ ポート送ってな? SMTP MTA Strict Transport Security SMTP TLS Reporting
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 33 Delivery Reputation, List-Unsubscribe
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 34 Relay Service ?
* 自前サーバー OR 配信サービスか * 月間配信数と費用しだい(要見積) * 月に5000万通とか1億通とか送るなら自前 * 4コアCPU+8GBメモリ x 2台ぐらいで行ける * 二者択一ではない * 宛先次第で配信サービスに投げるとか * $fallback_relay =
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 35 Reputation * 送信者ドメインとIPアドレスの評判
* Postmaster Tools, Microsoft SNDS * CISCO TALOS, SenderScore(30日分ある) * だいたい3段階か4段階(悪・低・中・高) * もちろん従来のDNSBLも気にする必要あり * SMTP的な日ごろの行い * Googleのガイドラインを各社が採用(たぶん)
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 36 List-Unsubscribe: レピュテーションが高い状態でのみでる(らしい)
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 37 Warming-Up @NYAAN.JP 203.0.113.2
@GMAIL.COM DAY1: 100通 DAY2: 120通 DAY3: 150通 DAY30: 2000通 大量配信実績のないIPアドレスとドメイン Postmaster Toolsで毎日 確認 Microsoft宛 ならSNDS Outlook Postmaster
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 38 Warming-Up @NYAAN.JP 203.0.113.2
@GMAIL.COM DAY1: 100本 DAY2: 120本 DAY3: 150本 DAY30: 2000本 商取引と考える・コツコツやる ネギ 買って! いきなり来た 初日で2000本 も!? 今日は100 本だけやな 2000本!
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 39 お好み What you
like
YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん 古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki 40 「SMTPは好き?」 「ほどほどでございます」
終