Guide

Outlook SMTP設定:サーバー・ポート・TLS

開発者向けの Outlook SMTP 完全リファレンス:smtp.office365.com の設定、ポート 587 + STARTTLS、Microsoft が 2022 年 10 月に基本認証を廃止して以降の Modern Auth(OAuth 2.0)要件、Microsoft 365 と Outlook.com の送信制限、よくある SMTP エラーコード、そして設定不要の代替手段を解説します。

Written by Nick Barraclough Product Manager

VerifiedCLI 3.1.11 · Outlook · last tested May 23, 2026

このガイドで使用するコマンドリファレンス: SMTP なしで送信する nylas email send OAuth 認証を行う nylas auth login メールを閲覧する nylas email list

Outlook SMTP設定の内容は?

Outlook の SMTP サーバーは smtp.office365.com です。Microsoft はクライアント送信用のポート 25 を非推奨とし、Exchange Online ではポート 465 よりもポート 587 + STARTTLS を推奨しているため、サポートされる構成はポート 587 + STARTTLS のみです。認証には OAuth 2.0 の Modern Auth が必須です。以下の表は、任意の SMTP クライアントやライブラリを設定するためのクイックリファレンスです。

設定項目
SMTP サーバーsmtp.office365.com
ポート587
暗号化STARTTLS(必須)
認証OAuth 2.0(Modern Auth)
ユーザー名メールアドレス全体(user@domain.com)
IMAP サーバーoutlook.office365.com(ポート 993、TLS)
POP3 サーバーoutlook.office365.com(ポート 995、TLS)

IMAP と POP3 のサーバーは、SMTP サーバーとは別のホスト名(outlook.office365.com)を使います。同じホスト名だと思い込んでいる開発者がよくつまずくポイントです。Microsoft の Exchange Online ドキュメントによると、SMTP AUTH はテナント管理者がメールボックスごとに明示的に有効化する必要があります。新規の Microsoft 365 テナントではデフォルトで無効です。

Microsoft の基本認証廃止は SMTP アクセスをどう変えたか?

Microsoft は 2022 年 10 月 1 日、Exchange Online の各プロトコルで基本認証を完全に無効化しました。それ以前は、SMTP クライアントはユーザー名とパスワードを平文(AUTH LOGIN または AUTH PLAIN による base64 エンコード)で送信できました。廃止後は、すべての SMTP 接続が XOAUTH2 SASL メカニズムを使った OAuth 2.0 アクセストークンでの認証を必須とします。この変更により、数千ものスクリプト、プリンター、業務アプリが一夜にして動作しなくなりました。

Modern Auth で SMTP 経由のメール送信を行うには、SMTP.Send 委任アクセス許可を持つ Azure AD アプリ登録が必要です。トークンリクエストは https://login.microsoftonline.com/{tenant}/oauth2/v2.0/tokenscope=https://outlook.office365.com/.default を付けて送信します。アクセストークンは 3,600 秒(1 時間)で期限切れになるため、本番コードにはリフレッシュトークンのループが必要です。以下の例は、STARTTLS へのアップグレード後の SMTP EHLO ハンドシェイクを示しています。

# SMTP Modern Auth ハンドシェイク(概念図)
EHLO client.example.com
STARTTLS
EHLO client.example.com
AUTH XOAUTH2 <base64-encoded-oauth2-token>

# base64 トークンの形式:
# user=user@contoso.com^Aauth=Bearer <access_token>^A^A
# ^A は ASCII の SOH 文字(0x01)

XOAUTH2 のトークン形式は、標準的な Bearer ヘッダーと同じではありません。user=auth=Bearer の各フィールドは SOH(0x01)文字で区切り、文字列全体を base64 エンコードします。このエンコードの誤りが 535 5.7.3 Authentication unsuccessful エラーの最大の原因です。Microsoft の XOAUTH2 ドキュメントには、この文字列を正しく構築する Python サンプルが掲載されています。

Outlook SMTP のよくあるエラーと対処法は?

Outlook SMTP は、RFC 5321 のエラーコードに Microsoft 固有の拡張ステータスコードを付けて返します。5.7.x 系は認証と認可の失敗を表し、基本認証廃止以降もっとも多く発生しています。以下の表は、Microsoft の NDR リファレンスからよくあるエラー 8 件をまとめたものです。

エラーコード意味対処法
535 5.7.3認証に失敗OAuth 2.0 の Modern Auth に切り替える。基本認証は恒久的に無効
550 5.7.501メールボックスで SMTP AUTH が無効管理者が Set-CASMailbox -SmtpClientAuthenticationDisabled $false で SMTP AUTH を有効化する
550 5.1.1受信者が見つからない受信者アドレスが対象ドメインに存在するか確認する
421 4.7.0接続がスロットリングされた60 秒待ってから再試行し、送信レートを下げる
550 5.7.708テナントの送信メールがブロックされた管理者が Security & Compliance Center でブロックを解除する
554 5.2.0メッセージサイズ超過メッセージを 25 MB 未満に抑える(base64 のオーバーヘッド込み 35 MB = デコード後約 25 MB)
452 4.5.3受信者数が多すぎるテナントごとの受信者上限内に抑える(デフォルトは可変、最大 1,000)
550 5.7.520スパムと判定されたSPF、DKIM、DMARC レコードを確認し、一括送信レートを下げる

もっとも多いのは 535 5.7.3 エラーで、2022 年 10 月以降のサポートチケットの大半を占めています。このエラーが出る場合、コードがまだ平文のユーザー名とパスワードを送信しています。対処法は、Azure AD アプリを登録し、OAuth 2.0 トークンを取得して、前のセクションで説明した XOAUTH2 メカニズムを使うことです。

Microsoft 365 の送信制限は?

Microsoft 365 は、SMTP AUTH 送信に対してメールボックス単位とテナント単位のレート制限を適用しています。制限値は Microsoft 365 Business プランと無料の Outlook.com アカウントで異なります。いずれかの制限を超えると、421 4.7.0 のスロットル応答または 550 の拒否が返されます。以下の表は、Microsoft の Exchange Online 制限ドキュメントに基づく現在の制限値です。

制限Microsoft 365Outlook.com
1 日あたりの受信者数10,000サブスクリプションにより異なる
1 通あたりの受信者数最大 1,000(管理者が設定可能)100
1 分あたりのメッセージ数3030
最大メッセージサイズ25 MB25 MB
最大添付ファイル数250250

自動通知システムを構築する開発者が驚くのが、1 分あたり 30 通の制限です。これはテナント単位ではなくメールボックス単位の上限なので、複数のメールボックスに送信を分散させれば回避できます。大量のトランザクションメールには、SMTP AUTH ではなく Azure Communication Services リソースまたはサードパーティの ESP を使うことを Microsoft は推奨しています。

Outlook SMTP をスキップすべきなのはどんな場合?

smtp.office365.com 経由の SMTP AUTH には、Azure AD アプリの登録、OAuth 2.0 トークン管理、XOAUTH2 エンコード、メールボックスごとの管理者による有効化が必要です。Outlook アカウントからメールを送信するスクリプト、CI/CD パイプライン、開発者ツールを作るなら、これらをすべて省略できます。CLI はブラウザーで OAuth 認証を行い、トークンをキャッシュし、更新を自動的に処理します。

以下の例は、2 つのコマンドで Outlook アカウントからメールを送信します。1 つ目で認証して認証情報をローカルに保存し、2 つ目で SMTP ではなく HTTPS 経由でメッセージを送信します。ポート 587 も、STARTTLS ハンドシェイクも、XOAUTH2 トークンのエンコードも、管理者による有効化ステップも不要です。

# インストール(macOS または Linux)
brew install nylas/nylas-cli/nylas

# Outlook アカウントを認証
nylas auth login --provider microsoft

# メールを送信
nylas email send \
  --to recipient@example.com \
  --subject "Quarterly report" \
  --body "See the attached spreadsheet."

# 配信を確認するため最近のメールを一覧表示
nylas email list --limit 5

同じコマンドが Gmail、Yahoo、iCloud、Exchange、IMAP の各アカウントでも動作します。生の SMTP が必須のレガシーシステム向けに Outlook の SMTP 設定が必要な場合は、このページ冒頭のクイックリファレンス表を使ってください。それ以外のケースでは、SMTP をスキップすることで、Microsoft の基本認証廃止が持ち込んだ認証の複雑さを取り除けます。

次のステップ