メールに使われるプロトコルの技術を見ていきましょう。

 まずSMTPです。SMTPはメールクライアントからメールを送信するだけでなく、MTA間でメールを転送する際にも利用されます。つまり、MTAがメールを受け入れる仕組みは共通で、相手はメールクライアントでもMTAでも構わないわけです。

 SMTPが最初にRFCのドラフトとして公開されたのは1982年です。筆者は6歳でした。TCPのRFCが公開されたのが1981年なので、まさにインターネットの黎明期から存在しているのです。

▼RFC Request For Commentsの略です。インターネット技術の標準化団体であるIETF(Internet Engineering Task Force)における、正式な仕様を記述した文書を指します。
▼TCP Transmission Control Protocolの略です。

TCPの25番ポートを利用

 SMTPはTCPの25番ポートを利用すると決まっています。プロトコルはFTPと似ていて、7ビットのテキストのコマンドでやり取りします。このため実際にtelnetでMTAに接続すると、手動でメールを送信できます(図2-1)。SMTPは簡単なプロトコルなのでtelnetで操作するのも難しくありません。普段はメールクライアントで送信しますが、実はその背後でコマンドを使ってデータをやり取りしているのです。

図2-1● SMTPでメールを送る様子
図2-1● SMTPでメールを送る様子
SMTPは比較的シンプルなプロトコルで、テキスト情報のやり取りでメールを送信できる。実際に受信した様子も示した。
[画像のクリックで拡大表示]
▼FTP File Transfer Protocolの略です。ファイル転送に使います。
▼telnet TELetype NETworkの略です。

 実際にtelnetでMTAにアクセスしてみましょう。クライアント側からMTAに接続した時点でセッション開始です。メールの配送で必要な送信先、送信元のメールアドレス、メール本文を入力して、最後にクライアントから「QUIT」コマンドを送ると終了です。これだけでメールが配信されるのです。

 SMTPでコマンドを受け取るMTAはコマンドやデータの内容の検証をしません。例えば送信元メールアドレスは「hoge@hoge.com」のように簡単に偽装できます。MTAで転送する前にメールのヘッダーを書き換えると、簡単に送信元を偽装したメールを配送できます。スパムや偽装されたメールの攻撃は、このような手法で配信されています。対策としてSPFなどが利用されています。

▼SPF Sender Policy Frameworkの略です。送信元の認証に使います。