(この記事は 2014 年 8 月 22 日に The Exchange Team Blog に投稿された記事 Released: PelNet v2.0の翻訳です。最新情報については、翻訳元の記事をご参照ください。)
更新のお知らせ: 2014 年 8 月 25 日に pelnet.ps1 スクリプトが更新され、軽微なバグが修正されました。
Exchange コミュニティの皆様、こんにちは。
PelNetはご好評をいただいているようで、必要性の高い機能をさらに追加してほしいというご要望が届いています。そこでこの記事では、管理者の皆様のトラブルシューティングやメール フローの確認に役立つ、優れた新機能を簡単にご紹介します。
今回のリリースで追加された新機能は以下のとおりです。
- 複数の宛先をテストする機能: 複数の外部ドメインに対してテストする際にツールを何度も実行する必要がないので便利です。
- トランスポート サーバーに対する最適化されたリモート実行: 多数のサーバーをテストする際のパフォーマンスが向上します。
- TLS ネゴシエーションが機能しているかどうかを検証する機能: 今回追加された中でも特に便利な機能です。
上記の機能追加に伴い、2 種類の新しいパラメーター「validateTLS」と「CertThumbPrintOverride」が追加されました。
では、新しく導入されたものを含め、パラメーターについてまとめてみましょう。
> AddressSpace: 送信コネクタのアドレス スペースを指定します。
> sendConnector:単一の送信コネクタを対象にする場合に指定します。
> SourceTransportServers:テストするトランスポート サーバーをコンマ区切りリスト (CSV 形式) で指定できます。
> smartHost: テストするスマート ホストです。コンマ区切りの値を指定できます (TLS について検証する際は必ずリモート ホストの FQDN を使用してください。IP アドレスを使用すると証明書の検証に失敗します)。
> mailSubmissionTest:スクリプトでメールをメールボックスに送信したい場合はこのスイッチを使用します。パラメーターを省略すると、SMTP 動詞の DATA が無視されます。
> From: 差出人アドレス (postmaster@contoso.com) です。
> Rcpt: 宛先アドレスです。コンマ区切りリスト (testmailbox@fabrikam.com,testmailbox@wingtiptoys.com) で指定できます。
> LogFolderPath: ログ ファイルやレポートの場所を指定します。パラメーターを省略すると、既定で現在のパスが指定されます。
> Port: 既定は 25 です。必要に応じてカスタム ポートを指定できます。
> validateTLS: このスイッチを指定すると、TLS の検証が有効になります。これによって、使用される一連の SMTP 動詞が変更され、STARTTLS 動詞 (およびその他のさらに複雑な処理) が含まれるようになります。
> CertThumbPrintOverride: これを指定すると、トランスポート サーバーに割り当てられる SMTP 証明書の決定に使用するロジックを上書きできます。
また、これを使用して、Exchange の SMTP サービスに証明書を割り当てる前に特定のホストに対する TLS をテストすることもできます。つまり、運用環境を変更する前の事前検証が可能です。証明書は、ローカル コンピューターの証明書ストアに格納されている必要があります。
コード ロジックでは、割り当てられる SMTP 証明書を決定する際に最適な方法で判断を行いますのでご留意ください。CertThumbPrintOverrideパラメーターを使用すると、この動作を簡単に上書きすることができます。
スクリプトの実行例
例を含む詳細なヘルプを表示します。
Get-help .\pelnet.ps1 -full
複数の宛先を指定して、ポート 25 のすべてのトランスポート サーバーで 1 つのスマートホストに対するメール フローのテストと TLS の検証を行います (メッセージは送信されません)。
.\PelNet.ps1 -From postmaster@adatum.com -Rcpt user1@contoso.com,user2@fabrikam.com,user3@wingtiptoys.com -smarthost webmail.contoso.com -validateTLS
複数の宛先を指定して、ポート 25 のすべてのトランスポート サーバーで 1 つのスマートホストに対するメール フローのテストと TLS の検証を行います (メッセージを送信し、使用する証明書を上書きします)。
.\PelNet.ps1 -From postmaster@adatum.com -Rcpt user1@contoso.com,user2@fabrikam.com,user3@wingtiptoys.com -smarthost webmail.contoso.com –validateTLS –mailsubmissiontest –certThumbprintOverride 1A13124HJG1234K12JHG312J123D
複数の宛先を指定して、ポート 25 のハイブリッド サーバーで EOP に対するメール フローのテストと TLS の検証を行います (EOP にメールを送信します)。
.\PelNet.ps1 -From postmaster@adatum.com -Rcpt user1@contoso.com,user2@fabrikam.com,user3@wingtiptoys.com -smarthost adatum-mail-onmicrosoft-com.mail.protection.outlook.com –validateTLS –sourceTransportServers E15HYBRID01,E15HYBRID02 -mailsubmissiontest
TLS の検証ロジックでは、SMTP に割り当てられている証明書か、CertThumbPrintOverride パラメーターで指定されているサムプリントに一致する証明書を使用して、リモート サーバーに対する認証を行います。リモート ホストが便宜的な TLS で構成されており、かつハンドシェイクに失敗した場合、そのセッションでは暗号化されていない SMTP へのフォールバックが行われます。
複数のサーバーに対してコードを同時に実行すると、コンソール出力には送信される動詞が表示されませんが、最終的な出力の表および出力ファイルは、以前に PelNet 1.0 のときにご説明したとおりになります。
以下の出力について説明します。
STARTTLS 動詞が送信され、サーバーが"2.0.0 SMTP Server Ready" で応答しています。そして、指定したサムプリントに一致する証明書 (または最適な方法で動的に検出された証明書) を使用してターゲット ホストに対して認証を行うことで、その後に使用する SSL ストリームが確立されています。
動詞が SSL ストリームを使用して送信されており、宛先の参照に成功しています。
次に示すのは、あるサーバー上で発生した証明書の検証に関する問題の例です。
以下に、証明書の検証に関する一般的なエラーを挙げます。
証明書失効リストが見つからない。
リモートのホスト名が証明書に含まれる名前と一致しない。
証明書の期限が切れている。
送信側のサーバーにルート証明書がインストールされていない。つまり、受信したリモートの証明書との信頼関係を確立できていない。
上記の例にある検証エラーは、Contoso 環境のルート証明書を EX14-02 サーバーにインストールすることで、すぐに解決できました。
それでは、またお会いできることを楽しみにしています。
Michael Hall
Office 365、サービス エンジニア