Windows TIPS
[Enterprise Computing]
Tips   Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

Exchange Serverで特定の種類の添付ファイルが削除されるのを防ぐ

解説をスキップして操作方法を読む

デジタルアドバンテージ 島田 広道
2012/06/29
対象ソフトウェア
Exchange Server 2010
Summary
Exchange Server 2010のメール・サーバを介して送受信したメールで、特定の種類の添付ファイルが削除されて届かないことがある。
Exchange Serverのエッジ・トランスポート・サーバがデフォルトで実行可能ファイルの添付を削除するのが原因である可能性がある。
添付ファイルの削除を止めるには、PowerShellで添付ファイル・フィルタの設定を変更する。

解説

 ファイルを添付したメールをExchange Serverを介して送信あるいは受信すると、届いたメールから元の添付ファイルがなくなっていて、代わりに「この添付ファイルは<メール・サーバ名>によって削除されました。ご了承ください。」という一文だけのテキスト・ファイルが添付されていることがある。

Exchange Server経由で届いた添付ファイル付きメールの例
送信元からはmouseover.jsというJavaScriptファイルを添付して送信したところ、Exchange Serverのメール・サーバを介して受信したメールにはmouseover.jsの代わりに、この添付ファイルを削除したことを示すテキスト・ファイルだけが添付されていた。

 すべての添付ファイルが削除されるわけではなく、*.exeや*.comといった実行可能ファイルや、JavaScriptファイル(*.js)を始めとする各種スクリプト・ファイルなどが削除される。暗号化されていないZIPファイルにこれらのファイルを格納して添付すると、ZIPファイルごと削除される。かといって、添付したファイルはウイルス対策ソフトウェアのチェックにパスしており、ウイルスが原因で削除されているとは思えない。

 添付ファイルがメール配送中で削除される原因には、Exchange Server以外にも考えられる。ただ、次の条件が満たされている場合は、Exchange Serverが原因である可能性が高い。

  • 送信あるいは受信のどちらかのメール・サーバに、Exchange Server 2010を使用している
  • そのExchange Server 2010がエッジ・トランスポート役割を利用して、インターネット上のメール・サーバと通信している
  • 特定の種類のファイルは、送信でも受信でも100%削除される

 Exchange Server 2010のエッジ・トランスポート・サーバでは、デフォルトで実行可能ファイルなどの添付ファイルを削除する「添付ファイル・フィルタ」が有効になっているため、このような症状が発生する。しかも、このフィルタはExchange Server 2010の標準GUIツールであるExchange管理コンソールでは設定できず、PowerShellのコマンドレット操作が必要なため、見落としやすい設定項目でもある。そこで本稿では、この添付ファイル・フィルタの設定を変更して、添付ファイルが削除されないようにする方法を説明する。

 Exchange Server 2007にもエッジ・トランスポート役割があり、添付ファイル・フィルタを内蔵している。以下の「操作方法」で説明している設定変更手順はExchange Server 2007でも実行できるようだが、動作は未確認である。詳細は次のWebページを参照していただきたい。

  操作方法

 添付ファイル・フィルタの設定を変更するには、エッジ・トランスポート・サーバ上でExchange管理シェル(Exchange Management Shell。以下EMS)を開いて、PowerShellのコマンドレットを実行する必要がある。EMSは、スタート・ボタンから[すべてのプログラム]−[Exchange Server 2010]−[Exchange Management Shell]をクリックすると起動できる。

添付ファイル・フィルタの状況を確認する

 添付ファイル・フィルタが有効(実行されている)かどうかを確認するには、エッジ・トランスポート・サーバ上でEMSを開き、Get-TransportAgentコマンドレットを実行する。これは「トランスポート・エージェント」という、メール配送パイプラインに対するアドインのようなプログラムの稼働状況を確認するためのコマンドレットである。Exchange Server標準のフィルタ・プログラムはトランスポート・エージェントとして実装されているため、このコマンドレットで状況を調べられる。その出力結果にある「Attachment Filtering Agent」という項目が「True」であれば添付ファイル・フィルタは有効、「False」であれば無効である。

[PS] C:\Windows\system32>Get-TransportAgent

Identity                                 Enabled         Priority
--------                                 -------         --------
Connection Filtering Agent               True            1
Address Rewriting Inbound Agent          True            2
Edge Rule Agent                          True            3
Content Filter Agent                     True            4
Sender Id Agent                          True            5
Sender Filter Agent                      True            6
Recipient Filter Agent                   True            7
Protocol Analysis Agent                  True            8
Attachment Filtering Agent  ……  True  ……   9
Address Rewriting Outbound Agent         True            10
FSE Routing Agent                        True            11
FSE Connection Filtering Agent           True            12
FSE Content Filter Agent                 True            13
添付ファイル・フィルタの状況を確認する
エッジ・トランスポート・サーバ上でEMSを開いてGet-TransportAgentコマンドレットを実行すると、このように各種フィルタの稼働状況が一覧表示される。
これが添付ファイル・フィルタ。
添付ファイル・フィルタが有効であることを表している。「False」なら無効だ。

 添付ファイル・フィルタが有効であれば、次にフィルタリングされる対象の添付ファイルの種類を調べる。それには、同じサーバ上のEMSでGet-AttachmentFilterEntryコマンドレットを実行する。Content-Type文字列または拡張子で、フィルタリング対象のファイル一覧が表示される。これらの添付ファイルは、メールボックスに届く前にブロックされる。

[PS] C:\Windows\system32>Get-AttachmentFilterEntry

         Type Name                      Identity
         ---- ----                      --------
  ContentType application/x-msdownload  ContentType:application/x-msdownload
……(省略)……
  ContentType text/javascript           ContentType:text/javascript
  ContentType application/x-javascript  ContentType:application/x-javascript
  ContentType application/javascript    ContentType:application/javascript
  ContentType x-internet-signup         ContentType:x-internet-signup
  ContentType application/hta           ContentType:application/hta
     FileName *.xnk                     FileName:*.xnk
……(省略)……
     FileName *.jse                     FileName:*.jse
     FileName *.js                      FileName:*.js
……(省略)……
     FileName *.ade                     FileName:*.ade
添付ファイル・フィルタのフィルタリング対象ファイルの種類を確認する
Get-AttachmentFilterEntryコマンドレットを実行すると、フィルタリング対象ファイルすなわちブロックされるファイルの種類が一覧表示される。一例としてJavaScriptファイル関連のエントリ(太字部分)をピックアップしてみたが、このように複数個のエントリが設定されていることが分かる。

フィルタから特定の種類の添付ファイルを外す(フィルタを通過させる)

 前述のフィルタリング対象一覧から特定の種類の添付ファイルだけ外す、つまりフィルタを通過させるようにするには、Remove-AttachmentFilterEntryコマンドレットを用いる。その際、対象ファイルを拡張子で指定するなら、

Remove-AttachmentFilterEntry -Identity FileName:*.<拡張子>

という形式で、またContent-Type文字列なら、

Remove-AttachmentFilterEntry -Identity ContentType:<Content-Type文字列>

という形式でそれぞれ指定する必要がある。

 フィルタリング対象のJavaScriptファイルを通過させるようにする例を以下に記す(あくまでも一例であり、JavaScriptファイルは通過させても安全という意味ではない)。JavaScriptファイルの場合、拡張子(*.jsなど)とContent-Type文字列(「text/javascript」など)の両方がフィルタリング対象として登録されているため、完全にフィルタから外すには1つずつRemove-AttachmentFilterEntryコマンドレットに指定して実行を繰り返す必要がある。

[PS] C:\Windows\system32>Remove-AttachmentFilterEntry -Identity FileName:*.js  ……

確認
この操作を実行しますか?
添付ファイル フィルター エントリ "FileName:*.js" を削除しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
[PS] C:\Windows\system32>Remove-AttachmentFilterEntry -Identity ContentType:text/javascript  ……

確認
この操作を実行しますか?
添付ファイル フィルター エントリ "ContentType:text/javascript" を削除しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
JavaScriptファイルを添付ファイル・フィルタから外す(通過させる)設定例
これはRemove-AttachmentFilterEntryコマンドレットで、JavaScriptファイルに対する2個のフィルタを外しているところ。
拡張子「*.js」を指定しているコマンドレット。
Content-Type文字列「text/javascript」を指定しているコマンドレット。

外したフィルタを元に戻す(特定の種類の添付ファイルをフィルタでブロックする)

 例えばRemove-AttachmentFilterEntryでフィルタリング対象から外したファイルを、追加し直して元に戻すには、Add-AttachmentFilterEntryコマンドレットを用いる。対象ファイルを拡張子で指定するなら、

Add-AttachmentFilterEntry -Type FileName -Name *.<拡張子>

という形式で、またContent-Type文字列で指定するなら、

Add-AttachmentFilterEntry -Type ContentType  -Name <Content-Type文字列>

という形式でそれぞれ指定する必要がある。前述のRemove-AttachmentFilterEntryコマンドレットとはパラメータのフォーマットが異なるので注意すること。

添付ファイル・フィルタを無効化する

 添付ファイル・フィルタそのものを無効化して、すべての種類の添付ファイルを通過させるように設定することも可能だ。それには、Disable-TransportAgentコマンドレットを用いて、「Attachment Filtering Agent」を無効化する。言うまでもないことだが、添付ファイル・フィルタを無効化すると、ウイルスなど悪意のある実行可能プログラムも添付ファイルとして通過しやすくなり、メッセージと一緒に社内ネットワークに紛れ込む可能性が高くなる。動作確認やトラブルシューティングのために限定するなど、十分注意して設定していただきたい。

[PS] C:\Windows\system32>Disable-TransportAgent -Identity "Attachment Filtering Agent"

確認
この操作を実行しますか?
トランスポート エージェント "Attachment Filtering Agent" を無効にしています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
警告: 変更を有効にするには、次のサービスを再起動する必要があります。MSExchangeTransport
添付ファイル・フィルタを無効化する
Disable-TransportAgentコマンドレットで「Attachment Filtering Agent」を無効化する。

 また、Disable-TransportAgentコマンドレットの実行後は、Microsoft Exchange Transport(MSExchangeTransport)サービスを手動で再起動する必要がある。そのため、メール配送が一時的に停止するので注意すること。

 再び添付ファイル・フィルタを有効化するには、Enable-TransportAgentコマンドレットで「Attachment Filtering Agent」を有効化する。End of Article

Enable-TransportAgent -Identity "Attachment Filtering Agent"

「Windows TIPS」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間