Telnet を使用して Exchange サーバー上の SMTP 通信をテストする

Telnet を使用して、メッセージング サーバー間の簡易メール転送プロトコル (SMTP) 通信をテストできます。 SMTP は、あるメッセージング サーバーから別のメッセージング サーバーに電子メール メッセージを送信するために使用されるプロトコルです。 SMTP コマンドをメッセージング サーバーに手動で送信できるため、メッセージの送受信に問題がある場合は、Telnet を使用すると便利です。 その代わりに、サーバーは、一般的な接続で返される応答で応答します。 これらの結果は、メッセージを送受信できない理由を把握するのに役立つ場合があります。

Telnet を使用して SMTP 通信をテストして、次のことができます。

  • インターネットから Exchange 組織へのメール フローをテストします。

  • Exchange からインターネット上の別のメッセージング サーバーへのメール フローをテストします。

ヒント

Telnet を使用して SMTP 接続をテストする代わりに、 で Microsoft Remote Connectivity Analyzer https://testconnectivity.microsoft.com/を使用できることをご存知でしたか? リモート接続アナライザーを使用すると、実行する接続テスト (この場合は受信 SMTP Email) を選択し、表示される指示に従うことができます。 入力する必要がある情報をステップ実行し、テストを実行して結果を提供します。 試してみましょう。

事前に必要な知識

  • 予想所要時間 : 15 分

  • Exchange のアクセス許可は、このトピックの手順には適用されません。 これらの手順は、Exchange サーバーまたはクライアント コンピューターのオペレーティング システムで実行されます。

  • このトピックでは、Windows に含まれる Telnet クライアントを使用する方法について説明します。 サード パーティの Telnet クライアントでは、このトピックで示されているものとは異なる構文が必要になる場合があります。

  • このトピックの手順では、TCP ポート 25 を使用して匿名接続を許可するインターネットに接続するサーバーに接続する方法について説明します。 インターネットからこのサーバーに接続しようとしている場合は、TCP ポート 25 で Exchange サーバーにインターネットから到達可能であることを確認する必要があります。 同様に、Exchange サーバーからインターネット上のサーバーにアクセスしようとしている場合は、Exchange サーバーが TCP ポート 25 でインターネットへの接続を開くことができることを確認する必要があります。

  • TCP ポート 2525 を使用する一部の受信コネクタに気付く場合があります。 これらは内部受信コネクタであり、匿名 SMTP 接続を受け入れるためには使用されません。

  • リモート メッセージング サーバーで接続をテストする場合は、Exchange サーバーでこのトピックの手順を実行する必要があります。 リモート メッセージング サーバーは、多くの場合、SMTP 接続の送信元 IP アドレスが送信者のメール アドレス内のドメインと一致するように設定されます。

  • このトピックの手順で使用可能なキーボード ショートカットについては、「Exchange 管理センターのキーボード ショートカット」を参照してください。

ヒント

問題がある場合は、 Exchange Server、Exchange Online、Exchange Online Protection。 必要な作業 シェルを使用して送信者フィルターを有効または無効にする

手順 1: コンピューターに Telnet クライアントをインストールする

ほとんどのバージョンの Windows では、Telnet クライアントを使用する前にインストールする必要があります。 Telnet クライアントをインストールするには、「Telnet クライアントのインストール」を参照してください。

手順 2: 宛先 SMTP サーバーの FQDN または IP アドレスを見つける

ポート 25 で Telnet を使用して SMTP サーバーに接続するには、完全修飾ドメイン名 (FQDN) (mail.contoso.com など) または SMTP サーバーの IP アドレスを使用する必要があります。 FQDN または IP アドレスがわからない場合は、Nslookup コマンド ライン ツールを使用して、宛先ドメインの MX レコードを検索できます。

注:

ネットワーク ポリシーを使用すると、Nslookup ツールを使用してインターネット上のパブリック DNS サーバーに対してクエリを実行できなくなる可能性があります。 別の方法として、インターネット上で自由に利用できる DNS 参照または MX レコード参照 Web サイトのいずれかを使用できます。

  1. コマンド プロンプトで、「」と入力 nslookupし、Enter キーを押します。 このコマンドによって、Nslookup セッションが開きます。

  2. [set type=mx]と入力して、Enter キーを押します。

  3. 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 レコードと異なる優先順位の値が使用されます。

  4. Nslookup セッションを終了する準備ができたら、「」と入力 exitし、Enter キーを押します。

手順 3: Telnet をポート 25 で使用して SMTP 通信をテストする

この例では、次の値を使用します。 サーバーでコマンドを実行するときは、これらの値を組織の SMTP サーバー、ドメインなどに置き換えます。

  • 宛先 SMTP サーバー: mail1.fabrikam.com
  • ソース ドメイン: contoso.com
  • 送信者の電子メール アドレス: chris@contoso.com
  • 受信者の電子メール アドレス: kate@fabrikam.com
  • メッセージの件名: Contoso からのテスト
  • メッセージ本文: これはテスト メッセージです

ヒント

Telnet クライアントのコマンドでは、大文字と小文字は区別されません。 この例の SMTP コマンド動詞は、わかりやすくするために大文字で表記されています。 宛先 SMTP サーバーに接続した後、Telnet セッションでバックスペース キーを使用することはできません。 SMTP コマンドを入力するときに間違った場合は、Enter キーを押してから、コマンドをもう一度入力する必要があります。 認識されない SMTP コマンドまたは構文エラーにより、次のようなエラー メッセージが表示されます。 500 5.3.3 Unrecognized command

  1. コマンド プロンプト ウィンドウを開き、「」と入力 telnetし、Enter キーを押します。

    このコマンドによって、Telnet セッションが開きます。

  2. [set localecho]と入力して、Enter キーを押します。

    この 省略可能な コマンドを使用すると、入力時に文字を表示でき、一部の SMTP サーバーで必要になる場合があります。

  3. [set logfile <filename>]と入力して、Enter キーを押します。

    この 省略可能な コマンドは、ログ記録を有効にし、Telnet セッションのログ ファイルを指定します。 ファイル名のみを指定した場合、ログ ファイルは現在のフォルダーにあります。 パスとファイル名を指定する場合、パスはローカル コンピューター上にある必要があり、Windows DOS 8.3 形式 (スペースなしの短い名前) でパスとファイル名を入力する必要がある場合があります。 パスは存在する必要がありますが、ログ ファイルは自動的に作成されます。

  4. [OPEN mail1.fabrikam.com 25]と入力して、Enter キーを押します。

  5. [EHLO contoso.com]と入力して、Enter キーを押します。

  6. [MAIL FROM:<chris@contoso.com>]と入力して、Enter キーを押します。

  7. [RCPT TO:<kate@fabrikam.com> NOTIFY=success,failure]と入力して、Enter キーを押します。

    省略可能な NOTIFY コマンドは、SMTP が提供するために必要な特定の配信状態通知 (DSN) メッセージ (バウンス メッセージ、配信不能レポート、または NDR とも呼ばれます) を指定します。 この例では、成功または失敗したメッセージ配信のために DSN メッセージを要求しています。

  8. [DATA]と入力して、Enter キーを押します。

  9. [Subject: Test from Contoso]と入力して、Enter キーを押します。

  10. もう一度 Enter キーを押します。

    Subject: フィールドとメッセージ本文の間には空白行が必要です。

  11. [This is a test message]と入力して、Enter キーを押します。

  12. ピリオド ( . ) を入力し、Enter キーを押します。

  13. SMTP サーバーから切断するには、「」と入力 QUITし、Enter キーを押します。

  14. 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 で定義されている拡張単純メッセージ転送プロトコル (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

失敗の原因として考えられる: 指定した受信者が存在しません。