SMTP認証をしているメールサーバーでエラーが発生して、ログインして確認する機会がありました。Base64にする手間が必要ですが、TELNETを使ってサーバーにコマンドでログイン出来ました。備忘録的な投稿です。
TELNETセットアップ
SMTPサーバーからの応答を確認するのに、メールクライアントでは分からないので「TELNET」という機能を使うと便利です。Windowsの場合には「Windowsの機能の有効化または無効化」からセットアップすることができます。
- 「コントロール パネル」を開いて「Windows の機能の有効化または無効化」を選択します。
- 「Windowsの機能」画面が表示されます。
- 一覧から「Telnet クライアント」左側のチェックを有効にします。同じ様な項目で「Telnet サーバー」という項目もあるので注意してください。
- 「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サーバーの応答を直接見ることが出来ます。
スポンサーリンク
最後までご覧いただき、ありがとうございます。