(57)【要約】      （修正有）【課題】他のプログラムとの競合が生じにくい電子メールの誤送信防止用の電子メール送信制御プログラムを提供する。【解決手段】電子メール送信制御プログラムは、電子メールを送信するためのメーラＭと同じコンピュータ装置１で動作し、メーラＭが送信しようとした電子メールを横取りするネットワークドライバ部Ｎと、横取りした電子メールを送信すべきかどうか判定するポリシー判定部Ｐと、ポリシー判定部Ｐによる判定結果に応じて、電子メールをそのまま電子メールサーバ装置宛に送信するかどうかを決定するプロキシーサーバ機能部Ｓとを備えている。このプロキシーサーバ機能部Ｓが電子メールをそのまま送信すると決定した場合、その電子メールの宛先ポート番号を通常はＳＭＴＰで使用しない特定ポート番号にした。【選択図】図２
2011215985.tif 000002
【特許請求の範囲】
【請求項１】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするＩＰデータパケットの送信を中断する中断手段と、
当該ＩＰデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該ＩＰデータパケットの送信先ＩＰアドレスを前記コンピュータ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したＩＰデータパケットの送信先ＩＰアドレスが電子メールサーバ装置のＩＰアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該ＩＰデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とする電子メール送信制御プログラム。
【請求項２】
前記電子メール送信制御プログラムは、
前記コンピュータ装置を破棄通知機能部として動作させるためのプログラムであり、
当該破棄通知機能部は、
前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、
当該破棄通知用電子メールを、送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含む
請求項１に記載の電子メール送信制御プログラム。
【請求項３】
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備える
請求項１又は２に記載の電子メール送信制御プログラム。
【請求項４】
前記ループバック検知手段によりループバックの発生が検知された場合、
前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させる請求項１乃至３のいずれか１つに記載の電子メール送信制御プログラム。
【請求項５】
前記ポリシー判定部は、
ユーザからの入力を受け付けるための表示を行う表示手段を備えており、
当該表示手段は、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行い、
前記情報通知手段は、
当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含める
請求項１乃至４のいずれか１つに記載の電子メール送信制御プログラム。
【請求項６】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするＩＰデータパケットの送信を中断する中断手段と、
当該ＩＰデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該ＩＰデータパケットの送信先ＩＰアドレスを前記コンピュータ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むこと
を特徴とする電子メール送信制御プログラム。
【請求項７】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムを用いた前記コンピュータ装置の動作方法であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするＩＰデータパケットの送信を中断する中断ステップと、
当該ＩＰデータパケットが電子メールであるかどうかを判断する判断ステップと、
その判断の結果電子メールであれば、当該ＩＰデータパケットの送信先ＩＰアドレスを前記コンピュータ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出ステップと、
前記中断手段で送信を中断したＩＰデータパケットの送信先ＩＰアドレスが電子メールサーバ装置のＩＰアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該ＩＰデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換ステップとを実行し、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知ステップと、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定ステップと、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出ステップとを実行し、
前記ポリシー判定部は、
ポリシーデータを取得する取得ステップと、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定ステップと、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知ステップとを実行することを特徴とする動作方法。
【請求項８】
電子メールの作成と送信を実行する電子メール作成送信部と、ネットワークドライバ部と、プロキシーサーバ機能部と、ポリシー判定部とを備える電子メール送信制御用のコンピュータ装置であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするＩＰデータパケットの送信を中断する中断手段と、
当該ＩＰデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該ＩＰデータパケットの送信先ＩＰアドレスを前記コンピュータ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したＩＰデータパケットの送信先ＩＰアドレスが電子メールサーバ装置のＩＰアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該ＩＰデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とするコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子メール送受信用プログラムによって送信される電子メールの送信を制御し、誤送信を防止するための電子メール送信制御プログラムに関する。
【背景技術】
【０００２】
近年、あらゆる分野における事業活動において電子メールの活用は必要不可欠となっており、１日に１００通を超える電子メールをやり取りすることが常態化している。
電子メールは手軽で瞬時に送受信が可能であるという利点がある一方で、誤った内容で送信してしまったり、宛先を間違えたりするケースも多い。
【０００３】
そこで、こういったいわゆる電子メールの誤送信を未然に防ぐ方法が複数提案されている。誤送信を防止する仕組みにはいくつか存在するが、（１）ユーザが扱うクライアント装置にインストールされた電子メール送受信用ソフトウェアにメール誤送信防止機能を追加するタイプ、（２）電子メールを集配信するメールサーバ装置側にメール誤送信防止機能を追加するタイプ、（３）クライアント装置とメールサーバ装置との間に誤送信された電子メールを捕捉する誤送信防止用装置を別途設けるタイプ等がある。
上記のうち、（１）のようなものとしては例えば特許文献１等がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１９３７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記の（１）〜（３）のような仕組みには、それぞれ一定の問題点やデメリットが存在する。
まず、（１）のようにクライアント装置の電子メール送受信用ソフトウェアに機能を追加する場合、少なくとも、ユーザが使用する可能性のある複数の電子メール送受信用ソフトウェア全てについてメール誤送信防止機能を開発する必要があり、開発に多大なコストを要するという問題がある。
また、ユーザが電子メール誤送信防止機能を持たない電子メール送受信用ソフトウェアを使用した場合には、そもそも電子メールの送受信を防止することができない、という問題もある。
【０００６】
（１）の問題点に鑑みて、（２）や（３）のように電子メールサーバ装置側もしくは電子メールサーバ装置とクライアント装置との間に置いた誤送信防止用装置にメール誤送信防止機能を追加する方法を採用した場合、例えば、企業の社員がクライアント装置を社内ＬＡＮに接続して使用する限り問題は起きないが、出張等で社外に持ち出して、別の電子メールサーバ装置を経由して送信した場合には誤送信の防止は不可能となってしまう。
【０００７】
上記のような（１）乃至（３）の構成の問題点を解消するために、本発明者らは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラム（特願２０１０−０２２６２６号）を提案した。
この電子メール送信制御プログラムによれば、電子メール作成送信部（メーラ）によって送出されようとする全ての電子メールをネットワークドライバ部が横取りして、一旦、同一のコンピュータ装置内に存在するプロキシーサーバ機能部に転送し、当該電子メールを送信しても良いかどうかを判定することができるようになる。
また、ネットワークドライバ部がコンピュータ装置外部に送出されようとするＩＰデータパケットの宛先や送信元などの情報を適宜変更することにより、電子メール作成送信部（メーラ）に、電子メール送信制御プログラムの存在を意識させずに動作させることが可能になる。
なお、ここにいうネットワークドライバ部による「横取り」とは、特願２０１０−０２２６２６号の段落［００３２］等にも記載されている通り、何らかのアプリケーション（メーラを含む）からの要求に従って、ＯＳがＩＰデータパケットをコンピュータ装置外部に送出しようとした場合にその送信処理を中断することを指し、送信処理を中断した際にネットワークドライバ部がそのＩＰデータパケットの宛先ＩＰアドレス等や送信元ＩＰアドレス等を書き換えることを「転送」という。
【０００８】
ところで、このようなコンピュータ装置には、前記電子メール送信制御プログラムと同じように送信される電子メールの中身を検定する他のプログラムが搭載されているケースがあり、当該他のプログラムと前記電子メール送信制御プログラムとが競合したために前記電子メール送信制御プログラムの動作がうまくいかなくなることがある。本発明者らは、そのことに気が付いた。
前記競合というのは、例えば、前記ネットワークドライバ部による電子メールの横取りの前後で、前記他のプログラム側で電子メールを同じように横取りして、当該他のプログラム側で宛先や送信元の情報を書き換えてしまったようなケースにおいて発生しうるものである。
競合する他のプログラム側で宛先や送信元を書き換えられてしまうと、前記ネットワークドライバ部が意図した通りに動作せず、前記電子メール送信制御プログラムによる仕組みが全体として機能しない恐れがある。
【０００９】
こういった競合する他のプログラムを同時に動作させないことは、前記電子メール送信制御プログラムを利用する場合の使用条件の１つになるが、できるだけ同種のプログラムを同時に動作させても競合が起きないように、又は、競合が起きたことが分かるように前記電子メール送信制御プログラムに工夫を施すことが望ましい。
本発明は上記のような課題に鑑みてなされたものであり、同種の電子メールの内容検定用の他のプログラムが同一コンピュータ装置内に共存した場合にも、競合が発生しにくい、又は、競合の発生を検知可能な電子メール送信制御プログラム等を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明にかかる電子メール送信制御プログラムは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるためのものであり、前記ネットワークドライバ部は、前記コンピュータ装置外部に送出されようとするＩＰデータパケットの送信を中断する中断手段と、当該ＩＰデータパケットが電子メールであるかどうかを判断する判断手段と、その判断の結果電子メールであれば、当該ＩＰデータパケットの送信先ＩＰアドレスを前記コンピュータ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段とを含み、前記プロキシーサーバ機能部は、前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段とを含み、前記ポリシー判定部は、ポリシーデータを取得する取得手段と、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含んでいる。
上記において、さらに、前記プロキシーサーバ機能部に、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を予め決められた番号であって電子メールの受信用に使用されない特定ポート番号に設定して送出する電子メールサーバ送出手段を備えさせた上で、前記ネットワークドライバ部には、前記中断手段で送信を中断したＩＰデータパケットの送信先ＩＰアドレスが電子メールサーバ装置のＩＰアドレスでかつ送信先ポート番号が前記特定ポート番号であれば、当該ＩＰデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段を備えさせた。
【００１１】
特願２０１０−０２２６２６号において本発明者らが提案した電子メール送信制御プログラムでは、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を電子メールサーバ装置が電子メールの受信用に使用するポート番号（通常は「２５番」）に設定して送出していた。なお、この電子メールの送信元のＩＰアドレスは前記コンピュータ装置のＩＰアドレスであり、送信元ポート番号はプロキシーサーバ機能部が電子メールの送信用に使用するポート番号である。
そして、前記ネットワークドライバ部の中断手段で取得された電子メールの送信元ポート番号がプロキシーサーバ機能部が電子メールの送信用に使用するポート番号であれば、その電子メールについてはプロキシーサーバ機能部への転送の対象外としてそのまま送信を許可する（スルーして送信する）こととしていた。これは、いわゆるループバック（前記プロキシーサーバ機能部が送信する電子メールをプロキシーサーバ機能部へ転送すること）を回避するためである（特願２０１０−０２２６２６号の段落［００４２］や図６等参照）。
【００１２】
この特願２０１０−０２２６２６号の方法を採用した場合、もし、この電子メール送信制御プログラム以外に電子メールの検閲を行う他のプログラムが同時に動作していた場合、当該他のプログラムが、前記プロキシーサーバ機能部が電子メールサーバ装置宛に送信しようとする電子メールを前記ネットワークドライバ部よりも先に横取りして、その電子メールの送信元のポート番号を書き換えてしまったら、送信元ポート番号が書き換えられた後の電子メールをネットワークドライバ部が横取りすることになる。
前述の通り、ネットワークドライバ部は、電子メールの送信元ポート番号がプロキシーサーバ機能部が送信用で使用するポート番号であればスルーするが、そうでなければその電子メールをプロキシーサーバ機能部に転送してしまうため、いわゆるループバックが発生してしまう。
【００１３】
このように、特願２０１０−０２２６２６号の方法によれば、他のプログラムが動作している場合には、ループバックの生じる恐れがあった。
これは、プロキシーサーバ機能部が送信する電子メールを他のプログラム側に横取りされて送信元ポート番号が書き換えられることによって生じる問題である。
そこで、本願では、前記プロキシーサーバ機能部が電子メールを電子メールサーバ宛に送信しようとする場合に、当該電子メールの送信先ポート番号を予め決められた特定の番号であって電子メールの受信用に使用されない特定ポート番号（例えば「８８８８番」等）に設定して送出するようにした。この方法によれば、前記プロキシーサーバ機能部が送信しようとする電子メールの宛先ポート番号が通常電子メールの受信用には使用されないポート番号であるから、他のプログラムが前記ネットワークドライバ部よりも先に横取りして送信元ポート番号を書き換える確率が低下する。
仮に他のプログラムがその電子メールを横取りしたとしても、宛先のポート番号が電子メールサーバ装置が電子メールの受信用で使用するポート番号（通常は「２５番」）ではないので、当該他のプログラムの検閲の対象外となる確率が高まるためである。
ただし、この宛先ポート番号のまま電子メールをコンピュータ装置外部に送出しても、前記電子メールサーバ装置は当該電子メールを受け取ることができない。そこで、ネットワークドライバ部が、横取りしたＩＰデータパケットの宛先ポート番号が前記特定ポート番号（例えば「８８８８番」）の場合には、これを前記電子メールサーバ装置が電子メールの受信用に使用するポート番号（通常は「２５番」）に書き換えて前記電子メールサーバ装置宛に送信する。
【００１４】
このように、プロキシーサーバ機能部とネットワークドライバ部が協調して動作し、プロキシーサーバ機能部側で本来意図していない特定ポート番号（送信相手先である電子メールサーバ装置の受信用ポート番号とは異なる特定ポート番号）を付与して他のプログラムに捕捉されにくくすることで、電子メール送信制御プログラムが本来の目的を達成することができるようになる。
【００１５】
なお、前記電子メール送信制御プログラムを前記コンピュータ装置を破棄通知機能部としても動作させるためのプログラムとし、その破棄通知機能部には、前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、当該破棄通知用電子メールを、送信先ＩＰアドレスを電子メールサーバ装置のＩＰアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含ませるようにすることが望ましい（請求項２）。
【００１６】
電子メール送信プログラムのユーザは、原則として電子メール送信プログラムの処理が正常に完了したら電子メールの送信が行われたものと考えるのが一般的であるので、電子メールを破棄した旨を別途通知することで、電子メールが送信を許可されていないものであったことを認識させることができるようになる。
なお、このような破棄通知用電子メールを送信する場合にも、ネットワークドライバ部がプロキシーサーバ機能部に対してループバックして送信しないように、宛先のポート番号を特定ポート番号とすれば良い。
【００１７】
なお、他のプログラムの動作内容によっては、ループバックが発生するケースもあるため、前記プロキシーサーバ機能部に、前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備えさせておくことが望ましい（請求項３）。
【００１８】
もしループバックが発生した場合、プロキシーサーバ機能部は同じ電子メールをエンドレスに繰り返し送信しようとするため、コンピュータ装置の負荷が増大してシステムがダウンする恐れもある。
そこで、プロキシーサーバ機能部にこのようなループバックを検知する機能を設けておくことで、電子メール送信制御プログラムが適切に動作しているかどうかを判断することができるようにした。
そして、このループバック検知手段によりループバックの発生が検知された場合には、前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させてさらなるループバックの発生を阻止して、コンピュータ装置の負荷の増大を防止することが望ましい（請求項４）。
【００１９】
なお、前記ポリシー判定部に、ユーザからの入力を受け付けるための表示を行う表示手段を備えさせ、当該表示手段に、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行わせるとともに、前記情報通知手段に、当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含めさせるようにしても構わない（請求項５）。
【００２０】
前記ポリシー判定部が機械的にポリシーに合致するかどうかに基づいて電子メールを送信するかどうか決めるということだけではなく、ユーザに注意喚起してユーザに最終的な判断を委ねる仕組みも取り入れた方が、柔軟性が高まり利便性が向上するためである。
【００２１】
なお、この電子メール送信制御プログラムを用いて実現されるコンピュータ装置の動作方法（請求項７）やコンピュータ装置自体も大変有用である（請求項８）。
【００２２】
また、この電子メール送信制御プログラムにおいては、前記特定ポート番号を用いたネットワークドライバ部による電子メールの転送処理は行わずに、前記プロキシーサーバ機能部に対して前記ループバック検知手段と追加手段とを備えさせるだけでも有意義である（請求項６）。
他のプログラムとの競合を回避する機能を備えていなくとも、少なくとも他のプログラムとの競合等の何らかの要因によってループバックという電子メール送信制御プログラムの不適切な動作が検知できれば、コンピュータ装置が負荷の増大によってダウンすることを未然に防止できると共に、同時に動作させるソフトウェアの種類を見直し等することで適切な動作をさせることができるようになるためである。
【発明の効果】
【００２３】
以上のように、本発明によれば、電子メールの誤送信防止機能を備えた電子メール送信制御プログラムについて、他のプログラムとの競合を回避したり、他のプログラムとの競合を検知したりすることができるようになる。
【図面の簡単な説明】
【００２４】
【図１】本発明に係るコンピュータ装置のハードウェア構成の概要を示す模式図である。
【図２】本発明に係るコンピュータ装置に搭載されたプログラムの関係を示す模式図である。
【図３】特願２０１０−０２２６２６号で提案済みの各プログラム等の動作シーケンスの概要を示す図である。
【図４】ＳＭＴＰの通信手順を示す模式図である。
【図５】特願２０１０−０２２６２６号で提案済みの各プログラム等の動作シーケンスにおいて、ループバックが発生してしまうケースを示す図である。
【図６】本発明における各プログラム等の動作シーケンスにおいて、ループバックが発生しない様子を示す図である。
【図７】本発明による電子メール送信制御方法においてメーラＭから送出される電子メールがプロキシーＳに転送されて応答信号がメーラＭに返信されるまでに使用されるＩＰアドレスやポート番号の一例を示す図である。
【図８】特願２０１０−０２２６２６号で提案済みの電子メール送信制御方法において、他のプログラムＸが搭載されていないためにプロキシーＳから電子メールサーバ２に対して正常に電子メールが送信されるケースであり、この場合に使用されるＩＰアドレスやポート番号の一例を示す図である。
【図９】特願２０１０−０２２６２６号で提案済みの電子メール送信制御方法において、他のプログラムＸが搭載されているためにプロキシーＳから電子メールサーバ２に対して正常に電子メールが送信されずにループバックが起きるケースであり、この場合に使用されるＩＰアドレスやポート番号の一例を示す図である。
【図１０】本発明の電子メール送信制御方法において、他のプログラムＸが搭載されていてもプロキシーＳから電子メールサーバ２に対して正常に電子メールが送信され、ループバックが起きないケースであり、この場合に使用されるＩＰアドレスやポート番号の一例を示す図である。
【図１１】本発明における各プログラム等の動作シーケンスにおいて、電子メールを破棄する旨を通知する破棄通知用電子メールを送信する様子を示す図である。
【発明を実施するための形態】
【００２５】
（第１の実施形態）
以下、本発明の第１の実施形態を、図面を参照しながら詳細に説明する。
図１は、メールの作成と送信を行うコンピュータ装置１（クライアント）のハードウェア構成を示す模式図である。
【００２６】
〔構成の概要〕
ＣＰＵ１０１は、コンピュータ装置１の備える機能を実現するためのコンピュータプログラムをハードディスク１１２から読み出してメモリ１１１にコピーして実行する機能を備えている。
本発明で実行される前記コンピュータプログラムとしては、コンピュータ装置１のオペレーティングシステム（以下、ＯＳという。）のプログラム、電子メール送信プログラムＭ（以下、メーラという。）、及び電子メール送信制御プログラムが挙げられる。
この場合、前記電子メール送信制御プログラムは、ネットワークドライバ部Ｎ、プロキシーサーバ機能部Ｓ、及び、ポリシー判定部Ｐを含む構成となっている。
ＯＳや電子メール送信制御プログラムは、コンピュータ装置１の電源がオンされた時点で自動的にハードディスク１１２から読み出されてメモリ１１１にコピーされ、常時実行可能な状態となるが、電子メール送信プログラムは、通常ユーザがメールの作成や送受信を行うタイミングで随時ハードディスク１１２から読み出されてメモリ１１１にコピーされて実行される。
【００２７】
なお、ＯＳには、電子メールを送受信するために必要なＴＣＰ／ＩＰ通信を実行するためのＴＣＰ／ＩＰ通信ライブラリが含まれており、予め用意されたＡＰＩ関数を用いてＩＰデータパケットの送受信を行うことができるようになっている。このＡＰＩ関数は、前記ＴＣＰ／ＩＰ通信ライブラリとアプリケーションプログラムとの間のデータの受け渡しを行うために使用されるものである。
そして、このＴＣＰ／ＩＰ通信ライブラリによって、コンピュータ装置１から外部に送信すべきＩＰデータパケットを通信インタフェース１２１を介して他のコンピュータ装置（例えば電子メールサーバ２）に送信したり、他のコンピュータ装置からのＩＰデータパケットを通信インタフェース１２１を介して受信したりする機能が実現される。
【００２８】
なお、図１ではコンピュータ装置１のＣＰＵが１つだけの例を示しているが、複数のＣＰＵによって構成されていても良いし、実現すべき機能のうちの一部については、その機能を実行可能な専用チップ（ＩＣ等）を備えるハードウェア構成としても良い。
【００２９】
〔プログラムの動作〕
図２は本発明の電子メール送信制御プログラムの構成の概要を示すブロック図である。
以降では、図３および図５で特願２０１０−０２２６２６号で提案済みの発明についての動作シーケンスを説明した上で、これと対比するように本発明の動作シーケンスを図６を用いて説明する。また、これらの動作シーケンスにおいて使用されるポート番号等を図７乃至図１０を用いて説明する。
実施形態に登場する各種プログラムはコンピュータ装置１に対する命令を組み合わせたものであるから、プログラムによって実現される動作や機能の主体はあくまでもコンピュータ装置１であるが、発明内容を把握しやすくするために、以下では各種プログラムを動作の主体として記載する。
【００３０】
〔メーラＭの設定〕
ユーザが使用するメーラＭには電子メールの作成と送受信をする機能が備えられており、ユーザはメーラＭを使用して作成した電子メールを送信することができる。
通常、メーラＭは、使用する電子メールサーバ装置のＩＰアドレスとポート番号を設定しなければ動作しない仕組みになっているので、メーラＭには電子メールサーバ２のＩＰアドレスとポート番号が設定されている。
本発明では、このコンピュータ装置１に電子メール送信制御プログラムがインストールされているかどうかに関係なく、メーラＭには常に電子メールサーバ２のＩＰアドレスＡ２とポート番号Ｎ２が設定されていれば良く、電子メール送信制御プログラムがインストールされている場合にもこの設定を変更する必要はない。
【００３１】
通常、企業などの社員が社内ＬＡＮに接続されたコンピュータ装置を使って電子メールの送受信を行う場合、ほとんど全ての社員は当該企業の情報システム部門が準備する同一の電子メールサーバを用いてメールの送受信を実施するため、全員が同じ設定を行えば済むことが多い。
本発明では、電子メール送信制御プログラムがインストールされているかどうかに関係なく電子メールサーバ２のＩＰアドレスＡ２とポート番号Ｎ２を設定すれば良い（電子メール送信制御プログラムがインストール／アンインストールされる前後で設定を変更しなくても良い）という点で導入が容易である、というのがメリットの１つである。
【００３２】
もし、電子メール送信制御プログラムがインストール／アンインストールされる前後でメーラＭの設定を変更しなければいけない仕組みとすると、社員それぞれに対して設定方法を教授する手間が発生するという不便さがあり、特に、社員の使用するコンピュータ装置毎に異なる設定をしなければいけない場合には、設定方法を教授する手間も大きくなってしまう。また、設定変更を忘れたり変更ミスをしたりする不慣れな社員が多い場合には、個々の社員に対して個別にサポートを行う必要性が生じるという問題もあるが、本発明では、そういった手間はほとんど発生しない。
【００３３】
〔ＳＭＴＰの基本手順を用いた電子メールの送信処理の概要〕
コンピュータ装置１のＯＳに含まれるＴＣＰ／ＩＰ通信ライブラリ（以下、通信ライブラリという。）Ｔを使用するために用意されるＡＰＩ関数には、例えば、メーラＭによってメールの送信処理が実行される際に送信されるべきＩＰデータパケットの送信先やデータ内容等を引数としてコールされる送信関数や、特定のポート番号に対応付けて生成されるＴＣＰのソケット等の識別子を引数として当該ポート番号宛に送信されたＩＰデータパケットを受信するためにコールされる受信関数等がある。
メーラＭは、電子メールの送信処理を実行する場合、電子メールの送信先のメールアドレスやメール本文の文字列等を格納したテキストデータへのポインタや送信先のＩＰアドレス等を引数として送信関数をコールすることで、電子メールを送信することができる。
【００３４】
なお、電子メールの送受信を行う場合、通常ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）というプロトコルを使用することが多い。このＳＭＴＰでは、電子メールサーバと電子メール送受信用のクライアント装置との間で所定の通信手順に従ってやりとりが行われる。この通信手順を、図４を用いて説明する。
なお、このＳＭＴＰの通信手順はＩＥＴＦ（Ｉｎｔｅｒｎｅｔ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｔａｓｋ  Ｆｏｒｃｅ）のＲＦＣ（Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔ）で標準仕様が定められており、以下はそのＲＦＣで定められた手順と同じである。
まず、電子メールサーバとクライアント装置との間でＴＣＰの通信コネクションが確立される。この場合、電子メールサーバのポート番号は通常２５番が使用される。そして、以降のやりとりは、このＴＣＰ通信コネクション上で、ＩＰデータパケット形式のデータを交換することで行われる。
【００３５】
ＴＣＰ通信コネクションが正常に確立されたら、まず、クライアント装置は、自身のドメイン名を格納したＥＨＬＯコマンドを送信する。電子メールサーバはこれに応じて応答信号を返信する。
クライアント装置は、ＥＨＬＯコマンドに対する応答信号を受けたら、電子メールの送信元メールアドレス（通常はユーザのメールアドレス）を格納したＭＡＩＬコマンドと宛先メールアドレスを格納したＲＣＰＴコマンドとをそれぞれ送信する。
そして、これらについて応答信号を受信できたら、ＤＡＴＡコマンドを送信してメール本文の送信を開始する。メール本文のデータはメールの長さに応じて複数のＩＰデータパケットに分割して送信することができる。メール本文のデータを全て送り終えたら、終了を示すコード（ピリオド）を送信した後、ＱＵＩＴコマンドで通信を完了させる。
なお、電子メールの送信が終わったらその時点でＴＣＰ通信コネクションを切断する。
【００３６】
〔電子メール送信制御プログラムの動作の概要〕
まず、ユーザがメーラＭを操作して電子メールを作成し、送信処理を開始すると（メーラＭの送信ボタンの押下等を行うと）、メーラＭは電子メールサーバ２との間にＴＣＰ通信コネクションを確立しようとする。
そして、ＴＣＰ通信コネクションが確立されたら、メーラＭは、前述のＳＭＴＰの手順に沿って、電子メールの送信処理を開始することになる（図３のＳｔｅｐ２）。
このメーラＭによるＴＣＰ通信コネクションの確立や電子メールの送信処理について、ＯＳが実行する処理を中断させた上で、後述する「横取り」を行うのがネットワークドライバ部Ｎである。
【００３７】
ネットワークドライバ部Ｎは、コンピュータ装置１においてＩＰデータパケットの送信処理が実行されると、この処理をフックする機能を備えている（図３のＳｔｅｐ１）。このフック機能は、何らかのアプリケーションプログラムがＯＳに対してＩＰデータパケットの送信を要求する処理を実行（送信関数をコール）した場合、その送信処理を中断すると共にＩＰデータパケットをネットワークドライバ部Ｎに引き渡す、というものである。このフック機能により、ネットワークドライバ部Ｎは、実際に送信処理が実行される前にＩＰデータパケットを「横取り」することができるようになる（図３のＳｔｅｐ３）。
メーラＭによって電子メールの送信処理が実行されると、ＯＳの通信ライブラリＴの送信関数がコールされるが、この電子メールもネットワークドライバ部Ｎによって横取りされることになる。
なお、このフック機能による横取りを可能な状態にするには、通常、コンピュータ装置１の起動後、電子メール送信制御プログラムの実行が開始された直後に一度フック機能を有効化するコマンドを実行しておけば、それ以降、送信関数がコールされるたびにネットワークドライバ部Ｎが「横取り」をすることが可能となる。
【００３８】
ネットワークドライバ部Ｎは、横取りしたＩＰデータパケットが、電子メールのデータやコマンド及びその応答信号以外の電子メールとは無関係のものであれば、そのＩＰデータパケットに対して何らの加工処理等を施すことなく、そのまま送信を許可する。
一方、横取りしたＩＰデータパケットが、電子メールに関するものであれば、そのＩＰデータパケットの宛先のＩＰアドレスＡ２（図７では「１０．１．１．１」）をコンピュータ装置１自身のＩＰアドレスＡ１（図７では「１０．０．０．１」）に書き換えると共に、宛先のポート番号Ｎ２（図７では「２５」）を、後述するプロキシーサーバ機能部（以下、プロキシーという。）Ｓの使用するポート番号Ｎ１（プロキシーＳがメーラＭから送信されてネットワークドライバ部Ｎによって転送されてくるＩＰデータパケットを受信するために使用するポート番号で、図７では「１０２１」）に設定する。なお、プロキシーＳと電子メールサーバ２が同一の番号を使用している場合には、ポート番号の書き換えは行わなくても構わない。
そして、前記書き換えた内容でＩＰデータパケットを送信するように通信ライブラリＴに指示する。以下、宛先のＩＰアドレス等を書き換えた上で通信ライブラリＴが電子メールを送信する処理のことを「転送」と呼ぶことにする（図３のＳｔｅｐ４）。
【００３９】
なお、前記横取りしたＩＰデータパケットが電子メールに関するものかどうかは、当該ＩＰデータパケットの送信先又は送信元のポート番号がＳＭＴＰプロトコルで通常使用されるポート番号（通常は２５番）であるかどうかで判断すると良い。ただし、この場合、２５番以外のポート番号（例えば２５２５番）をＳＭＴＰプロトコル用に使用することが分かっているのであれば、当該２５番以外の番号を送信先ポート番号とするＩＰデータパケットを電子メールに関するものと判断しても良い。また、複数のポート番号のいずれか（例えば２５番と２５２５番）を送信先ポート番号とするＩＰデータパケットを電子メールに関するものと判断することもできる。
また、ポート番号以外のＩＰデータパケットの形式等から電子メールに関するものであるかどうかを判断するようにしても良い。前述のＳＭＴＰに従ってやり取りされるコマンドが有するデータ形式は予め標準化された固定的な形式であるから、コマンドのデータ形式を記憶しておいて、取得されたＩＰデータパケットの形式が当該記憶してある形式と一致するかどうかを比較して一致すれば電子メールに関するものである、と判断するようにしても構わない。
【００４０】
プロキシーＳは、ネットワークドライバ部Ｎに指示されて通信ライブラリＴが転送するＩＰデータパケットを受信する（図３のＳｔｅｐ５）。この場合、そのＩＰデータパケットには電子メールに関するデータやコマンドが含まれているので、図４に示すＳＭＴＰの通信手順に従って逐次応答信号の送信処理を実行する（図３のＳｔｅｐ６）。
このプロキシーＳによる応答信号の送信処理も、メーラＭによる電子メールの送信処理と同様に、ＯＳの通信ライブラリＴの送信関数をコールすることで実行されるが、ネットワークドライバ部Ｎは、この応答信号の送信処理についても横取りを行う（図３のＳｔｅｐ７）。
この場合、応答信号の送信元のＩＰアドレスは、コンピュータ装置１自体のＩＰアドレスＡ１、ポート番号はプロキシーＳの使用するポート番号Ｎ１となっている。プロキシーＳが送信処理を実行したためである。
そこで、ネットワークドライバ部Ｎは、このＩＰアドレスＡ１とポート番号Ｎ１を電子メールサーバ２のＩＰアドレスＡ２及びポート番号Ｎ２（通常は２５番）に書き換えて転送するように通信ライブラリＴに通知し（図３のＳｔｅｐ８）、この通知を受けた通信ライブラリＴが応答信号をメーラＭ宛に送信する（図３のＳｔｅｐ９）。
【００４１】
この転送された応答信号は、メーラＭによって受信されるが、メーラＭは自己が電子メールの送信処理を実行した際の宛先のＩＰアドレスＡ２とポート番号Ｎ２（電子メールサーバ２のＩＰアドレスとポート番号）と同じＩＰアドレスとポート番号からの応答信号として受信することができる。このため、メーラＭは、あたかも電子メールサーバ２に対して電子メールを送信し、その応答信号を受信できたかのように認識することになる。
このように、ネットワークドライバ部ＮがメーラＭの送受信する電子メールに関連するＩＰデータパケットを横取りして転送することで、メーラＭに対する特別な機能の追加や設定の変更を行わなくても、メーラＭの動作にエラーが発生することはない。
つまり、メーラＭは、本発明の電子メール送信制御プログラムの有無に関係なく動作できることになる。
また、ネットワークドライバ部Ｎは、コンピュータ装置１から送出されようとする全てのＩＰデータパケットを対象として電子メールの横取りを行うため、メーラＭの種類を問わず確実に電子メールを捕捉することが可能となる。
【００４２】
この一連の動作で使用されるＩＰアドレスやポート番号の一例を示したのが図７である。
【００４３】
一方、ネットワークドライバ部Ｎによって転送された電子メールを受信したプロキシーＳは、その電子メールをポリシー判定部Ｐに通知する。このポリシー判定部Ｐは、いわゆるエージェントとして機能するプログラムであり、予めハードディスク１１２に記憶したポリシーデータＰＤ（ポリシーデータを記憶するネットワーク上のサーバ装置等から取得しても良い）を参照して、その電子メールについて判定を実施する。
例えば、特定のメールアドレスへの電子メールの送信を禁じる旨のポリシーが定義されている場合に、送信先メールアドレスが禁止されているメールアドレスであるかどうかを判定したり、添付ファイルが暗号化されていない電子メールの送信を禁じる旨のポリシーが定義されている場合に、添付ファイルの暗号化がされているかどうかを判定したりする。
【００４４】
このポリシーデータＰＤには複数のポリシーを定義することができ、例えば、添付ファイルを禁じるポリシーＡ、特定の相手に対する送信を禁じるポリシーＢおよびメール本文に特定の文字（例えば「秘密」）を含む電子メールの送信を禁じるポリシーＣの３つを定義することができる。
このように複数のポリシーが含まれている場合、ポリシー判定部Ｐは、各ポリシーに合致するか否かをそれぞれ判定し、その結果をプロキシーＳに通知する。
【００４５】
このポリシー判定部Ｐによる判定結果は、当該電子メールの送信の「許可」か「破棄」か、という二者択一であっても良いし、ユーザに送信するかどうかの判断を委ねる「ユーザ判断待ち」を加えた三者択一としても良い。また、「許可」と「ユーザ判断待ち」の二者択一とすることもできる。
ポリシー判定部Ｐの判定結果が「許可」であれば、その判定結果を含む判定情報を通知されたプロキシーＳは、電子メールの内容を加工等することなく、電子メールサーバ２宛にそのまま送出し、判定結果が「破棄」であれば、電子メールをそのまま破棄する（図３のＳｔｅｐ１１）。
なお、判定結果が「ユーザ判断待ち」となった場合には、ユーザ判定入出力部Ｕに対して、ユーザへの問いかけを行うＧＵＩの呼び出しを要求する。具体的には、ＧＵＩにおいて、ユーザに対し、「このメールはポリシー判定の結果、送信を許可されていないメールアドレスに対して送信しようとしています。このまま送信しますか？」といった内容の画面表示を行うと共に、判断結果の入力手段（「はい」、「いいえ」のボタン表示等）を表示する。
そして、このユーザの判断の結果を受けて、ポリシー判定部ＰはプロキシーＳに対して判定情報を通知する（ポリシー判定部Ｐに関連する処理は図３のＳｔｅｐ１０）。
【００４６】
なおこの実施形態では、ポリシー判定部Ｐにおいて電子メールの送信を許可するか破棄するかまで判定してからその判定結果をプロキシーＳに通知するようにしているが、ポリシー判定部Ｐは通知された電子メールがポリシーに合致するものか否かについての判定結果のみを通知し、その判定の結果を受け取ったプロキシーＳの側で電子メールの送信を許可するか破棄するかを決定する、ということにしても構わない。
例えば、ポリシーデータにポリシーＡ、ポリシーＢおよびポリシーＣの３つのポリシーが含まれている場合に、ポリシー判定部Ｐの方では、各ポリシーに合致するか否かの結果のみをプロキシーＳに通知し、プロキシーＳがその３つのポリシーの各々に合致するかどうかの結果を総合的に判断した上で電子メールの送信を許可するかどうかを決定する、という実施形態でも構わない。
例えば、プロキシーＳの方で、２つ以上のポリシーに合致している場合にのみ電子メールを破棄するという決定をするようにしている場合、ポリシー判定部ＰからポリシーＡには合致しないがポリシーＢおよびポリシーＣには合致するという判定結果を受けた場合には、２つ以上のポリシーに合致するため、プロキシーＳは電子メールを破棄するという決定を行い、ポリシー判定部ＰからポリシーＡとポリシーＢには合致しないがポリシーＣには合致するという判定結果を受けた場合には、１つのポリシーにしか合致しないため、プロキシーＳは電子メールの送信を許可するという決定を行う、といった方法でも構わない。
また、処理時間の短縮のために複数のポリシーに優先度を設けておき、優先度の高いポリシー（例えばポリシーＡ）から順番にそのポリシーに合致しているかどうかを判定していって、優先度の高いポリシーに合致していると判断されればその時点で判定を打ち切って（その他の優先度の低いポリシーについての判定を行わずに）、優先度の高いポリシーに合致しているという判定結果のみをプロキシーＳに通知するといった方法を用いても構わない。
【００４７】
つまり、ポリシー判定部Ｐは、プロキシーＳが電子メールの送信を許可するか破棄するかを決定しうる情報である判定情報をプロキシーＳに対して送信すれば良いのであり、必ずしもポリシー判定部Ｐで電子メールの送信を許可するかどうかまで判定しなくても構わない。
【００４８】
以上の通り、図３のＳｔｅｐ１乃至Ｓｔｅｐ１０の動作シーケンスや図７で説明したＩＰアドレスやポート番号の使用方法は、本発明と特願２０１０−０２２６２６号で提案済みの電子メール送信制御プログラムとでは差がなく同じである。
【００４９】
〔プロキシーＳから電子メールサーバ２への電子メールの送信処理〕
本発明では、プロキシーＳから電子メールサーバ２への電子メールの送信処理が特願２０１０−０２２６２６号で提案済みの方法と異なっている。そこで、まず、特願２０１０−０２２６２６号で提案済みの方法を図３と図８に従って説明する。
プロキシーＳが電子メールをそのまま電子メールサーバ２に送信することに決定した場合、プロキシーＳが電子メールの送信処理を実行すると（図３のＳｔｅｐ１２−１）、通信ライブラリＴの送信関数がコールされるため、他の場合と同様にネットワークドライバ部Ｎが当該電子メールを横取りすることになる（図３のＳｔｅｐ１２−２）。
ただし、この場合、ネットワークドライバ部Ｎは、横取りしたＩＰデータパケットの送信元のＩＰアドレスとポート番号の組み合わせが、プロキシーＳが前記送信処理を行った際に使用したＩＰアドレスＡ１（図８では「１０．０．０．１」）とポート番号Ｎ３（プロキシーＳが電子メールサーバ２とＩＰデータパケットを送受信するために使用するポート番号で、図８では「９０００」）と一致すれば、何らの処理も行わずに（データの書き換えを行わずに）そのまま送信を許可する（スルーして送信する）（図３のＳｔｅｐ１２−３）。そして、通信ライブラリＴはこの電子メールを送信する（図３のＳｔｅｐ１２−４）。
ネットワークドライバ部Ｎがこの電子メールを横取りしてプロキシーＳ宛に転送してしまうと、いわゆるループバックの格好になって、電子メールサーバ２に対して電子メールを送ることができなくなるためである（Ｓｔｅｐ１２はＳｔｅｐ１１で電子メールを破棄しないと判定した場合の一連の処理）。
【００５０】
なお、ネットワークドライバ部Ｎが横取りした電子メールが、プロキシーＳが電子メールサーバ２宛に送ったものか、メーラＭが電子メールサーバ２宛に送ったものか、を区別するには、上記のようにプロキシーＳが送信処理を行ったときに使用した送信ポート番号Ｎ３をプロキシーＳから予め通知してもらっておき、横取りした電子メールの送信元ポート番号がプロキシーＳの送信元ポート番号Ｎ３と一致すればプロキシーＳが送信元で、そうでなければメーラＭが送信元である、と認識すれば良い。
【００５１】
この特願２０１０−０２２６２６号で提案済みの一連の動作で使用されるＩＰアドレスやポート番号の一例を示したのが図８である。
【００５２】
ここで、この特願２０１０−０２２６２６号で提案済みの一連の動作では、コンピュータ装置１に電子メール検閲用のプログラムである他のプログラムＸが搭載されており、当該他のプログラムＸがネットワークドライバ部Ｎよりも先に電子メールを横取りして何らかの処理を加える可能性がある場合、ネットワークドライバ部Ｎがループバックを引き起こしてしまうことがある点について図５及び図９を用いて詳細に説明する。
もし、プロキシーＳが送信する電子メールの宛先ポート番号を電子メールサーバ２が通常電子メール受信用に使用するポート番号Ｎ２（図９にあるように通常は「２５番」）にすると（図５のＳｔｅｐ１２２−１）、他のプログラムＸがネットワークドライバ部Ｎよりも先に横取り（図５のＳｔｅｐ１２２−２）した場合、他のプログラムＸは横取りしたＩＰデータパケットが電子メールであると認識できることになる。この場合、他のプログラムＸが電子メールに対して何らかの検閲処理等を行った後に、当該電子メールの送信元ポート番号を他のプログラムＸが使用するポート番号Ｎ６（図９では「９９９９番」）に書き換えて転送してしまう可能性がある（図５のＳｔｅｐ１２２−３及び４）。
もし、この他のプログラムＸに送信元ポート番号を書き換えられてしまうと、ネットワークドライバ部Ｎは、当該電子メールがプロキシーＳが送信処理を行った電子メールであると認識することができなくなる。これは、図３でも既に説明した通り、横取りしたＩＰデータパケットの送信元のＩＰアドレスとポート番号の組み合わせが、プロキシーＳが前記送信処理を行った際に使用したＩＰアドレスＡ１（１０．０．０．１）とポート番号Ｎ３（９０００）と一致した場合にのみプロキシーＳが送信処理を行った電子メールであると認識するようにしていたためである。
ネットワークドライバ部Ｎは、横取りした電子メールがプロキシーＳが送信処理を行った電子メールであると認識できなければ、プロキシーＳ以外のアプリケーションソフトウェア（通常は電子メール送受信用ソフトウェア）が送信処理した電子メールであると認識してプロキシーＳに転送することになるため、ループバックが発生してしまう（図５のＳｔｅｐ１２２−５乃至７）。すなわち、プロキシーＳが、図５のＳｔｅｐ１２２−７で転送されてくるメールを図３のＳｔｅｐ５で転送されてくるメール（メーラＭから発信されたメールのネットワークドライバ部Ｎによる転送）と判断してしまい、プロキシーＳが同一の電子メールについて、Ｓｔｅｐ６以降の処理を複数回繰り返し実行することになってしまう。
【００５３】
そこで、本発明ではプロキシーＳから電子メールサーバ２への電子メールの送信処理に以下の工夫を施した。この様子を図６と図１０とを用いて詳細に説明する。
プロキシーＳが電子メールを破棄せずに電子メールサーバ２に送信することに決定した場合、プロキシーＳが電子メールの送信処理を実行して（図６のＳｔｅｐ１２３−１）、通信ライブラリＴの送信関数がコールされるが、この場合の電子メールの宛先ポート番号を、電子メールサーバ２が通常電子メール受信用に使用するポート番号Ｎ２（図９や図１０における「２５番」）ではなく、予め決められた番号であって電子メールの受信用に使用されない特定ポート番号Ｎ５（図１０では「８８８８番」）に設定して送出する。
このように、宛先のポート番号を前記特定ポート番号Ｎ５のようなＳＭＴＰでは通常使用されないポート番号にしておけば、他のプログラムＸが当該電子メールを横取り（図６のＳｔｅｐ１２３−２）した場合に、そのＩＰデータパケットが電子メールではない、と認識して、何ら処理を行わずにスルーする可能性が高くなる（図６のＳｔｅｐ１２３−３及び４）。
【００５４】
以上のように、本発明では他のプログラムＸが同一のコンピュータ装置１に搭載されている場合であっても、当該他のプログラムとの競合を回避できる確率が高くなる。
なお、この電子メールは、このままでは電子メールサーバ２の特定ポート番号Ｎ５宛に送出されて電子メールサーバ２が受信できないため、他のプログラムＸが横取りした後にネットワークドライバ部Ｎで横取りした際に、送信先ポート番号を電子メールサーバ２が受信可能なポート番号Ｎ２（図１０における２５番）に置き換えてから電子メールサーバ２に向けて転送するようにした。
そうすることで、他のプログラムＸとの競合を回避しつつ、電子メールをプロキシーＳの所望通りに電子メールサーバ２の電子メール受信用ポート番号Ｎ２宛に送信することができるようになる（図６のＳｔｅｐ１２３−５乃至８）。
【００５５】
〔電子メールの破棄を通知する破棄通知用電子メールの送信処理〕
このように、プロキシーＳは、ポリシー判定部Ｐによる判定結果に応じて、電子メールを破棄するか送信するかを決定するが、電子メールを送信する場合には、ユーザに特段の通知を行う必要はない。ユーザはメーラＭにおいて電子メールの送信処理を実行し、その処理がエラーなく完了したことを見届ければそれで足りるからである。
一方、プロキシーＳが電子メールを破棄した場合には、そのことを何らかの形でユーザに通知することが望ましい。なぜならば、ユーザはメーラＭで電子メールの送信処理を実行し、エラーなく完了したことを見届けているため、電子メールを確かに送信したつもりになっているからである。
【００５６】
そこで、プロキシーＳは、ポリシー判定部Ｐから通知された判定結果に応じて電子メールを破棄した場合、当該電子メールを破棄した旨の破棄通知用電子メールを新たに作成すると良い。破棄通知用電子メールの宛先電子メールアドレスはユーザの使用する電子メールアドレス（破棄した電子メールの送信元メールアドレス）である。プロキシーＳは、この破棄通知用電子メールを電子メールサーバ２宛に送信することが望ましい。
この場合にも、図１１に示すように、プロキシーＳがメーラＭから送信された電子メールを電子メールサーバ２宛に送信する場合と同様に、当該破棄通知用電子メールの送信先のポート番号を前記特定ポート番号（例えば「８８８８番」）にすれば良い（図１１のＳｔｅｐ１３２−１）。
そうすれば、他のプログラムＸの検閲対象にならずに送信元ポート番号の書き換え等が生じる確率が低くなるため、他のプログラムＸとの競合によるループバックを回避することができるようになる（図１１のＳｔｅｐ１３２−２乃至４）。
なお、この場合もネットワークドライバ部Ｎが他のプログラムＸの後で電子メールの横取りをし、その電子メールの宛先ポート番号をＮ６からＮ２に書き換えれば良い（図１１のＳｔｅｐ１３２−５乃至８）。
【００５７】
なお、この破棄通知用電子メールの本文には、破棄された電子メールのメール本文の内容を引用しておくことが望ましい。ユーザに対して、破棄された対象がどの電子メールであったかを知らせるためである。
また、破棄した理由についても、本文に記載しておくことが望ましい。ユーザが電子メールを再編集して送信等する際に、その破棄の理由等を参照できれば、その理由を解消した上で再送信することができるためである。
さらに、破棄通知用電子メールのヘッダの領域（例えば、「Ｉｎ−Ｒｅｐｌｙ−Ｔｏ」や「Ｒｅｆｅｒｅｎｃｅｓ」の領域）に、破棄した電子メールのヘッダの領域に格納されていた「Ｍｅｓｓａｇｅ−Ｉｄ」の値を転記しておくようにしても良い。このようにすれば、メーラＭを操作して送受信済みの電子メールを並べ替え処理等した場合に、破棄された送信済み電子メールと破棄通知用電子メールとが連続した位置関係になるので、ユーザが容易に確認可能となり至便である。
【００５８】
〔ループバックの検知処理〕
なお、本発明のように、プロキシーＳとネットワークドライバ部Ｎとを協調して動作させて、プロキシーＳの送信する電子メールの宛先ポート番号を特定ポート番号Ｎ５にしたとしても、他のプログラムＸの動作内容等によっては、やはりループバックが発生する可能性がある。例えば、ネットワークドライバ部ＮがプロキシーＳ宛に転送した電子メールをネットワークドライバ部Ｎよりも後で他のプログラムが横取りしたような場合である。
【００５９】
ループバックが発生したときの一番の問題点は、プロキシーＳが同じ電子メールの送信を繰り返すことによるコンピュータ装置１の処理負荷の増大である。短期間にプロキシーＳに対してエンドレスに電子メールの送信を繰り返し行うことになるため、コンピュータ装置１のＣＰＵ１０１がオーバーフローしてシステムがダウンする危険性が高い。
従って、ループバックが発生した場合にはそれを的確に検知すると共に、ループバックの繰り返しを防止できるようにすることが望ましい。
【００６０】
そこで、本発明では、プロキシーＳが電子メールサーバ２宛に送信する電子メールのヘッダ部分にそのことを識別可能なループバック検知用文字列を追加するようにすることが望ましい。具体的には、電子メールのヘッダ部分に「Ｘ−Ｍｃｖ−Ｓｅｎｄｅｒ：ＭｃｖＰｒｏｘｙ」などのような文字列を一行追加する方法である。
なお、追加する文字列はこのようなものに限られず、追加されたとしても電子メールのユーザにとって影響がなく、かつ、通信ライブラリＴによる電子メールの送信処理に対しても影響を及ぼさない文字列であればどのようなものであっても良い。
【００６１】
そして、プロキシーＳはポート番号Ｎ３で受信した電子メール（ネットワークドライバ部Ｎが転送する電子メール）のヘッダ部に、自身が送信処理を行ったものと区別可能な前記ループバック検知用文字列（例えば「Ｘ−Ｍｃｖ−Ｓｅｎｄｅｒ：ＭｃｖＰｒｏｘｙ」）が存在するかを判定する。
もし、受信される電子メールに前記ループバック検知用文字列が含まれているのであれば、プロキシーＳが送信した電子メールがループバックしていると判断できるため、このコンピュータ装置１では、他のプログラムとの競合等の何らかの要因で、本発明にかかる電子メール送信制御プログラムが適切に動作していない、ということが分かる。
【００６２】
すなわち、例えば、特定ポート番号Ｎ５を用いた処理を行わなかったために図５のようにループバックが発生したとしても、プロキシーＳが図５のＳｔｅｐ１２２−１でメール送信要求を行う際に、前記ループバック検知用文字列を電子メールに付与しておけば、図５のＳｔｅｐ１２２−７で当該電子メールがループバックされてきた場合に、そのことを検知できるようになるのである。
そして、ループバックが検知された場合には、異常が発生したと判定してネットワークドライバ部Ｎによる電子メールの横取り処理を中止すると共に、ユーザやネットワークシステムの管理サーバ等に対して、異常が発生した旨を通知するようにすれば良い。
【００６３】
このように、プロキシーＳの電子メール送信処理にループバック検知機能を付与することで、他のプログラムとの競合等の要因でコンピュータ装置１がダウンする事態を未然に回避することができるようになる。また、ユーザが電子メール送信制御プログラムに競合が起きており、正常動作させるためには何らかの対策（他のプログラムのアンインストール等）を行う必要があると認識することが可能になる。
【００６４】
なお、このループバック検知機能は、特定ポート番号を利用した他のプログラムとの競合を回避する機能の有無とは関係なく有効な機能である。つまり、電子メール送信制御プログラムに対して競合を回避する機能を付与していない場合であっても、このループバックを検知する機能を設けておくことが望ましい。
ループバック検知機能を備えさせることによって、他のプログラムとの競合が発生しているか否かだけでも検知できれば、電子メール送信制御プログラムを正しい環境で動作させる（正しく動作させられない環境では動作させない）ことが可能となるからである。
【００６５】
以上のように、本発明の電子メール送信制御プログラムでは、特願２０１０−０２２６２６号で提案済みの電子メール送信制御プログラムに対して、新たに他のプログラムとの競合を回避したり、競合によるループバックを検知したりする機能を追加したので、電子メール送信制御プログラムの導入を容易にすることが可能になる。
【００６６】
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６７】
１  コンピュータ装置、  １０１  ＣＰＵ、  １１１  メモリ、  １１２  ハードディスク、  １２１  通信インタフェース、  ２  電子メールサーバ
Ｍ  電子メール送信プログラム、  Ｎ  ネットワークドライバ部、  Ｓ  プロキシーサーバ機能部、  Ｐ  ポリシー判定部、  ＰＤ  ポリシーデータ、  Ｕ  ユーザ判定入出力部、  Ｔ  ＴＣＰ／ＩＰ通信ライブラリ
【図１】
2011215985.tif 000003
【図２】
2011215985.tif 000004
【図３】
2011215985.tif 000005
【図４】
2011215985.tif 000006
【図５】
2011215985.tif 000007
【図６】
2011215985.tif 000008
【図７】
2011215985.tif 000009
【図８】
2011215985.tif 000010
【図９】
2011215985.tif 000011
【図１０】
2011215985.tif 000012
【図１１】
2011215985.tif 000013