インターネットを使ってメールを送ったことはあるでしょうか?
恐らく多くの人が‘YES’だと思います。
そのメールがどのようにして相手に届くか考えたことはあるでしょうか?
(郵便局のような役割をどのように実現しているのか)
実はその背後にはSMTPというプロトコルが大きな役割を果たしています。
今回はそのSMTPとはというものについてまとめていきます。
SMTPの基本
SMTPは「Simple Mail Transfer Protocol」の略であり、電子メールを送信するためのプロトコルです。
(受信用の機能はPOP3やIMAPという別のプロトコルが担います。)
1970年代後半に初めて開発され、現在も広く使用されています。
SMTPはメールサーバー同士がメールを送受信する際のルールを定めています。
例えばあなたがメールを送信する際、そのメールは直接相手の元に届くのではなく、あなたのメールサーバーに送られます。
その後に受信者のメールサーバーに転送されているのです。
この一連の通信を管理するのがSMTPです。
OSI参照モデルとの関連
SMTPを理解する上でOSI参照モデルとの関連を考えることは非常に重要です。
OSI参照モデルはネットワーク通信を7つのレイヤーに分けたもので、それぞれのレイヤーが特定の機能を担当しています。
SMTPはこのうち第4層「トランスポート層」と第7層「アプリケーション層」に位置付けられます。
アプリケーション層(第7層)
SMTP自体はこの層に属します。
この層ではメールの内容や送信先アドレスなど、ユーザーが直接かかわるデータが処理されます。
トランスポート層(第4層)
SMTPの通信をサポートするために、TCP(Transmission Control Protocol)が使われます。
TCPはデータの正確な転送を保証するプロトコルであり、メールが確実に届くように支援します。
SMTPの仕組み
SMTPがどのようにメールを送信するのか、そのプロセスを少し詳しく見てみます。
メールクライアントからメールサーバーへ
あなたがメールを送信すると、そのメールはまずあなたのメールクライアント(OutlookやGmail)からメールサーバーに送られます。
送信者のメールサーバーから受信者のメールサーバーへ
送信者のメールサーバーはDNS(Domain Name System)を使って受信者のメールサーバーのIPアドレスを取得し、SMTPを使ってメールを送信します。
受信者のメールサーバーからメールクライアントへ
受信者のメールサーバーは受け取ったメールを受信者のメールクライアントに配信します。
この際POP3(Post Office Protocol3)やIMAP(Internet Message Access Protocol)が使われます。
SMTPコマンドと応答
SMTPプロトコルは特定のコマンドと応答を使って通信を行います。
以下にいくつかそのコマンド達を紹介します。
- HELO/EHLO
送信者のメールサーバーが接続を確立する際に使用します。
EHLOは拡張SMTP(ESMTP)をサポートするサーバー向けのコマンドです。 - MAIL FROM
送信者のメールアドレスを指定します。 - RCPT TO
受信者のメールアドレスを指定します。 - DATA
メール本文の開始を示します。
メール本文は、ピリオド(.)だけの行で終了します。 - QUIT
セッションの終了を示します。
これらのコマンドに対して、受信者のメールサーバーは特定の応答コードを返します。
例えば、’250 OK‘はコマンドが成功したことを示します。
‘550 Requested action not token : mailbox unabailable‘はメールボックスが存在しないか利用できないことを示します。
SMTPの課題とセキュリティ
SMTPは非常に基本的で信頼性のあるプロトコルですが、いくつか課題もあります。
特にスパムやなりすましメールの問題が挙げられ、これらの問題を軽減するためいくつかの追加プロトコルや技術が使用されます。
- SMTP-AUTH
ユーザー認証を強化し、正当な送信者だけがメールを送信できるような技術です。 - TLS(Transport Layer Security)
SMTP通信を暗号化し、データの盗聴や改ざんを防ぎます。 - SPF(Sender Policy Framework), DKIM(DomainKeys Identified Mail), DMARCDomain-based Message Authentication, Reporting & Conformance)
メールの正当性を検証し、スパムやフィッシングメールを防ぎます。
まとめ
SMTPは、インターネットを介してメールを送信するための役割を持つプロトコルです。
その背後には複雑な仕組みを持ち、OSI参照モデルとも関係があります。
普段何気なくインターネットでメールを送信していますが、現実世界の郵便局のように、インターネットの世界でも相手にメールを届ける役割を持つ技術が存在するのです。
サーバーについて詳しく知りたい方はこちら。