Windows TIPS
[Enterprise Computing] |
Exchange Serverで特定の種類の添付ファイルが削除されるのを防ぐ
|
|
■ |
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」を有効化する。
Enable-TransportAgent -Identity "Attachment Filtering Agent" |
Windows Server Insider フォーラム 新着記事