Exchange Server 2007 の SMTP プロトコル拡張

 

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

トピックの最終更新日: 2009-09-17

SMTP (Simple Mail Transfer Protocol) エンジンは、COM イベントの主要ディスパッチャです。コア SMTP プロトコル エンジンは、すべての標準 SMTP 通信を実行し、ほとんどの標準 SMTP サービス拡張を処理します。具体的には、コア SMTP エンジンは、RFC (Request for Comments) 821 および RFC 1869 で定義された ESMTP (Extended Simple Mail Transfer Protocol) 標準を処理します。プロトコル イベントを使用して SMTP プロトコルを変更し、新しい ESMTP コマンドを追加したり、既存のコマンドの動作を変更したりすることができます。Exchange Server 2007 では、これらのプロトコル イベントを使用して Exchange 固有の拡張 SMTP コマンドを実装することにより、標準 SMTP 経由の場合よりも効率的に組織内の他の Exchange サーバーと通信できます。

Exchange Server 2007 の拡張 SMTP コマンドが読み込まれているかどうかは、Telnet を使用して SMTP 仮想サーバーの TCP ポートに接続することによって確認できます。EHLO コマンドを送信して ESMTP 接続の開始を要求すると、サーバーの応答に、SMTP 仮想サーバーでサポートされる機能が示されます。標準コマンドは、HELP コマンドを送信すると一覧表示されます。

次の表に、Exchange 拡張 SMTP サービスでサポートされる SMTP 機能の説明を示します。

Exchange Server 2007 でサポートされる SMTP 機能

SMTP サーバー応答 コメント

8BITMIME

ローカル SMTP 仮想サーバーが 8 ビット MIME (Multipurpose Internet Mail Extensions) メッセージをサポートすることを表します。

AUTH、AUTH GSSAPI NTLM LOGIN、および AUTH=LOGIN

ローカル SMTP 仮想サーバーが SMTP 認証サービス拡張をサポートすることを表します。AUTH キーワードの後に続く追加情報は、サポートされる認証機構を表します。

BDAT、CHUNKING

DATA コマンドの代替コマンドで、2 つの引数を取ります。SMTP 仮想サーバーが EHLO コマンドに対して CHUNKING 応答を返した場合、SMTP サーバーが BDAT コマンドをサポートしており、メッセージのチャンクを受け入れることを表しています。

最初の引数は、バイナリ データ パケットの長さを表しています。このため、SMTP ホストは、継続的にデータの最後をスキャンする必要はありません。受信サーバーはメッセージのバイト数をカウントし、メッセージ サイズが BDAT コマンドによって送信された値に一致すると、サーバーはすべてのメッセージ データを受信したと想定します。2 つ目の引数は、データ パケットが現在の転送における最後のパケットであるかどうかを表します。2 つ目の引数は任意です。

BINARYMIME

SMTP 仮想サーバーが、伝送をエンコードせずに、バイナリ素材を含むメッセージを受け入れるかどうかを表します。このようなメッセージは、MAIL コマンドと共に、BINARYMIME 値を含む BODY パラメータを使用する必要があります。SMTP サーバーが、BINARYMIME 値を含む BODY パラメータが指定された MAIL コマンドを受け入れると、サーバーは、BDAT コマンドを使用して渡される各オクテット内のすべてのビットを保持します。BINARYMIME SMTP 拡張は、必ず CHUNKING と共に使用する必要があります。

DATA

メッセージ コンテンツの伝送を開始するために、リモート ホストによって送信されます。

DSN

RFC (Request for Comments) 1891 で定義された配信状態通知を有効にする ESMTP コマンドです。

EHLO

ESMTP セッションの開始を通知するために、クライアントによって送信されます。サーバーは、EHLO への応答で ESMTP コマンドのサポートを識別できます。

HELO

通常はドメイン名を使用してクライアント自身を識別するため、および標準 SMTP セッションの開始を通知するために、クライアントによって送信されます。

HELP

(ESMTP セッションではなく) 標準 SMTP セッションで、SMTP 仮想サーバーによってサポートされる SMTP コマンドの一覧を返します。

MAIL

メッセージの送信者を識別することによって、メッセージ送信の開始点を識別します。MAIL FROM の形式で使用されます。

PIPELINING

各コマンドの後に応答を待つことなく、一連のコマンドを送信できる機能を提供します。

QUIT

標準または拡張 SMTP セッションの終了を通知します。

RCPT

メッセージの受信者を識別します。RCPT TO の形式で使用されます。

RSET

メッセージ トランザクション全体を無効にし、バッファをリセットします。

SIZE

SMTP 仮想サーバーが、サポートされる最大メッセージ サイズを示すための方法を提供します。対応するサーバーは、サイズ拡張を提供して、受け入れ可能な最大メッセージ サイズを示す必要があります。リモート ホストは、サーバーによって示されたサイズより大きいメッセージを送信することはできません。

STARTTLS

SMTP サーバーが、Secure SMTP over Transport Layer Security (TLS) をサポートすることを表します。SMTP Service Extension for Secure SMTP over TLS は、RFC 2487 で定義されています。

VRFY

メールボックスがメッセージ配信のために使用可能であることを確認します。たとえば、VRFY TED は、Ted のメールボックスがローカル サーバーに存在することを確認します。既定では、このコマンドを Exchange 2007 で使用することはできますが、ユーザーは確認されません。サーバーはリモート ホストに対して、ユーザーを確認できなくてもメッセージが受け入れられることを通知します。サーバーの応答は、"252 2.1.5 Cannot VRFY user, but will take message for Ted@wingtiptoys.com" のような形式になります。

XEXCH50

Exchange 2007 サーバー間通信中に、拡張メッセージ トランスポート エンベロープ プロパティを MDBEF (Message Database Encoding Format) 形式で送信できる機能を提供します。

X-EXPS GSSAPI NTLM LOGIN、X-EXPS=LOGIN

X-EXPS は、Exchange 専用のコマンドです。このコマンドは、Exchange 2007、Exchange 2003、および Exchange 2000 を実行しているサーバーが使用可能な認証方法を指定するため、AUTH に類似しています。次のような方法があります。

GSSAPI   この方法は "Generic Security Services Application Programming Interface" を表しており、Kerberos による認証を有効にします。

NTLM   この方法は "Windows NT and LAN Manager" を表しており、Windows NT チャレンジ/レスポンス プロトコルを使用した認証を有効にします。

LOGIN   この方法は "AUTH LOGIN" を表しており、Base 64 でエンコードされたユーザー名とパスワードを使用したクリア テキスト認証方法です。

X-LINK2STATE

SMTP サービスに、リンク状態の伝達のサポートを追加します。ルーティング グループ内およびルーティング グループ間でリンク状態を伝達するために使用されるリンク状態アルゴリズムの詳細については、メッセージ ルーティング アーキテクチャに関する説明 (このサイトは英語の場合があります) を参照してください。

note注 :
Exchange 固有の SMTP コマンドは、"X-" (引用符なし) で始まります。SMTP 仮想サーバーの EHLO 応答にこれらのコマンドが記載されていない場合は、サーバーは Windows Server ベース バージョンの SMTP サービスを実行しています。この場合は、Exchange Server 2007 とすべての Service Pack を再インストールする必要があります。

プロトコル イベント カテゴリ

SMTP プロトコル エンジンは、プロトコル イベントをトリガしてホスト間通信を制御します。このような SMTP 経由の通信では、次の 3 種類の主要イベントが発生する可能性があります。

  • SMTP サービスが SMTP コマンドを受信する
    これらのイベントは、リモート SMTP ホストまたはクライアントがローカル SMTP サービスに接続し、HELO または EHLO コマンドを送信してセッションを確立するときに発生します。このカテゴリのイベントは、着信接続における SMTP プロトコル OnInboundCommand イベントです。
  • SMTP サービスが SMTP 応答を受信する
    これらのイベントは、ローカル SMTP サービスがリモート SMTP ホストまたはクライアントから送信 SMTP コマンドへの応答を受信するときに発生します。このカテゴリのイベントは、送信接続における SMTP プロトコル OnServerResponse イベントです。
  • SMTP サービスが SMTP コマンドを送信する
    これらのイベントは、ローカル SMTP サービスがリモート SMTP ホストに接続し、セッションを確立してメッセージを転送するときに発生します。このカテゴリのイベントは、送信接続における SMTP プロトコル OnSessionBegin、OnMessageStart、OnPerRecipient、OnBeforeData、および OnSessionEnd イベントです。

次の表は、各 SMTP プロトコル イベントの目的をまとめたものです。

SMTP サービスのプロトコル イベント

イベント コメント

OnInboundCommand

SMTP プロトコル サービスが SMTP コマンドを受信するときに発生します。これにより、イベント シンクに応答の機会が与えられます。

OnServerResponse

SMTP サービスが、以前に送信された SMTP コマンドへの SMTP 応答を受信するときに発生します。

OnSessionBegin

EHLO コマンドが送信される前に発生します。

OnMessageStart

MAIL FROM コマンドが送信される前に発生します。

OnPerRecipient

RCPT TO コマンドが送信される前に発生します。

OnBeforeData

DATA プロトコル コマンドが送信される前に発生します。

OnSessionEnd

QUIT コマンドが送信される前に発生します。

Exchange 固有の SMTP プロトコル拡張

Exchange Server 2007 セットアップ プログラムにより、次の SMTP プロトコル機能に対して Exchange 固有の SMTP プロトコル拡張が登録されます。

XEXCH50

XEXCH50 は、エンベロープ メッセージなどの特定のメッセージ プロパティと受信者プロパティを中継するために使用される Exchange ESMTP 拡張です。XEXCH50 コマンドは、ショート コマンドです。成功の種類の応答を受信した XEXCH50 コマンドの後に、可変サイズのバイナリ ラージ オブジェクト (BLOB) が続きます (このサイズは、XEXCH50 コマンドの最初の引数に対応します)。

この機能は、Exchange を実行している 2 つのサーバー間での完全な通信をサポートするために、9 つのイベント シンクを使用して実装されます。次の表に、プロトコル イベントと XEXCH50 イベント シンクのマッピングを示します。すべての XEXCH50 シンクは、Program Files\Exchsrvr\bin ディレクトリにある Peexch50.dll で実装されます。

XEXCH50 コマンドのプロトコル拡張

イベント シンク プロトコル イベント コメント

Exchange SMTP プロトコル XEXCH50データ送信前シンク

OnBeforeData

DATA プロトコル コマンドが送信されることを XEXCH50 シンクに通知します。XEXCH50 シンクは、SMTP サービスに対して、代わりに XEXCH50 コマンドを送信して XEXCH50 通信を開始するよう求めることが可能になります。

Exchange SMTP プロトコル XEXCH50 受信 EHLO シンク

OnInboundCommand

EHLO コマンドが受信されたことを XEXCH50 シンクに通知します。

Exchange SMTP プロトコル XEXCH50 受信 XEXCH50 シンク

OnInboundCommand

XEXCH50 コマンドを実装して XEXCH50 対話を開始します。

Exchange SMTP プロトコル XEXCH50 受信 MAIL シンク

OnInboundCommand

XEXCH50 対話に MAIL コマンドを実装します。

Exchange SMTP プロトコル XEXCH50 受信 MAIL シンク

OnInboundCommand

ローカル SMTP 仮想サーバーが、XEXCH50 からの通信で受信者情報を受信できるようにします。

Exchange SMTP プロトコル XEXCH50 受信者単位のイベント シンク

OnPerRecipient

ローカル SMTP 仮想サーバーが、XEXCH50 への通信で受信者情報を送信できるようにします。

Exchange SMTP プロトコル XEXCH50 EHLO 応答シンク

OnServerResponse

ローカル SMTP 仮想サーバーが、EHLO コマンドがリモート ホストに送信された後の応答を受信できるようにします。リモート ホストからの応答は、XEXCH50 通信のサポートを示す場合があります。接続しているホストに返される、サポートされるコマンドの一覧に XEXCH50 が追加されます。

Exchange SMTP プロトコル XEXCH50 応答シンク

OnServerResponse

ローカル SMTP 仮想サーバーが、以前に発行された XEXCH50 コマンドへの応答を受信できるようにします。たとえば、ローカル SMTP サービスが先に認証せずに XEXCH50 コマンドを発行した場合、リモート サーバーの応答は "504 Need to authenticate first" となります。

Exchange SMTP プロトコル XEXCH50 RCPT 応答シンク

OnServerResponse

ローカル SMTP 仮想サーバーが、送信 RCPT コマンドに指定されている各受信者の状態情報をリモート Exchange サーバーから受信できるようにします。受信者のアドレスが正しい形式でない場合や、サーバーが中継できない場合があります。受信者情報が正しい場合、リモート SMTP 仮想サーバーは、そのアドレスを状態情報と共にローカル SMTP サービスに戻します ("250 2.1.5 administrator@tailspintoys.com" など)。

X-LINK2STATE

X-LINK2STATE コマンドおよび応答は、SMTP 固有の拡張です。このコマンドは Exchange 専用であり、Exchange SMTP サーバー間でルーティング トポロジ情報を交換することを目的としています。すべての X-LINK2STATE コマンドおよび応答の最大サイズは、1,024 バイトです。多くの場合、このサイズは、X-LINK2STATE コマンドおよび応答の実際のサイズになります。

この機能は、5 つのイベント シンクを使用して実装されます。ただし、次の表に示すように、2 つの別個のイベントで 1 つのイベント シンクが使用されます。すべての X-LINK2STATE イベント シンクは、\Program Files\Exchsrvr\bin ディレクトリにある Xlsasink.dll で実装されます。

X-LINK2STATE コマンドのプロトコル拡張

イベント シンク プロトコル イベント コメント

XLSA 用の EHLO 受信コマンド ハンドラ シンク

OnInboundCommand

EHLO コマンドが受信されたことを X-LINK2STATE イベント シンクに通知します。

X-LSA 受信コマンド ハンドラ シンク

OnInboundCommand

X-LINK2STATE コマンドが受信されたことを X-LINK2STATE イベント シンクに通知します。

X-LSA シンク

OnMessageStart、OnSessionEnd

送信 X-LINK2STATE 通信の開始 (MAIL コマンド) と終了 (QUIT コマンド) を通知します。リモート SMTP 仮想サーバーは、伝送される組織情報パケットの唯一の受信者であるため、送信 RCPT コマンドに受信者を指定する必要はありません。このイベント シンクは、リンク状態情報を伝送します。

X-LSA 応答ハンドラ シンク

OnServerResponse

受信 X-LINK2STATE コマンドへの応答で、リンク状態情報の伝送方法を示します。たとえば、"200 LAST CHUNK={00000029} MULTI (5) ({00000010} DONE_RESPONSE)" という応答は、この SMTP 仮想サーバーによって最後のデータ チャンクが送信されたことを示しています。

X-LSA の EHLO 応答ハンドラ シンク

OnServerResponse

サーバー応答において X-LINK2STATE コマンドを一覧表示することで、受信 EHLO コマンドに応答します。

X-EXPS

X-EXPS は、AUTH に類似していますが、Exchange 専用の動詞です。データ チャンクの最大サイズ、または交換されるデータ チャンクの数に制限はありません。データ コマンドおよび応答の構文は、LOGIN、NTLM、GSSAPI など、選択した AUTH パッケージによって異なります。詳細については、AUTH RFC を参照してください。

EXPS は "Exchange Protocol Security" を表していますが、この動詞が参照するプロトコルは SMTP のみです。Exchange 2000 Server と Exchange Server 2003 で使用される動詞の一部は、これらの製品専用であり、ESMTP 動詞と共に使用されます。このような動詞は、ESMTP X 動詞と呼ばれます。

これらの機能は、次の表に示されている 5 つのイベント シンクを使用して実装されます。すべてのプロトコル セキュリティ拡張は、Program Files\Exchsrvr\bin ディレクトリにある Exps.dll で実装されます。

X-EXPS プロトコル セキュリティ拡張

イベント シンク プロトコル イベント コメント

Exchange SMTP プロトコル セキュリティ EXPS-EOD シンク

OnInboundCommand

データ転送の終了 (_EOD) を通知します。

Exchange SMTP プロトコル セキュリティ EXPS-Aux シンク

OnInboundCommand

受信 AUTH コマンドを通知します。

Exchange SMTP プロトコル セキュリティ EHLO シンク

OnInboundCommand、OnServerResponse

受信 EHLO コマンドを通知し、サーバー応答において X-EXPS コマンドを一覧表示することで応答します。

Exchange SMTP プロトコル セキュリティ Mail シンク

OnInboundCommand、OnServerResponse、OnMessageStart

データ転送の開始を示します。このイベント シンクは、関連するすべての MAIL コマンド シナリオで実装されます。このイベント シンクは、受信 MAIL コマンドの通知、受信 MAIL コマンドへの応答、および送信 MAIL コマンドの発行を行うイベントを処理します。

Exchange SMTP プロトコル セキュリティ EXPS シンク

OnInboundCommand、OnServerResponse、OnSessionStart

X-EXPS セッションの開始を示します。このイベント シンクは、関連するすべての X-EXPS コマンド シナリオで実装されます。このイベント シンクは、受信 X-EXPS コマンドの通知、受信 X-EXPS コマンドへの応答、および送信 X-EXPS コマンドの発行を行うイベントを処理します。

スパム制御

この機能は、次の表に示されている 3 つのイベント シンクを使用して実装されます。これらのイベント シンクは、受信 SMTP 接続の送信者および受信者情報を処理します。スパム制御イベント シンクは、\Program Files\Exchsrvr\bin ディレクトリにある Turflist.dll で実装されます。

スパム制御 SMTP 拡張

イベント シンク プロトコル イベント コメント

RCPT 受信コマンド ハンドラ シンク

OnInboundCommand

確認が必要な受信者アドレスが指定されている受信 RCPT コマンドを通知します。

TURF 用の MAIL 受信コマンド ハンドラ シンク

OnInboundCommand

確認が必要な送信者アドレスが指定されている受信 MAIL コマンドを通知します。

EOD 受信コマンド ハンドラ シンク

OnInboundCommand

受信 _EOD コマンドを通知します。

X-ANONYMOUSTLS

このパラメータは、Exchange 2007 で新たに提供されるパラメータです。このパラメータにより、受信する匿名トランスポート層セキュリティ (TLS) 証明書の選択、または送信する匿名トランスポート層セキュリティ (TLS) 証明書の選択が可能になります。Exchange は、Active Directory ディレクトリ サービスを照会して、サーバー上の証明書の拇印を取得します。証明書の拇印は、サーバー オブジェクト上の msExchServerInternalTLSCert 属性にあります。msExchServerInternalTLSCert 属性を読み取ることができない場合、または値が null の場合は、SMTP セッションで X-ANONYMOUSTLS が通知されず、証明書も読み込まれません。

XLONGADDR

このパラメータは、Exchange 2007 で新たに提供されるパラメータです。このパラメータを使用すると、受信コネクタで長い X.400 電子メール アドレスを受け付けることができます。X.400 電子メール アドレスは、IMCEA (Internet Mail Connector Encapsulated Address) カプセル化方法を使用して、SMTP 電子メール アドレスでカプセル化されます。

このパラメータの値が $False の場合、完全な SMTP 電子メール アドレスの最大長は 571 文字となります。

このパラメータの値が $True の場合、次の変更が行われます。

  • 受信コネクタの EHLO 応答で XLONGADDR キーワードが通知されます。
  • SMTP セッションの受け付けられる行の長さは 8,000 文字まで増えます。
  • 有効な長さのアドレスは、MAIL FROM: および RCPT TO: で使用される SMTP コマンドで受け付けられます。

このため、X.400 電子メール アドレスの長さは、IMCEA カプセル化後に最大 1,860 文字まで可能になります。

このパラメータの有効な入力の範囲は、$True または $False です。既定値は $False です。ハブ トランスポート サーバー上に構成されている受信コネクタ上でのみ、このパラメータを変更できます。

XRDST

このパラメータは、Exchange 2007 で新たに提供されるパラメータです。このプロトコル拡張は、メッセージに関連付けられているルーティングの宛先をリモート サーバーに通知するために使用されます。リモート サーバーが XRDST を通知せず、送信メッセージが XRDST サポートを必要とする場合は、MSExchangeTransport イベント ID 2021 がイベント ログに記録されます。このイベントのシンボリック名は、tuple_SmtpSendUnableToTransmitRDst です。このイベントは、メッセージを送信できないことを示します。

EXPS EXCHANGEAUTH GSSAPI NTLM

このパラメータは、Exchange 2007 で新たに提供されるパラメータです。これは、X-ANONYMOUSTLS の後に通知される既定の受信コネクタ サービス拡張です。

X-EXCHANGEAUTH SHA256

このパラメータは、Exchange 2007 で新たに提供されるパラメータです。これは、X-ANONYMOUSTLS の後に通知される既定の受信コネクタ サービス拡張です。

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