LoginSignup
20
13

More than 3 years have passed since last update.

MTA-STSについて

Last updated at Posted at 2018-11-11

2018年09月26日RFC 8461が公開されました。MTA-STS(SMTP MTA Strict Transport Security)と呼ばれるSMTPのセキュリティに関連する新しい仕様です。最初のドラフトは2016年5月に公開されている1ので2年半ほどかけてRFCとなったようです。最終的な仕様はGoogleMicrosoftComcastOath2で策定しています。

日本語情報をあまりみかけないので少し調べてみました。

MTA-STSとは?

ざっくり書くと「SMTPで厳格にTLSを使うために、メールサーバ(MTA)がTLSに対応していることをポリシーとして宣言して、検証できるようにする仕組み」です。宣言・検証はDNSとHTTPSを組み合わせて行います。

MTA-STSが生まれた背景について、RFC 8461のIntroductionでSTARTTLSの問題点を触れています。

RFC 3207のSTARTTLSはSMTPの通信をTLSにする仕組みですが、日和見暗号化(Opportunistic Encryption)のため、相手先がTLSに対応していない場合は平文での通信となります。これには問題があって、たとえば中間者攻撃(man-in-the-middle attack、MITM)で仲介して平文にダウングレードさせたり、DNSクエリによる問合せを仲介して攻撃者の管理下にあるサーバのMXを返したり、といったことをして内容の傍受が可能となってしまいます。

Untitled (56).png

この問題を解決するためにMTA-STSが考えられました。3

MTA-STSに対応するには?

次のステップを踏みます。

  • TLSに対応し、証明書等に問題がないことを確認する

https://en.internet.nl/test-mail/ などで確認できるようです。

ドメインがexample.comの場合は次のようなTXTレコードをDNSに定義して、MTA-STSのポリシーに対応することを示します。idはポリシーの更新をチェックするためのもので、タイムスタンプやランダムな数値を入れるとのこと。

_mta-sts.example.com.  IN TXT "v=STSv1; id=20181111085700Z;"

RFC 5785のwell known URLを使って、次のパスにtxtファイルを配置します。

https://mta-sts.example.com/.well-known/mta-sts.txt

ファイルの中身は次のようなkey/valueの値です。

version: STSv1
mode: enforce
max_age: 10368000
mx: mail.example.com
mx: *.example.net
mx: backupmx.example.com

versionは「STSv1」で固定です。

modeは「enforce」「testing」「none」のいずれかで、検証結果を定義します。enforceは、失敗した場合はSTARTTLSに対応していないと判断します。testingの場合はRFC 8460の SMTP TLS Reportingに沿ってレポートが行われるとのことで、たとえば次のようなTXTレコードでレポート先を指定できるようです。mxではワイルドカード(*)も使えるとのこと。

 _smtp._tls.example.com v=TLSRPTv1; rua=mailto:mta-sts@example.com

このような流れになるようです。
Untitled (55).png

このチェックフローが読み取りにくかったのですが、以下がわかりやすかったです。
https://www.youtube.com/watch?v=VJKjfosckuU

Gmailの確認結果

Gmailは既にMTA-STSに対応しているようなので確認してみました。

まずはMTA-STS TXTレコードを調べてみます。

dig -t txt _mta-sts.gmail.com

結果は次のとおり、定義されていました。

;; ANSWER SECTION:
_mta-sts.gmail.com.     300     IN      TXT     "v=STSv1; id=20171114T070707;"

続いてMTA-STSのポリシーを確認してみます。以下のURLにアクセスするだけです。

Gmailではmodeが「enforce」となっていました。(記事執筆時はtestingでしたが、その後、時期不明ですがenforceに変わりました。)

2019-06-05_18h02_54.png

ということは、SMTP TLS Reportingもありそうです。

 dig -t txt _smtp._tls.gmail.com

結果をみると次のとおり定義されていました。

;; ANSWER SECTION:
_smtp._tls.gmail.com.   300     IN      TXT     "v=TLSRPTv1;rua=mailto:sts-reports@google.com"

今回は手動で1つ1つ確認しましたが、以下のサイトを使って簡単に確認できるようになっています。
https://www.hardenize.com/
2018-11-08_23h53_20.png

2018-11-08_23h52_35.png

2018-11-08_23h53_02.png

https://aykevl.nl/apps/mta-sts/ (コマンドベースもある https://github.com/aykevl/mta-sts )
2018-11-08_23h51_47.png

参考


  1. 当時はSMTP-STSと呼ばれていた 

  2. ドラフト時点ではYahoo!, Incと表記 

  3. 関連する技術にDANE(DNS-Based Authentication of Named Entities)があるとRFCにはありますが、よくわかっていないので別の機会に…。 (参考1,参考2) 

20
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
13