Guide

Gmail SMTP設定 2026:ポート・TLS・認証

開発者向け Gmail SMTP設定の完全リファレンス:smtp.gmail.com の設定値、ポート 587 と 465 の構成、アプリパスワードの設定手順、OAuth 2.0 の要件、送信制限、よくあるエラーコード、そして設定不要の CLI という代替手段まで解説します。

Written by Qasim Muhammad Staff SRE

VerifiedCLI 3.1.1 · Gmail · last tested May 21, 2026

本ガイドで使用するコマンドリファレンス:SMTP なしで送信する nylas email send、OAuth 認証を行う nylas auth login、ヘッドレス環境で API キーを設定する nylas auth config、メッセージを検索する nylas email search

Gmail の SMTP サーバー設定とは?

Gmail の送信メールサーバーは smtp.gmail.com です。STARTTLS 暗号化のポート 587 と、暗黙的 SSL/TLS のポート 465 で接続を受け付けます。どちらのポートも、アプリパスワードまたは OAuth 2.0 アクセストークンによる認証が必要です。標準の Gmail アカウントでは、ポート 25 での平文接続は利用できません。これらの設定値は Google が標準化して以来変わっていませんが、認証方法は 2022 年以降大幅に絞り込まれています。

設定項目
SMTP サーバーsmtp.gmail.com
ポート(STARTTLS)587
ポート(SSL/TLS)465
暗号化TLS 1.2 以上が必須
認証アプリパスワードまたは OAuth 2.0
ユーザー名完全な Gmail アドレス(you@gmail.com
1 日の上限(個人)500 通
1 日の上限(Workspace)2,000 通

Google は、より高いスループットを必要とする Workspace アカウント向けに smtp-relay.gmail.com という SMTP リレーも運用しています。このリレーはユーザーあたり 1 日最大 10,000 受信者をサポートし、ユーザー認証情報の代わりに IP ベースの認証を利用できます。 Google の Workspace ドキュメントによると、このリレーは既知の IP 範囲から送信するプリンター、スキャナー、社内アプリ向けに用意されています。

最も一般的な構成は、ポート 587 と STARTTLS の組み合わせです。以下は、多くの開発者が sendmail の代替として使う軽量 SMTP クライアント msmtp での設定例です。設定ファイルは ~/.msmtprc で、書くのにかかる時間は 2 分ほどです。

~/.msmtprc
# ~/.msmtprc — Gmail SMTP via msmtp
account        gmail
host           smtp.gmail.com
port           587
tls            on
tls_starttls   on
auth           on
user           you@gmail.com
password       abcd-efgh-ijkl-mnop
from           you@gmail.com
logfile        ~/.msmtp.log

account default : gmail

SMTP 用の Gmail アプリパスワードを設定するには?

Gmail のアプリパスワードは、SMTP 接続時にアカウントのパスワードの代わりに使う 16 文字のコードです。2 段階認証を有効にすると Google が生成してくれます。アプリパスワードは現在、個人 Gmail アカウントで唯一のパスワードベースの SMTP 認証方法です。Google は 2024 年 9 月 30 日に「安全性の低いアプリ」のアクセス無効化を開始し、同年 10 月にロールアウトを一時停止したのち、2025 年 5 月 1 日に完全に終了しました — これにより、通常の Gmail パスワードで SMTP 接続するという従来の選択肢はなくなりました。

アプリパスワードの作成にかかる時間は 3 分ほどです。先に 2 段階認証を有効にしておく必要があり、これは 2021 年以降すべての新規アカウントで Google が必須としています。手順は次のとおりです:

  1. myaccount.google.com/security にアクセスし、2 段階認証が有効になっていることを確認します。
  2. myaccount.google.com/apppasswords を開きます。
  3. アプリの名前(例:"SMTP script")を入力し、作成をクリックします。
  4. 16 文字のパスワードをコピーします。表示されるのは一度だけで、後から再表示はできません。
  5. このパスワードをクライアントの SMTP パスワードとして使用します。ユーザー名は完全なメールアドレスです。

Google のアプリパスワードのドキュメントによると、アプリパスワードは「推奨されず、ほとんどの場合は不要」とされています。Google が望ましいとするのは OAuth 2.0 でのサインインです。また、Google アカウントのパスワードを変更するとアプリパスワードは自動的に失効するため、それを使った SMTP 連携は新しいコードを生成するまで動かなくなります。

アプリパスワードは、SMTP プロトコルのテストツール swaks で検証できます。Gmail の SMTP サーバー経由でメッセージを 1 通送信し、SMTP ハンドシェイクの各ステップを表示するため、認証エラーの箇所を簡単に特定できます。テストにかかるのは 5 秒ほどです。

Terminal
# Test Gmail SMTP auth with swaks
swaks --to recipient@example.com \
  --from you@gmail.com \
  --server smtp.gmail.com \
  --port 587 \
  --tls \
  --auth LOGIN \
  --auth-user you@gmail.com \
  --auth-password "abcd-efgh-ijkl-mnop"

# Expected output (successful):
# -> AUTH LOGIN
# <- 235 2.7.0 Accepted
# -> MAIL FROM:<you@gmail.com>
# <- 250 2.1.0 OK

Gmail SMTP の送信制限は?

個人の Gmail アカウントは、24 時間のローリングウィンドウで 500 通まで送信できます。Google Workspace アカウントは 1 日 2,000 通です。上限を超えると Gmail は一時的なエラーを返し、送信を最大 24 時間停止します。停止中も受信は通常どおり機能します。試用版の Workspace アカウントは、累計支払額が 100 米ドルに達するまで 1 日 500 通に制限されます。

制限個人 GmailGoogle Workspace
1 日あたりのメッセージ数5002,000
1 通あたりの受信者数5002,000(外部は 500)
1 日あたりの受信者数50010,000
1 日あたりの外部ユニーク受信者数5003,000
1 日あたりの差し込みメールN/A1,500
SMTP の 1 通あたり受信者数100100
添付ファイルのサイズ上限25 MB25 MB

SMTP 接続での 1 通あたり 100 受信者という上限は、Gmail のウェブ UI で許可される 500 より低い値です。 Google の Workspace 送信制限ドキュメントによると、SMTP・POP・IMAP のユーザーはアカウントの種類にかかわらず 1 通あたり 100 受信者に制限されます。スクリプトが 100 件を超えるアドレスに送信する場合は、受信者をバッチに分割してください。

Gmail の受信者に 1 日 5,000 通超を送る一括送信者には、送信ドメインでの SPF・DKIM・DMARC 認証と、ワンクリック登録解除ヘッダーが Google により義務付けられています。この要件は 2024 年 2 月に発効しました。クォータを超過した送信者には SMTP エラーコード 4.7.28 が返されます — これは一時的な拒否で、24 時間のウィンドウがリセットされると解消します。

Gmail SMTP の認証が失敗するのはなぜ?

Gmail SMTP の認証が失敗する主な原因は 4 つあります:アプリパスワードの未設定、認証情報の誤り、2 段階認証の無効化、同時接続数の超過です。Google はそれぞれのケースで固有の SMTP エラーコードを返します。見方さえ分かれば、エラーメッセージは何が起きたかを正確に教えてくれます。最もよく遭遇するコードを以下にまとめます。

エラーコードメッセージ原因対処
534-5.7.9"Application-specific password required"2 段階認証は有効だがアプリパスワードがないmyaccount.google.com/apppasswords でアプリパスワードを生成する
535-5.7.8"Username and Password not accepted"パスワードの誤り、アプリパスワードの失効、またはアカウントパスワードの変更新しいアプリパスワードを生成する
421-4.7.0"Too many concurrent SMTP connections"1 アカウントから 10 を超える同時 SMTP セッション接続プールのサイズを減らすか、指数バックオフを追加する
550-5.4.5"Daily sending quota exceeded"1 日 500 通(個人)または 2,000 通(Workspace)の上限に到達ローリングウィンドウのリセットを最大 24 時間待つ
530-5.7.0"Must issue a STARTTLS command first"STARTTLS なしでポート 587 に接続しているクライアントで STARTTLS を有効にするか、暗黙的 SSL のポート 465 に切り替える

2026 年現在、最も多いエラーは 534-5.7.9 です。開発者が古いチュートリアルから、通常の Gmail パスワードを使う SMTP の例をコピーしてしまうためです。これらの例は Google が「安全性の低いアプリ」のアクセスを許可していた間は動作していましたが、そのアクセスは 2024 年 9 月 30 日に段階的な無効化が始まり、2025 年 5 月 1 日に完全に終了しました。現在、Gmail へのすべての SMTP 接続にはアプリパスワードまたは OAuth 2.0 トークンが必要です。

SMTP エラーを対話的に診断するには、openssl で生の TLS 接続を開きます。Google のサーバーが返す SMTP バナーとエラーレスポンスをそのまま確認できるため、高レベルのクライアントが元のエラーコードを隠してしまう場合に便利です。このコマンドは暗黙的 TLS でポート 465 に接続します。

Terminal
# Open a raw TLS connection to Gmail SMTP
openssl s_client -connect smtp.gmail.com:465 -quiet

# You'll see the SMTP banner:
# 220 smtp.gmail.com ESMTP ... - gsmtp

# Authenticate manually:
EHLO localhost
AUTH LOGIN
# Enter base64-encoded username and password
# Google returns 235 on success or 535-5.7.8 on failure

Gmail SMTP は廃止されるのか?

Gmail SMTP 自体が廃止される予定はありません。smtp.gmail.com サーバーは 2026 年 5 月時点でもポート 587 と 465 での接続を受け付けています。変わったのは認証の方法です。Google は過去 4 年間で簡易な認証方法を段階的に廃止し、残されたのはアプリパスワードと OAuth 2.0 だけです。方向性は明確で、OAuth が本来想定された道筋です。

Google がこれまでに停止してきたものの時系列は次のとおりです:

日付出来事
2022 年 5 月 30 日新規アプリによる「安全性の低いアプリ」アクセスの有効化を Google が停止
2024 年 6 月 15 日Workspace 管理コンソールから「安全性の低いアプリ」の切り替えオプションを削除
2024 年 9 月 30 日Google Workspace アカウントでの「安全性の低いアプリ」アクセス終了を発表。ロールアウトは 2024 年 10 月に一時停止
2025 年 5 月 1 日最終施行:すべての Workspace アカウントで「安全性の低いアプリ」のサポートを終了

アプリパスワードは今も利用できますが、Google 自身のドキュメントが「推奨されない」としています。リスクもあります:16 文字のコードを知っている人は誰でもアカウントへの完全な SMTP アクセスを持ち、アプリパスワードを特定の操作だけに限定することはできません。OAuth 2.0 なら必要なスコープだけをリクエストでき(例:SMTP 用の https://mail.google.com/)、トークンは 3,600 秒で期限切れになります。新しく構築するなら OAuth を使ってください。

Workspace 管理者向けには、Google の 2023 年 9 月のブログ記事 が移行パスを明確にしています:メールアクセスが必要なアプリは OAuth または Gmail API を使うべきです。OAuth に対応できないプリンターやスキャナーは、代わりに IP ベース認証の smtp-relay.gmail.com リレーを使います。

SMTP を設定せずにメールを送信するには?

Nylas CLI は、SMTP 設定もアプリパスワードも OAuth トークン管理もなしで、Nylas API 経由でメールを送信します。1 コマンドでブラウザベースの OAuth 認証が完了し、以降の送信では 3,600 秒ごとに自動更新される保存済み認証情報が使われます。インストールから最初の送信までのセットアップ全体にかかる時間は 2 分未満です。Gmail、Outlook、Exchange、Yahoo、iCloud、IMAP プロバイダーに対応しています。

Homebrew で CLI をインストールし、ガイド付きセットアップを実行します。nylas init コマンドが、アカウントの作成、API キーの設定、メールボックスの接続まで案内してくれます。すでに Nylas API キーがある場合は、nylas auth config に直接進めます。その他のインストール方法(シェルスクリプト、PowerShell、Go)は スタートガイドをご覧ください。

Terminal
# Install Nylas CLI
brew install nylas/nylas-cli/nylas

# Guided setup (creates account, API key, connects mailbox)
nylas init

# Or, if you already have an API key
nylas auth config --api-key nyl_abc123
nylas auth login

# Send an email — no SMTP, no app password, no port config
nylas email send \
  --to recipient@example.com \
  --subject "Sent without SMTP" \
  --body "No smtp.gmail.com, no port 587, no app password."

# Send non-interactively (for scripts and cron jobs)
nylas email send \
  --to ops@company.com \
  --subject "Deploy complete" \
  --body "Build #1847 deployed at $(date)" \
  --yes

SMTP と API ベースの送信の違いは、無人で動くスクリプトでは特に大きくなります。SMTP では、認証情報の管理(アカウントパスワードを変更すると壊れるアプリパスワード)、接続プーリング(Gmail の同時 SMTP セッションは 10 まで)、TLS ネゴシエーションを自分で扱うことになります。CLI なら 1 コマンドがそのすべてを処理します。ツールは OAuth トークンをシステムキーリングに保存し、期限切れ前に更新します。

現在 smtplib と Gmail の SMTP 設定を使っている Python スクリプトでは、SMTP のブロックをサブプロセス呼び出しに置き換えられます。これでコードから SMTP 設定とアプリパスワードを完全に排除できます。完全な移行パターンは SMTP なしで Python からメールを送信のガイドで解説しています。

send_email.py
# Before: 15 lines of smtplib + Gmail SMTP config
import smtplib
from email.mime.text import MIMEText

msg = MIMEText("Hello from Python")
msg["Subject"] = "Test"
msg["From"] = "you@gmail.com"
msg["To"] = "recipient@example.com"

with smtplib.SMTP("smtp.gmail.com", 587) as server:
    server.starttls()
    server.login("you@gmail.com", "abcd-efgh-ijkl-mnop")  # app password
    server.send_message(msg)

# After: 1 subprocess call, no SMTP, no password in code
import subprocess
subprocess.run([
    "nylas", "email", "send",
    "--to", "recipient@example.com",
    "--subject", "Test",
    "--body", "Hello from Python",
    "--yes"
], check=True)

SMTP がどうしても必要なユースケース(メールサーバーのテスト、プリンター連携、サブプロセスを呼べないレガシーアプリ)では、このページ冒頭の設定値がまさに必要な情報です。それ以外のすべてでは、API 経由の送信が可動部品を取り除きます:覚えるポートも、ネゴシエートする TLS も、ローテーションするアプリパスワードもありません。

次のステップ