Labee Dev Toolbox
技術ノートガイド用語解説
無料で試す
  1. ホーム
  2. / 用語解説
  3. / SMTP AUTH(SMTP 認証)
メール

SMTP AUTH(SMTP 認証)

2026年4月25日 更新

概要

SMTP AUTH(SMTP Authentication) は、SMTP でメールを送信する前にユーザー名とパスワードで認証を行う拡張仕様です。RFC 4954(2007年)で定義されており、SMTP の AUTH コマンドとして実装されています。

SMTP は元々認証の仕組みを持たないプロトコルでした。ポート 25 で接続してくる送信者が誰であるかを確認する手段がなく、これがオープンリレー(第三者中継)の脆弱性の原因になっていました。SMTP AUTH は、正規のユーザーだけがメールサーバーを経由して送信できるようにする仕組みです。

SMTP AUTH はポート 587(Submission)とポート 465(Submissions)で使われます。RFC 6409 は Submission ポートでの認証を必須としており、ポート 25 でのメール中継とは明確に区別されています。現在では主要メールプロバイダーがポート 587/465 での SMTP AUTH を前提としており、未認証のメール送信は受け付けません。

仕組み

SMTP AUTH は EHLO の機能交渉で AUTH を宣言し、クライアントが選択した認証メカニズムで認証を行います。

sequenceDiagram
    participant C as メールクライアント
    participant S as メールサーバー(587)

    C->>S: TCP 接続
    S-->>C: 220 Ready
    C->>S: EHLO
    S-->>C: 250-AUTH PLAIN LOGIN XOAUTH2
    C->>S: STARTTLS
    Note over C,S: TLS ハンドシェイク
    C->>S: EHLO(TLS 内で再送)
    S-->>C: 250-AUTH PLAIN LOGIN XOAUTH2
    C->>S: AUTH PLAIN(Base64 認証データ)
    S-->>C: 235 Authentication successful
    Note over C: 認証済み — メール送信可能

認証の流れ

SMTP AUTH を使ったメール送信の流れを示します。

  1. クライアントがサーバーのポート 587 または 465 に TCP 接続する
  2. サーバーが 220 レスポンスで接続を受け付ける
  3. クライアントが EHLO コマンドを送信する
  4. サーバーが対応する機能一覧を返す。AUTH 行にサポートする認証メカニズムを列挙する
  5. クライアントが STARTTLS で TLS 暗号化を開始する(ポート 587 の場合)
  6. TLS が確立した後、再度 EHLO を送信する
  7. クライアントが AUTH LOGIN または AUTH PLAIN で認証を行う
  8. サーバーが 235 Authentication successful を返す
  9. 認証済みの状態で MAIL FROM、RCPT TO、DATA でメールを送信する

手順 4 で返る AUTH 行の例を示します。

250-AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
250-STARTTLS
250-SIZE 35882577
250 ENHANCEDSTATUSCODES

手順 7 の認証は、TLS で暗号化された接続内で行われます。ポート 465(暗黙的 TLS)では接続開始時から暗号化されているため、TLS ネゴシエーションは不要です。

認証メカニズム

SMTP AUTH で使われる主な認証メカニズムを示します。

メカニズム定義説明
PLAINRFC 4616ユーザー名とパスワードを Base64 エンコードで送信。TLS なしでは使用不可
LOGIN非標準PLAIN と同様だが、ユーザー名とパスワードを別々に送信。古いクライアント用
XOAUTH2Google 独自OAuth 2.0 のアクセストークンを使って認証。パスワードの代わりにトークンを使用
OAUTHBEARERRFC 7628OAuth 2.0 の Bearer トークンを使う標準仕様

PLAIN 認証の送信データは AuthorizationID\0AuthenticationID\0Password を Base64 エンコードしたものです。認証データ自体は暗号化されていませんが、TLS 接続内で送信されるためネットワーク上での漏洩リスクはありません。

LOGIN 認証は PLAIN 認証と同等のセキュリティレベルですが、チャレンジ・レスポンス方式でユーザー名とパスワードを別々に送信します。Microsoft Outlook の古いバージョンとの互換性のために残されています。

Submission ポートと中継ポートの違い

SMTP AUTH は Submission ポート(587/465)でのみ使われます。中継ポート(25)と Submission ポートの違いを次に示します。

項目ポート 25(中継)ポート 587/465(Submission)
用途サーバー間のメール転送クライアントからのメール送信
認証任意(通常は認証なし)必須
暗号化STARTTLS(任意)STARTTLS または暗黙的 TLS
OP25B多くの ISP がブロックブロックされない

ISP やクラウドプロバイダーはスパム対策としてポート 25 のアウトバウンド接続をブロックしています(OP25B)。メールクライアントからの送信にはポート 587 または 465 を使います。

PLAIN 認証の例

SMTP AUTH PLAIN の認証フローを示します。

C: EHLO mail.example.com
S: 250-AUTH PLAIN LOGIN
S: 250 OK

C: AUTH PLAIN AGFsaQBwYXNzd29yZA==
S: 235 Authentication successful

C: MAIL FROM:<sender@example.com>
S: 250 OK
C: RCPT TO:<recipient@example.net>
S: 250 OK
C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>
C: From: sender@example.com
C: Subject: Test message
C:
C: Hello, ...
C: .
S: 250 OK
C: QUIT
S: 221 Bye

AUTH PLAIN の後の Base64 文字列は、認証データ(AuthorizationID\0AuthenticationID\0Password)をエンコードしたものです。ネットワーク上は TLS で暗号化されているため、Base64 デコードされても平文で送信されているわけではありません。

設定例

Postfix と Dovecot による SMTP AUTH の設定例を示します。

Postfix での Submission ポート有効化

Postfix でポート 587 の Submission を有効にする設定です。

# /etc/postfix/master.cf
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

smtpd_tls_security_level=encrypt は TLS 暗号化を必須にします。smtpd_sasl_auth_enable=yes で SMTP AUTH を有効にし、認証済みのユーザーのみが送信できるようにしています。

Postfix でのポート 465(Submissions)有効化

ポート 465 の暗黙的 TLS を有効にする設定です。

# /etc/postfix/master.cf
submissions inet n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

smtpd_tls_wrappermode=yes で接続開始時から TLS を使用します。

Gmail の SMTP AUTH 設定

Gmail 経由でメールを送信する場合の SMTP 設定です。

サーバー: smtp.gmail.com
ポート: 587(STARTTLS)または 465(暗黙的 TLS)
認証: PLAIN または XOAUTH2
ユーザー名: example@gmail.com
パスワード: アプリパスワード(2段階認証有効時)または OAuth トークン

Google は 2024 年 9 月 30 日に Less Secure Apps(低セキュリティのアプリアクセス)を廃止しました。現在は、2 段階認証を有効にしたうえでのアプリパスワード、または OAuth 2.0 ベースの認証(XOAUTH2・OAUTHBEARER)が必要です。

確認方法

SMTP AUTH が有効になっているかを確認するには、サーバーの EHLO 応答を確認します。

openssl s_client -connect smtp.example.com:587 -starttls smtp -quiet

接続後に EHLO test を入力します。

250-smtp.example.com
250-AUTH PLAIN LOGIN
250-SIZE 35882577
250-STARTTLS
250 ENHANCEDSTATUSCODES

250-AUTH 行が含まれていれば、SMTP AUTH が有効です。サポートする認証メカニズム(PLAIN、LOGIN 等)が列挙されます。

ポート 465(暗黙的 TLS)の場合は -starttls オプションを外します。

openssl s_client -connect smtp.example.com:465 -quiet

送信ドメインの SPF・DKIM・DMARC 設定を確認するには、Labee Dev Toolbox の Mail Auth API を使います。

curl "https://labee.dev/api/mail-auth?domain=example.com"
{
  "success": true,
  "data": {
    "spf": {
      "record": "v=spf1 include:_spf.google.com ~all",
      "exists": true
    },
    "dkim": {
      "mode": "auto",
      "record": null,
      "exists": false,
      "selector": "",
      "matches": [],
      "checkedSelectors": ["google", "selector1", "selector2", "s1", "s2", "k1"],
      "exhaustive": false
    },
    "dmarc": { "record": "v=DMARC1; p=none; rua=mailto:dmarc@example.com", "exists": true, "source": "exact", "domain": "example.com" },
    "bimi": { "record": null, "exists": false }
  },
  "error": null,
  "meta": { "responseTime": 98 }
}

SMTP AUTH で認証して送信したメールが SPF・DKIM・DMARC を通過するかは、ここで確認した認証設定と送信パスの構成に依存します。

よくある問題

SMTP AUTH の運用では、平文認証のリスク、ポートの誤設定、OP25B による送信不能が頻出します。

TLS なしで PLAIN 認証を許可している

SMTP AUTH PLAIN または LOGIN は認証データを Base64 エンコードで送信します。Base64 は暗号化ではなくエンコードであるため、TLS なしの接続ではユーザー名とパスワードが平文でネットワークを流れます。Postfix では smtpd_tls_security_level=encrypt を設定し、Submission ポートで TLS を必須にします。TLS なしで認証を許可する設定は、認証情報の漏洩に直結します。

ポート 25 で SMTP AUTH を期待している

メールクライアントの設定でポート 25 を指定している場合、多くのプロバイダーが OP25B でブロックしているため接続できません。ポート 587(STARTTLS)または 465(暗黙的 TLS)に変更します。ポート 25 はサーバー間の中継用であり、クライアントからの送信には使われません。

アプリパスワードの期限切れまたは無効化

Google や Microsoft のメールサービスは、2段階認証を有効にしたアカウントでアプリパスワードの発行を求めます。アプリパスワードが期限切れになるか無効化されると、SMTP AUTH が 535 Authentication failed を返します。パスワードの再発行または OAuth 2.0 ベースの認証への移行が必要です。

Submission ポートがファイアウォールでブロックされている

企業ネットワークのファイアウォールがポート 587 や 465 のアウトバウンド接続をブロックしている場合、メールクライアントからサーバーに接続できません。ポート 587 と 465 の両方を許可するか、VPN 経由で接続します。近年はポート 465 のみを許可するネットワークも増えており、両方を試すことが推奨されます。

実際のドメインで確認してみる

登録不要、無料です。ドメイン名を入れるだけで外部からの見え方を確認できます。

無料で試す

Pro プラン(準備中)

DNS 変更の自動検知・SSL 期限アラート・複数ドメイン管理など、継続して確認し続けるための機能を準備中です。

関連用語

メール配信インフラ

SMTP(Simple Mail Transfer Protocol)

メールを送信・中継するための標準プロトコル。ポート 25(中継)、587(投函)、465(暗黙 TLS)を使い分ける。RFC 5321 で標準化。

メール配信インフラ

MTA(Mail Transfer Agent)

SMTP を使ってメールを中継・配送するサーバーソフトウェア。Postfix や Exchange が代表的な実装。

メール配信インフラ

MSA(Mail Submission Agent)

メールクライアントから送信メールを受け付け、認証と送信ポリシーを適用するサーバー。ポート 587 で SMTP AUTH を処理する。

メール認証

STARTTLS

既存の平文プロトコルを TLS 暗号化にアップグレードする SMTP 拡張コマンド。メール配送経路の暗号化に広く使われる。

コンテンツ 技術ノート ガイド 用語解説
ツール ツール一覧 API Reference
Labee 日本語トップ Labee LLC
© 2026 Labee LLC . All rights reserved.
ホーム ブログ ガイド 用語集