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
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
19
11k
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
2k
中期計画、2回作ってみた ~業務委託と正社員、両方の視点から~
demaecan
1
550
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
400
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
800
Dario Amodi『Policy on the AI Exponential』を理解する
nagatsu
0
210
LLMにもCAP定理があるという話
harukasakihara
0
270
ChatworkとBPaaS 異なる特性で学んだAI機能開発の ベストプラクティス
kubell_hr
2
3.3k
"何を作るか"を任される エンジニアは、どう育つのか
yutaokafuji
1
350
Rubyで音を視る
ydah
1
280
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
30
23k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
120
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
We Have a Design System, Now What?
morganepeng
55
8.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
Marketing to machines
jonoalderson
1
5.4k
Producing Creativity
orderedlist
PRO
348
40k
Done Done
chrislema
186
16k
The agentic SEO stack - context over prompts
schlessera
0
800
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
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は好き?」 「ほどほどでございます」
終