SMTP

メールサーバー | IT用語集

この用語をシェア

SMTPとは

SMTP(Simple Mail Transfer Protocol)は、電子メールの送信・転送に使用される標準プロトコルです。1982年にJon PostelによってRFC 821として定義され、現在はSMTP拡張仕様であるESMTP(Extended SMTP)を取り込んだRFC 5321(2008年)が標準として運用されています。メールサーバー同士(MTA間)の通信や、メールクライアント(またはアプリケーション)からメールサーバーへの送信に使用される、インターネットメールの根幹を成すプロトコルです。

SMTPはあくまで「送信・転送」を担うプロトコルであり、受信者がメールを読み出す仕組み(POP3IMAP)とは役割が明確に分離されています。この非対称性はインターネットメールの設計思想の根幹であり、自社メールサーバーを構築する際にも「SMTPは送信経路、POP3/IMAPは受信経路」という区分を理解しておくことが、トラブルシューティングの第一歩になります。

SMTPの仕組み

エンベロープとヘッダーの違い

SMTPを理解する上でつまずきやすいのが、エンベロープ(封筒)情報メールヘッダーが別物である点です。MAIL FROMRCPT TOで指定するアドレスは配送先を決めるための「封筒の宛名」にあたるエンベロープ情報で、実際に配送処理そのものを制御します。一方、メール本文中のFrom:To:ヘッダーは受信者のメールソフトに表示される「便箋に書かれた宛名」であり、配送経路には直接影響しません。SPF認証はエンベロープFromを、DMARCのアラインメントチェックはヘッダーFromを見るなど、認証の仕組みによって参照する情報が異なるため、この違いを理解していないとSPF/DKIM/DMARCの設定トラブルの原因を切り分けられません。

使用ポート

  • ポート25: サーバー間通信(MTA間のリレー・転送)。多くのISPやクラウド事業者はスパム対策のため、一般利用者からのポート25発信をデフォルトでブロックしています。
  • ポート587: メール投稿(Submission、RFC 6409)- メールクライアントやアプリケーションからサーバーへの送信専用ポート。STARTTLSによる暗号化とSMTP認証が事実上必須です。
  • ポート465: 暗黙的TLS(Implicit TLS)によるメール送信。かつては非標準的とされ避けられがちでしたが、RFC 8314(2018年)で新規実装には暗黙的TLSを推奨する方針に転換され、現在はGmailやOutlook.com、多くのSMTPリレーサービスが587と並行して465を提供しています。

この3つのポートは役割がはっきり分かれているため、「25で送信できない」という相談を受けた際は、まずクライアント側が投稿用の587(または465)を使っているか、契約中のISP・クラウド事業者がポート25をブロックしていないかを切り分けるのが定石です。

MTA・MSA・MDAの役割分担

SMTPの通信経路には3種類の機能単位が登場します。MTA(Mail Transfer Agent)はサーバー間でメールを中継・転送するソフトウェア(Postfix、Exim、Sendmailなど)、MSA(Mail Submission Agent)はメールクライアントからの投稿を受け付ける機能(実体はPostfixのsubmissionサービスであることが多い)、MDA(Mail Delivery Agent)は最終的にメールボックスへ配送する処理(DovecotのdeliverコマンドやDovecotのLDA/LMTP機能)を指します。Postfix単体で完結しているように見えても、実際にはMTA・MSAの役割をPostfixが、MDAの役割をDovecotが分担しているケースが一般的です。

基本的な動作とセッションの流れ

SMTPは、テキストベースのコマンドでメールを送信します:

HELO mail.example.com
MAIL FROM: <sender@example.com>
RCPT TO: <recipient@example.com>
DATA
Subject: Test Mail

This is a test message.
.
QUIT

現代のSMTPサーバーはHELOの代わりに拡張版のEHLOを使うESMTPで応答するのが標準です。EHLOに対するサーバーの応答には、そのサーバーが対応している拡張機能の一覧が返されます。

EHLO client.example.com
250-mail.example.com
250-PIPELINING
250-SIZE 52428800
250-STARTTLS
250-AUTH PLAIN LOGIN SCRAM-SHA-256
250-8BITMIME
250-ENHANCEDSTATUSCODES
250 SMTPUTF8

それぞれSTARTTLS(通信の暗号化開始)、AUTH(利用可能な認証方式)、SIZE(送信可能な最大メールサイズ)、PIPELINING(複数コマンドの一括送信による高速化)、8BITMIME(8ビットデータの本文送信)、SMTPUTF8(国際化メールアドレス対応)といった拡張を表しており、クライアントとサーバーの双方が対応している拡張だけが実際に使われます。

応答コードの読み方

SMTPサーバーは各コマンドに対して3桁の応答コードを返します。1桁目が成功・失敗の種別、2桁目が意味のカテゴリを示すため、ログ調査の際はこの構造を押さえておくと原因の切り分けが速くなります。

コード分類意味・代表例
220成功サービス開始(接続直後にサーバーが返す)
250成功要求されたアクションが完了(メール受理など)
354中間応答DATA入力の開始を許可
421一時エラーサービス利用不可(後で再送されれば解消)
450/451一時エラーメールボックス一時利用不可、処理中断(グレイリスティングの応答としても使われる)
550恒久エラー宛先不明・拒否(存在しないメールボックス、リレー拒否など)
554恒久エラートランザクション失敗(スパム判定によるブロックで多用される)

4xx系は「一時的な失敗」なので送信側MTAはメールキューに保持して再送を試み、5xx系は「恒久的な失敗」なので即座にバウンスメールとして送信者に差し戻される、という違いを押さえておくと障害対応の判断が早くなります。

具体的な例・ユースケース

Webアプリケーションからの通知メール送信

会員登録完了メールやパスワード再設定メールを送信する際、アプリケーションサーバーは自社のPostfix(またはリレー専用のSMTPサーバー)に対してポート587でSMTP接続し、SMTP AUTHで認証したうえでメールを投函します。アプリケーション側は自前でDNSルックップやMXレコードの解決を行う必要がなく、リレーサーバーに投げるだけで済むため、実装がシンプルになります。

DNSのMXレコードによる配送先の決定

送信側MTAはRCPT TOで指定されたドメインのMXレコードをDNSに問い合わせ、優先度(プリファレンス値)が最も低いホストから順に接続を試みます。

; example.com のMXレコード例
example.com.    3600  IN  MX  10 mx1.example.com.
example.com.    3600  IN  MX  20 mx2.example.com.

; 対応するAレコード
mx1.example.com. 3600 IN A  203.0.113.10
mx2.example.com. 3600 IN A  203.0.113.20

プリファレンス値10のmx1が優先されますが、接続できない場合は自動的に値20のmx2へフェイルオーバーします。この仕組みにより、自社メールサーバーを二重化して可用性を高めることが可能です。あわせてMXレコードを指すサーバー側には、逆引き解決が正しく設定されたPTRレコードも必須で、これが欠けているだけで大手プロバイダに拒否されるケースが実務上非常に多く見られます。

メール認証を組み込んだ送信ドメインの構築

自社ドメインからのメールを大手プロバイダに確実に届けるには、SMTPの送信設定に加えてDNS側の認証レコードをセットで整備する必要があります。

; SPFレコード(Postfix送信元IPを許可する例)
example.com.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 ip4:203.0.113.20 -all"

; DMARCレコード(ポリシー段階的強化の例)
_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"

実務ではまずDMARCポリシーをp=none(監視のみ)で導入し、rua宛に届く集計レポートでSPF/DKIMの整合状況を確認したうえで、p=quarantine、最終的にp=rejectへと段階的に強化していくのが定石です。いきなりp=rejectにすると、設定漏れがあった場合に正規のメールまで拒否されるリスクがあります。

SMTPリレー方式とAPI方式の使い分け

大量のトランザクションメール(注文確認、システムアラートなど)を送る場合、自社Postfixから外部のSMTPリレーサービスへrelayhost設定で中継し、IPレピュテーション管理やバウンス処理を外部サービスに任せる構成もよく採用されます。一方、送信量が多くリアルタイムの配信ステータス連携が必要な場合は、SMTPではなくHTTP APIベースの送信方式を使う選択肢もあり、両者は用途に応じて併用されることも珍しくありません。

メリット・デメリット(注意点)

観点メリットデメリット・注意点
相互運用性40年以上前から続く枯れた標準プロトコルで、あらゆるメールサーバー・クライアントが実装しており相互接続性が極めて高い設計時点でスパムやなりすましを想定しておらず、送信者アドレスの検証機構が仕様上存在しない
シンプルさテキストベースのコマンドで構成され、telnetでも手動テストできるほど仕組みが単純で学習コストが低い単純さゆえに暗号化・認証は後付けの拡張(STARTTLS、SMTP AUTH)任せになっており、設定漏れが致命的なセキュリティ欠陥に直結する
運用コストPostfix等のOSSで自社運用が可能で、ライセンス費用をかけずにメール送信基盤を構築できるIPレピュテーション管理、SPF/DKIM/DMARCの継続的な整備、迷惑メール判定への対応など運用負荷が継続的に発生する
到達性MXレコードによる冗長構成やキューイングにより、宛先サーバーが一時的にダウンしていても再送で届く設計になっているGmail/Yahoo!等の大手プロバイダの送信者要件を満たさないと、正規のメールでも迷惑メール判定・拒否されるリスクが高まっている
拡張性ESMTPの拡張機構(EHLO応答)により、STARTTLSやSMTPUTF8など後方互換を保ったまま機能追加ができるクライアント・サーバー双方が新しい拡張に対応するまでは旧来の挙動にフォールバックするため、対応状況の確認が必要になる

混同されやすい用語・類似技術との違い

用語SMTPとの違い
POP3IMAPSMTPはメールを「送信・転送」するためのプロトコル。POP3/IMAPは受信者がメールボックスからメールを「取得・閲覧」するためのプロトコルで、役割がまったく逆方向。1通のメールが届くまでに送信側はSMTP、受信者の取得にはIMAPというように両方が組み合わさって使われる。
ESMTPESMTPはSMTPを拡張した仕様で、別プロトコルではなくSMTPのスーパーセット。HELOの代わりにEHLOを使い、STARTTLSやSMTP AUTH、SIZE等の拡張コマンドに対応する。現行のメールサーバーはほぼ全てESMTP対応。
LMTP(Local Mail Transfer Protocol)LMTPはSMTPをベースにローカルな最終配送用に簡略化したプロトコル(RFC 2033)。SMTPが複数宛先を1つの応答でまとめて処理できる前提なのに対し、LMTPは宛先ごとに個別の配送結果を返す設計になっており、PostfixからDovecotへの最終配送などサーバー内部の受け渡しに使われる。
Submission(投函、ポート587)Submissionはポート25のSMTP(サーバー間リレー)と区別するために設けられた、クライアントからの投函専用の仕組み(RFC 6409)。同じSMTPコマンド体系を使うが、認証必須・迷惑メール対策のポリシーが適用される点が25番ポートと異なる。
HTTP API方式のメール送信(Web API連携)SMTPはメール専用プロトコルでポート25/587/465を使い接続を維持しながらコマンドをやり取りするのに対し、API方式はHTTPS経由でJSON等のペイロードを1回のリクエストとして送信するだけで済む。API方式は開封率・クリック率などの付加分析を提供することが多いが、内部的には最終的にSMTPでインターネットへ配送される点は変わらない。
SMTP Relay(メールリレー)SMTP自体はプロトコル、Relayはそのプロトコルを使って第三者のメールを中継する「動作・構成」を指す言葉。自社サーバーが不特定多数からのメールを無制限に中継する状態は「オープンリレー」と呼ばれ、スパムの踏み台にされるためリレー制限の設定が必須になる。

自社メールサーバー運用への応用

セキュリティ設定

自社メールサーバーでSMTPを運用する際は、以下のセキュリティ設定が必須です:

  • TLS/STARTTLS: 通信の暗号化
  • SASL認証: 送信者の認証
  • リレー制限: 不正中継の防止
  • レート制限: スパム送信の防止

Postfixでの設定例

# main.cf
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/certs/mail.crt
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_sasl_auth_enable = yes
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

上記のsmtpd_relay_restrictionsは上から順に評価され、社内ネットワーク(mynetworks)か、SASL認証済みのユーザーからのメールのみリレーを許可し、それ以外の未認証の宛先中継(reject_unauth_destination)は拒否するという、オープンリレー対策の基本形です。この設定を怠ると第三者にスパム送信の踏み台として悪用され、自社ドメインやIPアドレスが各種RBL(ブラックリスト)に登録されてしまうリスクがあります。

レート制限による送信量のコントロール

# main.cf
smtpd_client_connection_rate_limit = 30
smtpd_client_message_rate_limit = 100
anvil_rate_time_unit = 60s
smtp_destination_concurrency_limit = 10
smtp_destination_rate_delay = 1s

Postfixのanvilサービスを使い、1クライアントあたりの接続数・メッセージ数を時間単位で制限することで、アカウント侵害時の大量送信被害を最小化できます。特にsmtp_destination_rate_delayは、Gmailなど宛先側のレート制限に配慮した送信間隔を設けるための設定で、大量配信時のブロック回避に有効です。

Dovecot(LMTP)との連携

# Postfix側 main.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

# Dovecot側 conf.d/20-lmtp.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

PostfixはSMTPで外部からメールを受け取り、最終的なメールボックスへの配送はLMTP経由でDovecotに引き渡すという役割分担が広く使われています。LMTPはメールボックスごとの配送結果(容量オーバーなど)を個別に返せるため、Sieveフィルタとの連携やMaildir形式への保存処理を含め、SMTPだけで完結させるより堅牢な構成になります。

キュー監視とトラブルシューティング

# 滞留中のキューを確認
postqueue -p

# 特定メッセージの詳細を確認
postcat -q <queue_id>

# 滞留メールを強制的に再送
postqueue -f

メールが届かないという問い合わせを受けた際は、まずpostqueue -pメールキューの滞留状況を確認し、mail.logで対象メッセージの応答コード(4xxか5xxか)を追うのが基本の切り分け手順です。4xxが続く場合は宛先側の一時的な受信制限(グレイリスティングやレート制限)が疑われ、5xxであれば宛先不在やDNSブラックリスト(RBL)掲載、SPF/DKIM不整合など恒久的な原因を疑います。

関連ブログ記事

まとめ

SMTPは、40年以上にわたりインターネットメールの送信・転送を支えてきた標準プロトコルであり、その基本設計は今も変わっていません。一方で、設計当時は想定されていなかったスパムやなりすましへの対策は、STARTTLS・SMTP AUTH・SPF/DKIM/DMARCといった後付けの拡張仕様によって補われてきた歴史があります。自社メールサーバーを構築・運用する際は、ポート・認証方式の正しい理解(25/587/465の使い分け、SASL認証)、適切なセキュリティ設定(TLS暗号化、リレー制限、レート制限)、そして継続的なDNS認証レコードの整備(SPF/DKIM/DMARC、PTRレコード)の3点をセットで実装することが、迷惑メール判定を避けメールを確実に届けるための土台になります。

2025-2026年の最新動向

Gmail/Yahoo!の送信者要件(2024年〜)でSPF/DKIM/DMARC対応が必須化されたことは、SMTPを取り巻く運用実務に大きな転換をもたらしました。特に1日あたり5,000通以上を送信する大量送信者に対しては、DMARCポリシーの設定、迷惑メール報告率を0.3%未満に抑えること、ワンクリックでの配信停止(One-Click Unsubscribe)への対応などが事実上の必須条件となっており、自社メールサーバーからの直接送信を続ける企業にとってSMTP認証・DNS認証レコードの整備は避けて通れないテーマになっています。

BIMI(Brand Indicators for Message Identification)の普及も進み、DMARCでp=quarantine以上のポリシーを適用し認証済みであることを前提に、企業ロゴをメールクライアントの送信者アイコン欄に表示できる仕組みが、GmailやYahoo!メールなど主要プロバイダで利用可能になっています。

MTA-STS(RFC 8461)とTLS-RPTの採用も広がりつつあります。MTA-STSはDNS上のポリシーとHTTPS経由の設定ファイルにより、SMTP通信でのTLS暗号化を強制し中間者攻撃によるダウングレードを防ぐ仕組みで、TLS-RPTはTLS接続の失敗状況を可視化するレポート機構です。従来のSTARTTLSは「対応していれば暗号化する(best effort)」という性質上、攻撃者によるSTARTTLSストリッピングのリスクを完全には排除できなかったため、これを補完する目的で導入が進んでいます。

また、送信ドメイン認証の面ではARC(Authenticated Received Chain)のように、メーリングリストや転送を経由してもとの送信者の認証結果を後続のサーバーへ伝搬させる仕組みへの関心も高まっており、DMARCの厳格化とメーリングリスト運用の両立という実務上の課題に対する解決策として注目されています。

外部リンク

関連用語

  • Postfix - 代表的なオープンソースSMTP MTA
  • STARTTLS - 平文接続を暗号化に切り替えるSMTP拡張
  • TLS - STARTTLSや暗黙的TLSが利用する暗号化プロトコル
  • SASL - SMTP AUTHが利用する認証フレームワーク
  • Submission - ポート587によるメール投函の仕組み
  • SPF - エンベロープFromの送信元IPを検証する仕組み
  • DKIM - メールに電子署名を付与し改ざん・なりすましを検知する仕組み
  • DANE - DNSSECを利用してSMTP通信のTLS証明書を検証する仕組み
  • メールリレー - SMTPを使ってメールを中継する構成・動作
  • メールキュー - 配送待ち・再送待ちのメールを保持する仕組み
  • Dovecot - LMTP経由でSMTPから配送を引き継ぐPOP3/IMAPサーバー
  • MXレコード - SMTPの配送先サーバーを決定するDNSレコード

よくある質問(FAQ)

Q. SMTPとは?

メールの送信・転送に使われるインターネット標準プロトコルです。RFC 5321で定義され、ポート25(サーバー間転送)、587(クライアントからの投函)、465(暗黙的TLSでの投函)のいずれかで使用されます。受信側の仕組みであるPOP3/IMAPとは役割が明確に分かれています。

Q. ポート番号の使い分けは?

25番はMTA間のサーバー同士の転送専用で、一般利用者からの発信は多くのISPでブロックされています。587番はクライアントからの投函用でSTARTTLS+SMTP AUTHの組み合わせが標準、465番は暗黙的TLSでの投函用で、RFC 8314(2018年)以降は新規実装での推奨ポートとされています。実務上は587と465の両方を提供し、クライアントの対応状況に応じて選べるようにしておくのが安全です。

Q. SMTPの認証方法は?

SMTP AUTH(RFC 4954)でSASLベースの認証を行います。PLAIN、LOGIN、CRAM-MD5、SCRAM-SHA-256、OAUTHBEARERなど複数の認証メカニズムがあり、平文のPLAIN/LOGINは必ずTLS暗号化した接続の上でのみ使うことが前提です。GmailやMicrosoft 365ではすでにOAuth 2.0認証への移行が必須化されています。

Q. SMTPとPOP3・IMAPの違いは?

SMTPはメールを「送る・転送する」ためのプロトコルで、POP3・IMAPは受信者がメールボックスから「受け取る・閲覧する」ためのプロトコルです。1通のメールが送信者から受信者に届くまでには、送信側でSMTP、受信側の取得でIMAP(またはPOP3)というように、両方のプロトコルが役割分担して使われます。

Q. SMTPリレーとメール転送サービス(API方式)はどちらを使うべきか?

送信量が少なく既存のPostfix運用に組み込みたい場合はSMTPリレー方式が手軽です。大量配信でリアルタイムな配信ステータス連携や開封分析が必要な場合はHTTP API方式が向いていますが、最終的にはどちらも内部的にSMTPで配送されるため、SPF/DKIM/DMARCの整備は方式によらず必須です。

Q. 自社SMTPサーバーを運用する際に最も注意すべき点は?

オープンリレー化を防ぐリレー制限の設定が最優先です。加えてSPF/DKIM/DMARCの整備、逆引き(PTRレコード)の設定、レート制限による大量送信被害の抑止をセットで行わないと、正規のメールでも大手プロバイダから拒否・迷惑メール判定を受けやすくなります。

この用語についてもっと詳しく

SMTPに関するご質問や、メールサーバー構築のご相談など、お気軽にお問い合わせください。