適用対象:
2016
2019
サブスクリプション エディション
Telnet を使用して、メッセージング サーバー間の簡易メール転送プロトコル (SMTP) 通信をテストできます。 SMTP は、あるメッセージング サーバーから別のメッセージング サーバーに電子メール メッセージを送信するために使用されるプロトコルです。 SMTP コマンドをメッセージング サーバーに手動で送信できるため、Telnet を使用すると、メッセージの送受信に問題がある場合に役立ちます。 その返事として、サーバーは通常の接続で返される応答で応答します。 これらの結果は、メッセージを送受信できない理由の特定に役立つ場合があります。
Telnet を使用して、次の SMTP 通信をテストできます。
インターネットから Exchange organization へのメール フローをテストします。
Exchange からインターネット上の別のメッセージング サーバーへのメール フローをテストします。
ヒント
Telnet を使用して SMTP 接続をテストする代わりに、Microsoft リモート接続アナライザーを https://testconnectivity.microsoft.com/ で使用できることをご存知でしたか? Remote Connectivity Analyzer を使用すると、実行する接続テスト (この場合は Inbound SMTP Email) を選択し、表示される手順に従うことができます。 入力する必要がある情報の手順を追って説明し、テストを自動的に実行して、結果が表示されます。 試してみましょう。
事前に必要な知識
予想所要時間 : 15 分
Exchange のアクセス許可は、このトピックの手順には適用されません。 これらの手順は、Exchange サーバーまたはクライアント コンピューターのオペレーティング システムで実行します。
このトピックでは、Windows に含まれている Telnet クライアントの使用方法について説明します。 サード パーティの Telnet クライアントでは、このトピックに示されている構文とは異なる構文が必要になる場合があります。
このトピックの手順では、TCP ポート 25 を使用して匿名接続を許可するインターネットに接続するサーバーに接続する方法について説明します。 インターネットからこのサーバーに接続するには、インターネットから Exchange サーバーに TCP ポート 25 で到達できることを確認する必要があります。 同様に、Exchange サーバーからインターネット上のサーバーに接続する場合は、Exchange サーバーが TCP ポート 25 でインターネットへの接続を開くことができることを確認する必要があります。
TCP ポート 2525 を使用する一部の受信コネクタにお気付くかもしれません。 これらは内部受信コネクタであり、匿名の SMTP 接続を受け入れるために使用されません。
リモート メッセージング サーバーで接続をテストする場合は、Exchange サーバーでこのトピックの手順を実行する必要があります。 リモート メッセージング サーバーは、多くの場合、SMTP 接続の送信元の IP アドレスが送信者のメール アドレスのドメインと一致していることを確認するように設定されています。
このトピックの手順で使用可能なキーボード ショートカットについては、「Exchange 管理センターのキーボード ショートカット」を参照してください。
ヒント
問題がある場合は、 Exchange の Exchange Server フォーラムでヘルプを依頼する |Exchange Server |管理。
手順 1: コンピューターに Telnet クライアントをインストールする
ほとんどのバージョンの Windows では、Telnet クライアントを使用する前に Telnet クライアントをインストールする必要があります。 Telnet クライアントをインストールするには、「Telnet クライアントのインストール」を参照してください。
手順 2: 宛先 SMTP サーバーの FQDN または IP アドレスを見つける
ポート 25 で Telnet を使用して SMTP サーバーに接続するには、SMTP サーバーの完全修飾ドメイン名 (FQDN) (mail.contoso.com など) または IP アドレスを使用する必要があります。 FQDN または IP アドレスがわからない場合は、Nslookup コマンドライン ツールを使用して、宛先ドメインの MX レコードを検索できます。
注:
ネットワーク ポリシーによって、Nslookup ツールを使用してインターネット上のパブリック DNS サーバーへのクエリを実行できない場合があります。 代わりに、インターネット上で無料で利用可能な DNS ルックアップまたは MX レコードルックアップ Web サイトのいずれかを使用することができます。
コマンド プロンプトで「
nslookup」と入力し、Enter キーを押します。 このコマンドによって、Nslookup セッションが開きます。[
set type=mx]と入力して、Enter キーを押します。MX レコードを特定するドメインの名前を入力します。 たとえば、fabrikam.com ドメインの MX レコードを検索するには、「
fabrikam.com.」と入力して Enter キーを押します。注:
末尾のピリオド ( . ) を使用すると、既定の DNS サフィックスが意図せずドメイン名に追加されないようにすることができます。
コマンドの出力は次のようになります。
fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com mail1.fabrikam.com internet address = 192.168.1.10 mail2 fabrikam.com internet address = 192.168.1.20相手先の SMTP サーバーとして、MX レコードに関連付けられている任意のホスト名または IP アドレスを使用することができます。 優先の小さい値 (優先 = 10 対 20) は、優先 SMTP サーバーを示します。 複数の MX レコードとさまざまな優先値が、負荷分散とフォールト トレランスのために使用されます。
Nslookup セッションを終了する準備ができたら、「
exit」と入力して Enter キーを押します。
手順 3: Telnet をポート 25 で使用して SMTP 通信をテストする
この例では、次の値を使用します。 サーバーでコマンドを実行する場合は、これらの値をorganizationのSMTPサーバー、ドメインなどの値に置き換えます。
- 宛先 SMTP サーバー: mail1.fabrikam.com
- ソース ドメイン: contoso.com
- 送信者の電子メール アドレス: chris@contoso.com
- 受信者の電子メール アドレス: kate@fabrikam.com
- メッセージの件名: Contoso からのテスト
- メッセージ本文: これはテスト メッセージです
ヒント
Telnet クライアントのコマンドでは、大文字と小文字は区別されません。 この例の SMTP コマンド動詞は、わかりやすくするために大文字にしています。 宛先 SMTP サーバーに接続した後は、Telnet セッションで Backspace キーを使用することはできません。 SMTP コマンドを入力したときに間違えた場合は、Enter キーを押してから、コマンドを再度入力する必要があります。 認識されない SMTP コマンドや構文エラーがある場合は、次のようなエラー メッセージが表示されます。 500 5.3.3 Unrecognized command。
コマンド プロンプト ウィンドウを開き、「
telnet」と入力して Enter キーを押します。このコマンドによって、Telnet セッションが開きます。
[
set localecho]と入力して、Enter キーを押します。この オプション コマンドを使用すると、入力時に文字を表示できます。一部の SMTP サーバーでは必須である場合があります。
[
set logfile <filename>]と入力して、Enter キーを押します。この オプション のコマンドは、ログ記録を有効にし、Telnet セッションのログ ファイルを指定します。 ファイル名のみを指定すると、ログ ファイルは現在のフォルダーに配置されます。 パスとファイル名を指定する場合、パスはローカル コンピューター上にある必要があり、パスとファイル名を Windows DOS 8.3 形式 (スペースなしの短い名前) で入力する必要がある場合があります。 パスが存在する必要がありますが、ログ ファイルは自動的に作成されます。
[
OPEN mail1.fabrikam.com 25]と入力して、Enter キーを押します。[
EHLO contoso.com]と入力して、Enter キーを押します。[
MAIL FROM:<chris@contoso.com>]と入力して、Enter キーを押します。[
RCPT TO:<kate@fabrikam.com> NOTIFY=success,failure]と入力して、Enter キーを押します。オプションの NOTIFY コマンドでは、SMTP が提供する必要がある特定の配信状態通知 (DSN) メッセージ (バウンス メッセージ、配信不能レポート、または NDR とも呼ばれます) を指定します。 この例では、メッセージ配信が成功または失敗するために DSN メッセージを要求しています。
[
DATA]と入力して、Enter キーを押します。[
Subject: Test from Contoso]と入力して、Enter キーを押します。もう一度 Enter キーを押します。
[ 件名: ] フィールドとメッセージ本文の間に空白行が必要です。
[
This is a test message]と入力して、Enter キーを押します。ピリオド (
.) を入力し、Enter キーを押します。SMTP サーバーから切断するには、「
QUIT」と入力して Enter キーを押します。Telnet セッションを閉じるには、「
quit」と入力して Enter キーを押します。
上記の手順を使用した成功したセッションは、次のようになります。
C:\Windows\System32> telnet
Microsoft Telnet> set localecho
Microsoft Telnet> set logfile c:\TelnetTest.txt
Microsoft Telnet> OPEN mail1.fabrikam.com 25
220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at Fri, 5 Aug 2016 16:24:41 -0700
EHLO contoso.com
250-mail1.fabrikam.com Hello [172.16.0.5]
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
MAIL FROM: <chris@contoso.com>
250 2.1.0 Sender OK
RCPT TO: <kate@fabrikam.com> NOTIFY=success,failure
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Subject: test
This is a test message.
.
250 2.6.0 <c89b4fcc-3ad1-4758-a1ab-1e820065d622@mail1.fabrikam.com> [InternalId=5111011082268, Hostname=mail1.fabrikam.com] Queued mail for delivery
QUIT
221 2.0.0 Service closing transmission channel
手順 4: Telnet セッションでの成功メッセージとエラー メッセージ
このセクションでは、前の例で使用したコマンドに対する成功と失敗の応答に関する情報を提供します。
注:
RFC 5321 で定義されている 3 桁の SMTP 応答コードはすべての SMTP メッセージング サーバーで同じですが、応答のテキストの説明が若干異なる場合があります。
SMTP 返信コード
SMTP サーバーは、x.y.z 形式のさまざまな数値の応答コードを使用してコマンドに応答します。
- X は、コマンドが良いか、悪いか、不完全だったかを示します。
- Y は、送信された応答の種類を示します。
- Z はコマンドに関する追加情報を提供します
接続を開いたサーバーが応答を受信すると、リモート サーバーがコマンドを受け入れ、次のコマンドの準備ができているかどうか、またはエラーが発生したかどうかを通知できます。
先頭桁 (X) は、送信されたコマンドの成功または失敗を示すため、理解することが特に重要です。 考えられる値とその意味を次に示します。
| 返信コード | 意味 |
|---|---|
| 2.y.z | 送信されたコマンドはリモート サーバーで正常に完了しました。 リモート サーバーは次のコマンドの準備ができています。 |
| 3.y.z | コマンドは受け入れられましたが、リモート サーバーは操作を完了する前にさらに情報が必要です。 送信側サーバーは、必要な情報を含む新しいコマンドを送信する必要があります。 |
| 4.y.z | 一時的な理由により、コマンドがリモート サーバーに受け入れられませんでした。 送信側サーバーは後でもう一度接続を試みて、リモート サーバーがコマンドを正常に受け入れることができるかどうかを確認する必要があります。 送信側サーバーは、正常に接続が完了する (2.y.z コードで示される) か、完全に失敗する (5.y.z コードで示される) まで、接続を再試行し続けます。 一時的なエラーの例として、リモート サーバーの記憶領域不足が挙げられます。 領域がさらに使用可能になると、リモート サーバーはコマンドを正常に受け入れることができるはずです。 |
| 5.y.z | 回復不可能な理由のために、コマンドがリモート サーバーに受け入れられませんでした。 送信側サーバーは接続を再試行せず、メッセージの送信者に配信不能レポートを送信し返します。 回復不能エラーの例として、存在しないメール アドレスに送信されたメッセージが挙げられます。 |
上の表は、 RFC 5321 (簡易メール転送プロトコル) のセクション 4.2.1 に記載されている情報に基づいています。 SMTP 応答コードの 2 桁目 (Y) と 3 桁目 (Z) の説明を含む追加情報については、このセクション、 セクション 4.2.2 および 4.2.3 に記載されています。
OPEN コマンド
正常な応答: 220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>
エラー応答: Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed
失敗の考えられる原因:
- 相手先の SMTP サービスが利用できない状態にある。
- ターゲット ファイアウォールの制限。
- ソース ファイアウォールの制限。
- 宛先 SMTP サーバーの FQDN または IP アドレスが正しくありません。
- ポート番号が正しくありません。
EHLO コマンド
正常な応答: 250 mail1.fabrikam.com Hello [<sourceIPaddress>]
エラー応答: 501 5.5.4 Invalid domain name
失敗の考えられる原因:
- ドメイン名に無効な文字があります。
- 宛先 SMTP サーバーの接続制限。
注:
EHLO は、RFC 5321 で定義されている Extended Simple Message Transfer Protocol (ESMTP) 動詞です。 ESMTP サーバーは、最初の接続時に機能について通知することができます。 これらの機能には、最大受け入れメッセージ サイズとサポートされている認証方法が含まれます。 HELO は、RFC 821 で定義されている以前の SMTP コマンドです。 ほとんどの SMTP メッセージング サーバーは、ESMTP および EHLO をサポートしています。 接続しようとしている Exchange 以外のサーバーが EHLO をサポートしていない場合は、代わりに HELO を使用できます。
MAIL FROM コマンド
正常な応答: 250 2.1.0 Sender OK
エラー応答: 550 5.1.7 Invalid address
失敗の考えられる理由: 送信者の電子メール アドレスの構文に誤りがあります。
エラー応答: 530 5.7.1 Client was not authenticated
失敗の考えられる理由: 宛先サーバーが匿名メッセージの送信を受け入れない。 このエラーは、匿名接続を受け入れるように構成された受信コネクタがないメールボックス サーバーに Telnet を使用してメッセージを直接送信しようとした場合に表示されます。
RCPT TO コマンド
正常な応答: 250 2.1.5 Recipient OK
エラー応答: 550 5.1.1 User unknown
失敗の考えられる理由: 指定された受信者が存在しない。