メールに使われるプロトコルの技術を見ていきましょう。
まずSMTPです。SMTPはメールクライアントからメールを送信するだけでなく、MTA間でメールを転送する際にも利用されます。つまり、MTAがメールを受け入れる仕組みは共通で、相手はメールクライアントでもMTAでも構わないわけです。
SMTPが最初にRFC▼のドラフトとして公開されたのは1982年です。筆者は6歳でした。TCP▼のRFCが公開されたのが1981年なので、まさにインターネットの黎明期から存在しているのです。
TCPの25番ポートを利用
SMTPはTCPの25番ポートを利用すると決まっています。プロトコルはFTP▼と似ていて、7ビットのテキストのコマンドでやり取りします。このため実際にtelnet▼でMTAに接続すると、手動でメールを送信できます(図2-1)。SMTPは簡単なプロトコルなのでtelnetで操作するのも難しくありません。普段はメールクライアントで送信しますが、実はその背後でコマンドを使ってデータをやり取りしているのです。
実際にtelnetでMTAにアクセスしてみましょう。クライアント側からMTAに接続した時点でセッション開始です。メールの配送で必要な送信先、送信元のメールアドレス、メール本文を入力して、最後にクライアントから「QUIT」コマンドを送ると終了です。これだけでメールが配信されるのです。
SMTPでコマンドを受け取るMTAはコマンドやデータの内容の検証をしません。例えば送信元メールアドレスは「hoge@hoge.com」のように簡単に偽装できます。MTAで転送する前にメールのヘッダーを書き換えると、簡単に送信元を偽装したメールを配送できます。スパムや偽装されたメールの攻撃は、このような手法で配信されています。対策としてSPF▼などが利用されています。