<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MTA-STS | 徒然なるままに</title>
	<atom:link href="https://www.seichan.org/tag/mta-sts/feed" rel="self" type="application/rss+xml" />
	<link>https://www.seichan.org</link>
	<description>徒然と日々の出来事(ネタ)を書いていこうかと．主に FreeBSD，Unix系の話題が中心ですが，その他の話題もあつかってみたり．</description>
	<lastBuildDate>Mon, 19 Oct 2026 21:52:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>【メール入門 第4回】ポートと暗号化・認証 ― 25/587/465、STARTTLS、MTA-STS・DANE、SMTP AUTHとOAuth</title>
		<link>https://www.seichan.org/2026/10/mail-04-ports-tls-auth.html</link>
					<comments>https://www.seichan.org/2026/10/mail-04-ports-tls-auth.html#respond</comments>
		
		<dc:creator><![CDATA[seichan]]></dc:creator>
		<pubDate>Mon, 19 Oct 2026 21:00:00 +0000</pubDate>
				<category><![CDATA[メールサーバー]]></category>
		<category><![CDATA[DANE]]></category>
		<category><![CDATA[MTA-STS]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[SMTP AUTH]]></category>
		<category><![CDATA[STARTTLS]]></category>
		<category><![CDATA[メール]]></category>
		<guid isPermaLink="false">https://www.seichan.org/blog/?p=6859</guid>

					<description><![CDATA[メールの通信を守るポートと暗号化、送信者の認証を解説します。25・587・465番の使い分け、STARTTLSとImplicit TLSの違いと弱点、MTA間の日和見的TLS、MTA-STSとTLS-RPT、DANE、REQUIRETLS、SMTP AUTHの方式、Exchange Online・GoogleのBasic認証の廃止とOAuth 2.0、証明書の扱いまで。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「複合機の設定で『SSL/TLS』にしたら、送信がタイムアウトになります」<br>「Microsoft 365のSMTP AUTH、年末に使えなくなるって本当ですか？」</p>



<p class="wp-block-paragraph">メールの送信設定には、<strong>ポート・暗号化方式・認証方式</strong>の3つの組み合わせがあり、どれかがずれると送れません。さらに今、<strong>Basic認証の廃止</strong>という大きな変化が進んでいます。</p>



<p class="wp-block-paragraph">第3回では、メールの中身（ヘッダーとボディ）を見ました。第4回では、その中身を運ぶ通信を<strong>どう守るか</strong>、そして<strong>送信者をどう確かめるか</strong>を扱います。</p>


<div class=".for-sp">
<div id="im-5078de7a65f140ac9d12a50b8ac9ee9c">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946055,type:"banner",display:"inline",elementid:"im-5078de7a65f140ac9d12a50b8ac9ee9c"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/8ae3a18ff526e95e579f5814fddd88f6"></script>
<!-- admax -->
<!--
<div id="im-3931cf74888b4888ae5fb170df744749">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946233,type:"banner",display:"inline",elementid:"im-3931cf74888b4888ae5fb170df744749"})</script>
</div>
-->
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">25・587・465の使い分け</a></li><li><a href="#toc2" tabindex="0">STARTTLSとImplicit TLS</a></li><li><a href="#toc3" tabindex="0">STARTTLSの弱点</a></li><li><a href="#toc4" tabindex="0">MTA間の暗号化：日和見的TLS</a></li><li><a href="#toc5" tabindex="0">MTA-STSの仕組み</a><ol><li><a href="#toc6" tabindex="0">MTA-STSの設定例</a></li><li><a href="#toc7" tabindex="0">TLS-RPT</a></li></ol></li><li><a href="#toc8" tabindex="0">DANE for SMTP</a><ol><li><a href="#toc9" tabindex="0">REQUIRETLSと主要事業者の対応</a></li></ol></li><li><a href="#toc10" tabindex="0">SMTP AUTH</a></li><li><a href="#toc11" tabindex="0">Basic認証の廃止とOAuth 2.0</a></li><li><a href="#toc12" tabindex="0">証明書の扱い</a></li><li><a href="#toc13" tabindex="0">考えてみよう</a></li><li><a href="#toc14" tabindex="0">まとめ</a></li><li><a href="#toc15" tabindex="0">連載「メール入門」全12回</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">25・587・465の使い分け</span></h2>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-x-ports.png" alt="メールソフト・複合機・アプリから自社の送信サーバーへは465（接続直後からTLS・推奨）か587（STARTTLSで切り替え＋SMTP AUTH必須）でサブミッションし、送信サーバーから相手のMXへは25番で日和見的TLSを使いMTA-STS/DANEで強制できることと、社内リレーや外向き25番の遮断、SSL/TLSとSTARTTLSの組み合わせの注意を示す図"/></figure>



<figure class="wp-block-table"><table><thead><tr><th>ポート</th><th>用途</th><th>暗号化</th><th>認証</th></tr></thead><tbody><tr><td>25/tcp（SMTP）</td><td>MTA 間の配送（MX への配送）</td><td>STARTTLS（日和見的）</td><td>なし。受信側は接続元 IP と送信ドメイン認証（第5回）で判断</td></tr><tr><td>587/tcp（submission）</td><td>クライアント → MSA の送信（RFC 6409）</td><td>STARTTLS。サーバー側で必須にする</td><td>SMTP AUTH が必須</td></tr><tr><td>465/tcp（submissions）</td><td>クライアント → MSA の送信（RFC 8314）</td><td>接続直後から TLS（Implicit TLS）</td><td>SMTP AUTH が必須</td></tr><tr><td>25/tcp（社内）</td><td>機器・システム → 社内のリレーサーバー</td><td>機器しだい。平文も多い</td><td>接続元 IP の制限が多い（第8回・第10回）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">RFC 8314（2018年）は、クライアントからの送信に<strong>Implicit TLSの465を推奨</strong>し、587＋STARTTLSも認めています。Microsoft 365（smtp.office365.com）は<strong>465は使えず、587（推奨）か25</strong>、Gmail（smtp.gmail.com）は465と587で受け付けます。外向きの25番は、ISPが遮断していることが多いです（第7回）。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc2">STARTTLSとImplicit TLS</span></h2>



<p class="wp-block-paragraph">メールの経路をTLSで守る方法は2つあります。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-s043.png" alt="Implicit TLS（465）はTCP接続の直後にTLSハンドシェイクを行ってからSMTPを始め、STARTTLS（587・25）は平文で220・EHLO・250-STARTTLSを交わしてからSTARTTLSでTLSに切り替えEHLOをやり直すことと、平文の間は経路上で応答を書き換えられることを示す図"/></figure>



<ul class="wp-block-list">
<li><strong>Implicit TLS</strong>：TCPの接続直後にTLSのハンドシェイクを行い、その中でSMTPを始める方式。<strong>465番</strong>を使う</li>


<li><strong>STARTTLS</strong>（RFC 3207）：587番や25番で<strong>平文の会話を始め</strong>、EHLOの応答に<code>250-STARTTLS</code>があれば、STARTTLSコマンドでTLSに切り替え、EHLOからやり直す方式</li>
</ul>



<p class="wp-block-paragraph">冒頭の「SSL/TLSにしたらタイムアウト」の答えがここです。機器の設定の「<strong>SSL/TLS</strong>」はImplicit TLS、「<strong>STARTTLS</strong>」は切り替える方式を指すことが多く、ポートとの組み合わせを誤ると次のような症状になります。</p>



<ul class="wp-block-list">
<li><strong>465番にSTARTTLSで接続</strong> → 相手はTLSのハンドシェイクを待ち、こちらは平文の220を待つので、<strong>タイムアウト</strong></li>


<li><strong>587番にSSL/TLSで接続</strong> → 相手は平文の220を送るので、<strong>ハンドシェイクが失敗</strong></li>
</ul>



<p class="wp-block-paragraph">「SSL/TLS」は465と、「STARTTLS」は587と組み合わせる、と覚えておきましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc3">STARTTLSの弱点</span></h2>



<p class="wp-block-paragraph">STARTTLSは平文で始めて途中で切り替えるため、<strong>切り替える前の平文の部分が攻撃の入り口</strong>になります。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-s044.png" alt="経路上の攻撃者がEHLOの応答から250-STARTTLSを消すとクライアントが平文で送ってしまうSTRIPTLS（ダウングレード攻撃）と、STARTTLSと同じパケットに詰めたRSETなどの命令がTLSに切り替えた後に処理されるコマンドの注入を示す図"/></figure>



<ul class="wp-block-list">
<li><strong>STRIPTLS（ダウングレード攻撃）</strong>：経路上の攻撃者がEHLOの応答から<code>250-STARTTLS</code>を消すと、クライアントは相手が暗号化に非対応だと判断し、<strong>平文のまま送ってしまう</strong>。ファイアウォールのSMTP検査機能が同じ書き換えをする例もある</li>


<li><strong>コマンドの注入</strong>：STARTTLSと同じパケットに平文のコマンドを続けて送ると、TLSに切り替えた後でそれを処理してしまう実装があった（2011年のCVE-2011-0411など。2021年の研究「NO STARTTLS」では40件以上）</li>
</ul>



<p class="wp-block-paragraph"><strong>暗号化が始まる前の平文は、消すことも足すこともできる</strong>のです。対策は次のとおりです。</p>



<ul class="wp-block-list">
<li>クライアントからの送信では、<strong>465を使う</strong>か「<strong>STARTTLS必須</strong>」にする</li>


<li>MTA間では、<strong>MTA-STSやDANE</strong>（この後で説明）で暗号化を強制する</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc4">MTA間の暗号化：日和見的TLS</span></h2>



<p class="wp-block-paragraph">MTA間の25番の配送は、<strong>日和見的TLS</strong>で行うのが普通です。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-s045.png" alt="送信者のMUAから自社のMSA/MTAまでは465/587で証明書を検証、途中の中継MTAまでは25番の日和見的TLSで証明書を見ない、相手が非対応なら平文、MXから受信箱まではサーバーの中の受け渡しで、サーバーの中は平文のまま端から端まで守るのはS/MIMEであることを示す図"/></figure>



<ul class="wp-block-list">
<li>送信側は、相手がSTARTTLSに対応していれば暗号化し、していなければ<strong>平文で送る</strong>。公開されたMTAは、TLSを必須にしてはならない（RFC 3207）とされている</li>


<li>さらに、<strong>多くの送信側のMTAは相手の証明書を検証しない</strong>。Postfixの<code>smtp_tls_security_level = may</code>では、自己署名や期限切れの証明書でも、そのまま暗号化して送る</li>


<li>盗聴は防げるが、<strong>経路上でなりすました相手（中間者）には気づけず</strong>、MXを引くDNSの応答の偽装も防げない</li>
</ul>



<p class="wp-block-paragraph"><strong>弱い区間が1つあれば、そこで読まれます</strong>。この弱点を埋めるのが、次のMTA-STSとDANEです。</p>



<p class="wp-block-paragraph">なお、TLSが守るのは<strong>区間ごとの経路だけ</strong>で、保存されたメールは守りません。端から端までは<strong>S/MIME</strong>で守ります（連載「証明書入門」第1回）。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc5">MTA-STSの仕組み</span></h2>



<p class="wp-block-paragraph"><strong>MTA-STS</strong>（RFC 8461）は、受信側のドメインが「<strong>必ずTLSで、正しい証明書を持つこのMXに送って</strong>」と宣言する仕組みです。</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-s046.png" alt="受信側がDNSに_mta-sts TXTを、Webサーバーにmode: enforceとmxとmax_ageのポリシーを置き、送信側MTAがTXTとHTTPSでポリシーを取得してmax_ageの間保持し、STARTTLSで接続先のMXと証明書を確かめ、一致すれば配送、一致しなければenforceでは配送せずtestingでは配送して報告することを示す図"/></figure>



<ol class="wp-block-list">
<li>受信側は、DNSに<code>_mta-sts</code>のTXTレコードを置き、<code>https://mta-sts.ドメイン名/.well-known/mta-sts.txt</code>にポリシーを公開する</li>


<li>送信側はポリシーをHTTPSで取得して、<code>max_age</code>の間キャッシュする</li>


<li>配送のたびに、接続先がポリシーの<code>mx</code>に一致し、<strong>公開CAが発行したMX名に一致する有効な証明書</strong>でTLSを張れるかを確かめる</li>


<li>満たさなければ、<strong>enforceモードでは配送せずにキューに残し</strong>、testingモードでは配送したうえでレポートで知らせる</li>
</ol>



<p class="wp-block-paragraph">HTTPSの証明書で守るため<strong>DNSSECは不要</strong>ですが、ポリシーをまだ持たない<strong>初回の送信は守れません</strong>（TOFU）。</p>



<h3 class="wp-block-heading"><span id="toc6">MTA-STSの設定例</span></h3>



<pre class="wp-block-code"><code>; DNS：ポリシーの有無と版（id）を知らせる
_mta-sts.example.jp.  3600 IN TXT &quot;v=STSv1; id=20260926T000000&quot;

; https://mta-sts.example.jp/.well-known/mta-sts.txt の中身
version: STSv1
mode: testing
mx: mail1.example.jp
mx: mail2.example.jp
max_age: 604800</code></pre>



<pre class="wp-block-code"><code>$ dig +short TXT _mta-sts.example.jp
$ curl -s https://mta-sts.example.jp/.well-known/mta-sts.txt
PS&gt; Resolve-DnsName _mta-sts.example.jp -Type TXT
PS&gt; (Invoke-WebRequest https://mta-sts.example.jp/.well-known/mta-sts.txt).Content</code></pre>



<ul class="wp-block-list">
<li><code>mode</code>は<strong>testing（検証するが配送は止めない）→ enforce（止める）</strong>の順に進める。やめるときは<code>none</code>。<code>max_age</code>は秒（最大31557600＝約1年）。<code>mx</code>のワイルドカードは左端の1ラベルだけ</li>


<li><strong>ポリシーを変えたらTXTのidを必ず変える</strong>。送信側はidが変わったときだけ取り直すため、忘れると古いポリシーが<code>max_age</code>の間使われ続ける</li>


<li><code>mta-sts.example.jp</code>のWebサーバーと各MXには、公開CAの有効な証明書が必要。MXをMicrosoft 365に向けているなら、<code>mx: *.mail.protection.outlook.com</code>と書く</li>
</ul>


<div class=".for-sp">
<div id="im-c929b2770f964f7f88505b9ee7500db9">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946057,type:"banner",display:"inline",elementid:"im-c929b2770f964f7f88505b9ee7500db9"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/a1cf34f40c7d6f1acda2feeee1bc3a16"></script>
<!-- admax -->
<!--
<div id="im-3b5a2348efcc4b7a9435e1334f6172f2">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946056,type:"banner",display:"inline",elementid:"im-3b5a2348efcc4b7a9435e1334f6172f2"})</script>
</div>
-->
</div>



<h3 class="wp-block-heading"><span id="toc7">TLS-RPT</span></h3>



<pre class="wp-block-code"><code>_smtp._tls.example.jp. 3600 IN TXT &quot;v=TLSRPTv1; rua=mailto:tlsrpt@example.jp&quot;</code></pre>



<pre class="wp-block-code"><code>PS&gt; Resolve-DnsName _smtp._tls.example.jp -Type TXT</code></pre>



<pre class="wp-block-code"><code>{ &quot;organization-name&quot;: &quot;Example Sender&quot;,                  （届くレポートの抜粋）
  &quot;date-range&quot;: { &quot;start-datetime&quot;: &quot;2026-09-25T00:00:00Z&quot;,
                  &quot;end-datetime&quot;: &quot;2026-09-25T23:59:59Z&quot; },
  &quot;policies&quot;: [ { &quot;policy&quot;: { &quot;policy-type&quot;: &quot;sts&quot;, &quot;policy-domain&quot;: &quot;example.jp&quot; },
      &quot;summary&quot;: { &quot;total-successful-session-count&quot;: 5326,
                   &quot;total-failure-session-count&quot;: 3 },
      &quot;failure-details&quot;: [ { &quot;result-type&quot;: &quot;certificate-expired&quot;,
          &quot;receiving-mx-hostname&quot;: &quot;mail2.example.jp&quot;, &quot;failed-session-count&quot;: 3 } ] } ] }</code></pre>



<ul class="wp-block-list">
<li><strong>TLS-RPT</strong>（RFC 8460）は、送信側が「当ドメインへのTLS接続の成否」を<strong>1日ごとにまとめて知らせてくれる</strong>仕組み。MTA-STS・DANEとセットで使う</li>


<li><code>result-type</code>で失敗の理由（certificate-expired、starttls-not-supported、sts-policy-fetch-errorなど）が分かる。上の例は、mail2の証明書切れ</li>


<li>レポートはgzipで圧縮したJSONで届く。<code>policy-type</code>はsts（MTA-STS）・tlsa（DANE）・no-policy-found</li>


<li><strong>testingモードで数週間レポートを見てからenforceに進める</strong>のが安全。Gmail・Microsoft 365はレポートを送り、Postfixも3.10から作成に対応</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc8">DANE for SMTP</span></h2>



<p class="wp-block-paragraph">もう1つの方法が<strong>DANE</strong>（RFC 7672）です。</p>



<pre class="wp-block-code"><code>; MX のホスト名とポートの下に TLSA を置く（ゾーンは DNSSEC で署名済みであること）
_25._tcp.mail1.example.jp. 3600 IN TLSA 3 1 1 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B56664C5D3D6

$ dig _25._tcp.mail1.example.jp TLSA +dnssec                    （抜粋）
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
_25._tcp.mail1.example.jp. 3600 IN TLSA 3 1 1 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B566 64C5D3D6

; 載せる値（サーバーの公開鍵の SHA-256）の作り方
$ openssl x509 -in mail1.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl dgst -sha256
PS&gt; $c = [Security.Cryptography.X509Certificates.X509Certificate2]::new(&#x27;mail1.cer&#x27;)   # PowerShell 7
PS&gt; [Convert]::ToHexString([Security.Cryptography.SHA256]::HashData($c.PublicKey.ExportSubjectPublicKeyInfo()))</code></pre>



<figure class="wp-block-image size-large"><img decoding="async" src="https://www.seichan.org/blog/wp-content/uploads/2026/09/mail04-s049.png" alt="DNSSECで署名したゾーンにMXとTLSAを置き、送信側MTAがルートからの鎖で検証したMXとTLSAを引いて、STARTTLSで受け取った証明書の公開鍵のSHA-256とTLSAの値を比べ、一致すれば配送、不一致なら送らないことと、信頼の根拠がMTA-STSは公開CA、DANEはDNSSECであることを示す図"/></figure>



<ul class="wp-block-list">
<li>MXの公開鍵（または発行したCAの公開鍵）のハッシュを<strong>TLSAレコード</strong>でDNSに載せ、送信側が照合する</li>


<li><strong>MXとTLSAの両方がDNSSECで検証できる</strong>ことが前提（連載「DNS入門」第6回・第9回）。WindowsのResolve-DnsNameはTLSAを指定できないため、確認はdigで行う。<code>dig</code>の<code>flags</code>に<code>ad</code>があれば、<strong>DNSSECで検証できた</strong>ことを示す</li>


<li>載せる値は、Linuxでは<code>openssl</code>、WindowsではPowerShell 7の.NETのメソッドで作れる</li>


<li>digは長い16進を56桁で区切って表示する（DSと同じ）。比べるときは空白を詰める</li>


<li>SMTPでは<code>3 1 1</code>（サーバーの公開鍵）か<code>2 1 1</code>（CAの公開鍵）を使う。<strong>公開CAの信頼の連鎖は見ないため、自己署名の証明書でもよい</strong>。MTA-STSと違い、<strong>初回の送信から守れる</strong></li>


<li>鍵を変えるときは、新しいTLSAを先に追加し、キャッシュが切れてから切り替える。<strong>証明書の自動更新で鍵が変わると、TLSAと合わずに配送が止まる</strong>（連載「証明書入門」第8回）</li>
</ul>



<p class="wp-block-paragraph">DNSSECで守ったDNSが、CAの代わりにサーバーの鍵を保証する、という仕組みです。</p>



<h3 class="wp-block-heading"><span id="toc9">REQUIRETLSと主要事業者の対応</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>方式</th><th>誰が宣言するか</th><th>前提</th><th>主な対応（2026年9月時点）</th></tr></thead><tbody><tr><td>日和見的 TLS</td><td>なし（送信側の判断）</td><td>なし</td><td>ほぼすべての MTA</td></tr><tr><td>MTA-STS（RFC 8461）</td><td>受信ドメイン</td><td>HTTPS と公開 CA の証明書</td><td>Gmail・Microsoft 365 が送信時に常に検証。受信側は各ドメインがポリシーを公開。Postfix は外部の追加モジュールで対応</td></tr><tr><td>DANE（RFC 7672）</td><td>受信ドメイン</td><td>DNSSEC と TLSA</td><td>Microsoft 365 が送信時に常に検証、受信側も有効にできる（2024年10月一般提供）。Postfix は標準で対応</td></tr><tr><td>TLS-RPT（RFC 8460）</td><td>受信ドメイン</td><td>—</td><td>Gmail・Microsoft 365 がレポートを送る。Postfix 3.10 以降</td></tr><tr><td>REQUIRETLS（RFC 8689）</td><td>送信者（メール1通ごと）</td><td>全区間で MTA-STS か DANE で検証した TLS</td><td>Postfix 3.11（2026年3月）が対応。大手のサービスの対応は限られる</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>REQUIRETLS</strong>は、送信者が<code>MAIL FROM:&lt;…&gt; REQUIRETLS</code>で「<strong>全区間を検証済みのTLSで運んで</strong>」と指定するSMTP拡張です。条件を満たせないMTAは、平文で送らずにエラーで差し戻します。Microsoft 365では、MTA-STS・DANEの検証で止めた送信をExchange管理センターのレポートで確認できます。</p>


<div class=".for-sp">
<div id="im-e200ff972f7b43fe9c8c2a7b60698c08">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567719,asid:1946060,type:"banner",display:"inline",elementid:"im-e200ff972f7b43fe9c8c2a7b60698c08"})</script>
</div>
</div>

<div class=".for-pc">
<!-- admax -->
<script src="https://adm.shinobi.jp/s/b379fcf4fc1a53eab29cb4ffbda7f14f"></script>
<!-- admax -->
<!--
<div id="im-4f0e910e1dca4503a73e8d9a2678879f">
  <script async src="https://imp-adedge.i-mobile.co.jp/script/v1/spot.js?20220104"></script>
  <script>(window.adsbyimobile=window.adsbyimobile||[]).push({pid:81546,mid:567718,asid:1946059,type:"banner",display:"inline",elementid:"im-4f0e910e1dca4503a73e8d9a2678879f"})</script>
</div>
-->
</div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc10">SMTP AUTH</span></h2>



<p class="wp-block-paragraph">ここからは、送信者の<strong>認証</strong>です。<strong>SMTP AUTH</strong>（RFC 4954）は、サブミッション（587・465）で送信者を確かめる仕組みです。</p>



<figure class="wp-block-table"><table><thead><tr><th>方式</th><th>送るもの</th><th>規格</th><th>注意</th></tr></thead><tbody><tr><td>PLAIN</td><td>ユーザー名とパスワードを base64 で1回で送る</td><td>RFC 4616</td><td>base64 は暗号ではない。TLS の中でだけ使う</td></tr><tr><td>LOGIN</td><td>ユーザー名とパスワードを別々に base64 で送る</td><td>標準化されていない（広く実装）</td><td>PLAIN と同じく TLS が必須</td></tr><tr><td>CRAM-MD5</td><td>チャレンジに対する MD5 の応答</td><td>RFC 2195</td><td>古い方式。使わない</td></tr><tr><td>XOAUTH2</td><td>OAuth 2.0 のアクセストークン</td><td>Google・Microsoft の独自方式</td><td>Exchange Online・Gmail が対応。Basic 認証の代わり</td></tr><tr><td>OAUTHBEARER</td><td>OAuth 2.0 のアクセストークン</td><td>RFC 7628</td><td>XOAUTH2 の標準版。Gmail が対応</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>S: 250-AUTH LOGIN XOAUTH2                  ← Exchange Online：STARTTLS 後の EHLO の応答
S: 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH    ← Gmail（587）
C: AUTH PLAIN AHVzZXJAZXhhbXBsZS5qcABQYXNzdzByZA==     ← &quot;\0user@example.jp\0Passw0rd&quot; の base64
S: 235 2.7.0 Authentication successful
S: 535 5.7.139 Authentication unsuccessful, basic authentication is disabled.   ← 失敗の例</code></pre>



<p class="wp-block-paragraph"><code>AUTH PLAIN</code>の文字列は、base64を戻せば<strong>そのままパスワードが読めます</strong>。だから<strong>TLSの中でだけ</strong>使います。Exchange Onlineは平文のEHLOにはAUTHを広告せず、STARTTLSの後にだけ示します。自前のサーバーでも同じようにし（Postfixの<code>smtpd_tls_auth_only = yes</code>）、認証したユーザーと送信元のアドレスの一致も確かめます（第8回）。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc11">Basic認証の廃止とOAuth 2.0</span></h2>



<p class="wp-block-paragraph">冒頭の「Microsoft 365のSMTP AUTHが年末に使えなくなる？」の答えです。</p>



<figure class="wp-block-table"><table><thead><tr><th>サービス</th><th>これまで</th><th>現状と日程（2026年9月時点）</th><th>代わりの方法</th></tr></thead><tbody><tr><td>Exchange Online の SMTP AUTH</td><td>ユーザー名とパスワード（Basic 認証）で送信</td><td>2026年12月末まで変更なし。12月末に既存のテナントで既定で無効（管理者が有効に戻せる）。それ以後の新規テナントでは既定で使えない（OAuth が前提）。最終的な廃止日は2027年後半に発表予定</td><td>OAuth 2.0（XOAUTH2）、Graph API、コネクターによるリレー（第10回）</td></tr><tr><td>Exchange Online の POP・IMAP・EWS 等</td><td>Basic 認証</td><td>2022年10月から無効化し、現在はすべてのテナントで無効。有効に戻せない</td><td>先進認証（OAuth）に対応したクライアント（POP・IMAP 側は連載「POP・IMAP入門」第9回（暗号化と認証）・第13回（クラウドとこれから））</td></tr><tr><td>Google（Gmail・Workspace）</td><td>「安全性の低いアプリ」としてパスワードで接続</td><td>2025年3月14日から OAuth が必須になり、2025年5月1日で対応を終了（Google の告知）</td><td>OAuth（XOAUTH2）、アプリ パスワード（2段階認証プロセスが前提）、Workspace の SMTP リレー（第10回）</td></tr></tbody></table></figure>



<pre class="wp-block-code"><code>PS&gt; Connect-ExchangeOnline
PS&gt; Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled        # 組織全体（True＝無効）
PS&gt; Get-CASMailbox -Identity scan@example.jp | Format-List SmtpClientAuthenticationDisabled   # 空欄＝組織の設定に従う</code></pre>



<ul class="wp-block-list">
<li>2026年3月1日から段階的に拒否し4月30日に廃止する、という以前の日程は、<strong>2026年1月27日の告知で撤回</strong>されている</li>


<li><strong>OAuthに対応しない複合機やアプリ</strong>は、ファームウェアの更新、コネクターによるリレー、社内のリレーサーバー、SESなどへの切り替えを検討する（第10回、第12回の問1）</li>


<li>Googleのアプリ パスワードも、推奨されない暫定策</li>
</ul>



<p class="wp-block-paragraph">まずは上のコマンドで、<strong>自社のテナントとアカウントの設定を確かめる</strong>ところから始めましょう。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc12">証明書の扱い</span></h2>



<pre class="wp-block-code"><code>$ openssl s_client -connect smtp.example.jp:587 -starttls smtp \
    -servername smtp.example.jp -verify_hostname smtp.example.jp -brief &lt;/dev/null
Protocol version: TLSv1.3
Peer certificate: CN=smtp.example.jp
Verification: OK
Verified peername: smtp.example.jp                                  （抜粋）</code></pre>



<ul class="wp-block-list">
<li><strong>証明書が要る場所</strong>：サブミッションのサーバー（587・465。クライアントが名前を検証する）、MX（MTA-STSを使うなら公開CAの証明書でMX名に一致が必須）、<code>mta-sts.</code>のWebサーバー</li>


<li><strong>SANに入れるのは、クライアントの設定やMXレコードが指すホスト名</strong>（<code>smtp.example.jp</code>・<code>mail1.example.jp</code>）で、メールアドレスのドメイン（<code>example.jp</code>）ではない（連載「証明書入門」第4回）。465は<code>-starttls smtp</code>を外して接続する</li>


<li>有効期間の短縮（連載「証明書入門」第6回）で更新が増える。<strong>自動更新の後にメールサーバーへ読み込ませる</strong>（<code>postfix reload</code>など）のを忘れない</li>
</ul>



<p class="wp-block-paragraph">Windowsで同じことを確かめる方法（PowerShellでSTARTTLSの後の証明書を見る）は、第9回で扱います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc13">考えてみよう</span></h2>



<ol class="wp-block-list">
<li>社内の複合機・監視サーバー・vCenterは、どのポート・暗号化方式・認証方式でメールを送っていますか。Exchange OnlineのSMTP AUTHのBasic認証が既定で無効になる2026年12月末に、影響を受けるものはありますか。</li>


<li>自社ドメインはMTA-STSとTLS-RPTを公開していますか。公開するなら、testingからenforceへ進める判断の材料は何ですか。</li>


<li>取引先から「貴社宛てのメールはTLSを必須にしたい」と相談されたら、何を確かめ、どう答えますか。</li>
</ol>



<p class="wp-block-paragraph"><strong>ヒント</strong>：この記事の「25・587・465の使い分け」の表、MTA-STS・TLS-RPTの設定例、Basic認証の日程と確認コマンド、<code>openssl s_client -starttls smtp</code>が手がかりです。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc14">まとめ</span></h2>



<ul class="wp-block-list">
<li>送信は<strong>465（Implicit TLS）か587（STARTTLS）＋SMTP AUTH</strong>。「SSL/TLS」は465、「STARTTLS」は587と組み合わせる</li>


<li>STARTTLSは<strong>平文の段階を狙われる</strong>。送信は465かSTARTTLS必須に</li>


<li>MTA間は<strong>日和見的TLS</strong>で、多くは証明書を見ない。強制するなら<strong>MTA-STS（公開CA）かDANE（DNSSEC）</strong></li>


<li>MTA-STSは<strong>testing→enforce</strong>。変えたら<strong>idを変える</strong>。<strong>TLS-RPT</strong>で失敗を知る</li>


<li>Exchange OnlineのSMTP AUTHのBasic認証は<strong>2026年12月末に既定で無効</strong>。OAuth・コネクター・リレーへ</li>


<li>証明書のSANは<strong>ホスト名</strong>。自動更新の後は<strong>MTAに読み込ませる</strong></li>
</ul>



<p class="wp-block-paragraph">次回は、メールの送信者を名乗るドメインが本物かを確かめる、<strong>送信ドメイン認証（SPF・DKIM・DMARC）</strong>を扱います。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc15">連載「メール入門」全12回</span></h2>



<ol class="wp-block-list">
<li><a href="https://www.seichan.org/2026/10/mail-01-overview.html" target="_blank">メールが届くまで</a></li>


<li><a href="https://www.seichan.org/2026/10/mail-02-smtp-dialogue.html" target="_blank">SMTPのやり取り</a></li>


<li><a href="https://www.seichan.org/2026/10/mail-03-message.html" target="_blank">メッセージの構造</a></li>


<li><strong>ポートと暗号化・認証（この記事）</strong></li>


<li>送信ドメイン認証 前編</li>


<li>送信ドメイン認証 後編</li>


<li>迷惑メール対策と配信</li>


<li>MTAの運用</li>


<li>コマンドで調べる</li>


<li>クラウドと現代のメール</li>


<li>メールのトラブルシュート</li>


<li>メールの設計演習</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://www.seichan.org/2026/10/mail-04-ports-tls-auth.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
