運用・保守 一覧へ戻る トップ運用・保守 / Mail Packet Capture
運用・保守 ・ Mail Operation

Mail Packet Capture

Wiresharkで実際に取得したパケットキャプチャをもとに、メール送信時の通信が「どこまでが平文で、どこから暗号化されるか」を確認した記録です

キャプチャ対象:ポート587(Submission) 区間1:端末→自宅サーバー 区間2:自宅サーバー→Brevo

本ページの位置づけ

「メールシーケンス及び解説」で説明した通信を、実際にWiresharkでキャプチャした生パケットで裏付けたものです。送信元IPのうち送信端末(携帯回線)のIPアドレスは 133.106.xxx.xxx のように伏字にしています。自宅サーバー(172.16.1.2)・Brevoリレー(1.179.116.2)・Google Public DNS(8.8.8.8)のIPは、いずれも第三者インフラまたは本サイトで既に公開している情報のためそのまま掲載しています。

目次

  1. 1. キャプチャの概要
  2. 2. 区間1:送信端末 → 自宅サーバー(ポート587)
  3. 3. 区間2:自宅サーバー → Brevo(ポート587)
  4. 4. 読み解きのポイント
  5. 5. パケットキャプチャ全データ(No.35〜164)

1. キャプチャの概要

自宅サーバー(mail.yama.mydns.jp、172.16.1.2)のネットワークインターフェースでWiresharkを起動し、スマホのメールアプリ(BlueMail)からテストメールを送信した瞬間の通信を丸ごとキャプチャしました。キャプチャ範囲は大きく2つの区間に分かれています。

区間通信相手ポート役割
区間1送信端末(133.106.xxx.xxx)↔ 自宅サーバー(172.16.1.2)587スマホからPostfixへメールを預ける(Submission)
区間2自宅サーバー(172.16.1.2)↔ Brevo(1.179.116.2)587Postfixが外部リレー(Brevo)へ転送する

2. 区間1:送信端末 → 自宅サーバー(ポート587)

  1. No.35〜37:TCP 3-way Handshake — 端末が587番ポートへSYNを送り、自宅サーバーがSYN/ACKを返して接続確立
  2. No.38〜39:逆引きDNS(PTR)は失敗 — 自宅サーバーが接続元IPの逆引きを8.8.8.8に問い合わせるが「No such name」で失敗。携帯回線など逆引きレコードが用意されていない接続元では普通に起きる現象で、異常ではない
  3. No.40:Postfixのバナー応答220 mail.yama.mydns.jp ESMTP
  4. No.43〜45:EHLOと機能一覧 — 端末がEHLO client.bluemail.meを送り、Postfixが対応機能(STARTTLS、8BITMIMEなど)を返す
  5. No.47〜48:STARTTLS開始C: STARTTLSS: 220 2.0.0 Ready to start TLS
  6. No.49〜54:TLS 1.3ハンドシェイク — Client Hello(SNI=yama.mydns.jp)→ Server Hello, Change Cipher Spec → 以降のデータはすべて暗号化
  7. No.55〜85:Application Data — SMTP認証(AUTH)・MAIL FROM・RCPT TO・DATA(本文)はすべてこの中に暗号化されて含まれており、パケットキャプチャからは中身が一切読めない

ここが重要

STARTTLSより前(No.35〜48)は平文でやり取りされていますが、これは接続確立とTLS開始の「合図」だけで、パスワードやメール本文は一切含まれていません。No.49以降はすべて暗号化されたApplication Dataとしか見えず、盗聴されても中身は読めません。

3. 区間2:自宅サーバー → Brevo(ポート587)

  1. No.77〜79, 85:Brevoの名前解決 — 自宅サーバーがsmtp-relay.sendinblue.comのAレコード(IPv4)とAAAAレコード(IPv6)を問い合わせ。AAAAは「No such name」でIPv6非対応と判明し、IPv4(1.179.116.2)で接続
  2. No.86〜99:TCP 3-way Handshake — 自宅サーバーからBrevo(1.179.116.2)の587番ポートへ新しい接続を確立
  3. No.105:Brevoのバナー応答220 smtp-relay.brevo.com ESMTP Service Ready
  4. No.107〜116:EHLOと機能一覧EHLO mail.yama.mydns.jpに対し、BrevoがAUTH方式(PLAIN/LOGIN/CRAM-MD5)や最大送信サイズ(約20MB)などを応答
  5. No.118〜119:STARTTLS開始 — 区間1とは独立して、Postfix↔Brevo間でも別途STARTTLSを実施
  6. No.120〜126:TLS 1.3ハンドシェイク — Client Hello → Server Hello, Change Cipher Spec → 暗号化開始
  7. No.128〜163:Application Data — Brevoへのログイン認証・MAIL FROM・RCPT TO・本文送信はすべて暗号化された状態でやり取りされる
  8. No.161〜164:接続終了 — Brevo側からFIN/ACK、自宅サーバー側からRST/ACKで通信終了。メール転送が完了した後の正常なクローズ処理

4. 読み解きのポイント

5. パケットキャプチャ全データ(No.35〜164)

Wiresharkの表示そのままの全101パケットです。横にスクロールしてご覧ください。

区間1(端末↔自宅サーバー) 区間2(自宅サーバー↔Brevo) DNS問い合わせ
No.TimeDeltaSourceDestinationProtocolLenInfo
356.9021611133.106.xxx.xxx172.16.1.2TCP050851 > 587 [SYN] Seq=0 Win=65535 Len=0 MSS=1300 SACK_PERM TSval=4228743104 TSecr=0 WS=512
366.90253730.0003762172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM TSval=3174641228 TSecr=4228743104 WS=128
376.96033180.0577945133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=1 Ack=1 Win=65536 Len=0 TSval=4228743154 TSecr=3174641228
386.98640840.0260766172.16.1.28.8.8.8DNSStandard query 0x89a5 PTR xxx.xxx.106.133.in-addr.arpa
397.00219760.01578928.8.8.8172.16.1.2DNSStandard query response 0x89a5 No such name PTR xxx.xxx.106.133.in-addr.arpa SOA y.dns.jp
407.01188850.0096909172.16.1.2133.106.xxx.xxxSMTP30S: 220 mail.yama.mydns.jp ESMTP
427.06363180.0517433133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=1 Ack=31 Win=65536 Len=0 TSval=4228743265 TSecr=3174641338
437.06363180133.106.xxx.xxx172.16.1.2SMTP25C: EHLO client.bluemail.me
447.06406190.0004301172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=31 Ack=26 Win=65280 Len=0 TSval=3174641390 TSecr=4228743268
457.06444740.0003855172.16.1.2133.106.xxx.xxxSMTP145S: 250-mail.yama.mydns.jp | PIPELINING | SIZE 10240000 | ETRN | STARTTLS | ENHANCEDSTATUSCODES | 8BITMIME | DSN | CHUNKING
477.12153440.057087133.106.xxx.xxx172.16.1.2SMTP10C: STARTTLS
487.12187940.000345172.16.1.2133.106.xxx.xxxSMTP30S: 220 2.0.0 Ready to start TLS
497.17303960.0511602133.106.xxx.xxx172.16.1.2TLSv1.3265Client Hello (SNI=yama.mydns.jp)
507.17588270.0028431172.16.1.2133.106.xxx.xxxTLSv1.31288Server Hello, Change Cipher Spec, Application Data
517.17588270172.16.1.2133.106.xxx.xxxTLSv1.31123Application Data, Application Data, Application Data
527.21766660.0417839133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=301 Ack=2617 Win=74240 Len=0 TSval=4228743423 TSecr=3174641502
537.22433850.0066719133.106.xxx.xxx172.16.1.2TLSv1.364Change Cipher Spec, Application Data
547.22604440.0017059172.16.1.2133.106.xxx.xxxTLSv1.3239Application Data
557.22974640.003702133.106.xxx.xxx172.16.1.2TLSv1.347Application Data
567.27099990.0412535172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=2856 Ack=412 Win=65024 Len=0 TSval=3174641597 TSecr=4228743426
577.31043820.0394383133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=412 Ack=2856 Win=76800 Len=0 TSval=4228743513 TSecr=3174641552
587.31066380.0002256172.16.1.2133.106.xxx.xxxTLSv1.3169Application Data
597.35511520.0444514133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=412 Ack=3025 Win=79872 Len=0 TSval=4228743556 TSecr=3174641637
607.35511520133.106.xxx.xxx172.16.1.2TLSv1.371Application Data
617.35555660.0004414172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=3025 Ack=483 Win=65024 Len=0 TSval=3174641681 TSecr=4228743559
627.59047340.2349168172.16.1.2133.106.xxx.xxxTLSv1.359Application Data
637.64019950.0497261133.106.xxx.xxx172.16.1.2TLSv1.364Application Data
647.64062130.0004218172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=3084 Ack=547 Win=65024 Len=0 TSval=3174641966 TSecr=4228743843
657.65035310.0097318172.16.1.2133.106.xxx.xxxTLSv1.336Application Data
667.69740980.0470567133.106.xxx.xxx172.16.1.2TLSv1.358Application Data
677.7078320.0104222172.16.1.2133.106.xxx.xxxTLSv1.336Application Data
697.75512160.0472896133.106.xxx.xxx172.16.1.2TLSv1.328Application Data
707.75681750.0016959172.16.1.2133.106.xxx.xxxTLSv1.359Application Data
717.82395310.0671356133.106.xxx.xxx172.16.1.2TCP128850851 > 587 [ACK] Seq=633 Ack=3215 Win=79872 Len=1288 TSval=4228744007 TSecr=3174642083 [TCP PDU reassembled in 72]
727.82395310133.106.xxx.xxx172.16.1.2TLSv1.381Application Data
737.82420960.0002565133.106.xxx.xxx172.16.1.2TLSv1.325Application Data
747.82467990.0004703172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=3215 Ack=2027 Win=63744 Len=0 TSval=3174642151 TSecr=4228744007
757.83663480.0119549172.16.1.2133.106.xxx.xxxTLSv1.360Application Data
777.86612480.02949172.16.1.28.8.8.8DNSStandard query 0x4476 A smtp-relay.sendinblue.com
787.89045230.02432758.8.8.8172.16.1.2DNSStandard query response 0x4476 A smtp-relay.sendinblue.com A 1.179.116.2
797.89094380.0004915172.16.1.28.8.8.8DNSStandard query 0xfc94 AAAA smtp-relay.sendinblue.com
807.89672950.0057857133.106.xxx.xxx172.16.1.2TLSv1.324Application Data
817.89786150.001132172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [FIN, ACK] Seq=3275 Ack=2051 Win=67072 Len=0 TSval=3174642223 TSecr=4228744099
827.90147010.0036086133.106.xxx.xxx172.16.1.2TCP050851 > 587 [FIN, ACK] Seq=2051 Ack=3275 Win=79872 Len=0 TSval=4228744099 TSecr=3174642162
837.90174340.0002733172.16.1.2133.106.xxx.xxxTCP0587 > 50851 [ACK] Seq=3276 Ack=2052 Win=67072 Len=0 TSval=3174642227 TSecr=4228744099
847.93884680.0371034133.106.xxx.xxx172.16.1.2TCP050851 > 587 [ACK] Seq=2052 Ack=3276 Win=79872 Len=0 TSval=4228744143 TSecr=3174642223
857.95024730.01140058.8.8.8172.16.1.2DNSStandard query response 0xfc94 AAAA smtp-relay.sendinblue.com SOA josh.ns.cloudflare.com
867.95081170.0005644172.16.1.21.179.116.2TCP054358 > 587 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM TSval=2117944107 TSecr=0 WS=128
988.10758590.15677421.179.116.2172.16.1.2TCP0587 > 54358 [SYN, ACK] Seq=0 Ack=1 Win=43648 Len=0 MSS=1414 SACK_PERM TSval=1963165757 TSecr=2117944107 WS=128
998.1078530.0002671172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=2117944264 TSecr=1963165757
1058.26381320.15596021.179.116.2172.16.1.2SMTP46S: 220 smtp-relay.brevo.com ESMTP Service Ready
1068.26435740.0005442172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=1 Ack=47 Win=64256 Len=0 TSval=2117944420 TSecr=1963165914
1078.2644540.0000966172.16.1.21.179.116.2SMTP25C: EHLO mail.yama.mydns.jp
1098.4194480.1549941.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=47 Ack=26 Win=43648 Len=0 TSval=1963166070 TSecr=2117944420
1108.41962580.00017781.179.116.2172.16.1.2SMTP30S: 250-Hello mail.yama.mydns.jp
1118.419625801.179.116.2172.16.1.2SMTP30S: 250-PIPELINING | 8BITMIME
1128.419625801.179.116.2172.16.1.2SMTP25S: 250-ENHANCEDSTATUSCODES
1138.419625801.179.116.2172.16.1.2SMTP14S: 250-CHUNKING
1148.419625801.179.116.2172.16.1.2SMTP14S: 250-STARTTLS
1158.419625801.179.116.2172.16.1.2SMTP31S: 250-AUTH PLAIN LOGIN CRAM-MD5
1168.419625801.179.116.2172.16.1.2SMTP19S: 250 SIZE 20971520
1178.4202050.0005792172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=26 Ack=210 Win=64128 Len=0 TSval=2117944576 TSecr=1963166070
1188.42029680.0000918172.16.1.21.179.116.2SMTP10C: STARTTLS
1198.57577660.15547981.179.116.2172.16.1.2SMTP30S: 220 2.0.0 Ready to start TLS
1208.57872910.0029525172.16.1.21.179.116.2TLSv1.3517Client Hello
1248.73740480.15867571.179.116.2172.16.1.2TLSv1.31402Server Hello, Change Cipher Spec, Application Data
1258.737404801.179.116.2172.16.1.2TCP1402587 > 54358 [PSH, ACK] Seq=1642 Ack=553 Win=43136 Len=1402 TSval=1963166388 TSecr=2117944734 [TCP PDU reassembled in 126]
1268.737404801.179.116.2172.16.1.2TLSv1.3535Application Data, Application Data, Application Data, Application Data
1278.73789450.0004897172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=553 Ack=3044 Win=69888 Len=0 TSval=2117944894 TSecr=1963166388
1288.74245110.0045566172.16.1.21.179.116.2TLSv1.364Change Cipher Spec, Application Data
1298.93910920.19665811.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=3579 Ack=617 Win=43136 Len=0 TSval=1963166590 TSecr=2117944898
1308.93953380.0004246172.16.1.21.179.116.2TLSv1.347Application Data
1319.09472810.15519431.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=3579 Ack=664 Win=43136 Len=0 TSval=1963166745 TSecr=2117945095
1329.0951410.00041291.179.116.2172.16.1.2TLSv1.352Application Data
1339.09514101.179.116.2172.16.1.2TLSv1.338Application Data
1349.09514101.179.116.2172.16.1.2TLSv1.383Application Data, Application Data
1359.09514101.179.116.2172.16.1.2TLSv1.336Application Data
1369.09514101.179.116.2172.16.1.2TLSv1.353Application Data
1379.09514101.179.116.2172.16.1.2TLSv1.341Application Data
1389.09556880.0004278172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=664 Ack=3882 Win=69888 Len=0 TSval=2117945251 TSecr=1963166746
1399.09621030.0006415172.16.1.21.179.116.2TLSv1.334Application Data
1439.25163870.15542841.179.116.2172.16.1.2TLSv1.340Application Data
1449.25235360.0007149172.16.1.21.179.116.2TLSv1.356Application Data
1459.40784140.15548781.179.116.2172.16.1.2TLSv1.340Application Data
1469.40849330.0006519172.16.1.21.179.116.2TLSv1.3144Application Data
1489.60398560.19549231.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=3962 Ack=898 Win=43008 Len=0 TSval=1963167255 TSecr=2117945564
1499.86427170.26028611.179.116.2172.16.1.2TLSv1.358Application Data
1509.86504190.0007702172.16.1.21.179.116.2TLSv1.3116Application Data
15110.02040330.15536141.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=4020 Ack=1014 Win=43008 Len=0 TSval=1963167671 TSecr=2117946021
15210.02071240.00030911.179.116.2172.16.1.2TLSv1.391Application Data
15310.020712401.179.116.2172.16.1.2TLSv1.385Application Data
15410.020712401.179.116.2172.16.1.2TLSv1.374Application Data
15510.02135860.0006462172.16.1.21.179.116.2TCP054358 > 587 [ACK] Seq=1014 Ack=4270 Win=69888 Len=0 TSval=2117946177 TSecr=1963167671
15610.02182390.0004653172.16.1.21.179.116.2TCP140254358 > 587 [ACK] Seq=1014 Ack=4270 Win=69888 Len=1402 TSval=2117946178 TSecr=1963167671 [TCP PDU reassembled in 157]
15710.02182390172.16.1.21.179.116.2TLSv1.3243Application Data
15910.17723490.1554111.179.116.2172.16.1.2TCP0587 > 54358 [ACK] Seq=4270 Ack=2659 Win=41472 Len=0 TSval=1963167828 TSecr=2117946178
16010.18095740.00372251.179.116.2172.16.1.2TLSv1.391Application Data
16110.180957401.179.116.2172.16.1.2TLSv1.361Application Data, Application Data
16210.180957401.179.116.2172.16.1.2TCP0587 > 54358 [FIN, ACK] Seq=4422 Ack=2659 Win=41472 Len=0 TSval=1963167831 TSecr=2117946178
16310.18196330.0010059172.16.1.21.179.116.2TLSv1.324Application Data
16410.18230190.0003386172.16.1.21.179.116.2TCP054358 > 587 [RST, ACK] Seq=2683 Ack=4423 Win=69888 Len=0 TSval=2117946338 TSecr=1963167831

暗号化の境界線を実パケットで確認完了 🎉

STARTTLS前後で通信内容がどう変わるかを、実際のパケットキャプチャで確認しました。SMTP/TLSの流れの解説は「メールシーケンス及び解説」、受信側の認証結果は「Gmailメールヘッダ解析」もあわせてご参照ください。

運用・保守 一覧へ戻る