MTA。 普段、電子メールを使っていてもおそらく意識したことはおろか、 聞いたこともない、という人も多いかと思います。 このページでは、 そのMTAとSMTPという方法を用いて直接お話してみることで 電子メールの配送についての理解を深めるとともに、 トラブルが発生したときに解消する助けとなるような技術を身につける ことを目的として書かれています。 実際に自分でも試しながら読んで頂けると幸いです。
メールはMTAからMTAへと転送されることで配送される、ということは イントロダクションで述べました。 問題はどうやってメールをやりとりするか、ということですが、 メールを受け取れるマシンのMTAは、他のマシンのMTAがメールを持ってくるのを 待っています。 そこで、その待っているMTAと直接お話すればいろいろなことがわかるはずです。 ここで、MTAと直接話をすることを「SMTPに接続する」といいます。
では、SMTPに接続することから始めてみましょう。 読みやすくするために、メールサーバーを mail.puni.net 、自分の アカウントを mimori だとします。 メールアドレスは mimori@puni.net です。
実際に試すときには、メールサーバーはプロバイダやネットワーク管理者 から教えてもらったものを、またアカウントも自分自身のものを 使って下さい。 とにかく、SMTP に接続してみましょう。 telnet でポート番号を25にしてメールサーバーに接続して下さい (具体的な方法が分からない人は こちら)。
さて、ここでSMTPを使ってMTAと話をするわけですが、始まりと終わりの 「おまじない」を覚えておきましょう。
HELO puni.net
さて、始まりの呪文が終わったら、次はメールを出してみましょう。
また、RCPT で指定した宛て先が実際にメールを送付する先になるので、 (たいていの)メーリングリストの場合の様に To がメーリングリスト 投稿先アドレスのままであっても、実際にはメンバーそれぞれに 配られる、ということができます。なお、RCPT は実際には RCPT To: (アドレス)と使います。 なお、この2つのアドレスは<>で囲むようにします。
メールはDATA の後に書きます。 全体像の中でも書きましたが、 普通見えるヘッダもすべてメールの一部です。 ヘッダについては別のページに説明されています。 ヘッダと本文との間に空行(リターンだけの行)をおくことを忘れずに。 なお、これらのコマンドは上に書いた順番通りに実行してください。
「.」(ピリオド)1つだけの行 (スペースなどもあってはいけません)がメール終わりの合図ですから メールを書きおわったら最後に「.」(ピリオド)1つだけの行を つけて下さい。 なお、ピリオド1つだけの行をメールにして送りたい時には 「..」としてあげます。ピリオド2つの行なら「...」の様に、 ピリオドだけの行についてはピリオドを1つ余計につけるようにします。
では、やってみましょう。 ここではメールの送り先を sakura@puni.net にしてみます。 実際には sakura@puni.net のかわりに自分のアドレスや友達のアドレス (こういう実験をやっていいかどうか前もって許可をもらっておいて 下さい)でやってみてください。 最後に QUIT するのも忘れないように。 なお、青い文字は各操作の説明です。
MAIL From: <mimori@puni.net> | 差出人のアドレス |
RCPT To: <sakura@puni.net> | 送り先のアドレス |
DATA | |
Date: 07 Dec 1998 21:22:23 +0900 | まずはヘッダ。送信日時 |
From: test1@puni.net | ヘッダのFrom |
Subject: Test mail | |
To: test2@puni.net | ヘッダのTo |
Message-ID: <19981207212223.mimori@mail.puni.net> | Message-ID は他のメールと同じにならないよう設定する |
Konnichiwa. | ここから本文(body) |
Ogenki desuka? | |
. | メール終わり |
QUIT | |
以上の操作をすると、このような画面になります。 なお、これは一例です。 使っている環境によってはSMTPやPOPがヘッダを追加したりすることも あるかもしれませんが、これは実装や設定のポリシーによるものですので ここでは触れません。
これによって、sakura@puni.net さんにはこんなメールが届くはずです。
もし、大勢に同じメールを送りたいときには、送り先ごとにRCPT を書きます。
MAIL From: <sakura@puni.net> | 差出人 | ||||
RCPT To: <ukito@puni.net> | 送り先1 | ||||
RCPT To: <mimori@puni.net> | 送り先2 | ||||
RCPT To: <mimori@yo.rim.or.jp> | 送り先3 | ||||
DATA | |||||
Date: 08 Dec 1998 02:15:12 +0900 | |||||
From: mimori@puni.net | |||||
Subject: Test mail | |||||
To: mimori@yo.rim.or.jp | |||||
Message-ID: <19981208021512.sakura@mail.puni.net>Konnichiwa. | Ogenki desuka? | . | QUIT | |
こうすると3人に同じメールが送られます。 ヘッダに書かれていない相手にもメールが届くことに注意。 このように、実際にメールをどこに届けるかを決めているのは ヘッダの To や Cc ではなく、RCPT To: の中身なのです。
あともう1つ、便利なコマンドについて説明しましょう。 VRFYというコマンドはメールアドレスを確かめる(verify)コマンドです。 例えば
VRFY mimori
とすると、mimoriというメールアドレスがそのマシンにあるかどうか 調べてくれます。もし存在すれば 250 <mimori@...>、 なければ 500 mimori... User unknown などと表示されます。 また、
EXPN mimori
とすると、mimoriというメールアドレスが、実際にどのように展開されるか (別のホストに転送されるなど)までわかります。ただし、近年では、これらの 機能をセキュリティ上の問題であると感じる人も多くなってきているので、使 える保証はありません。
ここでは7つしかコマンドの説明をしませんでしたが、 実際にはもっとたくさんのコマンドがあります。 興味のある人は rfc821、 rfc1123の5、 rfc1869 を参照してみて下さい。
しかし、ここにあげたコマンドを理解するだけでたいていの ことは出来ます。
補足
必要なヘッダが足りない場合、MTA(正確にはMSA: Message Submissition Agent) はそれを補うことができます (RFC2476)。
←イントロダクション ↑もくじへ → メールを取りにいこう〜POPのしくみ〜