メールサーバを構築した後の動作確認はどうやっていますか?
トラブルが起こった場合、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 の記述漏れが無いか確認して下さい。
コメント