
コマンドプロンプトで telnet(テルネット)というコマンドを利用することで、メールの送信や通信のテストをおこなうことができます。
この記事では、
- telnetとは何か
- どんな仕組みなのか
- 実際の確認方法
を初心者向けにわかりやすく解説します。
telnetとは?
telnetとは、特定のサーバーに直接接続して通信確認を行うためのコマンドです。
簡単に言うと、
「相手のサーバーがちゃんと応答しているかを確認する道具」
です。
もともとはリモートログイン用のプロトコルですが、現在では主に通信テスト用として使われます。
また、実際にメールを送信することができます。
telnet の基本構成
telnet は次の 2 つで成り立っています。
① telnet クライアント
- あなたのパソコンで動く
- 文字を送る役割
② telnet サーバー
- 相手のコンピュータで待ち受けている
- 受け取った文字を解釈して、結果を返す
この 2 つが TCP という安定した通信方式でつながります。
telnetの仕組み
インターネット通信では、サーバーごとに「ポート番号」という入り口があります。
メールの場合、主に次のポートを使います。
- 25番ポート(SMTP)
- 587番ポート(SMTP Submission)
telnetは、このポートに直接アクセスして
- 接続できるか?
- 相手が応答するか?
を確認する仕組みです。
つまり、
「そのサーバーは生きているか?」を直接確認できるツール
ということです。
telnet を使うための事前準備
Windows では telnet クライアントが既定で無効であるため、有効化する必要があります。
有効化手順
1. コントロールパネルを開きます。
2. [プログラムと機能] >[Windows の機能の有効化または無効化]をクリックします。
3. [Telnet クライアント] にチェックを入れます。
telnet で指定するサーバーは?
telnet で指定するサーバーは次のいずれかです。
- メールを受信する側の SMTP サーバー(MX レコード)
- 自分の組織の SMTP サーバー(送信・中継用)
基本原則:SMTP は「受信側」に話しかける
SMTP はもともと「送信側が、受信側のメールサーバーに直接話しかける」プロトコルです(RFC 5321)。
そのため telnet で指定するサーバーは、「そのメールアドレスを受け取る責任を持つサーバー」になりますので、ドメインの MX レコードを指定します。
手順
- 宛先ドメインの MX レコードを調べる
- その MX に書かれているホスト名に telnet する
- ポート 25 を指定する
例
telnet example.mail.protection.outlook.com 25
telnet は TLSの暗号化に対応していないので、smtp.office365.comに接続してメール送信はできません。
送信なのに、実は受信サーバーに預けている?
telnet SMTP テストは感覚的にこうです。
[あなた / telnet]
↓
[相手の SMTP 受付窓口(MXレコード)]
↓
[相手のメールシステム内部]
↓
[受信者のメールボックス]
- telnet = 受付窓口まで持っていく人
- SMTP サーバー = 郵便局
という関係です。
telnet での SMTP セッションの中身
telnetで実行している操作の流れは以下のとおりです。
① 接続
telnet example.mail.protection.outlook.com 25
TCP/25 に接続し、サーバーが応答
220 example.mail.protection.outlook.com ESMTP ready
220 = 「準備完了」コード。
② HELO / EHLO
HELO client.example.com
意味:
「私は client.example.com です」
- SMTP はまず身元表明が必須
- HELO は拡張 SMTP(ESMTP)用
HELO のみ入力した場合でも進めることはできます。
③ MAIL FROM(エンベロープ送信者)
MAIL FROM:<sender@example.com>
意味:
「このメールの差出人はこれ」
これは ヘッダーの From: とは別で、
配送用のエンベロープ情報です。
④ RCPT TO(宛先)
RCPT TO:<user@example.net>
意味:
「この宛先に配送してほしい」
複数回送ると複数宛先になります。
サーバーはここで配送可否を判断。
⑤ DATA(本文開始)
DATA
サーバー応答:
354 Start mail input; end with <CRLF>.<CRLF>
意味:
「本文を送っていい?」
⑥ メール本文(ヘッダー+ボディ)
From: sender@example.com (ヘッダーFrom)
To: user@example.net (ヘッダー To)
Subject: Test Mail (件名)
This is test mail (本文)
.
※最後に [. (ドット)] を入れることでメールが送信されます。
件名と本文の間に任意のヘッダー情報を追加することもできます
例 : x-mailer:test など
⑦ QUIT
QUIT
- SMTP セッション終了
- サーバーがキューに投入
実行例
sender@example.com から user@example.net にメールを送信する場合、コマンドプロンプトを起動し以下の流れで実行します。
telnet example.mail.protection.outlook.com 25
HELO
MAIL FROM:<sender@example.com>
RCPT TO:<user@example.net>
DATA
From: sender@example.com
To: user@example.net
Subject: Test Mail
x-mailer: test
This is test mail
.
MAIL FROM と From を別のメールアドレスにすることもできます。