takada-atです。こんにちは。
amo-k先輩に「自分SMTPコマンドなんて打ったことないッス」と言うと、「おまえも打てよ、な?」と、まるで後輩に煙草を薦める不良の先輩のような調子で、SMTPコマンドを打つようにすごまれました。
というわけで今日は、telnetとSMTPコマンドを使い、メーラーになった気持ちでメールを送信してみます。
SMTPといっても何だかわからないという方もおられるでしょうが、SMTPは「Simple Mail Transfer Protocol(単純なメール転送プロトコロル)」の略であり、メール送信のために定められた手続きのことです。要するに「この決まりを守っていればメールを送受信できるよー」というきまりのことです。
どんなメーラーもメールサーバーも基本的には、SMTPに従った動作を実装しています。
Wikipediaの記事にリンクをはっておきます。
-Simple Mail Transfer Protocol - Wikipedia
最新のSMTPプロトコルは、RFC 5321で標準化されています。
わたしも全部読んだことはないのですが、以下にリンクを載せておきます。RFC5321の日本語訳は見つけられませんでしたが、旧版のRFC 821には複数の日本語訳があるようです。
-RFC 5321 - Simple Mail Transfer Protocol
-RFC日本語版リスト
SMTPでメールを送信するには、メールサーバーにtelnetでアクセスし、SMTPコマンドを送っていけばよいようです。
実際にやってみましょう。
同期の honda-h に「ランチに行きませんか」というメールを出してみます。
↓honda-h

以下入力したコマンドを、C:からはじまる行に、サーバーからの返答をH:からはじまる行に書きます。
まずtelnetコマンドを使いmail.example.comの25番ポートにログインします。
(アドレスはすべて架空のものです)。
# telnet mail.example.com 25 > 220 mail.example.com ESMTP
HELOコマンドを入力し、こちらのサーバー名を伝えます。
C:HELO localhost H:250 mail.example.com
MAILコマンドを利用し、差し出しアドレスを伝えます。
C:MAIL FROM:takada-at@example.com H:250 ok
RCPTコマンドを利用し、送り先アドレスを伝えます。
C:RCPT TO:honda-h@example.com H:250 ok
メールの本文はDATAコマンドを使って送ります。「.」だけで終る行がメッセージの終了を意味します。
今回はマルチバイト文字を使わず、ローマ字で送ってみることにします。
C:DATA H:354 Please start mail input. C: Subject: lunch From: takada-at@example.com honda-h san. gohan tabe ni ikimasyou. . H:250 Mail queued for delivery.
最後にQUITコマンドを利用し、コネクションを切断します。メールサーバーはちゃんと挨拶ができる子のようです。
C:QUIT H:221 Closing connection. Good bye.
もう少し実験してみましょう。
HELO の際に、nothing.example.com と答え、noone@example.com という存在しないアドレスにメールを送ります。
DATA コマンド中の From: の値も、noone@example.com にしておきます。
220 mail.example.com ESMTP HELO nothing.example.com 250 mail.example.com MAIL FROM: takada-at@example.com 250 ok RCPT TO: noone@example.com 250 ok DATA: 354 Please start mail input. Subject: aaa From: noone@example.com cccc . 250 Mail queued for delivery. QUIT 221 Closing connection. Good bye.
こういう入力の仕方でも、メーラーデーモンからのリプライが takada-at@example.com に届きました。
デーモンからの返信先は必ず MAIL FROMで指定したアドレスとなるようです。
以上です。簡単ながら、自分で打ってみると、ブラックボックスに見えていたメール送信の仕組みが、心で理解できた気がします。やったことのない方はぜひ一度試してみるとよいのではないでしょうか。