自分のPCやスマホにメールアカウントを追加するときなどに「SMTP」という単語を目にしたことがある人も多いのではないでしょうか?
SMTPはメールを送信するためになくてはならないものです。
ここでは、SMTPとは何か?について実例を交えてわかりやすく解説しています。
また、SMTPの設定をする際に必ず必要となるポート番号「587」「465」(もしくは「25」や「2525」)および、「SSL/TLS」や「STARTTLS」の違いや、それぞれが何を意味しているのかも具体的に解説しています。
SMTPとは何か?
SMTPはメールを送信するためのルール(プロトコル)で、日本語で「エスエムティーピー」と呼びます。
つまり、メールを送信するための技術です。
「Simple Mail Transfer Protocol」の略で、シンプルなメール転送のルールという意味です。
メール送受信の仕組み
メールの送受信には、SMTP以外にも複数の技術が連携して働いています。
ここでは、SMTPがどのような役割を果たしているのかを、以下の4つのステップで紹介します。
STEP1:送信側のメールサーバーに送る
メールを送信するといっても、PCやスマホなどの端末(メールアプリやメールクライアント)から直接送信しているわけではありません。
メールアプリやOutlookなどのメールクライアントからメールを送信すると、まずは、送信側(自分)が使っているメールサーバーにメールが送られます。
ことのきにSMTPの設定が使われます。
このときに接続するメール送信のためのサーバーを「STMPサーバー」と呼びます。
STEP2:送信側のメールサーバーから受信側のメールサーバーへ
送信メールを預かった、送信側のメールサーバー(SMTPサーバー)は、宛先のメールアドレスを確認します。
メールアドレスが「info@example.com」であれば、ドメインである「example.com」がどのIPアドレス(ネット上の住所)に紐づいているかを調べます。
なお、ドメインからIPアドレスを検索する際は、DNS(ドメインネームサーバー)に問い合わせます。
相手のIPアドレスがわかったら、SMTPサーバーはSMTPを使ってメールを送信します。
SMTPサーバーがDNSに問い合わせたときに参照するのは、以下の2つのレコードです。
- MXレコード
ドメインと受信用のメールサーバーが紐づいた情報が記載されています。 - Aレコード(またはAAAAレコード)
MXレコードで特定した受信用のメールサーバーとIPアドレスが紐づいた情報が記載されています。(AレコードはIPv4、AAAAレコードはIPv6。Aはアドレス(Address)の頭文字)
MXレコードはメールを受信するためにとても重要なものです。詳細については下記をご参考ください。
STEP3:受信側のメールサーバーへ
DNSで、相手(受信側)のメールサーバーが特定できたら、SMTPサーバーはメールを送ります。
受信側のメールサーバーでそのメールを受信します。
STEP4:端末で届いたメールを見る
相手がPCやスマホなどの端末で届いたメールを見るには、IMAPやPOPなどのメールを受信するルールを使います。
簡単に言うと、IMAPはサーバーと同期してメールを確認する機能です。一方、POPはサーバーからメールをダウンロードする機能です。
これで、届いたメールを確認することができます。
「IMAP」や「POP」はSMTPと同様によく目にする用語です。IMAPとPOPの違いや詳細については下記をご参考ください。
SMTPの具体的な設定方法
Gmail、Outlook、Thunderbirdなどのメールソフトでメールの送信設定をする際は以下のような項目を設定します。
カッコでGmailで設定する場合の例を記載しています。
- SMTPサーバー (smtp.gmail.com)
- ポート番号(465 [SSL/TLS]または 587など[STARTTLS])
- ユーザー名(Gmailのメールアドレス example@gmail.com)
- パスワード (Gmailのログインパスワード)
SMTPサーバーで指定する内容
もっとも大本になるのが、SMTPサーバーです。
Gmailであれば「smtp.gmail.com」、Yahooメールであれば、「smtp.mail.yahoo.co.jp」、Xserverであれば「sv***.xserver.jp」を指定します。
メール送信時は、まず、SMTPサーバーで指定したサーバーにメールを送ります。
ユーザー名とパスワード
メール送信時にSMTPサーバーに接続する際、SMTPサーバーはあなたが正式なユーザーか確認する必要があります。
このときに、ユーザー名とパスワードを提供します。
SMTPサーバー接続時のユーザー確認の仕組みを、SMTP認証(SMTP-AUTH)といいます。
ポート番号
サーバーには、通信の種類ごとに異なる「通り道」(ポート)が設けられています。
正しいポートを指定しなければ、サーバーはあなたが何の目的で接続してきたのかを理解できません。このため「メール送信である」ことをSMTPサーバーに伝えるために、メール用のポート番号を伝える必要があります。
メール用のポート番号は以下の3つです。
- 587(STARTTLS): 途中で暗号化。サーバー間同士のメール送受信で推奨。
※STARTTLSのポート番号は587と決まっているわけではなく110などサーバーにより様々です。 - 465(SSL/TLS): 最初から暗号化。クライアント⇔サーバー間のメール送受信で推奨。
- 25 : 暗号化なし。基本的に使用しない(危険)
- 2525:25が使えない場合に代替として使用するポート。基本的に使用しない。
25は初期の頃に登場したポートです。暗号化がないため現在使われることはほぼありません。
465はメール送信時の通信内容を全て暗号化するものです。一時期は推奨されていましたが、現在は非推奨となっています。(※ただし、多くのサーバーで依然として465が使える場合が多いです)
587などのSTARTTLS用のポートは現在465番ポートに変わりサーバー間通信で主流になっています。
サーバーに用意されているメール通信用のポート「587」「465」「25」は、メール送信に特化したものではなく、メールの受信など、メールの通信全般で使用するポートです。
「SSL/TLS」と「STARTTLS」とは?違いを解説
SMTPサーバーで指定するポート番号は「465」か「587や110など」です。
それぞれで、「SSL/TLS」や「STARTTLS」が使われています。これらは、メールの通信を暗号化するための技術です。
SSL/TLSとは何か?(エスエスエル/ティーエルエス)
SSL/TLSはこれまでメールの送受信にメインで使われている暗号化方法です。
SSL/TLSは、通信の全てを暗号化します。
メールを送るときに、最初からカギのかかった専用の箱に入れて、サーバーに渡すようなものです。箱自体が鍵で守られているので、途中で誰かに盗み見られる心配はありません。
SMTPの場合は465番ポートを使いいます。このポートに接続すると自動的に暗号化通信が開始されます。
SSLは「Secure Sockets Layer」の略で、TLSは「Transport Layer Security」の略です。
TLSはSSLの次世代版(進化版)で、SSLのセキュリティ脆弱性を克服するために開発されました。現在では、「SSL」や「SSL/TLS」という名称が広く使われていますが、実際に利用されている技術はTLSがほとんどです。
STARTTLSとは何か?(スタート・ティーエルエス)
STARTTLS(スタート・ティーエルエス)は現在のサーバー間のメール通信でメインで使われている暗号化方法です。
SSLやTLSの次に新しく出てきた通信方法です。
STARTTLSでは最初は暗号化しておらず、途中から暗号化を開始します。
ポート番号587は最初は暗号化されていません。メールを送る際に、SMTPサーバーに「STARTTLS」であることを伝えたタイミングから暗号化が開始します。
相手のサーバーが暗号化に対応していない場合は、暗号化せずに通常の通信を続けることができます(日和見TLSと呼びます)
TLSは「ティーエルエス」と読み、通信を暗号化する技術である「Transport Layer Security」の略称です。
頭にSTARTがあることで、TLSによる暗号化通信を開始することを意味しています。
なぜサーバー間ではSTARTTLSの方が推奨なのか?
SSL/TLS(ポート465)は、セキュリティを最優先し、通信全体を暗号化するため、非常に安全です。しかし、新しいポートが必要で互換性に課題がありました。
- ファイアウォールの問題
企業や家庭のネットワークには、不正な通信を防ぐためのファイアウォールが設定されています。新しいポート(465番)を使うには、管理者が個別にファイアウォールの設定を変更する必要があり、導入の大きな障壁となりました。 - 後方互換性の問題
昔は、多くの古いメールクライアントやサーバーは、SSL/TLSに対応していませんでした。新しいポート(465番)で通信しようとすると、対応していない機器との間で通信ができなくなり、メールシステム全体に混乱が生じる可能性がありました。
STARTTLSは、この問題を解決するために発明されました。
「ポート25番や587番といった既存のポートをそのまま使い、通信の途中で暗号化に切り替える」というアプローチは、新しいポートを開ける手間をなくし、古いシステムとの互換性を保ちながら、徐々にセキュリティを向上させることを可能にしました。
- SSL/TLS
接続した瞬間から、すべてのデータが暗号化。非暗号化の状態を経ることがない。
簡単でセキュリティが高いが、柔軟性に欠ける。 - STARTTLS
サーバーが対応している場合は後から暗号化する。
暗号化しない通信もできるため、柔軟性が高い。
メールソフトとサーバーの通信は465ポート(SSL/TLS)が推奨
注意が必要なのは、STARTTLSが推奨されているのはサーバー間の通信です。
私たちにとってより一般的なOutlookやThunderbird, Gmailなどのメールソフトからサーバーに接続するときは、パスワードのやり取りをするので、全て暗号化されているSSL/TLS通信が可能な465ポートが推奨となっています。
Outlook、Gmail、Thunderbirdなどのメールソフトとサーバー間の通信は、最初から暗号化されているSSL/TLSが推奨されています。
STARTTLS は後方互換(古いメールクライアントやシステム対応)用に残されているケースが多いです。
なお、サーバー側が STARTTLS をサポートしていれば暗号化されますが、仕様的に「暗号化なし fallback」が可能なので、過去にはダウングレード攻撃の対象になった経緯があります。
STARTTLSのポート自体(587や110)が暗号化されているわけではない
以下は補足ですが、STARTTLS用のポート自体が暗号化されているわけではありません。(※ポート番号「465」自体は暗号化されています)
SMTPサーバーなどに接続する際に「あなたはSTARTTLSに対応していますか?」と尋ねます。そこで対応している場合は、暗号化が開始する仕組みです。
STARTTLSで暗号化通信を開始するまでの具体的な流れ
STEP1: クライアントがSTARTTLSのポート(例:587)に接続する(暗号化なし)
クライアント(メールソフト)は、SMTPサーバーのホスト名(例:smtp.example.com)とSTARTTLS用のポート(例:587)を使って、サーバーに接続します。この段階では、通信はまだ暗号化されていません。
STEP2: サーバーが応答する(STARTTLSをサポートしているか伝える)
サーバーは接続を受け付け、以下のような応答を返します。
220 smtp.example.com ESMTP続けて、サーバーがSTARTTLSをサポートしている場合は、次のような応答を返します。
250-STARTTLSこの250-STARTTLSという行が、「このサーバーはSTARTTLSによる暗号化に対応していますよ」というメッセージです。
STEP3:クライアントがSTARTTLSコマンドを送信する
クライアントは、サーバーがSTARTTLSに対応していることを確認すると、STARTTLSというコマンドをサーバーに送ります。
STARTTLSSTEP4:サーバーがOKと応答し、暗号化通信に切り替わる
サーバーはSTARTTLSコマンドを受け付けると、220 Ready to start TLSのような応答を返します。 この応答をもって、クライアントとサーバーの間でSSL/TLSハンドシェイク(鍵の交換など)が行われ、ここから先の通信がすべて暗号化されます。
STEP5:暗号化された通信でSMTP認証などを行う
暗号化された安全な通信路ができた後で、ユーザー名やパスワードを送信してSMTP認証が行われます。
もしサーバーがSTARTTLSに対応していなければ?
もしSTEP2でサーバーが250-STARTTLSという応答を返さなかった場合、クライアントは暗号化通信に切り替えることができません。
この場合、多くのメールクライアントは、セキュリティ上の理由から接続を切断するか、ユーザーに警告を表示して、平文(暗号化なし)での通信を続行するかどうかを尋ねます。


