コマンドラインでさくっとメール送っちゃおうぜ

・メールユーザーを追加した後に実際にそのアカウントでメールが送信できるかどうかの確認ができる
・いちいちメーラーに設定しなくてもコマンド(黒い画面)だけでさくっとメールが送信できちゃう

最初に言っておくとメールサーバーが暗号化必須(gmailとか)だと特殊なやり方が必要なので読まない方がいいです。

引用(コピペ)
Telnet は、アプリケーションを遠隔で実行する機能をユーザーに提供し、遠隔管理を支援します。

サーバー(対象PC)に違うPCから通信内容むき出しで色々操作できてしまうアプリケーション。
なのでサーバーとかいじるときはおとなしくSSHを使いましょう。

ところがこのtelnet、サーバーに接続して設定をあれこれする機能以外にも、SMTPやHTTPのようにテキストの入出力を行うアプリケーション層のプロトコルを実行することもできるです。

要はコマンドラインからサービスに接続できるぜってことです。

以下はtelnetでwebサービスに接続するデモです
※windowsのコマンドプロンプトだと何故かhttp接続したあと入力した内容が見れないのでmacかlinux使って検証してください。

1
2
3
4
5
6
7
8
9
$ telnet {HOST} 80 [Enter]

Trying 182.22.70.252...

$ GET / HTTP/1.1 [Enter]
$ [Enter]

レスポンス(HTML)が返ってくる

これと同じ要領でメール送信サーバーに接続して、メールを送信することができます。

SMTP認証を突破せよ

メールを送信する前に認証という大きな壁があります。
メーラーを設定する際にユーザー名・パスワードをいれると思いますが、それと同じことをコマンドラインでやります。

まずメール送信サーバーで使われるポートは25なので、25番に接続します。

1
2
3
$ telnet {HOST} 25 [Enter]

220 {HOST} ESMTP unknow

これが返ってきたらOKです。
続いて以下を入力しましょう。

1
2
3
4
5
$ AUTH LOGIN [Enter]
$ {base64encodeしたユーザー名} [Enter]
$ {base64encodeしたパスワード} [Enter]

Authentication successful

successfulとなりましたのでこれで認証成功です。

base64encodeは以下で行うと楽ちん
http://www.base64encode.org/

サーバーによっては25が使えない場合があるので、587を使いましょう。
それでもダメな場合はあきらめましょう;;

また、POP before SMTPなど他にも認証方式はありますが今回は割愛します。

送信元・送信先メールアドレスを設定しよう

送信元もメールサーバーに身元を認識させるために必須です。
ありえないドメインとかだとメールサーバーは送信してくれません。

【送信元メールアドレス】

1
2
MAIL FROM:kunii@cueplus.com
250 ok

当たり前ですが、送信先メールアドレスは必須ですよね。

【送信先メールアドレス】

1
2
RCPT TO:kuniiskywalker@gmail.com
250 ok

これらの情報を元にサーバーはメールを送信します。

送信してみよう!

では実際に送信する内容を入力していきます。

1
2
$ DATA [Enter]
354 go ahead

これで送信するデータの入力待ち状態になります。

さて件名・本文入力といきたいのですが、メールを送る上で重要な要素がもう一個あります。

↑で説明した送信元・送信先メールアドレスはあくまでサーバーが認識するところで、
受信ユーザーは誰が送ったのかが識別しにくいです。
送られてきたメールの送り元が誰なのか、誰宛に送った情報なのかがこれだと視覚的にわかりずらいですね。
手紙とか物を送るときも差出人情報・送り元情報が必要かとおもいますが、メールの場合もこれらをヘッダーに書いて送ります。

1
2
From: {相手のメーラに表示される差出人名} [Enter]
To: {相手のメーラに表示される送信先名} [Enter]

では件名・本文入力といきましょう!
入力終了時は「.」ENTERで!

1
2
3
4
5
6
7
8
9
10
Subject: {件名} [Enter]

{本文} [Enter]

. [Enter]

250 ok 1287476652 qp 11135
quit
221 i-3-i.info

実際に送信できたか確認しましょう。

考察

telnetで送信できてもメーラーによっては送信できない場合があるのでガチ検証したいときは実際のメーラーでご確認ください。

Please share