.
.
.
.
.
TOPページ(Alt+B)
.
電子メール配送のシステム

電子メールはどのように配送されるのでしょうか。ユーザーがメールを読み書きするソフト(OutlookExpress等)をMUA(mail user agent)と呼びますが、このソフトがメールを直接配送するわけではありません。MUAはユーザーが書いたメールをMTA(mail transport agent)と呼ばれる別のソフトに渡します。実際の配送はこのMTAの仕事です。

MTAの代表がsendmailです。1982年に米国のEric Allman氏によって開発されたソフトで、現在でも改良・機能強化が続けられています。初めてTCP/IPを実装したBerkeleyUNIXと共に送り出されたこともあり、MTAの標準となりました。

sendmailは、SMTP(simple mail transfer protocol)という単純なコマンド応答型のプロトコルを使いメールのやりとりをします。従ってsendmailはインターネットメールを送受信するためのUNIX上のプログラムで、メールの送信と受信の両方に利用されています。UNIX同士の通信の場合は、それぞれの端末にメールサーバーが実装されているため、送信も受信もすべてSMTPだけで行うことができますが、Windowsなどの場合には受信専用のPOP3(Post Office Protocol)やIMAP4というプロトコルを使って、メールサーバーからメールを取り込むことになります。IMAP4とはPOP3の後継プロトコルとして登場したプロトコルであり、メールボックスをすべてメールサーバーで管理することによってモバイル環境にも対応したプロトコルです。

電子メール配送のしくみ 電子メール配送のしくみ


ところで、あなたは以下のようなメールを受け取ったことありませんか?

The original message was received at Fri, 26 May 2000 09:23:32 +0900
from vaio@vaio.vip.co.jp [210.162.185.148]

   ----- The following addresses had permanent fatal errors -----
<vaio@vaio.vip.c.jp>  ←vaio.vip.co.jpのところを、vaio.vip.c.jpとタイプミスしている。

   ----- Transcript of session follows -----
550 <vaio@vaio.vip.c.jp>... Host unknown (Name server: vaio.vip.c.jp.: host not found)

これは宛名を間違って入力して送信したため宛先不明で返ってきたことを意味します。一番最後にある「550」という3桁の数字が、SMTP応答コードというものです。
SMTPプロトコルでは、コマンドを受け付ける場合を含め、応答には必ず3桁の数字からなる応答コードを行の先頭に付けます。この応答コードにより、それぞれの状態を把握することができます。

代表的なSMTP応答コードには、

220 <domain>Service ready <指定されたドメイン>に対して、サービスを開始する。
221 <domain>Service closing transmission channel <指定されたドメイン>のサービスを終了し、接続を遮断する。
250 Requested mail action okay, completed メールサーバーへのコマンド受付OK。
251 User not local; will forward to <forward-path> 受信者が存在しないので<forward-path>に転送する。
354 Start mail input; end with <CRLF>.<CRLF> 本文の開始;.だけの行で本文終了。
421 <domain> Service not available,closing transmission channel サービスは利用不能。接続を閉じる。
450 Requested mail action not taken: mailbox unavailable メールボックスが利用できないため、要求された処理は実行不能。
451 Requested action aborted: local error in processing 処理中にエラーが発生。要求された処理は失敗。
452 Requested action not taken: insufficient system storage 記憶装置の空き領域が不十分なため、要求された処理は実行不能。
500 Syntax error, command unrecognized 文法に間違いがあるため、コマンドが理解できない。
501 Syntax error in parameters or arguments 引数の文法に間違いがある。
502 Command not implemented そのコマンドは実装されていない。
503 Bad sequence of commands コマンドの発行順序が間違っている。
504 Command parameter not implemented 使っているコマンドのパラメータは実装されていない。
550 Requested action not taken: mailbox unavailable メールボックスが利用できないため、要求された処理は実行不能。
551 User not local; please try <forward-path> 受信者が存在しない。<forward-path>に送信せよ。
552 Requested mail action aborted: exceeded storage allocation ディスク不足のため、要求された処理は実行不能。
553 Requested action not taken: mailbox name not allowed メールボックスの名前が不適切なため、要求された処理は実行不能。
554 Transaction failed トランザクション処理の失敗。

等があります。

次に、メールクライアントからメールを送信するときの手順を、telnetを使ったメール送信手順で説明しましょう。

・telnet
遠隔操作端末ソフトウエア。つまり、本来は遠隔地にあるパソコンやワークステーションの保守のためのソフト。Windowsでは「スタート」−「ファイル名を指定して実行」に「telnet」と入力すると起動することができます。ポート番号は23番

telnet1

telnet2

使用方法は接続ダイアログボックスの中のホスト名に、接続ホスト名、あるいはIPアドレスを入力し、ポート番号に25(SMTPの標準ポート番号)と入力します。

telnet3

SMTPで使われる代表的なtelnetコマンドとしては、下記のコマンドがあります。

  1. EHLO  自分のドメインを通知したあとに拡張SMTPを使うことを要求する。
  2. HELO  自分のドメインを通知する。
  3. HELP  コマンドのヘルプを表示する。
  4. MAIL FROM: 自分のメールアドレスを設定する。
  5. RCPT TO:   あて先メールアドレスを設定する。
  6. DATA    メール本文の宣言だけで終わる行により本文終了の宣言を行う。
  7. Subject: 表題。
  8. . メールの本文終了。
  9. QUIT   メールサーバーとの通信を終了する。
  10. VRFY  宛先アドレスがそのメールサーバーにあるかどうか確認し、メールアド レスを表示する。
  11. EXPN   宛先アドレスを展開し、実際の宛先アドレス(転送先)を表示する。

telnetを利用した送信例(黄文字が入力したコマンド)

>telnet smtp.mail.or.jp 25
>220 smtp.mail.or.jp ESMTP
>helo hogehoge
>250 ok
>mail from: hogehoge@mail.or.jp
>250 ok
>rcpt to: vaio@vaio.vip.co.jp
>250 ok
>data
>354 Please start mail input.
>subject: hello
hello, This is test Mail.
bye
.

>250 Mail queued for delivery.
>quit
>221 Closing connection. Good bye.
ホストとの接続が切断されました。

尚、telnetについての詳しい利用方法について知りたい方は、専門書等が書籍店に多数ありますので、そちらを参照してください。

TOPページ(Alt+B)

CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー