telnetでメールサーバの動作確認(SMTP,SMTP-AUTH)

ALL
スポンサーリンク

メールサーバを構築した後の動作確認はどうやっていますか?
トラブルが起こった場合、Thunderbird や Outlookを使ってみるだけでは、これらのソフトの設定の問題か、サーバ自身の問題かの切り分けが困難です。

前回のPOP3,IMAP4 に引き続き、telnetでSMTP,SMTP-Authの動作確認をする方法を紹介します。

なお、メールサーバの設定については下記を参照してください。
CentOS6でのメールサーバの設定(postfixその1)
CentOS6でのメールサーバの設定(postfixその2)
CentOS6でのメールサーバの設定(dovecot)

SMTPの場合

Windowsのスタートメニューのアクセサリから、コマンドプロンプトを起動した後、以降のコマンドを入力します。
赤字は入力する箇所、緑字はコメントです。

telnet メールサーバ名 587
220 メールサーバ名 ESMTP
EHLO メールサーバ名
250-メールサーバ名
250-PIPELINING
250-SIZE 102400000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:送信元メールアドレス  メールの From になります
250 2.1.0 Ok
rcpt to:宛先メールアドレス  メールの To になります。メールサーバ上のメールアドレスを指定してください。
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject メールの題名
メール本文を入力します
.  メール本文の最後に . を入力します
250 2.0.0 Ok: queued as 8EE3A260127
quit
221 2.0.0 Bye

telnetで接続が失敗する場合
「接続中: メールサーバ名…ホストへ接続できませんでした。 ポート番号 587: 接続に失敗しました」と出て、telnetの接続が失敗する場合は、以下を確認して下さい。

(1)メールサーバのファイアウォールでブロックしていないか
メールサーバのiptables等でサブミッションポート(587番ポート)への接続が許可されているか確認して下さい。
iptablesの設定については、iptablesサンプル を参照してください。

(2)SMTPで接続が可能になっているか
メールサーバ上で netstat -n -a|grep “:587” を実行し、下記のように表示されるか確認して下さい。
表示されない場合は、postfix が起動していません。

netstat -n -a|grep ":587"
tcp        0      0 0.0.0.0:587                0.0.0.0:*                  LISTEN

SMTP-Authの場合

準備

最初に下記のファイルを作成します。
赤字の箇所は、メールサーバ上のユーザ名とパスワードを記述してください。
\0 はそのまま記述して下さい。

base64enc.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="JavaScript" src="base64.js"></script>
<script language="JavaScript">//<![CDATA[
var t=base64encode('ユーザ名\0ユーザ名\0パスワード');
//]]></script>
</head>
<body>
<script language="JavaScript">//<![CDATA[
document.write(t.link(t));
//]]></script>

Base64.jsを下記からダウンロードします。
Base64エンコーダの詳細情報 : Vector ソフトを探す!

base64.js と先に作成した base64enc.html を同じ場所に置き、base64enc.html をブラウザで開きます。
インターネットエクスプローラで、「ブロックされているコンテンツを許可(A)」のボタンが表示されたら押してください。
表示された文字列は、BASE64 エンコードされたユーザ名とパスワードです。
後ほど、※印の箇所で使います。

telnet実行

Windowsのスタートメニューのアクセサリから、コマンドプロンプトを起動した後、以降のコマンドを入力します。
赤字は入力する箇所、緑字はコメントです。

telnet メールサーバ名 587
220 メールサーバ名 ESMTP
EHLO メールサーバ名
250-メールサーバ名
250-PIPELINING
250-SIZE 102400000
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN BASE64エンコードされたユーザ名とパスワード  ※ 準備 の箇所で base64enc.html をブラウザで開いた時に表示された文字列を "BASE64エンコードされたユーザ名とパスワード" に記述して下さい
235 2.7.0 Authentication successful
mail from:送信元メールアドレス  メールの From になります
250 2.1.0 Ok
rcpt to:宛先メールアドレス  メールの To になります
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject メールの題名
メール本文を入力します
.  メール本文の最後に . を入力します
250 2.0.0 Ok: queued as 8EE3A260127
quit
221 2.0.0 Bye

telnetで接続が失敗する場合
「接続中: メールサーバ名…ホストへ接続できませんでした。 ポート番号 587: 接続に失敗しました」と出て、telnetの接続が失敗する場合は、以下を確認して下さい。

(1)メールサーバのファイアウォールでブロックしていないか
メールサーバのiptables等でサブミッションポート(587番ポート)への接続が許可されているか確認して下さい。
iptablesの設定については、iptablesサンプル を参照してください。

(2)SMTPで接続が可能になっているか
メールサーバ上で netstat -n -a|grep “:587” を実行し、下記のように表示されるか確認して下さい。
表示されない場合は、postfix が起動していません。

netstat -n -a|grep ":587"
tcp        0      0 0.0.0.0:587                0.0.0.0:*                  LISTEN

AUTH PLAIN コマンド実行で、Error: authentication not enabled と表示される場合
SMTP-Authが有効になっていません。
/etc/postfix/master.cf の submission の箇所で -o smtpd_sasl_auth_enable=yes が記述されているか確認して下さい。

AUTH PLAIN コマンド実行で、Error: authentication failed: と表示される場合
BASE64エンコードされたユーザ名とパスワードが間違っています。
base64enc.html に記述したユーザ名とパスワードを確認して下さい。ユーザが存在しないか、パスワードが間違っています。
またはBase64エンコードされたの文字列自体が間違っています。
Base64エンコード時に \0 の記述漏れが無いか確認して下さい。

参考

base64.jsの詳細情報 : Vector ソフトを探す!
SMTP Autheticationの導入

コメント