Share via


Telnet を使用して SMTP 通信をテストする

 

適用先: Exchange Server 2010 SP2, Exchange Server 2010 SP3

トピックの最終更新日: 2016-11-28

ここでは、Telnet を使用してメッセージング サーバー間の SMTP (簡易メール転送プロトコル) 通信をテストする方法について説明します。既定では、SMTP はポート 25 で接続要求待ちします。Telnet をポート 25 で使用すると、SMTP サーバーへの接続に使用する SMTP コマンドを入力し、Telnet セッションが SMTP メッセージング サーバーである場合とまったく同様にメッセージを送信することができます。接続プロセスおよびメッセージ送信プロセスの手順ごとに、成功または失敗を確認することができます。

ここでは、Microsoft Exchange Server 組織に存在するトランスポート サーバーとの SMTP 通信を、Telnet を使用してテストするシナリオを示します。

  • 境界ネットワークの外部に配置されているホストから組織のエッジ トランスポート サーバーに接続し、テスト メッセージを送信する。

  • 組織のエッジ トランスポート サーバーからリモート メッセージング サーバーに接続し、テスト メッセージを送信する。

このトピックの手順では、Microsoft Windows に含まれるコンポーネントである Telnet クライアントを使用する方法を示します。サードパーティ製 Telnet クライアントでは、Windows Telnet と異なる構文が必要になる場合があります。

前提条件

  • [受信コネクタを構成して匿名アクセスまたは基本認証を許可する]   ハブ トランスポート サーバー間で通常行われるメッセージ転送は暗号化され認証されるので、内部ハブ トランスポート サーバーには、通信テスト用に Telnet をポート 25 で使用するときにメッセージ受信で匿名アクセスまたは基本認証を許可するように構成された受信コネクタが必要です。匿名アクセスは、インターネットに直接接続されたサーバーで必要になります。

    注意

    基本認証を受け付ける受信コネクタにメッセージを送信する場合は、ユーザー名とパスワードに使用するテキスト文字列を Base64 形式に変換するユーティリティが必要です。基本認証を使用するとユーザー名とパスワードが簡単に識別されてしまうため、暗号化を行わない基本認証を使用することはお勧めしません。

  • [リモート メッセージング サーバーに接続する]   組織のエッジ トランスポート サーバーからリモート メッセージング サーバーに接続することもできます。これにより、インターネットに直接接続された SMTP サーバーにメッセージの送信を試みるインターネット ホストについて、送信元 IP アドレス、対応するドメイン ネーム システム (DNS) ドメイン名、および逆引き参照 IP アドレスを検証するように構成されたその SMTP サーバーによってテスト メッセージを拒否できないようにすることができます。

  • [Telnet クライアントをインストールまたは有効化する]   Telnet を使用してメッセージング サーバー間の SMTP 通信をテストするためには、次のタスクの 1 つまたは複数を実行する必要があります。

    • まだ行っていない場合は、Telnet クライアントをインストールします。Windows Vista または Windows Server 2008 に Telnet クライアントをインストールする方法の詳細については、Telnet クライアントのインストール」を参照してください (このサイトは英語の場合があります)。

    • Windows Server 2008 上で Telnet クライアントを有効にします。このトピックで後述する手順を参照してください。

  • [SMTP サーバーの FQDN または IP アドレスを検索する]。FQDN または IP アドレスを知らない場合、Nslookup を使用して SMTP サーバーの FQDN または IP アドレスを検索できます。このトピックで後述する手順を参照してください。

Windows Server 2008 で Telnet クライアントを有効にする

Windows Server 2008 ローカル管理者グループまたは同等のメンバーシップは、この手順を完了するために最低限必要です。

Windows Server 2008 で、Telnet クライアントが既定で無効です。有効にするには、次の手順を実行します。

  1. [システム マネージャー] を起動します。

  2. [アクション] をクリックしてから、[機能の追加] を選択します。

  3. [Telnet クライアント] を選択し、[次へ] をクリックします。

  4. [インストール] をクリックしてから、[閉じる] をクリックして Telnet クライアントのインストールを完了します。

Nslookup を使用して SMTP サーバーの FQDN または IP アドレスを検索する

Telnet をポート 25 で使用して相手先の SMTP サーバーに接続するには、SMTP サーバーの完全修飾ドメイン名 (FQDN) または IP アドレスを使用する必要があります。FQDN または IP アドレスがわからない場合、この情報を得るには、Nslookup コマンド ライン ツールを使用して相手先ドメインの MX レコードを特定する方法が最も簡単です。

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

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

  3. set timeout=20」と入力し、Enter キーを押します。既定では、Windows DNS サーバーには、再帰的な DNS クエリのタイムアウト制限として 15 秒が設定されています。

  4. MX レコードを特定するドメインの名前を入力します。たとえば、fabrikam.com ドメインの MX レコードを特定するには、「fabrikam.com.」と入力して Enter キーを押します。

    注意

    末尾のピリオド (.) は、FQDN であることを示しています。末尾にピリオドを使用することで、自組織のネットワークで構成されている既定の 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 アドレスを使用することができます。preference の値が小さいほど優先度の高い SMTP サーバーであることを示します。負荷分散とフォールト トレランスのために、複数の MX レコードと異なる preference の値を使用することができます。

  5. Nslookup セッションを終了するには、「exit」と入力して Enter キーを押します。

注意

組織の内部ネットワークに設定されているファイアウォールまたはインターネット プロキシの制限によって、Nslookup ツールを使用してインターネット上のパブリック DNS サーバーに対するクエリを実行できない場合があります。
Exchange 組織の中の内部メッセージ フローでは、MX レコードは必ずしも必要ではありません。組織内のハブ トランスポート サーバーまたは購読済みエッジ トランスポート サーバーの FQDN を特定する必要がある場合は、Exchange 管理シェルで次のコマンドを使用します。Get-ExchangeServer | where {$.isHubTransportServer -eq $true -or $.isEdgeServer -eq $true} | Format-List Fqdn,ServerRole
詳細については、「Get-ExchangeServer」および「パイプライン処理」を参照してください。

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

例を示すために、次の手順では以下の一覧に表示された値を使用します。

  • 相手先 SMTP サーバー   mail1.fabrikam.com

  • 送信元ドメイン   contoso.com

  • 送信者の電子メール アドレス   chris@contoso.com

  • 受信者の電子メール アドレス   kate@fabrikam.com

  • メッセージの件名   Test from Contoso

  • メッセージの本文   This is a test message

    注意

    相手先の SMTP サーバーによって生成される配信不能レポート (NDR) メッセージがメッセージの送信者に配信されるように、送信者の電子メール アドレスは必ず有効なものを使用してください。

Telnet クライアントのコマンドでは、大文字と小文字が区別されません。SMTP コマンドの動詞は、判別しやすいように大文字にしています。

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

  2. set localecho」と入力し、Enter キーを押します。これは入力した文字を画面に表示するためのコマンドですが、省略することもできます。SMTP サーバーの種類によっては、この設定が必要になります。

  3. set logfile*<ファイル名>*」と入力します。これは、指定したログ ファイルに Telnet セッションをログ出力するためのコマンドですが、省略することもできます。ファイル名のみを指定した場合、ログ ファイルの場所は現在の作業ディレクトリになります。パスとファイル名を指定する場合、パスはコンピューターのローカル パスである必要があります。指定するパスとファイル名はいずれも Microsoft DOS の 8.3 形式で入力する必要があります。指定するパスは、既に存在するパスでなければなりません。存在しないログ ファイルを指定した場合は、そのログ ファイルが新しく作成されます。

  4. open mail1.fabrikam.com 25」と入力し、Enter キーを押します。

    注意

    Telnet セッションで相手先の SMTP サーバーに接続した後で、BackSpace キーを使用することはできません。SMTP コマンドを誤って入力した場合は、Enter キーを押して再度コマンドを入力する必要があります。認識できない SMTP コマンドまたは構文エラーがあると、次のようなエラー メッセージが表示されます。

    500 5.3.3 Unrecognized command
    
  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) メッセージを定義するコマンドですが、省略することもできます。DSN メッセージは RFC 1891 で定義されます。 この場合は、メッセージ配信の成功または失敗を確認するために DSN メッセージを要求することになります。

  8. DATA」と入力し、Enter キーを押します。以下のような応答を受信します。

    354 Start mail input; end with <CLRF>.<CLRF>
    
  9. Subject:Test from Contoso」と入力し、Enter キーを押します。

  10. Enter キーを押します。RFC 2822 に従って、Subject: ヘッダー フィールドとメッセージ本文の間に空白行を 1 行入れる必要があります。

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

  12. Enter キーを押し、ピリオド (.) を入力して、再度 Enter キーを押します。以下のような応答を受信します。

    250 2.6.0 <GUID> Queued mail for delivery
    
  13. 相手先の SMTP サーバーとの接続を解除するには、「QUIT」と入力し、Enter キーを押します。以下のような応答を受信します。

    221 2.0.0 Service closing transmission channel
    
  14. Telnet セッションを閉じるには、「quit」と入力し、Enter キーを押します。

Telnet セッションの結果を評価する

ここでは、前の例で使用された次のコマンドに対する応答について説明します。

  • Open mail1.fabrikam.com 25

  • EHLO contoso.com

  • MAIL FROM:chris@contoso.com

  • RCPT TO:kate@fabrikam.com NOTIFY=success,failure

    注意

    RFC 2821 で定義されている 3 桁の SMTP 応答コードは、すべての SMTP メッセージング サーバーで同じです。SMTP メッセージング サーバーの種類によっては、テキストの部分が少し異なる場合があります。前の例では、相手先のコンピューターは Exchange Server 2010 を実行しています。

Open mail1.fabrikam.com 25

成功応答   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 contoso.com

成功応答   250 mail1.fabrikam.com Hello [<sourceIPaddress>]

失敗応答   501 5.5.4 Invalid domain name

考えられる失敗の原因   ドメイン名に無効な文字が含まれている。あるいは、相手先の SMTP サーバーに接続制限がある。

注意

EHLO は、RFC 2821 で定義されている ESMTP (Extended Simple Message Transfer Protocol) コマンドです。ESMTP サーバーは、最初の接続時に機能について通知することができます。これらの機能には、受け付け可能なメッセージの最大サイズや、サポートしている認証方法などがあります。HELO は、RFC 821 で定義されている古い SMTP コマンドです。ほとんどの SMTP メッセージング サーバーは、ESMTP および EHLO をサポートしています。

MAIL FROM:chris@contoso.com

成功応答   250 2.1.0 Sender OK

失敗応答   550 5.1.7 Invalid address

考えられる失敗の原因   送信者の電子メール アドレスに構文エラーがある。

失敗応答   530 5.7.1 Client was not authenticated

考えられる失敗の原因   相手先サーバーが匿名によるメッセージ送信を受け付けない。このエラーは、Telnet を使用して、直接ハブ トランスポート サーバーにメッセージを送信しようとした場合に返されます。

RCPT TO:kate@fabrikam.com NOTIFY=success,failure

成功応答   250 2.1.5 Recipient OK

失敗応答   550 5.1.1 User unknown

考えられる失敗の原因   指定された受信者が組織内に存在しない。

 © 2010 Microsoft Corporation.All rights reserved.