SMTPとは
SMTP(Simple Mail Transfer Protocol)は、電子メールを送信するためのプロトコルです。ユーザがメールソフト(メーラ)で作成したメールを、SMTPを使って自分のメールサーバに送信します。SMTPはTCP上で動作し、標準のポート番号は25番です。
POPとは
POP(Post Office Protocol)は、電子メールを受信するためのプロトコルです。ユーザがメールソフトからメールサーバにアクセスして、受信メールを取り出すときに使用されます。現在はPOP3(バージョン3)が主流であり、標準のポート番号は110番です。ただしPOP3ではパスワードが暗号化されずに送信されるため、セキュリティ上の弱点があります。
メールの送受信の流れ
- ユーザがメーラでメールを作成し、自分のメールサーバにSMTPで送信する
- 送信側のメールサーバは宛先アドレスのドメイン(@以降)を確認し、DNSで相手のメールサーバのIPアドレスを調べる
- SMTPで相手のメールサーバに転送し、メールが相手側サーバに保存される
- 受信者がメーラでメールチェックを行い、POP3で自分のメールサーバにユーザ名とパスワードを送信する
- 認証が成功すると、サーバから受信者のメールが転送され、ユーザはメールを読むことができる
SMTPによるメール送信の仕組み
SMTPはテキストベースのコマンドと応答で動作します。メールクライアント(メーラ)がコマンドを送信し、サーバは3桁の数字で応答します。
例えば「HELO」「MAIL FROM」「RCPT TO」「DATA」といったコマンドを使い、サーバからは「250 OK」「354 Start mail input」といった応答が返されます。本文(例:”This is a test mail”)はコマンドではなく、データ部分です。
POP3によるメール受信の仕組み
POP3も同じくテキストベースで動作します。クライアントは「USER」「PASS」「LIST」「RETR」「DELE」といったコマンドを送信し、サーバは「+OK」(成功)または「-ERR」(失敗)で応答します。この応答には追加のメッセージが付与される場合があります。
「SMTPは送信用」「POP3は受信用」と覚えると分かりやすいです。最近では受信にIMAPが使われるケースも多く、POP3との違いも押さえておくとさらに理解が深まります。
SMTPプロトコルと認証の問題点
SMTP(メール送信用プロトコル)は、基本的に認証を必須としていません。その理由は、SMTPはメールソフトからメールサーバに送信するだけでなく、メールサーバ間でメールを転送するときにも利用されるためです。もし認証が必須だと、他のドメインのメールサーバから正しく転送できなくなってしまいます。
認証しない場合の問題点
認証がないSMTPは、悪用されやすいという問題があります。たとえば契約しているプロバイダ(ISP)のメールサーバを使わずに、インターネット上のセキュリティが弱いメールサーバを経由してメールを送信することが可能です。この仕組みを悪用してスパムメールが送られることが多く、スパマーは身元を隠しながら不特定多数へ広告メールを配信してきました。
OP25B(Outbound Port 25 Blocking)
この問題に対して、多くのISPは「OP25B」という対策を実施しました。これは、利用者が契約していない外部のメールサーバに直接送信しようとするメールをブロックする仕組みです。これによりスパムメールは大幅に減少しました。
サブミッションポート
しかしOP25Bには副作用がありました。たとえばホテルなど外出先のネットワークでは、宿泊施設が契約しているISPのメールサーバしか使えず、自分のISPのサーバに接続できないことがありました。
この問題を解決するために導入されたのが「サブミッションポート(587番ポート)」です。サブミッションポートは、メールソフト(メーラ)から自分のメールサーバに送信するとき専用に使われるポートです。
ポイントは以下の通りです。
- サブミッションポートは 587番ポート を使用する
- プロトコル自体は従来通りSMTP
- メール送信時には必ず SMTP認証(ユーザ名とパスワードによる認証) を行う
- メールサーバ間の転送は従来通りポート25を使用し、認証は不要
サブミッションポートの利用方法
- メーラの設定でSMTPポート番号を「25」から「587」に変更する
- 「このサーバは認証が必要」という設定を有効化する
- 通常は、POP3と同じユーザ名・パスワードでSMTP認証が行われる
現在では、自宅でも外出先でも最初から「587」に設定しておけば問題なくメール送信できるケースが多いため、宛先ポートは587に設定しておくのが一般的です。
- 25番ポート → サーバ間通信用(認証なし)
- 587番ポート → メーラからサーバへの送信用(認証あり)
と覚えると理解しやすいです。