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

 

適用先: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

トピックの最終更新日: 2006-11-14

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

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

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

開始する前に

既定では、ハブ トランスポート サーバー間で行われるメッセージ転送では、暗号化および認証が行われます。メッセージ受信で匿名アクセスまたは基本認証を許可するように構成された受信コネクタを持つ内部のハブ トランスポート サーバーにメッセージを発信する場合のみ、Telnet をポート 25 で使用することができます。匿名アクセスは、インターネットに直接接続されたサーバーで必要になります。基本認証を受け付ける受信コネクタにメッセージを送信する場合は、ユーザー名とパスワードに使用するテキスト文字列を Base64 形式に変換するユーティリティが必要です。基本認証を使用するとユーザー名とパスワードが簡単に識別されてしまうため、暗号化を行わない基本認証を使用することはお勧めしません。

多くの組織では、インターネットに直接接続された SMTP メッセージング サーバーは、このサーバーにメッセージの送信を試みるすべてのインターネット ホストについて、送信元 IP アドレス、対応する DNS (ドメイン ネーム システム) のドメイン名、および逆引き参照 IP アドレスを検証するように構成されています。テスト コンピュータをインターネットに接続し、Telnet をポート 25 で使用してリモート メッセージング サーバーにテスト メッセージを送信しようとすると、メッセージが拒否される場合があります。リモート メッセージング サーバーによって課されたセキュリティ要件を満たすには、エッジ トランスポート サーバーからリモート メッセージング サーバーに接続します。エッジ トランスポート サーバー上で構成されている承認済みドメインには、適切な DNS MX (メール エクスチェンジャ) レコード、A (アドレス) レコード、および逆引き参照レコードが指定されており、これらのレコードはインターネット上でこの承認済みドメインの正当かつトレース可能な電子メール メッセージの送信元としてこのエッジ トランスポート サーバーを識別するために使用されます。

このトピックの手順では、Microsoft Windows Server 2003 および Windows XP に含まれる、Microsoft Telnet クライアントを使用する方法を示します。Windows の以前のバージョンまたはサード パーティの Telnet クライアントでは、必要な構文が異なる場合があります。Windows Telnet クライアントのコマンドでは、大文字と小文字が区別されません。SMTP コマンドの動詞は、判別しやすいように大文字にしています。

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

500 5.3.3 Unrecognized command

Nslookup コマンド ライン ツールを使用して SMTP サーバーの IP アドレスを特定する

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

Nslookup ツールを使用して SMTP サーバーの IP アドレスを特定するには、次の操作を行います。

  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 キーを押します。

    note注 :
    末尾のピリオド (.) は、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 キーを押します。

note注 :
組織の内部ネットワークに設定されているファイアウォールまたはインターネット プロキシの制限によって、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 通信をテストする

この手順では、Telnet をポート 25 で使用して SMTP 通信をテストする方法を示しています。次の一覧に、この手順で使用する値を示します。

  • 相手先 SMTP サーバー   mail1.fabrikam.com
  • 送信元ドメイン   contoso.com
  • 送信者の電子メール アドレス   chris@contoso.com
  • 受信者の電子メール アドレス   kate@fabrikam.com
  • メッセージの件名   Test from Contoso
  • メッセージの本文   This is a test message
note注 :
相手先の SMTP サーバーによって生成される配信不能レポート (NDR) メッセージがメッセージの送信者に配信されるように、送信者の電子メール アドレスは必ず有効なものを使用してください。

Telnet をポート 25 で使用して 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 キーを押します。

  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 キーを押します。

SMTP サーバーとの Telnet セッションの結果の解説

ここでは、前の例で入力したコマンドに対する応答について詳しく説明します。

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

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 サーバーに接続制限がある。

note注 :
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

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

詳細情報

詳細については、以下のトピックを参照してください。

参照している情報が最新であることを確認したり、他の Exchange Server 2007 ドキュメントを見つけたりするには、Exchange Server TechCenter を参照してください。