Home arrow Debian環境セットアップ arrow メールの送信テスト
メールの送信テスト プリント
最近はSMTP-AUTHなどで使う暗号化が当たり前なので、エンコードにプログラムを使って試験するしかないのですが、localhostからメールを出すときの試験は、telnetで簡単に試験することができます。

メールの試験はともかく、メールサーバーとのやりとりがどのようにされているか知るだけでも、結構ためになったりします。


(1)SMTPサーバーへの接続

telnetを使って、SMTPサーバーへ接続します。
この場合、SMTPサーバーが接続許可をしていないといけないわけですが、localhostであれば通常は接続許可しているので、localhostのSMTPサーバーに接続します。

# telnet localhost 25
  Trying 127.0.0.1...
  Connected to smtp_test.
  Escape character is '^]'.
  220 smtp_test.fulldigit.net ESMTP Postfix (Debian/GNU)



(2)SMTPセッションの開始
ehloコマンドを発行して、SMTPサーバーからSMTPセッションを開始してもらいます。
セッションが確立すると、下記のような情報がメーラーに返信されてくることになります。

情報を何気なしに見ていればわかりますが、例えば「SIZE 10240000」は、メールのサイズは10MBまでよ! と最初に伝えてきていますので、メーラーからそれを超えるメールを送ろうとすると、「メールの サイズが上限値を超えています。」といったメッセージが出せるわけですね。


> EHLO
   250-smtp_test.fulldigit.net
   250-PIPELINING
   250-SIZE 10240000
   250-VRFY
   250-ETRN
   250-STARTTLS
   250-AUTH NTLM DIGEST-MD5 CRAM-MD5
   250-ENHANCEDSTATUSCODES
   250-8BITMIME
   250 DSN


(3)エンベロープ上のメールの送信者を指定
mailコマンドでエンベロープの送信者のアドレスを指定します。

> MAIL FROM:<test@fulldigit.net>
   250 2.1.0 Ok



(4)エンベロープ上のメールの受信者を指定
rcptコマンドでエンベロープの受信者のアドレスを指定します。

> RCPT TO:<test@xxx.co.jp>
   250 2.1.5 Ok



(5)メッセージデータを入力

> DATA
   354 End data with <CR><LF>.<CR><LF>

※メールヘッダー部の入力
> subject:Test Mail
> from:test@fulldigit.net
> to:test@xxx.co.jp

※メール本文の入力
> test mailbody

※メール本文の最後に「.」ピリオドを入力して、メールを送信
> .
   250 2.0.0 Ok: queued as 6F6E42B0B4D


(6)接続の終了

> QUIT
   221 2.0.0 Bye
   Connection closed by foreign host.



これでメールが送信できているはずなので、メールを受信して確認しましょう。

メールを送信する操作や原理は簡単ですね。通常使っているメーラーは、コマンド部分を自動的に発呼しているだけということになります。


その他にもいろいろなコマンドがあるので、参考まで

コマンド   コマンドの動作
 EHLO  SMTPセッションの開始。SMTPサーバはSMTPクライアントを識別し、もしそのクライアントがそのSMTPサーバを利用できるならばセッションが開始される。
 AUTH  SMTP認証 サーバとクライアントがSASL(RFC 2222)を利用して相互認証できるようになる。
 MAIL FROM:  エンベロープ上のメールの送信者を示す。(メールヘッダーのFrom:とは意味が異なる)
 RCPT TO:  エンベロープ上メールの受信者を示す。(メールヘッダーのTo:とは意味が異なる)
 DATA  メッセージデータを送る。メッセージの終わりには「.」(ピリオド)だけの行を入力する。
メールのヘッダー部分(Subjectやfrom,to)もここで入力。
 QUIT  セッションを終了。
 VRFY  アドレスを参照する。
 EXPN  エイリアスを展開する。
 HELP  SMTPコマンドのhelpを参照する
 RSET  セッションの状態をリセット。
 SEND  ユーザ端末に送られるメッセージの送信者を示す。
 SOML  端末に出力あるいはメール
 SAML  端末出力とメール
 TURN  クライアントとサーバの役割の交換する。