telnet で SMTP してみた

目的

  • telnetSMTP してみることで、メールがどうやって送信されてるかを学ぼうねってことです

というわけでやってみる

$ telnet smtp.mail.yahoo.co.jp 25 # SMTP サーバへ接続する
Trying 203.216.247.162...
Connected to smtp.mail.yahoo.co.jp.
Escape character is '^]'.
220 smtp06.mail.tnz.yahoo.co.jp ESMTP
HELO localhost # 自分のホスト名を伝える
250 smtp06.mail.tnz.yahoo.co.jp
MAIL FROM:xxx@yahoo.co.jp # 差し出しアドレスを入力する
521 smtp.mail.yahoo.co.jp closing transmission channel.  You must be pop-authenticated before you can use this smtp server, and you must use your yahoo mail address for the Sender/From field.
Connection closed by foreign host.

。。。え?なんかはじかれたよ?
SMTP使う前にPOPの認証しろよって言われてるよね

というわけでPOPの認証をする

$ telnet pop.mail.yahoo.co.jp 110 # POP サーバへ接続する
Trying 203.216.227.147...
Connected to pop.mail.yahoo.co.jp.
Escape character is '^]'.
+OK hello from popgate(2.35.15)
USER xxx # ユーザ名を入力する
+OK password required.
PASS **** # パスワードを入力する
+OK maildrop ready, 10 messages (95373 octets) (87618)
QUIT # コネクションを閉じる
+OK server signing off.
Connection closed by foreign host.

SMTP に再チャレンジ

$ telnet smtp.mail.yahoo.co.jp 25 # SMTP サーバへ接続する
Trying 203.216.247.162...
Connected to smtp.mail.yahoo.co.jp.
Escape character is '^]'.
220 smtp02.mail.tnz.yahoo.co.jp ESMTP
EHLO localhost # 自分のホスト名を伝える
250-smtp02.mail.tnz.yahoo.co.jp
250-AUTH LOGIN PLAIN XYMCOOKIE
250-PIPELINING
250 8BITMIME
MAIL FROM:xxx@yahoo.co.jp # 差し出しアドレスを入力する
250 ok
RCPT TO:xxx@yahoo.co.jp # 宛先アドレスを入力する
250 ok
DATA # FROM, SUBJECT, 本文を入力する
354 go ahead
FROM:xxx
SUBJECT:test

this is a test mail
.
250 ok 1271948514 qp 89919
QUIT # コネクションを閉じる
221 smtp02.mail.tnz.yahoo.co.jp
Connection closed by foreign host.

まとめ

  • メールの送信がどのような流れで行われているのかが理解できた
  • HTTP も SMTP も結局決まったフォーマットの文字列を送受信することでいろいろなことを実現しているだなと思った

参考