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

古い技術について—SMTP現代事情つまみ食い—

 古い技術について—SMTP現代事情つまみ食い—

YAPC::Hiroshima 2024

azumakuniyuki

February 10, 2024
Tweet

Other Decks in Technology

Transcript

  1. @azumakuniyuki
    YAPC::Hiroshima2024 | 02/10(土) 広島国際会議場さん
    古い技術について
    SMTP 代



    つまみ食い

    View full-size slide

  2. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    自己紹介
    @azumakuniyuki
    Cubicroot Co. Ltd.
    2
    libsisimai.org
    nyaan.jp

    View full-size slide

  3. ネコ紹介
    3
    道綱
    「ニャーン」
    YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki

    View full-size slide

  4. 古い技術について
    SMTP 代



    つまみ食い

    View full-size slide

  5. 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)

    View full-size slide

  6. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    6
    SMTP(42)
    /MA(?:IL|LE)/
    RFC821 Aug. 1982

    View full-size slide

  7. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    7
    SMTP(42)
    /MA(?:IL|LE)/
    RFC821 Aug. 1982


    View full-size slide

  8. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    8
    Envelope
    Header
    エンベロープ
    ヘッダー

    View full-size slide

  9. 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=, …
    * to=, …
    エンベロープ

    View full-size slide

  10. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    10
    Header (?:From|To):
    * メールのヘッダーに書かれているメールアドレス
    * 送信者 = From: “雉虎”
    * 受信者 = To: “道綱”
    * MUAで表示される「差出人」と「宛先」
    * アプリによっては”From: 雉虎”しか出ないかも
    * “From:”は必須ヘッダー(RFC5322)
    * “To: undisclosed-recipients:;”ってのもある
    ヘッダー

    View full-size slide

  11. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    11
    Envelope
    エンベロープ
    In Email Headers
    Return-Path:
    Received: from mx (m.example.com [192.0.2.1])
    with ESMTPS id 4Tx3c…
    for ; Thu, 2 Feb
    Envelope-From
    Envelope-To

    View full-size slide

  12. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    12
    Domain
    Auth.
    SPF, DKIM, DMARC, ARC, BIMI

    View full-size slide

  13. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    13
    SPF, DKIM
    Return-Path:
    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: 道綱
    From: キジトラ
    Subject: ニャーン
    集会のお知らせですニャン
    SPF
    DKIM
    Sender Policy Framework
    DomainKeys Identified Mail

    View full-size slide

  14. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    14
    DMARC(alignment)
    Return-Path:
    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: 道綱
    From: キジトラ
    Subject: ニャーン
    集会のお知らせですニャン
    SPF
    DKIM
    DMARC
    SPFアライメント
    DKIMアライメント
    Domain-based Message Authentication, Reporting and Conformance

    View full-size slide

  15. 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

    View full-size slide

  16. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    16
    DMARC=FAIL
    Return-Path:
    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: 道綱
    From: アマゾン
    Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン
    当選したネコ缶は二条城まで受け取りに来てくださいニャン
    SPF
    DKIM
    DMARC
    SPFアライメント
    DKIMアライメント
    Domain-based Message Authentication, Reporting and Conformance

    View full-size slide

  17. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    17
    DMARC=FAIL
    Return-Path:
    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: 道綱
    From: アマゾン
    Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン
    当選したネコ缶は二条城まで受け取りに来てくださいニャン
    SPF
    DKIM
    DMARC
    SPFアライメント
    DKIMアライメント
    Domain-based Message Authentication, Reporting and Conformance
    不一致
    不一致

    View full-size slide

  18. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    18
    _dmarc.amazon.com
    $ dig -4 TXT _dmarc.amazon.com
    “v=DMARC1; p=quarantine; …”

    View full-size slide

  19. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    19
    DMARC=PASS !?
    Return-Path:
    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: 道綱
    From: 【アマゾン】[email protected]

    Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン
    当選したネコ缶は二条城まで受け取りに来てくださいニャン
    SPF
    DKIM
    DMARC
    SPFアライメント
    DKIMアライメント
    Domain-based Message Authentication, Reporting and Conformance

    View full-size slide

  20. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    20
    DMARC=PASS !?
    Return-Path:
    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: 道綱
    From: 【アマゾン】[email protected]

    Subject: ネコ缶(鯛味)モニター当選のお知らせですニャン
    当選したネコ缶は二条城まで受け取りに来てくださいニャン
    SPF
    DKIM
    DMARC
    SPFアライメント
    DKIMアライメント
    Domain-based Message Authentication, Reporting and Conformance
    これ„

    View full-size slide

  21. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    21
    BIMI
    iPhoneではメールアドレスが出ない
    BIMIなどに関する説明ページが開く
    Brand Indicators for Message Identification

    View full-size slide

  22. 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

    View full-size slide

  23. 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:
    RCPT TO:
    DATA
    Subject: [neko-ml:0022] 集会のお知らせ
    From: キジトラ
    To: 道綱
    DKIM-Signature: …; d=exmaple.com; …
    Reply-To: 近所ネコML
    集会ですニャン
    spf=fail
    dkim=fail
    REJECT

    View full-size slide

  24. 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:
    RCPT TO:
    DATA
    Subject: [neko-ml:0022] 集会のお知らせ
    From: キジトラ
    To: 道綱
    DKIM-Signature: …; d=example.com; …
    Reply-To: 近所ネコML
    集会ですニャン
    spf=pass
    dkim=fail
    Envelope Fromを
    転送元ドメインに
    書き換える
    Sender Rewriting Scheme

    View full-size slide

  25. 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:
    RCPT TO:
    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: キジトラ
    To: 道綱
    spf=fail
    dkim=fail
    arc=pass
    「うちのサーバーで受け
    取った段階ではSPFも
    DKIMもDMARCも全て
    PASSでしたよ」
    「ARCのとこに書
    いておきますので
    確認してね」
    Authenticated Received Chain

    View full-size slide

  26. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    26
    Domain
    Protection
    SPF,DKIM,DMARC,NullMX

    View full-size slide

  27. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    27
    SPF/Shadow MTA
    # grep ‘from=<‘ /var/log/maillog⏎
    …, from=, …,
    to=, …
    …, from=, …
    …, from=, …
    Webサーバーが勝手に
    直接メールを外部に
    送ってるやん!?
    www5.example.jp. IN TXT
    “v=spf1; +a:www5 …”
    www5用の
    SPFが必要
    FQDNになっ
    てませんなぁ

    View full-size slide

  28. 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, ホスト名は”.”のみ
    メールは
    受け取らない

    View full-size slide

  29. 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導入でメールの出所は全て把握するし
    やれるはず

    View full-size slide

  30. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    30
    Encryption
    STARTTLS, MTA-STS, TLS-PRT

    View full-size slide

  31. 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: ⏎
    RCPT TO: ⏎
    DATA

    よし
    話せ
    盗聴防止を
    「暗号回線に切り替えてくれ」「よし」

    View full-size slide

  32. 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

    View full-size slide

  33. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    33
    Delivery
    Reputation, List-Unsubscribe

    View full-size slide

  34. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    34
    Relay Service ?
    * 自前サーバー OR 配信サービスか
    * 月間配信数と費用しだい(要見積)
    * 月に5000万通とか1億通とか送るなら自前
    * 4コアCPU+8GBメモリ x 2台ぐらいで行ける
    * 二者択一ではない
    * 宛先次第で配信サービスに投げるとか
    * $fallback_relay =

    View full-size slide

  35. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    35
    Reputation
    * 送信者ドメインとIPアドレスの評判
    * Postmaster Tools, Microsoft SNDS
    * CISCO TALOS, SenderScore(30日分ある)
    * だいたい3段階か4段階(悪・低・中・高)
    * もちろん従来のDNSBLも気にする必要あり
    * SMTP的な日ごろの行い
    * Googleのガイドラインを各社が採用(たぶん)

    View full-size slide

  36. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    36
    List-Unsubscribe:
    レピュテーションが高い状態でのみでる(らしい)

    View full-size slide

  37. 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

    View full-size slide

  38. 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本!

    View full-size slide

  39. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    39
    お好み
    What you like

    View full-size slide

  40. YAPC::Hiroshima 2024 | 02/10(土) 広島国際会議場さん
    古い技術について—SMTP現代事情つまみ食い—@azumakuniyuki
    40
    「SMTPは好き?」
    「ほどほどでございます」

    View full-size slide