single.php

SMTP認証サーバーにTELNETで確認する方法(AUTH LOGIN)

SMTP認証をしているメールサーバーでエラーが発生して、ログインして確認する機会がありました。Base64にする手間が必要ですが、TELNETを使ってサーバーにコマンドでログイン出来ました。備忘録的な投稿です。

TELNETセットアップ

SMTPサーバーからの応答を確認するのに、メールクライアントでは分からないので「TELNET」という機能を使うと便利です。Windowsの場合には「Windowsの機能の有効化または無効化」からセットアップすることができます。

  1. 「コントロール パネル」を開いて「Windows の機能の有効化または無効化」を選択します。
  2. 「Windowsの機能」画面が表示されます。
  3. 一覧から「Telnet クライアント」左側のチェックを有効にします。同じ様な項目で「Telnet サーバー」という項目もあるので注意してください。
  4. 「OK」ボタンをクリックして、セットアップを行います。

認証のための準備

SMTP認証を確認するためには、認証ユーザとパスワードをBase64化しておく必要があります。「文字列 Base64」などで検索すると、変換するサイトが見つかるはずです。

“sample”であれば、”c2FtcGxl”のような文字列になります。

SMTP認証のためのコマンド

最初に、メールサーバーに接続します。接続するサーバーのIPアドレスかDNS名が必要になります。

「コマンド プロンプト」を起動して、キーボードから「telnet」と入力して「Enter」キーを押します。

telnet[Enter]

プロンプトが変更されるので、接続するメールサーバーとポートを入力します。

open [メールサーバーのIPアドレスまたはDNS名] 587[Enter]

最後の587はポート番号になり、認証が必要なメールサーバーは587に設定されています。ポート番号が異なるのであれば適宜変更してください。

メールサーバーへの接続が成功すると次のような応答があります。

220 [メールサーバーの名前やサービス名] ...

続いて、HELOコマンドを送ります。

HELO[Enter]

メールサーバーが応答を返してくれます。

250 [メールサーバーの名前]Hello

AUTH LOGINコマンドを送ります。

AUTH LOGIN[Enter]

メールサーバーがユーザー名を求めてきます。

334 VXNlcm5hbWU6

“VXNlcm5hbWU6″は”Username:”がBase64でエンコードされた文字列です。

用意しておいた、ユーザ名をBase64した文字列を入力します。
続いてメールサーバーがパスワードを求めてきます。

334 UGFzc3dvcmQ6

もちろん”UGFzc3dvcmQ6″は”Password:”がBase64でエンコードされた文字列です。
用意しておいた、パスワードをBase64した文字列を入力します。

235 Authentication successful

サーバー側での認証結果が戻されます。(サーバーによって戻される文字列が違いますが、SuccessとかSuccessfulと書いてあれば認証は成功しています。

コマンドをまとめるとこんな感じになります。

HELO[Enter]
250 [メールサーバーの名前]Hello
AUTH LOGIN[Enter]
334 VXNlcm5hbWU6
"ユーザ名をBase64化した文字列"[Enter]
334 UGFzc3dvcmQ6
"パスワードをBase64化した文字列"[Enter]
235 Authentication successful

 
マイクロソフトのSMTPサーバーで試してみた例

メールが送信されない場合など、認証でエラーになっているのか、それ以外でエラーになっているのかを原因を切り分ける際など、SMTPサーバーの応答を直接見ることが出来ます。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です