最近は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 |
クライアントとサーバの役割の交換する。 |
|
|
|