(57)【特許請求の範囲】
【請求項１】
バスを含みポスタルノードと交信状態にある第２のノードからそのポスタルノードのデータにアクセスする電子メールシステムにおいてウイルスを検出し選択的に除去する装置であって、
前記バスに結合され前記ポスタルノードと交信状態にあってそのポスタルノードにおけるメッセージの存在を検出するポーリングモジュールであって、前記電子メールシステムの電子メールプログラムのポーリングルーチンを前記第２のノードにおいてエミュレートするポーリングモジュールと、
前記バスに結合され前記ポスタルノードと交信状態にあって前記メッセージ関連のデータのコピーを前記メッセージの未読出状態への影響なく入手する検索モジュールと、
前記バスに結合され前記検索モジュールと交信状態にあって前記メッセージ関連のデータがウイルスを含むか否かを判定するウイルス分析モジュールと、
前記バスに結合され、前記ポーリングモジュール、前記検索モジュールおよび前記分析モジュールと交信状態にあって前記ポーリングモジュール、前記検索モジュールおよび前記分析モジュールを制御するメール走査マネジャーと
を含み、ウイルスの検出および選択的除去を前記電子メールプログラムの動作を要することなく行う装置。
【請求項２】
前記バスに結合され、前記ウイルス分析モジュールおよび前記メール走査マネジャーと交信状態にあってウイルス含有の判明したメッセージを補正するウイルス処理モジュール
をさらに含む請求項１記載の装置。
【請求項３】
前記バスに結合され、前記検索モジュールおよび前記メール走査マネジャーと交信状態にあってメッセージ関連のデータの記録を維持するデータバッファをさらに含む請求項１記載の装置。
【請求項４】
前記データバッファが前記メッセージを一義的に識別する第１のフィールドと、前記メッセージが分析ずみか否かを表示する第２のフィールドとを含む請求項３記載の装置。
【請求項５】
前記バスに結合され、前記ウイルス分析モジュール、前記ウイルス処理モジュールおよび前記メール走査マネジャーと交信状態にあって前記メッセージの分析および処理のために復号化するデコーダ
をさらに含む請求項２記載の装置。
【請求項６】
前記バスに結合され、前記メール走査マネジャーと交信状態にあって前記電子メールシステムによりメールメッセージを送出するメール送出モジュールを
をさらに含む請求項１記載の装置。
【請求項７】
前記メッセージがユニーク識別番号およびヘッダを含む請求項１記載の装置。
【請求項８】
前記メッセージが少なくとも一つのアタッチメントをさらに含む請求項７記載の装置。
【請求項９】
第２のノードから第１のノードのデータにアクセスする電子メールシステムにおいてメッセージの中のウイルスを検出し選択的に除去する方法であって、常駐アプリケーションプログラムを有し前記第２のノードと関連したコンピュータで行う方法において、
前記第２のノード宛のメッセージの前記第１のノードにおける存在を判定するように前記第２のノードから前記第１のノードを、前記電子メールシステムの電子メールプログラムのポーリングルーチンをエミュレートすることによりポーリングする過程と、
前記メッセージ関連のデータを前記第１のノードから前記第２のノードに前記メッセージの未読出状態への影響なく取り出す過程と、
前記メッセージがウイルスを含むかどうかを判定するようにそのメッセージを分析する過程と
を含み、前記ポーリングする過程、前記取り出す過程および前記分析する過程を前記電子メールプログラムの動作を要することなく行う方法。
【請求項１０】
前記メッセージがユニーク識別番号とヘッダとを含む請求項９記載の方法。
【請求項１１】
前記メッセージが少なくとも一つのアタッチメントをさらに含む請求項１０記載の方法。
【請求項１２】
前記メッセージがウイルスを含むと判定されたときそのメッセージを処理する過程をさらに含む請求項９記載の方法。
【請求項１３】
前記メッセージが分析されたかどうかを時系列記録するようにメッセージ関連データを記録するステップをさらに含む請求項９記載の方法。
【請求項１４】
前記メッセージを処理する過程が前記メッセージから前記ウイルスを除去することを含む請求項１３記載の方法。
【請求項１５】
前記メッセージを分析する過程が
前記メッセージを一時的ファイルに蓄積する過程と、
前記一時的ファイルをウイルスチェックのために走査する過程と、
前記走査する過程がウイルスを検出したかどうかを試験する過程と
をさらに含む請求項１３記載の方法。
【請求項１６】
前記第２のノードに取り出す過程が前記メッセージにアクセスしそのメッセージを前記第２のノードにおけるメモリにダウンロードすることを含む請求項９記載の方法。
【請求項１７】
メールメッセージをウイルス検出の表示のために加入者に送ることをさらに含む請求項９記載の方法。
【請求項１８】
前記メッセージを処理する過程が前記第１のノードにおいて前記アタッチメントを置換することを含む請求項１２記載の方法。
【請求項１９】
第２のノードから第１のノードのデータにアクセスする電子メールシステムのメッセージの中のウイルスを検出して選択的に除去する装置であって、
前記第２のノード宛のメッセージの前記第１のノードにおける存在を判定するように前記第２のノードから前記第１のノードを、前記電子メールシステムの電子メールプログラムのポーリングルーチンをエミュレートすることにより、ポーリングする手段と、
前記メッセージ関連のデータを前記第１のノードから前記第２のノードに前記メッセージの未読出状態への影響なく取り出す手段と、
前記メッセージがウイルスを含むかどうかを判定するようにそのメッセージを分析する手段と
を含み、前記ポーリングする手段、前記取り出す手段および前記分析する手段がウイルスの検出および除去を前記電子メールプログラムの動作を要することなく行う装置。
【請求項２０】
前記メッセージがウイルスを含むと判定されたときそのメッセージを処理する手段をさらに含む請求項１９記載の装置。
【請求項２１】
前記メッセージが分析されたかどうかを時系列記録するようにメッセージ関連データを記録する手段をさらに含む請求項１９記載の装置。
【請求項２２】
前記メッセージを処理する手段が前記メッセージから前記ウイルスを除去する手段を含む請求項２１記載の装置。
【請求項２３】
前記メッセージを分析する手段が
前記メッセージを一時的ファイルに蓄積する手段と、
前記一時的ファイルをウイルスチェックのために走査する手段と、
前記走査する手段がウイルスを検出したかどうかを試験する手段と
をさらに含む請求項２１記載の装置。
【請求項２４】
メールメッセージをウイルス検出の表示のために加入者に送る手段をさらに含む請求項１９記載の装置。
【請求項２５】
前記メッセージを処理する手段が前記第１のノードにおいて前記アタッチメントを置換する手段を含む請求項２０記載の装置。
【請求項２６】
前記取り出す手段が前記メッセージにアクセスしてそのメッセージを前記第２のノードのメモリにダウンロードする請求項１９記載の装置。
【請求項２７】
前記メッセージがユニーク識別番号およびヘッダを含む請求項１９記載の装置。
【請求項２８】
前記メッセージが少なくとも一つのアタッチメントをさらに含む請求項２７記載の装置。
【請求項２９】
前記メール走査マネジャーが、前記電子メールプログラムの活性化および使用を監視することにより、ユーザ既読出のメッセージを特定する請求項１記載の装置。
【請求項３０】
前記電子メールプログラムの活性化および使用を監視することにより、ユーザ既読出のメッセージを特定する過程をさらに含む請求項９記載の方法。
【請求項３１】
前記電子メールプログラムの活性化および使用を監視することにより、ユーザ既読出のメッセージを特定する手段をさらに含む請求項１９記載の装置。
【発明の詳細な説明】
発明の背景
１．発明の技術分野
この発明は概括的にはコンピュータシステムおよびコンピュータネットワークに関する。より詳しくいうと、この発明はコンピュータウイルスを検出し除去するシステムおよび方法に関する。さらに詳しくいうと、この発明はコンピュータネットワーク相互間のファイル転送およびメッセージ転送からコンピュータウイルスを検出し除去する方法、並びにネットワークポスタルノードを通じて電子メールでアクセスしたファイルおよびメッセージからコンピュータウイルスを検出し除去する装置および方法に関する。
２．従来技術の説明
コンピュータの利用が近年広まってきた。また、コンピュータを相互接続してネットワークを構成することが普及してきた。図１を参照すると、従来技術による情報システム２０の一部のブロック図が示してある。同図に示した情報システム２０の部分は第１のネットワーク２２、第２のネットワーク２４および第３のネットワーク２６を含む。この情報システムは単なる例示であって、当業者には明らかなとおり、情報システム２０は各々がそれ自身の保護領域を構成し任意の数のノードを有する任意の数のネットワークを含むことができる。図１に示すとおり、ネットワーク２２、２４、２６の各々は複数のノード３０、３２から構成されている。ノード３０、３２の各々はマイクロコンピュータで構成するのが好ましい。ノード３０、３２は互いに接続されて、複数のネットワークコネクション３６によるネットワークを構成する。例えば、ノード３０、３２はトークンリング様式、イーサネット様式またはそれら以外のこの技術分野で周知の多様な様式を用いて互いに接続できる。これらネットワーク２２、２４、２６の各々は自身以外のネットワーク２２、２４、２６へのリンクのためのゲートウェイとして作用するノード３２を含む。ゲートウェイノード３２の各々はPOTS（従来の電話サービス）やT-1リンクなどの標準電話回線コネクションにより電話網２８経由で他のゲートウェイノード３２に接続するのが好ましい。ネットワーク２２、２４、２６相互間の通話はすべてゲートウェイノード３２の一つを通じて行うのが好ましい。
情報へのアクセスに電子メールを用いることも普及してきた。図９を参照すると、複数のクライアントノード２３０、すなわちクライアントノード２３０相互間などの電子メールアクセスを容易にするように配置されたポスタルノード２３２に接続された好ましくはマイクロコンピュータで構成した複数のクライアントノード２３０を含む形で電子メールシステム２００が示してある。ポスタルノードには他のポスタルノードへの通信リンク２３４を含めることができ、それ以外のポスタルノード（図示してない）との間で信号授受を行うことができる。電子メールへのアクセスはポスタルノード２３２から一つまたは多数のユーザに対して行うことができ、それら電子メールは単純なメッセージまたはウイルス入りのファイルを含む複雑な情報を含み得る。
コンピュータ、とくにマイクロコンピュータに災害をもたらす他ならぬ問題がコンピュータウイルスおよびウォームである。コンピュータウイルスは他のプログラムに埋め込まれまたは隠されたコードの１セクションである。プログラムが実行されると、そのコードが活性化されてシステム内の他のプログラムに取り付く。感染したプログラムはそのコードを他のプログラムにコピーする。それらウイルスの影響は、メッセージが表示画面に表示されるだけの単純ないたずらであることもあり、プログラムおよびデータの破損などより深刻な影響であることもあり得る。従来技術におけるもう一つの問題はウォームである。ウォームはディスクおよびメモリ全体にわたって自分自身を複製し、利用可能なコンピュータ資源を全部使いきって最後にはコンピュータシステムを崩壊させる破壊的プログラムである。ウォームもウイルスも破壊的性質があるので、これらをコンピュータおよびネットワークから除去する必要があることは明らかである。
ウイルスの影響を軽減し、多様なウイルス検出プログラムによりその拡散を防止する試みがなされてきた。動作遮断と通常呼ばれるウイルス検出の一つの方法は、ディスクの書込み、消去、フォーマットなどの重要なオペレーティングシステム機能についてコンピュータまたはシステムを監視する。これら動作が起こると、それら動作が所期どおりのものであるかどうかについてプログラムがユーザに入力を要求する。その動作が所期どおりのものでない場合は（例えば、問題の機能を用いたプログラムをユーザが全く動作させていなかった場合など）、ユーザはそれがウイルスプログラムによる要求であると認識して動作を中止させる。シグネチャ走査法として知られるもう一つのウイルス検出方法はシステムにコピー取込み中のプログラムを走査する。すなわち、ウイルスに用いられているプログラムコードの既知のパターンをシステムで検索する。現在のところ、シグネチャ走査はフロッピーディスク駆動装置、ハードディスク駆動装置または光ディスク駆動装置だけについて行っている。ウイルス検出のもう一つの手法は、システムに蓄積してあるウイルスなし確認ずみの宿主プログラム全部についてチェックサムを行うやり方である。チェックサム試験の後でウイルスが宿主プログラムに取り付くと、その次のチェックサムの値に変化が生じウイルスの存在が検出されるのである。
しかし、これら従来技術の手法は数多くの欠点を伴う。第１に、動作遮断はあらゆるウイルスを首尾よく検出できるとは限らない。すなわち、ウイルスのためのコードの部分であり得る重要な動作が、プログラムの正常動作についてその重要な動作の起こる可能性のある位置に生じ得るからである。第２に、シグネチャ走査はたいていの場合ディスク駆動装置からの新たな入力について行われるだけである。インターネットの出現とその普及において、他のネットワークとの信号授受のためにゲートウェイで用いられるようなコネクション３６を首尾よく走査できる方法は従来技術にはない。第３に、上述の諸方法の多くは多量の計算資源を必要とし、そのためにシステム全体としての性能が低下する。すなわち、各コンピュータでウイルス検出プログラムを動かすのは実際的でない。したがって、それら多くのウイルス検出プログラムの動作は各マシーンの動作性能向上のためにディスエーブルされている。
したがって、コンピュータの性能に影響を及ぼすことなくウイルスを効率的に検出し除去するシステムおよび方法が必要である。また、ゲートウェイまたはインターネット経由で他の情報システムに接続されたネットワークの中のウイルスを検出し除去するシステムおよび方法が必要である。
重要性の増しているもう一つの問題は、ネットワークゲートウェイノード３３を通過する必要のないイントラネットワーク電子メールアクセスを含む電子メール通信経由のウイルスの拡散の検出および防止についても生ずる。さらに、ウイルス拡散、符号化ずみまたは秘匿処理ずみのファイルにおけるウイルスの検出、ウイルス検出を試みないユーザの傾向、ウイルス検出期間にユーザが辛抱しきれないことなどの可能性を高める多数ユーザによる電子メールアクセスも問題をはらんでいる。
したがって、電子メール通信で拡散する可能性のあるウイルスを検出する装置および方法が必要である。さらに、増殖ウイルス拡散を防止し、符号化ファイルウイルスの検出を容易にし、ユーザの介入を要することなく起動し、背後で動作できるその種の装置および方法が必要である。
発明の概要
この発明はコンピュータネットワーク上のウイルスを検出し除去するシステム、装置および方法によって従来技術の制限および欠点を解消する。
この発明によるシステムは複数のノードと他のネットワークへの接続のためのゲートウェイノードとから形成されるネットワークである。ノードはマイクロコンピュータで構成するのが好ましく、ゲートウェイノードは表示デバイス、中央処理装置、この発明の装置を構成するメモリ、入力装置、ネットワークリンクおよび通信ユニットを備える。上記メモリはカーネルを含むオペレーティングシステム、ファイル転送プロトコル（FTP）代行サーバおよび単純メール転送プロトコル（SMTP）代行サーバをさらに含む。中央処理装置、表示装置、入力装置およびメモリは互いに接続され、メモリに記憶されたアプリケーションプログラムを実行するように動作する。ゲートウェイノードの中央処理装置は通信ユニット経由でファイルを送受信するFTP代行サーバをも実行し、通信ユニット経由でメッセージを送受信するSMTP代行サーバを実行する。FTP代行サーバとSMTP代行サーバとはゲートウェイノードの通常の動作と同時並行に実行するのが好ましい。これらサーバはメッセージおよびファイルに混入してネットワークへまたはネットワークから送信されるウイルスがネットワークへの転送またはネットワークからの転送の前に検出されるように動作させるのが有利である。この発明のゲートウェイノードは、ウイルス検出のためのFTP代行サーバおよびSMTP代行サーバの使用の影響が最小になるので有利である。ネットワーク出入りのファイルだけがウイルス有無の検査を受けそれ以外のネットワーク内トラフィックは影響を受けないからである。
この発明はネットワークへの転送前のファイルの処理方法およびネットワークからの転送前のファイルの処理方法をも含む。ファイル処理の好適な方法は、データ転送コマンドおよびファイル名を受ける過程と、そのファイルを代行サーバに転送する過程と、そのファイルについてウイルス検出を行う過程と、そのファイルが何らかのウイルスを含んでいるか否かを判定する過程と、ファイルがウイルスを含んでいない場合にそのファイルを代行サーバから受け側ノードに転送する過程と、そのファイルがウイルスを含んでいない場合にそのファイルについて所定の動作を行う過程とを含む。この発明は上記と同様に動作するネットワークへの送信またはそのネットワークからの送信の前にメッセージの処理を行う方法をも含む。
この発明は電子メールシステムでアクセスされたメッセージにネットワーク経由で広がり得るウイルスを検出し除去する装置をも含む。その種のメールシステムにおいては、あるクライアントノードのあるユーザ宛のメッセージはそのクライアントノードによるアクセスの前にポスタルノードに通常は蓄積される。好ましくはそのクライアントノードに設置してあるメール走査装置でウイルスを検出し補正動作を行う。このメール走査装置はポスタルノードに未読取メッセージのあることを判定するポーリングモジュールと、クライアントノードのメモリへの未読取メッセージをダウンロードする検索モジュールと、そのメッセージがウイルスを含むかどうかを判定するとともにその広がりの防止のための補正動作を容易にするウイルス分析処理モジュールとを備えるのが好ましい。これらモジュールをそのクライアントノードだけに特有の電子メールプログラムファイルからの要求によることなく動作するように配置し、背後での目立たないウイルス検出およびユーザ起動によらない動作ができるようにする。また、クライアントノードにおいてメール走査装置を好適に配置することによって、ポスタルノード資源を費やすことなくウイルス検出が可能になる。
この発明は電子メールシステムのアクセスしたメッセージにネットワークを通じて拡散し得るウイルスを検出し除去する方法をも含む。ポスタルノードをクライアントノードからポーリングして未読出しメッセージをチェックし、クライアントノードのメモリに未読出しメッセージをダウンロードし、ウイルス有無のチェックのためにメッセージを走査し、補正動作を行うようにするのが好ましい。
【図面の簡単な説明】
図１はこの発明の動作対象となる複数のネットワークおよび複数のノードを備える従来技術の情報システムのブロック図である。
図２はこの発明の装置を含むゲートウェイノードのための好適な実施例のブロック図である。
図３はこの発明の装置を含むゲートウェイノードのメモリの好適な例のブロック図である。
図４はこの発明により構成したプロトコル層階層を従来技術のOSI層モデルと対比して示した好適な例のブロック図である。
図５Ａはこの発明の好適な実施例による好適なデータファイル送信システムの機能的ブロック図である。
図５Ｂはこの発明の好適な実施例による好適なデータファイル受信システムの機能的ブロック図である。
図６Ａ、６Ｂおよび６Ｃはこの発明による好適なファイル転送方法の流れ図である。
図７はこの発明の好適な実施例による好適なメールメッセージ送信システムの機能的ブロック図である。
図８Ａおよび８Ｂはネットワークへの／からの好適なメッセージ送信方法の流れ図である。
図９は従来技術によるネットワーク電子メールシステムのブロック図である。
図１０ａはこの発明により構成したポスタルノードのブロック図である。
図１０ｂはこの発明により構成したポスタルノードのメモリのブロック図である。
図１０ｃはこの発明により構成したポスタルノードのデータ蓄積装置のブロック図である。
図１１ａはこの発明を含むクライアントノードの好適な例のブロック図である。
図１１ｂはこの発明によるクライアントノードのメモリの好適な例のブロック図である。
図１１ｃはこの発明のメール走査モジュールの好適な例のブロック図である。
図１１ｄはデータバッファ内にデータを蓄積する際の好適なフォーマットの図解である。
図１２はこの発明による電子メールメッセージ走査方法の第１の好適な実施例の流れ図である。
図１３はこの発明による電子メールメッセージ走査方法の第２の好適な実施例の流れ図である。
図１４はこの発明による好適な電子メールアタッチメントファイル走査方法の流れ図である。
図１５はウイルス除去のためのこの発明による好適な感染アタッチメントファイル処理方法の流れ図である。
好適な実施例の詳細な説明
この発明のウイルス検出システムおよび方法は図１を参照して上に述べたとおり情報システム２０で動作させるのが好ましい。この発明は従来技術の場合と同様に複数のシステム３０と各ネットワーク２２、２４、２６について少なくとも一つのゲートウェイノード３３とを含む。しかし、ネットワークへのまたはネットワークからの送信ファイルについてのウイルス検出も行う新規なゲートウェイノード３３を備える点で、この発明は従来技術と異なる。また、この新規なゲートウェイノード３３は関連ネットワークへのまたは同ネットワークからの送信メッセージ全部についてウイルス検出を行う。
図２を参照すると、この発明によって構成した新規なゲートウェイノード３３の好適な実施例のブロック図が示してある。このゲートウェイノード３３の好適な実施例は表示装置４０、中央処理装置（CPU）４２、メモリ４４、データ蓄積装置４６、入力装置５０、ネットワークリンク５２および通信ユニット５４を含む。CPU４２は、表示装置４０、メモリ４４、データ蓄積装置４６、入力装置５０、ネットワークリンク５２および通信ユニット５４とバス５６経由でフォン ノイマン アーキテクチャの下に接続してある。CPU４２、表示装置４０、入力装置５０およびメモリ４４はパーソナルコンピュータの場合のように慣用の形式で互いに接続できる。CPU４２はモトローラ社の68040型プロセッサまたはインテル社のペンティアム型または同社のX86型プロセッサなどのマイクロプロセッサで構成し、表示装置４０はビデオモニタで構成し、入力装置５０はキーボードおよびマウス型コントローラで構成する。CPU４２はハードディスク駆動装置などのデータ蓄積装置４６にも慣用の方法で接続する。ゲートウェイノード３３がミニコンピュータまたはメインフレームコンピュータでも差し支えないことは当業者には明らかであろう。
バス５６はこのネットワークのゲートウェイノード３３および他のノード３０の間の信号授受を容易にするためにネットワークリンク５２にも接続する。この発明の好適な実施例では、ネットワークリンク５２はケーブルまたはライン３６に接続した送受信器を含むネットワークアダプタカードで構成する。例えば、ネットワークリンク５２は同軸ケーブル、より線対または光ファイバケーブルに接続したイーサネットカードで構成できる。トークンリング、イーサネット、アークネットなど多様なネットワーク構成が採用でき、どれを採用するかはこの発明とは別問題であることは当業者には明らかであろう。ネットワークリンク５２は、ネットワーク経由で、または所定のネットワークの保護領域内で送られてきた信号の送受信および蓄積を行う。このネットワークリンク５２はこれら信号をCPU４２との間でやりとりできるようにバス５６に接続してある。
バス５６はゲートウェイノード３３と他のネットワークとの間の信号授受を容易にするように通信ユニット５４にも接続する。より詳細に述べると、通信ユニット５４は他のネットワークにデータおよびメッセージを送るためにCPU４２に接続してある。この通信ユニット５４は慣用の方法で他のネットワークに接続したモデム、ブリッジまたはルータで構成できる。この発明の好適な実施例では、この通信ユニット５４はルータである。通信ユニット５４を専用T-1電話回線、光ファイバケーブル、または多様な慣用の接続方法の一つなどの媒体３４経由で他のネットワークに接続する。
CPU４２はメモリ４４からおよび入力装置５０経由でユーザから受けた指示および命令制御に基づき、通信ユニット５４経由で送受信すべきデータを生ずる。ネットワーク相互間のデータ転送は、パケットにそれぞれ分けられるファイルおよびメッセージの送信および受信に分けられる。この発明の方法はゲートウェイノード３３経由のネットワークへのまたはネットワークからのメッセージおよびファイルのあらゆる転送に適用されるウイルス検出機構を用いる。
図３を参照すると、ゲートウェイノード３３用のメモリ４４の好適な例をより詳細に示してある。メモリ４４はランダムアクセスメモリ（RAM）で構成するのが好ましいが、読出し専用メモリ（ROM）を含めることもできる。このメモリ４４はファイル転送プロトコル（FTP）代行サーバ６０、単純メール転送プロトコル（SMTP）代行サーバ６２およびカーネル６６付きのオペレーティングシステム６４を備える。ファイル転送およびメッセージ中のウイルス検出のためのこの発明のルーチンは主としてFTP代行サーバ６０とSMTP代行サーバ６２とから成る。FTP代行サーバ６０は通信ユニット５４経由のゲートウェイノード３３へのおよび同ノード３３からのファイル転送を制御するルーチンであり、そのゲートウェイノードを含むネットワークへのおよび同ネットワークからのファイル転送を制御する。次に、図５Ａ、５Ｂ、６Ａ、６Ｂおよび６Ｃを参照してFTP代行サーバ６０の動作をより詳細に述べる。SMTP代行サーバ６０も、ゲートウェイノード３３へのおよび同ノード３３からの、したがってゲートウェイノード３３関連の各ネットワークとの間のメッセージ転送を制御するルーチンである。図７、８Ａおよび８Ｂを参照して、SMTP代行サーバ６２の動作をより詳細に後述する。この発明はバークレイ ソフトウェア ディスリビューション UNIXなどの慣用のオペレーティング システム２８を用いる。この発明がマッキントッシュ システム ソフトウェア ヴァージョン7.1、ウィンドウズ、またはウィンドウズ NTなど上記以外のオペレーティングシステムでの使用のために容易に改変できることは当業者には明らかであろう。メモリ４４はコンピュータ作図プログラム、文書作成プログラムおよび表計算プログラムなど多様なアプリケーションプログラム６８をも含むことができる。この発明はFTP代行サーバ６０およびSMTP代行サーバ６２をゲートウェイノード３３のメモリだけに設けてウイルス検出および除去の影響を最小にしているので従来技術よりも有利である。すなわち、一つのネットワークの保護領域内での転送データはデータパケットがゲートウェイノード３３経由で経路づけされることがないのでチェックされない。
この発明の装置、とくにFTP代行サーバ６０およびSMTP代行サーバ６２がゲートウェイノード３３に配置されたものとして上に述べてきたが、この発明の装置をFTPサーバ、またはファイルおよびメッセージのウェブからのダウンロードの際の走査用のワールドワイドウェブサーバに設けることもできる。また、代替実施例では、ネットワークの各ノードにそのノードから受信または送信されるメッセージ全部についてウイルス検出を行うようにこの発明の装置を配置する。
図４にもっともよく示されているとおり、CPU４２はネットワーク経由の信号授受のためにプロトコル層階層を利用する。この発明の階層状プロトコル層を例えばISO-OSI参照モデルと対比して図４に示す。この発明の階層のプロトコル層４１０−４２６は、(1)伝送媒体４１０で形成された物理層４００、(2)ネットワーク インタフェースカード４１１で形成されるデータリンク層４０１、(3)アドレス分析４１２、インターネットプロトコル４１３およびインターネット制御メッセージプロトコル４１４で構成されるネットワーク層４０２、および(4)送信制御プロトコル４１５およびユーザデータグラムプロトコル４１６から構成されるトランスポート層を含み、下位の四つの層４００−４０３については、従来技術のプロトコル層と同様である。プレゼンテーション層４０５およびセション層４０４に対応して、この発明のプロトコル階層は四つの信号授受方法、すなわちファイル転送プロトコル４１７、単純メール転送プロトコル４１８、TELNETプロトコル４１９および単純ネットワーク管理プロトコル４２０を提供する。アプリケーション層４０６には、ファイル転送４２３、電子メール４２４、ターミナルエミュレーション４２５およびネットワーク管理４２６を処理する対応の構成要素がある。この発明はゲートウェイノード３３についてアプリケーション層４０６とプレゼンテーション層４０５との間に追加の層を設けることによってウイルスを検出し、制御し除去する。より詳細に述べると、この発明の階層にしたがって、FTP代行サーバ層４２１とSMTP代行サーバ層４２２とを設ける。これらの層４２１、４２２は、ファイル転送層４２３およびファイル転送プロトコル４１７並びに電子メール層４２４およびSMTPプロトコル層４１８と協動して、ファイル転送およびメッセージをそれぞれ処理する。例えば、ファイル転送要求はすべてファイル転送４２３で発生し、FTP代行サーバ層４２１でまず処理され、次にファイル転送プロトコル４１７および下位の層４１５、４１３、４１１で処理されて伝送媒体４１０にデータ転送が実際になされる。同様に、メッセージ要求はすべてSMTP代行サーバ層４１８でまず処理され、次にSMTPプロトコル層ほかの層４１５、４１３、４１１で処理されて物理層に達する。この発明はウイルススクリーニングをアプリケーション層よりも下位層で行うのでとくに有利である。したがって、アプリケーションでは上記ウイルス検出およびウイルス除去が行われていることを認識せず、これら動作はアプリケーション層４０６レベルの動作には完全に透明になる。図４ではFTP代行サーバ層４２１およびSMTP代行サーバ層４２２を特有の層の形で示し、転送層４２３と転送プロトコル４１７の間および電子メール層４２４とSMTPプロトコル層４１８との間に結合効果をもたらす様子を表現してあるが、FTP代行サーバ層４２１およびSMTP代行サーバ層４２２はアプリケーション層４０６からは認識できず透明であるのでそれぞれファイル転送プロトコル層４１７およびSMTPプロトコル層４１８の一部ともみなせることは当業者には明らかであろう。
FTP代行サーバ６０の好適な動作方法および例をゲートウェイノード３３との関係およびそのノードの制御、すなわち他のネットワークへの接続用媒体としてのライン３４へのアクセスに対する制御に絞って説明する。この方法はゲートウェイノード３３にそれぞれ常駐するインターネットデーモン７０、FTP代行サーバ６０およびFTPデーモン７８の機能を図解した図５Ａおよび５Ｂを参照することによってもっともよく理解されよう。図５Ａおよび５Ｂにおいて共通の部分には共通の参照数字が用いてあり、両図の相違点はファイル転送の向きだけである（クライアントタスク７２からサーバタスク８２へ、またはサーバタスク８２からクライアントタスク７２へ）。明確にして理解を容易にするために図５Ａおよび５Ｂにはデータポートだけを示し、双方向ラインでコマンドまたは制御経路を示し、明示はないもののコマンドポートを含むものとして示してある。次に、クライアントタスク７２（要求側のマシン）とサーバタスク８２（供給側のマシン）との間のファイル転送についてFTP代行サーバ６０の動作を説明する。クライアントタスク７２（要求側マシン）は保護領域の内側にありサーバタスク８２（供給側のマシン）は保護領域の外側にあるものとしているが、以下に述べるこの発明はクライアントタスク７２（要求側マシン）が保護領域の外側にあってサーバタスク８２（供給側マシン）が保護領域の内側にあるときにもゲートウェイノード３３で使われる。
図６Ａ−６Ｃはネットワークの被制御領域から媒体３４経由でもう一つのネットワークへのファイル転送（例えば第２のネットワーク２４のノード３２から媒体３４経由で第３のネットワーク２６の第２のノード３２へのファイル転送）を行う好適な方法の流れ図である。この方法はクライアントノードがネットワーク経由でゲートウェイノード３３に接続要求を送るステップ６００から始まる。ステップ６０２ではゲートウェイノード３３が上述のとおりオペレーティングシステム６４を有し、そのオペレーティングシステム６４の部分が防火壁すなわちユーザ認証ルーチンなどのプログラムを含む。ゲートウェイノード３３はユーザの認証をまず試み、要求を一旦受けたのちその要求された接続を許すか否かを判断する。これはUNIXの一部として通常利用可能な方法で行う。インターネットデーモン７０はFTP代行サーバ６０段階を形成し、その接続をステップ６０２での動作用にFTP代行サーバ６０に送る。インターネットデーモン７０はオペレーティングシステム６０の一部を成すプログラムであって背後で実行する。実行中は、インターネットデーモン７０の機能の一つは多数の周知のサービス、例えばTELNET、ログイン、FTPなどのサービスのためにソケットポートを結合することである。接続要求が検出されると、この発明により形成されたインターネットデーモン７０はFTP代行サーバ６０、すなわちデータ転送を実際に処理するサーバを産み出す。次に、FTP代行サーバ６０はクライアントタスク７２とサーバタスク８２との間のネットワークトラフィックを制御する。次に、ステップ６０４において、クライアントノードがデータ転送ノードとファイル名とを送り、FTP代行サーバ６０とクライアントタスク７２との間のデータ転送を行う第一のデータポートをそれによって設定する。ステップ６０６においてデータ転送要求とファイル名とをFTP代行サーバ６０で受ける。ステップ６０８において、FTP代行サーバ６０はデータが外向きに転送されている（例えばファイルがクライアントタスク７２からサーバタスク８２に転送されている）かどうかを判定する。これはデータ転送要求の比較によってFTP代行サーバ６０に判定できる。例えば、データ転送要求がSTORコマンドである場合はデータ転送は外向きに進行中であり、データ転送要求がRETRコマンドである場合はデータ転送は外向きには進んでいない。
データが外向きに転送中であれば、この方法はステップ６０８からステップ６１０に遷移する。図５Ａと関連づけて図６Ｂを参照しこのネットワークの保護領域から外へのデータ転送のプロセスをより詳細に説明する。ステップ１０ではFTP代行サーバ６０が転送対象のファイルがウイルスを含み得る種類のものかどうかを判定する。このステップはファイル名の拡張をチェックすることによって行うのが好ましい。例えば、.txt、.bmd、.pcxおよび.gif拡張ファイルはこのファイルがウイルスを含む可能性がないことを示し、一方、.exe、.zipおよび.com拡張ファイルはウイルスを含むことの多い種類のものである。転送すべきファイルがウイルスを含み得る種類のものでなければ、この方法はステップ６１２に続く。ステップ６１２では第２のデータポート８０が形成され、データ転送要求およびファイルがFTP代行サーバ６０からFTPデーモン７８に送られてそのファイルをサーバタスク８２に送れるようにする。FTPデーモン７８は、転送コマンドをサーバタスク８２に伝達し、サーバタスク８２およびFTPデーモン７８を第３のポート８４に結合することを含むファイルを送る第３のポート８４を形成し、そのファイルをサーバタスク８２に送信するゲートウェイノード３３で実行するプログラムである。送信されるとその方法は完結し終了する。しかし、ステップ６１０で転送対象のファイルがウイルスを含み得る種類のものであればこの方法はステップ６１４に進む。ステップ６１４でFTP代行サーバ６０がファイルをクライアントから第１のポート７６経由でFTP代行サーバ６０に転送し、ステップ６１６でファイルをゲートウェイノード３３に一時蓄積する。次に、ステップ６１８でその一時蓄積したファイルを解析し、ウイルスが含まれているか否かを判定する。この動作は上記の一時蓄積したファイルにウイルスチェックプログラムをかけて行うのが好ましい。例えば、カリフォルニア州クペルティーノのトレンド マイクロ デバイシズ インコーポレーテッドから市販されているPC-シリンなどの一つのバージョンのシグネチャ走査ウイルス検出を行うプログラムを使用できる。しかし、それ以外の多様なウイルス検出方法をステップ６１８に使えることは当業者には明らかであろう。ステップ６２０においてウイルスチェックプログラムを回答メッセージの一部としてFTP代行サーバ６０でユーザ／クライアントタスク７２に返送するのが望ましい。次にステップ６２２においてこの方法は何らかのウイルスが検出されたか否かを判定する。ウイルスが検出されなかった場合は、この方法はステップ６１２に続き、上述のとおりファイルを送信する。しかし、ウイルスが検出された場合は、FTP代行サーバ６０が多様な方法のうちのいくつかの方法で応答できるようにする。FTP代行サーバ６０の応答はコンフィギュレーションファイルの特定するユーザの必要および要求によって定まる。このコンフィギュレーションファイルはユーザからの入力およびメモリ４４に蓄積された入力にしたがって十分に改変可能にするのが好ましい。例えば、ユーザの特定するオプションには：(1)何もしないでファイルを転送する、(2)一時ファイルを消去してファイルを転送しない、(3)ファイルを名称変更してそれをゲートウェイノード３３に特定のディレ��トリで蓄積しユーザにその新しいファイル名とディレクトリパスを知らせてシステムアドミニストレータからそのファイルを手動で要求するのに使えるようにする。ユーザの特定できる上記以外の多様な代替策があり、ステップ６２４、６２６および６２８が単なる例示であることは当業者には明らかであろう。次に、ステップ６２４においてコンフィギュレーションファイルを検索して一時ファイルの取扱いを決める。ステップ６２６においてFTP代行サーバ６０がウイルスの存在を無視して転送を続けるべきかどうかを決める。無視する場合、この方法はステップ６１２に続き、ファイルをFTPデーモン７８に送り一時ファイルを消去する。無視しない場合、この方法はステップ６２８に続き、両ファイルを消去してサーバタスク８２に送らないこととし一時記憶をゲートウェイノード３３から消去するか、そのファイルを名称変更してゲートウェイノード３３に特定のディレクトリで蓄積しシステムアドミニストレータからファイルを手動で要求するのに使える新しいファイル名およびディレクトリパスをユーザに知らせてゲートウェイノード３３の一時ファイルを消去する。ステップ６２８における動作はステップ６２４で決められたコンフィギュレーション設定によって決まる。ステップ６２８のあとこの方法は終了する。図５Ａから理解されるとおり、ファイルへのパスはクライアントタスク７２から第１のデータポート７６経由でFTP代行サーバ６０に至り、次に第２のデータポート経由でFTPデーモン７８に至り、さらに第３のデータポート８４経由でサーバタスク８２に達する。
図６Ａのステップ６０８に戻って、外向きにデータ転送が行われていない場合は、この方法はステップ６０８からステップ６４０に遷移する。図５Ｂと関連させて図Ｃを参照し、ネットワークの保護領域にデータを転送するプロセスをより詳細に説明する。次に、ステップ６４０でFTP代行サーバ６０はデータ転送要求およびファイル名をまずFTPデーモン７８に送り、次にサーバタスク８２に送る。ステップ６４２で第２のポート８０がFTP代行サーバ６０とFTPデーモン７８との間に形成される。次に、第３のデータポート８４がFTPデーモン７８とサーバタスク８２との間に形成される。これらポート８０、８４の形成は第１のポート７６の形成と同様に行われる。FTPデーモン７８はインターネット７０から第３のポート８４を要求して受け、第３のポート８４のアドレスを含むポートコマンドをサーバタスク８２に送る。サーバタスク８２は次に第３のポート８４に接続され、ステップ６４４でデータ転送を開始する。FTPデーモン７８はファイルをFTP代行サーバ６０に送る。次にステップ６４６でFTP代行サーバ６０は、転送すべきファイルがウイルスを含み得る種類のものかどうかを判定する。この動作はステップ６１０について上に述べたのと同じ方法で行われる。転送すべきファイルがウイルスを含み得ない種類のものであれば、この方法はステップ６４８に進み、そのステップでファイルはFTP代行サーバ６０から第１のポート７６経由でクライアントタスク７２に転送され、そこでこの方法は完結し終了する。一方、転送すべきファイルがウイルスを含み得る種類のものである場合は、この方法はステップ６５０でゲートウェイノードにファイルを一時蓄積する。次に、ステップ６５２でその一時蓄積したファイルを分析してウイルスの有無を判定する。この分析はステップ６１８における分析と同じである。ステップ６５２ではウイルスチェックプログラムの出力を回答メッセージの一部としてFTP代行サーバ６０でクライアントタスク７２に返送する。次に、ステップ６５６でウイルス検出の有無を判定する。ウイルスの検出がなかった場合は、この方法は上述のとおりステップ６４８へ続く。しかし、ウイルスが検出された場合はコンフィギュレーションファイルを取り出して一時ファイルの取扱いを決める。ステップ６６０で、FTP代行サーバ６０がウイルスの存在を無視してファイル転送を続けるべきかどうかを決める。続けるべきであると決めた場合は、この方法はステップ６４８に進み、このステップでファイルをクライアントタスク７２に転送して一時ファイルを消去する。続けるべきでないと決めた場合は、この方法はステップ６６２に進み、このステップで一時ファイルを消去し、上記ファイルを消去してクライアントタスク７２への送りを中止するか、ファイルを名称変更しゲートウェイノード３３に蓄積して、クライアントタスク７２に変更後のファイル名およびパスを知らせ、システムアドミニストレータがそのファイルを手動で検索できるようにする。この方法はそこで終了する。図５Ｂから理解されるとおり、データ転送要求はクライアントタスク７２からFTP代行サーバ６０へ、次にFTPデーモン７８へ、さらにサーバタスク８２へ伝達され、このFTPデーモン８２はそれに応答してそのファイルを第３のポート経由でFTP代行サーバ６０へ、最後の第１のポート７６経由でクライアントタスク７２に送る。
図７、８Ａおよび８Ｂを参照して、SMTP代行サーバ６２の動作を次に説明する。SMTP代行サーバ６２はあるネットワークの保護領域へのデータおよびウイルスの入口となり得る他の入力チャンネルのみを制御する。SMTP代行サーバ６２は、通信ユニット５４および媒体３４経由でネットワークに出入りする電子メッセージまたはメールの転送すべきを制御し処理するゲートウェイノード３３常駐プログラムで構成するのが好ましい。ネットワークの保護領域内のクライアントタスク９２からその保護領域外の異なるネットワークのノードのサーバタスク１０２へのメールメッセージの転送についてSMTP代行サーバ６２を次に述べるが、当業者にはSMTP代行サーバ６２が入来メールメッセージをいかにして同様に処理するかは理解されよう。メールメッセージはSMTP代行サーバ６２により同様に処理され、どのノード３２がサーバで、ゲートウェイノード３３の側面からのメッセージ伝達の向きによるクライアント変更がどれであるかの指定だけが送られる。ノード間のコマンドパスウェイを用いてメールメッセージは伝達されるので、それらパスウェイだけを図７に示してある。理解を容易にするために図７にはコマンドポートは示してないが、好適な方法の関連のステップにおいて後述する。
図８Ａを参照すると、この発明の好適な電子メール送信方法はステップ８０２でSMTP代行サーバ６２を動作させることで始まる。次に、ステップ８０４においてクライアントタスク９２とSMTP代行サーバ６２との間の信号授受のための第１のコマンドポート９１を生成する。ポートコマンドに伴う第１のポート９６のアドレスをSMTP代行サーバ６２に供給する。次に、ステップ８０６において、SMTP代行サーバ６２を第１のポート９６に結合し、クライアントタスクとSMTP代行サーバ６２との間でメールを送るチャンネルを形成する。次にステップ８０８でSMTP代行サーバ６２がSMTPデーモン９８またはSMTPサーバを生成する。SMTPデーモン９８はBSD UNIXオペレーティングシステムの一部である既存のプログラム”sendmail”で構成するのが好ましい。このプログラムは書くべきコードの量を減らし、OSI参照モデルの低位層との互換性を確保するのでとくに有利である。次にステップ８１０で第２のコマンドポートをSMTP代行サーバ６２とSMTPデーモン９８との間の信号授受のために生成する。ステップ８１２において、SMTPデーモン９８はSMTP代行サーバ６２との信号授受のための第２のコマンドポートに結合される。実際には、この発明はSMTPデーモン９８を適切なポート、すなわちオペレーティングシステム６４の一部である共通ライブラリー内の結合機能の再定義による第２のポートに結合する。この発明は、SMTPデーモン９８（大部分のUNIXシステムでは”sendmail”プログラム）が動的にリンクされている事実を利用する。この発明は、システム呼出しバインド（）を再定義し”sendmail”を実行時にバインド（）呼の再定義版と強制的にリンクさせる共通ライブラリーを利用している。上記バインド（）呼の再定義版がSMTPデーモン９８（”sendmail”プログラム）が第１のコマンドポート（SMTPポート）へのバインドを試みていると判定する場合は、他端がSMTP代行サーバ６２であるソケット（第２のコマンドポートへのソケット）をそこに戻す。次にステップ８００でクライアントタスク９２がSMTP代行サーバからの接続を要求し、第１のコマンドポートを通信に用いる。次にステップ８１８でメッセージはクライアントタスク９２から第１のコマンドポート経由でSMTP代行サーバ６２に送信される。
次に図８Ｂを参照すると、この発明の方法はステップ８２０へ続き、SMTP代行サーバ６２でメッセージ本体を走査し符号化ずみの任意の部分をチェックする。この発明はメッセージを走査して、２進データをASCIIデータに符号化する「非符号化」符号化スキームで符号化した部分をチェックする。メッセージの「非符号化」部分は通常は”begin 644 filename”などのラインで始まり、”end”などのラインで終了する。それら符号化部分の存在がファイルのウイルス含有の可能性を示唆する。「非符号化」部分チェックのための上記走査は使用可能な多数の走査手法の一つにすぎず、この発明をマイムなど上記以外のスキームにしたがって符号化した部分など上記以外の符号化部分を走査するように変形できることは当業者には明らかであろう。次に、ステップ８２２において、SMTP代行サーバ６２がメッセージに何らかの符号化部分が含まれているか否かを判定する。メッセージが符号化部分を何ら含んでいない場合は、SMTP代行サーバ６２はステップ８２４においてメッセージを第２コマンドポート経由でSMTPデーモン９８に送信する。次にステップ８１４において、SMTPデーモン９８はSMTPデーモン９８とサーバタスク１０２との間の信号授受のための第３のコマンドポートを生成する。次に、ステップ８１６においてサーバタスク１０２は第３のコマンドポートに結合され、サーバタスク１０２とSMTPデーモン９８との間の信号授受を形成する。サーバタスク１０２がゲートウェーノード３３に常駐している場合は、ネットワークを横切るデータ転送は不要となるので、ステップ８１４および８１６は不要であって省略できる。ステップ８２６でSMTPデーモン９８は第３のコマンドポート経由でメッセージをサーバタスク１０２に送信し、この方法を完結させる。
一方、メッセージが符号化部分を含むことがステップ８２２で判定された場合は、SMTP代行サーバ６２はメッセージの符号化部分の各々をゲートウェイノード３３の一時ファイルにステップ８２８で蓄積する。例えば、メッセージが三つの符号化部分を含む場合は、各符号化部分が別々のファイルに蓄積される。ステップ８３０において、自身のファイルに蓄積された各符号化部分は当業者に理解されるとおり”undecode”プログラムにより個々にデコードされる。次に、ステップ８３２において、SMTP代行サーバ６２は一時ファイルに蓄積ずみの各メッセージ部分について”virus-checking”プログラムを呼び出して実行する。次に、ステップ８３４においてSMTP代行サーバ６２がウイルス検出の有無を判定する。ウイルス検出がなかった場合は、この方法は上述のとおりステップ８２４、８１４、８１６および８２６に続く。しかし、ウイルスが検出された場合は、この発明がFTP代行サーバ６０の場合と同様に多様な方法のうちの任意の数の方法でSMTP代行サーバ６２が応答できるようにする。SMTP代行サーバ６２の応答はコンフィギュレーションファイルの特定するユーザの必要性によっても決まる。このコンフィギュレーションファイルはユーザからの入力に従って全面的に改変可能である。ウイルス処理のためのコンフィギュレーションはステップ８３６で決まる。この動作はコンフィギュレーションファイルを検索して読み出すか、メモリ４４に蓄積ずみのコンフィギュレーションデータの検索のみを行うことによって行うことができる。次にステップ８３８において、行うべきアクションをコンフィギュレーション設定から決める。例えば、ユーザの特定できるオプションには、(1)何も加工することなくメールメッセージをそのまま転送する、(2)メールメッセージからのウイルス除去を決められた符号化部分とともにメールメッセージを転送する、(3)ウイルス含有メッセージの符号化部分を名称変更し名称変更後の部分をSMTP代行サーバ６２の特定ディレクトリにファイルとして蓄積しシステムアドミニストレータから手動でファイル要求するのに使える名称変更後のファイルおよびディレクトリーパスをユーザに通知する、または(4)それぞれの符号化部分の代わりにステップ８３２の出力をメールメッセージに書きそのメールメッセージをステップ８２４および８２６で送る、などがある。採るべきアクションがコンフィギュレーションファイルのチェックから決まると、その特定されたアクションがステップ８４０で採られ、改変後のメッセージが送信され、一時ファイルが消去され、この方法が終了する。例えば、メッセージが三つの符号化部分を有し、それらのうち二つがウイルスを含み、ウイルス含有部分を消去するようコンフィギュレーションファイルが指示する場合は、この発明の方法はもとのメッセージと同じであって変換ずみメッセージを、除去されたウイルスを含む二つの符号化部分とともにサーバタスク１０２に送る。
この発明は図９に示すような慣用の電子メールシステム２００におけるウイルス検出装置および検出方法をも含む。ネットワークゲートウェイノード３３経由のデータ伝達におけるウイルス検出と対照的に、この装置および方法は、概括的には、ポスタルノード２３２経由の電子メールでクライアントノード２３０に送信されてきたデータについてのウイルス検出を行い、したがってゲートウェイノード３３経由で非排他的に導入されたウイルスの拡散を防止できる。例えば、ウイルスはクライアントノード２３０でフロッピーディスクまたはインターネットへのモデムアクセスによりネットワークに導入され得るのであり、それらウイルスは特定のクライアントノード２３０からポスタルノード２３２通過電子メールでネットワーク２００全体にわたり拡散し得る。
電子メールシステムは一般に蓄積および回送／検索モデル利用加入者相互間に非同期メッセージアクセスを実動化している。例えば、ポスタルノード２３２は最終的にクライアントノード２３０への回送または同ノードによる検索に備えてメッセージを蓄積する。各メッセージはそのメッセージがクライアントに読み出されたか否かについての関連ステータス（読出しずみ、未読出し）を備える。それらメッセージは上述のとおりウイルスを含み得る単純なテキスト、図形ファイル、複雑な実行可能ファイルを含む
図１０ａを参照すると、ポスタルノード２３２のブロック図が示してある。ゲートウェイノード３３と同じように、ポスタルノード２３２は表示装置２５８、CPU２６０、メモリ２６２、データ蓄積装置２６４、ネットワークリンク２６８、および通信ユニット２６９を含む。CPU２６０は、バス２７０によって、表示装置２５８、メモリ２６２、データ蓄積装置２６４、入力装置２６６、ネットワークリンク２６８および通信ユニット２６９とフォン・ノイマンアーキテクチャで結合してある。CPU２６０、表示装置２５８、入力装置２６６およびメモリ２６２はパーソナルコンピュータにみられる慣用の方法で結合できる。ポスタルノード２３２、CPU２６０、表示装置２５８、入力装置およびデータ蓄積装置２６４の配置に関する好適性および代替構成はゲートウェイノード３３に関連して上に述べたものと同様である。
バス２７０はケーブルまたはライン２３６経由のポスタルノード２３２とクライアントノードなどそれ以外のノードとの間の信号授受を容易にするためにネットワークリンク２６８に接続してある。また、バス２７０はポスタルノード２３２とそれ以外のネットワーク（図示してない）との間のデータおよびメッセージの授受のために通信ユニット２６９に接続してある。ネットワークリンク２６８および通信ユニット２６９の好適構成と代替構成はゲートウェイノード３３の説明で述べたものと同様である。ネットワークコンフィギュレーションおよびオペレーティングシステムが多様でありそれらの使用からこの実施例が独立していることは当業者には理解されよう。
一般に、ポスタルノード２３２のCPU２６０は、メモリ２６２および入力デバイス２６６経由の入力からの命令の制御によって、クライアントノード２３０の入来または送出電子メールの形でデータアクセスを提供し、あるシステムではローカルネットワーク（図示してない）の外部の他のノードへのデータアクセスを提供する。
図１０ｂを参照すると、ポスタルノード２３２のメモリ２６２が示してある。メモリ２６２はバス２７０との間で信号授受を行い、カーネル２９１、メール管理プログラムおよび所要の任意のアプリケーションプログラム２９６を含むオペレーティングシステム２９６を備える。メモリ２６２はRAMで構成するのが好ましいがROMを備えることもできる。
図１０ｃではポスタルノード２３２のデータ蓄積装置２６４の詳細であって、ディレクトリ記憶領域２９７、ヘッダ記憶領域２９８、付加記憶領域３００および改悪ファイル記憶領域３０２を含む構成を示す。データ蓄積デバイス２６４はハードディスクを含むのが好ましいがデータ蓄積装置２６４には種々の代替手段があることは当業者には明らかであろう。
好適な実施例ではメール管理プログラム２９２はロータス ディベロップメント コーポレーションから市販されているLotus cc:Mailで構成する。このプログラム２９２は代替的にはノベル社製のGroupWise、バンヤンシステムズ社製のBeyondMail、マイクロソフト社製のMS-Mail、その他従来型の電子メールプログラムで構成できる。プログラム２９２は概括的にはポスタルノード２３２におけるメッセージのアクセス、蓄積および転送を管理し、ヘルプファイルおよび辞書ファイルを伴うユーザ援助ルーチンを備えることもできる。ディレクトリ蓄積領域２９７、ヘッダ蓄積領域２９８およびアタッチメント蓄積領域３００はメール管理プログラムとの協動の必要性に従って、またネットワークインストーラまたはアドミニストレータによるセットアップに従って配置してある。ディレクトリ２９７はメッセージの送受信を行うネットワークユーザのリストを含む。通常はディレクトリ２９７はリストされた各ユーザについて別々のメールボックスファイルも併せ備える。メールボックスファイルはユーザに関する情報、通常はその情報へのポインタおよびユーザのメッセージを含む。
メッセージは電子メールシステムにおける通信の基本単位である。メッセージは、(1)ユニークメッセージ識別子、(2)送信者、受信者、ログおよび受信関係情報、メッセージの日時、そのデータの主題ほかその種のデータ、および(3)アタッチメントを含む。メッセージには、電子メールプログラム２９２のテキストエディタの生成したファイルと文書作成またはスプレッドシートファイルなどネットワークアプリケーションプログラム２９６の生成するファイル、実行可能なファイル、電子メールメッセージに慣用的に付加してあるか電子メールシステム２００のクライアントノード２３０に転送されたファイルなど多様なファイルで構成され得る。通常のメッセージは電子メールプログラムのテキストエディタの発生するメッセージ本体の形の少なくとも一つのアタッチメントを含む。ヘッダの中の情報はヘッダ記憶領域２９８に蓄積でき、その情報にメッセージアタッチメントの位置への一つ以上のポインタを含めることができる。アタッチメントファイルはアタッチメント蓄積領域３００に蓄積できる。
アタッチメントを伴うメッセージを含めて、メッセージは多数の受信者に送られ得る。その場合、電子メールプログラム２９２は各受信者向けのメッセージヘッダに単一のアタッチメントファイルへのポインタを加える。この構成によって、メッセージアタッチメントは多数の受信者について単一の蓄積位置に蓄積できるので、ポスタルノード２３２におけるデータ蓄積領域を節約する。
上述のメッセージアタッチメントは電子メールシステム２００の動作を通じたウイルス拡散の主な媒体である。この発明の装置と方法はクライアントノード２３０へのウイルスの転送を防止し、メッセージアタッチメントとくに多数加入者あてのメッセージアタッチメントに含まれるウイルスの処理によってネットワーク２００経由のウイルス拡散を防止し得る。
電子メールシステム用のポスタルノード２３２の構成、とくにデータ蓄積デバイス２６４の構成を上に述べてきたが、データ蓄積装置２６４は電子メールシステム２００およびそのシステムに用いる同プログラム２９２の要求に従って任意の慣用の形式で構成できることは理解されよう。また、クライアントノード２３０は二人以上の電子メールユーザにサービスを提供でき、この発明の単一のメール走査モジュール２７６はそれらユーザ全部についてメッセージを走査するように配置することもでき、また各ユーザについて別々に走査を行うように配置することもできることは理解されよう。
この実施例ではウイルス被害ファイルの蓄積領域３０２はポスタルノード２３２のデータ蓄積装置２６４に示してあるが、ウイルス被害の判明したファイルを所望の位置に蓄積できることは理解されよう。
図１１ａを参照すると、この発明によるクライアントノード２３０のブロック図が示してある。クライアントノード２３０は表示装置２４４、CPU２４６、メモリ２４８、データ蓄積装置２５０、入力装置２５２およびネットワークリンク２５４を含む。CPU２４６はこれら構成要素２４４、２４８、２５０、２５２および２４８にバス２５６でフォンノイマンアーキテクチャで接続してある。CPU２４６、表示装置２４４、入力装置２５２およびメモリ２４８はパーソナルコンピュータの場合と同様に慣用の方法で相互に接続する。クライアントノード２３３、CPU２４６、表示装置２４４、入力装置２５２およびデータ蓄積装置２５０の配置に関する好適性および代替案はゲートウェイノード３３およびポスタルノード２３２に関連して上述したものと同様である。
バス２５６はクライアントノード２３０とそれ以外のポスタルノード２３２などのネットワークとの間のケーブルまたはライン２３６経由の通信を容易にするようにネットワークリンク２５４に接続する。ネットワークリンク２５４の好適な形態と代替形態はゲートウェイノード３３およびポスタルノード２３２の説明で述べたものと同様である。多様なネットワーク構成およびオペレーティングシステムが代替的に利用可能であり、この実施例がそれら代替手段の利用に影響されないことは当業者には明らかであろう。
一般に、クライアントノード２３０のCPU２４６は、メモリ２６２からおよび入力装置２６６経由で入力から受けた命令による制御で、ポスタルノード２３２と協動してクライアントノード２３０に対する電子メールの送受転送を容易にする。この発明の装置および方法は、メール伝送システムの通常の動作の外で通常は動作してクライアントノード２３０によるポスタルノード２３２所在のメッセージへのアクセスを可能にするメッセージの適用可能なウイルス検出構成を用いる。
図１１ｂを参照すると、この発明によるクライアントノード２３０のメモリ２４８の好適な実施例をより詳細に示してある。メモリ２４８はバス２５６との間で信号授受し、カーネル２７３、ローカル電子メールプログラム２７４、メール走査モジュール２７６および所望の任意のアプリケーションプログラム２７８を含むオペレーティングシステム２７２を備えるのが好ましい。メモリ２４８はRAMで構成するのが好ましいがRAMを含むこともできる。
オペレーティングシステム２７２に好適な構成および代替的構成はゲートウェイノードのオペレーティングシステム６４について上述したものと同様である。ローカル電子メールプログラム２７４はポスタルノード２３２の電子メールプログラム２９２と信号授受するように通常配置され、初期化ファイルおよびコンフィギュレーションファイル、すなわちクライアントノード２３０が設定に応じてポスタルノード２３２に対してメッセージ送受を行えるようにするファイルを含む。アプリケーションプログラム２７８はスプレッドシート、文書作成その他の種類のプログラムであり、ネットワークアプリケーションプログラム２９６と協動して動作してもよく、完全にローカルに動作してもよい。
この発明によると、メール走査モジュール２７６はウイルス検出のためのメッセージチェックルーチンを含む。メール走査モジュール２７６は、ポスタルノード２３２をポーリングして、クライアント２３０向けのメッセージがポスタルノード２３２にあるか否か、そのメッセージが未走査状態かどうかを判定し、クライアントノード２３０のメモリ２４８に未走査のメッセージをそれらメッセージ「未読出」状態に影響を及ぼすことなくダウンロードし、それらメッセージを分析してウイルスの有無を判定し、補正動作を行うルーチンを提供する。
図１１ｃを参照すると、クライアントノード２３０のメール走査モジュール２７６の好適な実施例を、メール走査マネジャー２８０、メール送信モジュール２８１、ポーリングモジュール２８２、検索モジュール２８３、データバッファ２８４、被走査メッセージFIFOバッファ２８５、ウイルス分析処理モジュール２８６およびデコーダ２８８を含めてより詳細に示してある。上述のとおり、メール走査モジュール２７６に含まれるモジュールは電子メールプログラム２９２およびポスタルノード２３２のそれ以外の部分と信号授受するように配置してある。例えば、クライアントノード２３０のデータバス２５６に接続したモジュールは、ネットワークリンク２５４、ライン２３６、ネットワークリンク２６８およびバス２７９経由でポスタルノードメモリ２６２またはデータ蓄積装置２６４と信号授受できる。ネットワークチャンネル経由の情報転送の慣用の手法を実動化できる。ポスタルノード２３２とメール走査モジュール２７６との間のネットワークリンク２５４は、次に述べる独立の機能と協動して、クライアントノード２３０にローカルな電子メールプログラム２７４の動作を要することなく動作可能である。このように、ウイルス分析処理は目立たない形でユーザトリガによることなく行われる。
メール走査マネジャー２８０はメール発信モジュール２８１、ポーリングモジュール２８２、検索モジュール２８３、データバッファ２８４、被走査メッセージFIFOバッファ２８５、ウイルス分析処理モジュール２８６、デコーダ２８８およびポスタルノード２３２の動作を調整し一体化するルーチンを含む。メール走査マネジャー２８０はメール走査モジュール２７６の動作設定を選択するコンフィギュレーションルーチンを含む。
メールポーリングモジュール２８２はクライアント宛の新たなメッセージの着信の有無とそのメッセージが未走査のままか否かとの判定を行う。それらルーチンはポスタルノード２３２のメール管理領域２９２および蓄積領域２６４と信号授受し、ネットワーク２００の用いる電子メールプログラム２７４、２９２のポーリングルーチンをエミュレートするのが好ましい。このポーリングルーチンは慣用のものから成り、例えば、電子メールシステムのVendor Independent Messaging(VIM)インタフェースかDynamic Data Exchange(DDE)インタフェースかを実動化する。ポーリングルーチンは電子メールプログラム２７４、２９２の用いるルーチンを文字どおりエミュレートし、メール走査マネジャー２８０のコンフィギュレーション設定に従って設定できる。ポーリングルーチンは、例えば３０秒ごとなど一定時間間隔で実行してポスタルノード２３２をポーリングし、クライアントノード２３０への未走査メッセージの受信の有無を判定するのが好ましい。ポーリングモジュール２８２は被走査メッセージFIFOバッファ２８５の日付を用いその日付を維持する。被走査メッセージFIFOバッファ２８５はクライアントノード宛で未読出既走査の郵便局所在メッセージを列挙したテーブルである。図１１ｄに示したとおり、既走査メッセージFIFOバッファ２８５は、各々がメッセージ識別番号、ヘッダ情報および１つ以上の状態ビットを有する複数の記憶データを収容するように大きさの限定されたメモリ２４８の一部で構成するのが好ましい。バッファ２８５は、被走査メッセージに関する情報で満杯になると古い記憶内容が次の入力のために消去される点で環状バッファまたはFIFOバッファである。未走査メッセージのためのポーリング処理は慣用のルーチンを用いてポスタルノード２３２にクライアントノード２３０への未読出メッセージがあるかどうかを判定するように行う。その未読出メッセージがある場合は、ユニーク識別番号（必要であればそれ以外のヘッダ情報も）をポーリングで検索し、その識別番号を既走査メッセージFIFOバッファ２８５に蓄積したユニーク識別番号と比較する。未読出メッセージのユニーク識別番号がバッファ２８５にある場合はメッセージはデータバッファにダウンロードされず、ポーリングはポスタルノードでの次の未読出メッセージヘと続く。しかし、その未読出メッセージのユニーク識別番号がバッファ２８５にない場合は、ユニーク識別番号は検索モジュール２８３に伝達され、メッセージとその内容とがデータバッファ２８４にダウンロードされるようにする。
検索モジュール２８３はポーリングモジュール２８２により未走査が見出されているメッセージからのデータを捕捉するルーチンを含むのが好ましい。未走査メッセージが見出された場合は、検索モジュール２８３でポスタルノード２８２からのメッセージをクライアントノード２３０のメモリ２４８のデータバッファ２８４部分にダウンロードするのが望ましい。図示のとおり、各メッセージはID番号で一元的に識別され、付加ファイルに向かうヘッダを含み、その情報で検索モジュール２８３がクライアントノードのデータバッファ２８４にアタッチメントファイルをダウンロードできるようにする。検索モジュール２８３がデータバッファ２８４中にアタッチメントファイル含有のメッセージを蓄積すると、検索モジュール２８３はウイルス分析処理モジュール２８６にデータバッファ中の情報がウイルス検出のために分析できる旨を知らせる。
ウイルス分析処理モジュール２８６はファイルがウイルスを含むか否かの判定および感染ファイル、物体またはデータの清浄化を行うルートを含む。メール走査マネジャー２８０は、ウイルス分析処理モジュール２８６に対して、検索モジュール２８３がメモリ２５６にダウンロードしてデータバッファ２８４に蓄積したファイル、すなわちシグネチャ走査、チェックサム、ゲートウェイノード３３に関連して上述したウイルスの検出および処理のためのエミュレーションまたは任意の手法で操作し処理しファイルに作用するよう指示する。データバッファ２８４は走査前の情報保持専用のメモリ２４８内の一時蓄積位置である。このデータバッファは一時蓄積で分割されているので、潜在的にウイルスに侵されているデータはウイルスチェックのための走査が終わるまでデータ蓄積装置２５０にコピーされない。ウイルス分析処理モジュール２８６は一体化して示してあるが、各機能ごとに別々のモジュールを用意しても差し支えないことは理解されよう。
デコーダ２８８は復号化、圧縮解除またはそれ以外の走査用のメッセージ処理のルーチンを含むのが望ましい。例えば、電子メール管理プログラム２７４、２９２の用いる慣用の秘匿化および圧縮アルゴリズムを実動化できる。クライアントノード２３０にデコーダ２８８を含めてあるので、クライアントノード２３０の用いる復号化アルゴリズムのいずれにもアクセス可能になる。デコーダ２８８はメール走査マネジャー２８０の指示によりウイルス分析処理モジュール２８６と協動し、符号化ずみファイルのウイルス検出を可能にする。
メール送出モジュール２８１がネットワーク電子メールシステムを用いてメッセージを送出するように設けてあり、このモジュールにはメールイネーブルプログラムアプリケーションに用いる慣用のルーチンを含める。メール走査マネジャー２８０のコンフィギュレーション設定によって、メール送出モジュール２８１は処理ずみメッセージまたはネットワークアドミニストレータの送り側および受け側などの加入者にメッセージまたはアタッチメントファイルを送るのに用いることができる。
図１１ｄを参照すると、被走査メッセージFIFOバッファ２８５の好適な例が示してある。このFIFOバッファ２８５は関連の状態フラッグ３１２付きのメッセージ識別子フィールド３１０を含み、識別ずみメッセージがメール走査モジュール２７６によるウイルス有無のチェックを受けたかどうかを示す。メッセージ識別フィールド３１０はポスタルノード２３２からコピーした情報、したがってメール走査マネジャー２８０が余分なメッセージのダウンローディングおよび分析を防止できるようにする情報から成る各未走査情報を一義的に識別するデータを含む。メッセージ識別フィールド３１０はメッセージに組織化のためにポスタルノード２３２の用いるメッセージ識別データと同じ識別データを用いるのが好ましい。各メッセージに伴う状態フラグ３１２はメール走査マネジャー２８０が未読出メッセージの余分な処理を防止できるようにする。もう一つの実施例では、メール走査マネジャー２８０がメールプログラムの活性化および使用によりユーザ読取メッセージを識別し、メモリ節約やユーザ検索ずみのメッセージの走査の防止のために、メッセージのFIFOバッファ２８５からの読出後に除去する。もう一つに実施例では、被走査メッセージFIFOバッファ２８５を、所望量のメッセージを保持しユーザによる読出ずみのメッセージのデータバッファからの識別および除去を不要にするためにメッセージデータが流れるように、所望量のメッセージを保持する大きさとする。
次に図１２を参照すると、電子メール走査装置の好適な動作方法１２００を示す。ポスタルノード２３２を、ステップ１２０５において所定受信人宛の未走査メッセージ有無を判定するように電子メールシステムのポーリングルーチンをエミュレートすることによってポーリングする。所定受信人宛の未走査メッセージがポスタルノード２３２で検出されると、メール走査装置がアタッチメントファイルを含むメッセージをステップ１２１０で所定受信人割当てのクライアントノード２３０のメモリ２４８にダウンロードする。好適な方法はステップ１２２０でメッセージまたはアタッチメントファイルがウイルスを含むか否かを判定するようにメモリ２４６内の蓄積メッセージおよびアタッチメントファイルをステップ１２１５で走査する。次にステップ１２２０でウイルスを含むか否かを判定する。メッセージがウイルスを含んでいることが見出されると、メール走査装置がステップ１２２５で感染メッセージについての補正動作、すなわちウイルス除去、メッセージの一部としての警告の送出、メッセージの消去、システムアドミニストレータへのメッセージの送出などを行う。ポーリングルーチンはステップ１２０５でユーザ入力なしまたはクライアントノード２３０におけるローカル電子メールプログラム２７４の活性化なしにステップ１２０５で動作して目立たない背後での動作を可能にする。
図１３を参照すると、背後における電子メッセージ走査の好適な方法をより詳細に示す。この方法は、クライアントノード３２０が未読出メッセージチェックのためにポスタルノード２３２をポーリングするステップ１３０２で開始される。ステップ１３０５でポスタルノード２３２を慣用の電子メールシステムの命令をエミュレートするルーチンを実行することによって未読出メッセージについてポーリングする。次に、ステップ１３０４でこの方法はクライアントノード宛のメッセージの有無を判定する。そのメッセージがなければ、この方法はステップ１３１４でステップ１３０２に戻る前に所定量の遅延を与えてポスタルノード２３２を再びポーリングする。しかし、ポスタルノード２３２のクライアントノード２３２宛の未読出メッセージがある場合は、この方法はステップ１３０６に進み、ポスタルノード２３２がアクセスを受け、メッセージ識別番号およびメッセージヘッダがポスタルノードから検索される。次に、ステップ１３０８において、クライアントノード２３０、より詳しくはポーリングモジュール２８２がメッセージの走査がなされたか否かを判定する。この動作は検索されたメッセージ識別番号およびそれら識別番号へのヘッダと走査ずみメッセージバッファ２８５に蓄積されたヘッダとの比較によって行う。一致が見出されると、メッセージは走査されたことになる。ステップ１３１０において、この方法はメッセージの走査が行われたかどうかを試験する。メッセージ走査が完了していると、この方法はステップ１３１２に進み、未読出メッセージの有無を判定する。未読出メッセージがそれ以上なければ、この方法はステップ１３１４に進み、次にポーリングに戻る。しかし、未読出メッセージがさらにあれば、この方法はステップ１３０６、１３０８、１３１０で次のメッセージの処理を続ける。
メッセージが未走査のものと判れば、この方法はステップ１３１０からステップ１３１４に移る。ステップ１３１４ではこの方法は未走査メッセージがアタッチメントを含むか否かを判定する。そのメッセージがアタッチメントを含んでいなければ、メッセージ識別番号とヘッダが被走査メッセージFIFOバッファ２８５に蓄積され、そのメッセージにチェックずみのフラグを付ける。ステップ２８５のあと、この方法はステップ１３０２に戻り、クライアントノード２３０宛の新たな入来メッセージのためのポーリングを行う。しかし、メッセージがアタッチメントを含む場合は、この方法はそれらメッセージに関する必要な情報をメッセージヘッダおよびアタッチメント全部とともにメモリ２４８、詳しくはデータバッファ２８４にダウンロードする。次にステップ１４００においてデータバッファ２８４の中のデータを分析し、または図１４を参照して後述するアタッチメント走査プロトコルにかける。データバッファ２８４の分析後、この方法はウイルスが検出されたか否かを試験する。ウイルスが検出されていなければ、この方法は上述のとおりステップ１３２０に進む。一方、ウイルスが検出されていれば、図１５を参照して後述するとおりステップ１５００を処理し、ユーザの予め設定した好適性にしたがって補正動作を行う。
次に図１４を参照すると、アタッチメント走査の好適な方法１４００が示してある。データバッファ２８４における次のアタッチメントがステップ１４０５でアクセスされ、そのアタッチメントがウイルスを含み得る種類のものかどうかをステップ１４１０で判定する。このスクリーニングステップはメール走査モジュール２７６のコンフィギュレーション設定で制御でき、それらスクリーニングに関する選別順位および代替手段はゲートウェイノード３３におけるウイルス検出について説明したものと同様である。例えば、.txt、.bmd、.pcxおよび.gif拡張ファイルは走査を省略し、.exe、.zipおよび.com拡張ファイルは走査を行う。
ステップ１４１０でアタッチメントがウイルスを含み得る種類のものでないと判定された場合は、この方法はステップ１４３５に進み、そのステップでさらに追加のアタッチメントの有無および走査の要否を判定する。走査を要する追加のアタッチメントがある場合は、この方法はステップ１４０５に戻り、それ以外の場合はアタッチメントの走査方法は完結する。しかし、ステップ１４１０でそのファイルがウイルスを含み得る種類のものであることが見出された場合は、この方法はステップ１４１５に進み、そのステップでアタッチメントはデコーダモジュール２８８により復号化されウイルス分析処理モジュール２８６がウイルス検出用に走査できるようにする。デコーダ２８８およびウイルス分析処理モジュール２８６の説明で示したとおり、この復号化方法は電子メールシステムの用いる、またはクライアントノード２３０で利用可能な慣用の秘匿圧縮アルゴリズムを実動化でき、走査方法はシグネチャ、チェックサムまたはエミュレーションなど慣用の種類のものを含み得る。次に、ステップ１４２０において、この方法はデータバッファ２８４内の情報についてウイルス検出を行う。次に、ステップ１４２５において、この方法はウイルスが検出されたか否かを試験する。そのアタッチメントがウイルスを含むと判定された場合は、ステップ１４３０でそのアタッチメントの感染が識別され、図１３のステップ１５００で処理されるようにする。さらに追加のアタッチメントがステップ１４３５で供給された場合は、ステップ１４０５でそれらアタッチメントにアクセスされ走査されて上述のステップが繰り返される。
図１５を参照すると、アタッチメント処理ステップ１５００の好適な方法が示してある。ウイルス分析処理モジュール２８６を支配するコンフィギュレーション設定がステップ１５０５でメール走査マネジャー２８０から決められる。コンフィギュレーション設定は、ウイルス検出に応答してその発明の方法が行うべき動作を指示するようにユーザが行うのが好ましい。ステップ１５１０において次の感染アタッチメントがアクセスされ、一時ファイルまたはデータバッファ２８４に処理のために蓄積される。代替的実施例では、感染アタッチメントのコピーをステップ１５１５で以後の参照用に感染ファイル蓄積位置３０２に蓄積する。次に、このアタッチメントをコンフィギュレーション設定にしたがって処理する。アタッチメントを完全にウイルス除去状態にできるかどうかをステップ１５２０でまず判定するのが好ましい。できる場合はステップ１５２５でアタッチメントを清浄化し、コンフィギュレーション設定にしたがって、アタッチメント蓄積位置３００内の感染アタッチメントを処理ずみ版と置換し、またはステップ１５３０で例えばメール送出モジュール２８１を用いて処理ずみ版を受信側に送信または再送する。
アタッチメントが完全にウイルス除去されていないとステップ１５２０で判定された場合は、コンフィギュレーション設定にしたがってステップ１５５０でそれを部分的に処理する。その処理は、ウイルス除去可能なアタッチメント部分のウイルス除去、アタッチメントの全面的消去、メッセージからの感染部分の除去、感染アタッチメントファイルをそのまま維持して受信側に警報を発することのいずれによっても構成できる。全面処理したアタッチメントの場合と同様に、部分処理したアタッチメントもアタッチメント蓄積位置３００内の感染部分との置換に用いることができ、またステップ１５３０で受信側に回送または再送することもできる。
次に、ステップ１５３５において、メール送信側およびネットワークアドミニストレータなどの加入者がステップ１５５５で警報を受けるか感染ファイルまたは処理ずみファイルを受けるかするようにコンフィギュレーション設定を行うことによって、加入者警告設定がイネーブルされたかどうかを判定する。次に一時ファイルはステップ１５４０で消去され、追加のアタッチメントの分析の要否がステップ１５４５で判定される。
図１５を参照して上述した補正動作のプロセスを例示する。ウイルス処理のための補正動作には、(1)何もしない、(2)メッセージからウイルスを除去する、(3)メッセージ受信側にウイルスの存在を知らせる、(4)メッセージがウイルスを含むことをシステムアドミニストレータに知らせる、(5)宛先全部（すなわち、メッセージの宛先、コピー宛先、ブラインドコピー宛先などであることがヘッダに表示されている人全部）にメッセージがウイルスを含んでいる旨を知らせる、(6)受信側および他人にメッセージが読めないようにする、(7)メッセージをシステムアドミニストレータに送る、(8)上記動作の上記以外の組合せなどが含まれ、これら補正動作の一つまたは二つを図１５に示した方法以外の方法で組み合わせできることは当業者には明らかであろう。
特定の好適な実施例を参照してこの発明を上に説明してきたが、種々の改変が可能であることは当業者には認識されよう。
例えば、この発明の好適な動作はファイルがウイルスを含み得る種類のものかどうかをFTP代行サーバ６０で判定することを特定している（ステップ６１０および６４６）。しかし、代替的実施例ではこれらステップを省略して、ウイルスチェック用に転送されてきたファイル全部を一時的に蓄積して走査するだけである。同様に、SMTP代行サーバ６０は、代替的実施例では、メッセージが符号化されたものかどうかの判定ステップ８２２を省略して、ウイルスチェック用に送信されてきた全メッセージを一時的に蓄積し走査する。また、ファイルまたはメッセージをゲートウェイノードの一時蓄積装置に一時蓄積するものとしてこの発明を上に説明してきたが、クライアントノードからゲートウェイノードへの転送時にファイル含有ウイルスの有無の判定を行う際にはこのステップを省略できる。
さらに、電子メールシステム２００におけるウイルス検出の装置および方法については、ポスタルノード２３２が特定のシステム用ゲートウェイノードとして作用すること、およびローカルエリアネットワーク(LAN)用のポスタルノード２３２によって他のネットワークへのリンクが不要な場合は通信ユニット２６９などの構成要素が不要になることは認識されよう。また、メール走査装置および同方法についても上記以外の代替例が可能であることは当業者に認識されよう。
上述の実施例についてのこれらのおよびこれら以外の変形および改変がこの発明には可能であり、この発明は次に掲げる請求の範囲のみによって限定されるものである。
【図１】
0004104658.tif 000002
【図２】
0004104658.tif 000003
【図３】
0004104658.tif 000004
【図４】
0004104658.tif 000005
【図５Ａ】
0004104658.tif 000006
【図５Ｂ】
0004104658.tif 000007
【図６Ａ】
0004104658.tif 000008
【図６Ｂ】
0004104658.tif 000009
【図６Ｃ】
0004104658.tif 000010
【図７】
0004104658.tif 000011
【図８Ａ】
0004104658.tif 000012
【図８Ｂ】
0004104658.tif 000013
【図９】
0004104658.tif 000014
【図１０ａ】
0004104658.tif 000015
【図１０ｂ】
0004104658.tif 000016
【図１０ｃ】
0004104658.tif 000017
【図１１ａ】
0004104658.tif 000018
【図１１ｂ】
0004104658.tif 000019
【図１１ｃ】
0004104658.tif 000020
【図１１ｄ】
0004104658.tif 000021
【図１２】
0004104658.tif 000022
【図１３】
0004104658.tif 000023
【図１４】
0004104658.tif 000024
【図１５】
0004104658.tif 000025