【徹底解説】SMTPとは何か?わかりやすく実例で解説(ポート番号587, 465, 25やSSL/TLSとSTARTTLSの違いや特徴、どれを選べばいいか)

mail メール-prograshi(プロぐらし)-kv Server
記事内に広告が含まれていることがあります。

自分の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の設定が使われます

MEMO

このときに接続するメール送信のためのサーバーを「STMPサーバー」と呼びます。


STEP2:送信側のメールサーバーから受信側のメールサーバーへ

送信メールを預かった、送信側のメールサーバー(SMTPサーバー)は、宛先のメールアドレスを確認します。

メールアドレスが「info@example.com」であれば、ドメインである「example.com」がどのIPアドレス(ネット上の住所)に紐づいているかを調べます。

なお、ドメインからIPアドレスを検索する際は、DNS(ドメインネームサーバー)に問い合わせます。

相手のIPアドレスがわかったら、SMTPサーバーはSMTPを使ってメールを送信します。

MEMO

SMTPサーバーがDNSに問い合わせたときに参照するのは、以下の2つのレコードです。

  1. MXレコード
    ドメインと受信用のメールサーバーが紐づいた情報が記載されています。
  2. Aレコード(またはAAAAレコード)
    MXレコードで特定した受信用のメールサーバーとIPアドレスが紐づいた情報が記載されています。(AレコードはIPv4、AAAAレコードはIPv6。Aはアドレス(Address)の頭文字)


MXレコードはメールを受信するためにとても重要なものです。詳細については下記をご参考ください。

【徹底解説】MXレコードとは何かを超わかりやすく解説?初心者向け


STEP3:受信側のメールサーバーへ

DNSで、相手(受信側)のメールサーバーが特定できたら、SMTPサーバーはメールを送ります。

受信側のメールサーバーでそのメールを受信します。


STEP4:端末で届いたメールを見る

相手がPCやスマホなどの端末で届いたメールを見るには、IMAPやPOPなどのメールを受信するルールを使います。

簡単に言うと、IMAPはサーバーと同期してメールを確認する機能です。一方、POPはサーバーからメールをダウンロードする機能です。

これで、届いたメールを確認することができます。

IMAPやSMTPって何?

「IMAP」や「POP」はSMTPと同様によく目にする用語です。IMAPとPOPの違いや詳細については下記をご参考ください。

【簡単解説!】IMAPとPOPの違いやメリデメを実例で解説|結局どっちを使うべき?



SMTPの具体的な設定方法

Gmail、Outlook、Thunderbirdなどのメールソフトでメールの送信設定をする際は以下のような項目を設定します。

カッコでGmailで設定する場合の例を記載しています。

メールの送信設定
  1. SMTPサーバー (smtp.gmail.com)
  2. ポート番号(465 [SSL/TLS]または 587など[STARTTLS])
  3. ユーザー名(Gmailのメールアドレス example@gmail.com)
  4. パスワード (Gmailのログインパスワード)


SMTPサーバーで指定する内容

もっとも大本になるのが、SMTPサーバーです。

Gmailであれば「smtp.gmail.com」、Yahooメールであれば、「smtp.mail.yahoo.co.jp」、Xserverであれば「sv***.xserver.jp」を指定します。

メール送信時は、まず、SMTPサーバーで指定したサーバーにメールを送ります。


ユーザー名とパスワード

メール送信時にSMTPサーバーに接続する際、SMTPサーバーはあなたが正式なユーザーか確認する必要があります

このときに、ユーザー名とパスワードを提供します。

MEMO

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番ポートを使いいます。このポートに接続すると自動的に暗号化通信が開始されます。

MEMO

SSLは「Secure Sockets Layer」の略で、TLSは「Transport Layer Security」の略です。

TLSはSSLの次世代版(進化版)で、SSLのセキュリティ脆弱性を克服するために開発されました。現在では、「SSL」や「SSL/TLS」という名称が広く使われていますが、実際に利用されている技術はTLSがほとんどです。


STARTTLSとは何か?(スタート・ティーエルエス)

STARTTLS(スタート・ティーエルエス)は現在のサーバー間のメール通信でメインで使われている暗号化方法です。

SSLやTLSの次に新しく出てきた通信方法です。

STARTTLSでは最初は暗号化しておらず、途中から暗号化を開始します。

ポート番号587は最初は暗号化されていません。メールを送る際に、SMTPサーバーに「STARTTLS」であることを伝えたタイミングから暗号化が開始します。

相手のサーバーが暗号化に対応していない場合は、暗号化せずに通常の通信を続けることができます(日和見TLSと呼びます)

MEMO

TLSは「ティーエルエス」と読み、通信を暗号化する技術である「Transport Layer Security」の略称です。

頭にSTARTがあることで、TLSによる暗号化通信を開始することを意味しています。


なぜサーバー間ではSTARTTLSの方が推奨なのか?

SSL/TLS(ポート465)は、セキュリティを最優先し、通信全体を暗号化するため、非常に安全です。しかし、新しいポートが必要で互換性に課題がありました

SSL/TLSで生じる問題
  1. ファイアウォールの問題
    企業や家庭のネットワークには、不正な通信を防ぐためのファイアウォールが設定されています。新しいポート(465番)を使うには、管理者が個別にファイアウォールの設定を変更する必要があり、導入の大きな障壁となりました。
  2. 後方互換性の問題
    昔は、多くの古いメールクライアントやサーバーは、SSL/TLSに対応していませんでした。新しいポート(465番)で通信しようとすると、対応していない機器との間で通信ができなくなり、メールシステム全体に混乱が生じる可能性がありました。

STARTTLSは、この問題を解決するために発明されました。

「ポート25番や587番といった既存のポートをそのまま使い、通信の途中で暗号化に切り替える」というアプローチは、新しいポートを開ける手間をなくし、古いシステムとの互換性を保ちながら、徐々にセキュリティを向上させることを可能にしました。

「SSL/TLS」と「STARTTLS」のまとめ
  • SSL/TLS
    接続した瞬間から、すべてのデータが暗号化。非暗号化の状態を経ることがない。
    簡単でセキュリティが高いが、柔軟性に欠ける。
  • STARTTLS
    サーバーが対応している場合は後から暗号化する。
    暗号化しない通信もできるため、柔軟性が高い。



メールソフトとサーバーの通信は465ポート(SSL/TLS)が推奨

注意が必要なのは、STARTTLSが推奨されているのはサーバー間の通信です。

私たちにとってより一般的なOutlookやThunderbird, Gmailなどのメールソフトからサーバーに接続するときは、パスワードのやり取りをするので、全て暗号化されているSSL/TLS通信が可能な465ポートが推奨となっています。

Outlook、Gmail、Thunderbirdなどのメールソフトとサーバー間の通信は、最初から暗号化されているSSL/TLSが推奨されています

なぜSTARTTLSも選択肢にあるのか?

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というコマンドをサーバーに送ります。

STARTTLS


STEP4:サーバーがOKと応答し、暗号化通信に切り替わる

サーバーはSTARTTLSコマンドを受け付けると、220 Ready to start TLSのような応答を返します。 この応答をもって、クライアントとサーバーの間でSSL/TLSハンドシェイク(鍵の交換など)が行われ、ここから先の通信がすべて暗号化されます


STEP5:暗号化された通信でSMTP認証などを行う

暗号化された安全な通信路ができた後で、ユーザー名やパスワードを送信してSMTP認証が行われます。


もしサーバーがSTARTTLSに対応していなければ?

もしSTEP2でサーバーが250-STARTTLSという応答を返さなかった場合、クライアントは暗号化通信に切り替えることができません。

この場合、多くのメールクライアントは、セキュリティ上の理由から接続を切断するか、ユーザーに警告を表示して、平文(暗号化なし)での通信を続行するかどうかを尋ねます。



タイトルとURLをコピーしました