電子メール送信制御プログラム、動作方法、コンピュータ装置
【課題】他のプログラムとの競合が生じにくい電子メールの誤送信防止用の電子メール送信制御プログラムを提供する。
【解決手段】電子メール送信制御プログラムは、電子メールを送信するためのメーラMと同じコンピュータ装置1で動作し、メーラMが送信しようとした電子メールを横取りするネットワークドライバ部Nと、横取りした電子メールを送信すべきかどうか判定するポリシー判定部Pと、ポリシー判定部Pによる判定結果に応じて、電子メールをそのまま電子メールサーバ装置宛に送信するかどうかを決定するプロキシーサーバ機能部Sとを備えている。このプロキシーサーバ機能部Sが電子メールをそのまま送信すると決定した場合、その電子メールの宛先ポート番号を通常はSMTPで使用しない特定ポート番号にした。
【解決手段】電子メール送信制御プログラムは、電子メールを送信するためのメーラMと同じコンピュータ装置1で動作し、メーラMが送信しようとした電子メールを横取りするネットワークドライバ部Nと、横取りした電子メールを送信すべきかどうか判定するポリシー判定部Pと、ポリシー判定部Pによる判定結果に応じて、電子メールをそのまま電子メールサーバ装置宛に送信するかどうかを決定するプロキシーサーバ機能部Sとを備えている。このプロキシーサーバ機能部Sが電子メールをそのまま送信すると決定した場合、その電子メールの宛先ポート番号を通常はSMTPで使用しない特定ポート番号にした。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子メール送受信用プログラムによって送信される電子メールの送信を制御し、誤送信を防止するための電子メール送信制御プログラムに関する。
【背景技術】
【0002】
近年、あらゆる分野における事業活動において電子メールの活用は必要不可欠となっており、1日に100通を超える電子メールをやり取りすることが常態化している。
電子メールは手軽で瞬時に送受信が可能であるという利点がある一方で、誤った内容で送信してしまったり、宛先を間違えたりするケースも多い。
【0003】
そこで、こういったいわゆる電子メールの誤送信を未然に防ぐ方法が複数提案されている。誤送信を防止する仕組みにはいくつか存在するが、(1)ユーザが扱うクライアント装置にインストールされた電子メール送受信用ソフトウェアにメール誤送信防止機能を追加するタイプ、(2)電子メールを集配信するメールサーバ装置側にメール誤送信防止機能を追加するタイプ、(3)クライアント装置とメールサーバ装置との間に誤送信された電子メールを捕捉する誤送信防止用装置を別途設けるタイプ等がある。
上記のうち、(1)のようなものとしては例えば特許文献1等がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−193717号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の(1)〜(3)のような仕組みには、それぞれ一定の問題点やデメリットが存在する。
まず、(1)のようにクライアント装置の電子メール送受信用ソフトウェアに機能を追加する場合、少なくとも、ユーザが使用する可能性のある複数の電子メール送受信用ソフトウェア全てについてメール誤送信防止機能を開発する必要があり、開発に多大なコストを要するという問題がある。
また、ユーザが電子メール誤送信防止機能を持たない電子メール送受信用ソフトウェアを使用した場合には、そもそも電子メールの送受信を防止することができない、という問題もある。
【0006】
(1)の問題点に鑑みて、(2)や(3)のように電子メールサーバ装置側もしくは電子メールサーバ装置とクライアント装置との間に置いた誤送信防止用装置にメール誤送信防止機能を追加する方法を採用した場合、例えば、企業の社員がクライアント装置を社内LANに接続して使用する限り問題は起きないが、出張等で社外に持ち出して、別の電子メールサーバ装置を経由して送信した場合には誤送信の防止は不可能となってしまう。
【0007】
上記のような(1)乃至(3)の構成の問題点を解消するために、本発明者らは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラム(特願2010−022626号)を提案した。
この電子メール送信制御プログラムによれば、電子メール作成送信部(メーラ)によって送出されようとする全ての電子メールをネットワークドライバ部が横取りして、一旦、同一のコンピュータ装置内に存在するプロキシーサーバ機能部に転送し、当該電子メールを送信しても良いかどうかを判定することができるようになる。
また、ネットワークドライバ部がコンピュータ装置外部に送出されようとするIPデータパケットの宛先や送信元などの情報を適宜変更することにより、電子メール作成送信部(メーラ)に、電子メール送信制御プログラムの存在を意識させずに動作させることが可能になる。
なお、ここにいうネットワークドライバ部による「横取り」とは、特願2010−022626号の段落[0032]等にも記載されている通り、何らかのアプリケーション(メーラを含む)からの要求に従って、OSがIPデータパケットをコンピュータ装置外部に送出しようとした場合にその送信処理を中断することを指し、送信処理を中断した際にネットワークドライバ部がそのIPデータパケットの宛先IPアドレス等や送信元IPアドレス等を書き換えることを「転送」という。
【0008】
ところで、このようなコンピュータ装置には、前記電子メール送信制御プログラムと同じように送信される電子メールの中身を検定する他のプログラムが搭載されているケースがあり、当該他のプログラムと前記電子メール送信制御プログラムとが競合したために前記電子メール送信制御プログラムの動作がうまくいかなくなることがある。本発明者らは、そのことに気が付いた。
前記競合というのは、例えば、前記ネットワークドライバ部による電子メールの横取りの前後で、前記他のプログラム側で電子メールを同じように横取りして、当該他のプログラム側で宛先や送信元の情報を書き換えてしまったようなケースにおいて発生しうるものである。
競合する他のプログラム側で宛先や送信元を書き換えられてしまうと、前記ネットワークドライバ部が意図した通りに動作せず、前記電子メール送信制御プログラムによる仕組みが全体として機能しない恐れがある。
【0009】
こういった競合する他のプログラムを同時に動作させないことは、前記電子メール送信制御プログラムを利用する場合の使用条件の1つになるが、できるだけ同種のプログラムを同時に動作させても競合が起きないように、又は、競合が起きたことが分かるように前記電子メール送信制御プログラムに工夫を施すことが望ましい。
本発明は上記のような課題に鑑みてなされたものであり、同種の電子メールの内容検定用の他のプログラムが同一コンピュータ装置内に共存した場合にも、競合が発生しにくい、又は、競合の発生を検知可能な電子メール送信制御プログラム等を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明にかかる電子メール送信制御プログラムは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるためのものであり、前記ネットワークドライバ部は、前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段とを含み、前記プロキシーサーバ機能部は、前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段とを含み、前記ポリシー判定部は、ポリシーデータを取得する取得手段と、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含んでいる。
上記において、さらに、前記プロキシーサーバ機能部に、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を予め決められた番号であって電子メールの受信用に使用されない特定ポート番号に設定して送出する電子メールサーバ送出手段を備えさせた上で、前記ネットワークドライバ部には、前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が前記特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段を備えさせた。
【0011】
特願2010−022626号において本発明者らが提案した電子メール送信制御プログラムでは、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を電子メールサーバ装置が電子メールの受信用に使用するポート番号(通常は「25番」)に設定して送出していた。なお、この電子メールの送信元のIPアドレスは前記コンピュータ装置のIPアドレスであり、送信元ポート番号はプロキシーサーバ機能部が電子メールの送信用に使用するポート番号である。
そして、前記ネットワークドライバ部の中断手段で取得された電子メールの送信元ポート番号がプロキシーサーバ機能部が電子メールの送信用に使用するポート番号であれば、その電子メールについてはプロキシーサーバ機能部への転送の対象外としてそのまま送信を許可する(スルーして送信する)こととしていた。これは、いわゆるループバック(前記プロキシーサーバ機能部が送信する電子メールをプロキシーサーバ機能部へ転送すること)を回避するためである(特願2010−022626号の段落[0042]や図6等参照)。
【0012】
この特願2010−022626号の方法を採用した場合、もし、この電子メール送信制御プログラム以外に電子メールの検閲を行う他のプログラムが同時に動作していた場合、当該他のプログラムが、前記プロキシーサーバ機能部が電子メールサーバ装置宛に送信しようとする電子メールを前記ネットワークドライバ部よりも先に横取りして、その電子メールの送信元のポート番号を書き換えてしまったら、送信元ポート番号が書き換えられた後の電子メールをネットワークドライバ部が横取りすることになる。
前述の通り、ネットワークドライバ部は、電子メールの送信元ポート番号がプロキシーサーバ機能部が送信用で使用するポート番号であればスルーするが、そうでなければその電子メールをプロキシーサーバ機能部に転送してしまうため、いわゆるループバックが発生してしまう。
【0013】
このように、特願2010−022626号の方法によれば、他のプログラムが動作している場合には、ループバックの生じる恐れがあった。
これは、プロキシーサーバ機能部が送信する電子メールを他のプログラム側に横取りされて送信元ポート番号が書き換えられることによって生じる問題である。
そこで、本願では、前記プロキシーサーバ機能部が電子メールを電子メールサーバ宛に送信しようとする場合に、当該電子メールの送信先ポート番号を予め決められた特定の番号であって電子メールの受信用に使用されない特定ポート番号(例えば「8888番」等)に設定して送出するようにした。この方法によれば、前記プロキシーサーバ機能部が送信しようとする電子メールの宛先ポート番号が通常電子メールの受信用には使用されないポート番号であるから、他のプログラムが前記ネットワークドライバ部よりも先に横取りして送信元ポート番号を書き換える確率が低下する。
仮に他のプログラムがその電子メールを横取りしたとしても、宛先のポート番号が電子メールサーバ装置が電子メールの受信用で使用するポート番号(通常は「25番」)ではないので、当該他のプログラムの検閲の対象外となる確率が高まるためである。
ただし、この宛先ポート番号のまま電子メールをコンピュータ装置外部に送出しても、前記電子メールサーバ装置は当該電子メールを受け取ることができない。そこで、ネットワークドライバ部が、横取りしたIPデータパケットの宛先ポート番号が前記特定ポート番号(例えば「8888番」)の場合には、これを前記電子メールサーバ装置が電子メールの受信用に使用するポート番号(通常は「25番」)に書き換えて前記電子メールサーバ装置宛に送信する。
【0014】
このように、プロキシーサーバ機能部とネットワークドライバ部が協調して動作し、プロキシーサーバ機能部側で本来意図していない特定ポート番号(送信相手先である電子メールサーバ装置の受信用ポート番号とは異なる特定ポート番号)を付与して他のプログラムに捕捉されにくくすることで、電子メール送信制御プログラムが本来の目的を達成することができるようになる。
【0015】
なお、前記電子メール送信制御プログラムを前記コンピュータ装置を破棄通知機能部としても動作させるためのプログラムとし、その破棄通知機能部には、前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、当該破棄通知用電子メールを、送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含ませるようにすることが望ましい(請求項2)。
【0016】
電子メール送信プログラムのユーザは、原則として電子メール送信プログラムの処理が正常に完了したら電子メールの送信が行われたものと考えるのが一般的であるので、電子メールを破棄した旨を別途通知することで、電子メールが送信を許可されていないものであったことを認識させることができるようになる。
なお、このような破棄通知用電子メールを送信する場合にも、ネットワークドライバ部がプロキシーサーバ機能部に対してループバックして送信しないように、宛先のポート番号を特定ポート番号とすれば良い。
【0017】
なお、他のプログラムの動作内容によっては、ループバックが発生するケースもあるため、前記プロキシーサーバ機能部に、前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備えさせておくことが望ましい(請求項3)。
【0018】
もしループバックが発生した場合、プロキシーサーバ機能部は同じ電子メールをエンドレスに繰り返し送信しようとするため、コンピュータ装置の負荷が増大してシステムがダウンする恐れもある。
そこで、プロキシーサーバ機能部にこのようなループバックを検知する機能を設けておくことで、電子メール送信制御プログラムが適切に動作しているかどうかを判断することができるようにした。
そして、このループバック検知手段によりループバックの発生が検知された場合には、前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させてさらなるループバックの発生を阻止して、コンピュータ装置の負荷の増大を防止することが望ましい(請求項4)。
【0019】
なお、前記ポリシー判定部に、ユーザからの入力を受け付けるための表示を行う表示手段を備えさせ、当該表示手段に、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行わせるとともに、前記情報通知手段に、当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含めさせるようにしても構わない(請求項5)。
【0020】
前記ポリシー判定部が機械的にポリシーに合致するかどうかに基づいて電子メールを送信するかどうか決めるということだけではなく、ユーザに注意喚起してユーザに最終的な判断を委ねる仕組みも取り入れた方が、柔軟性が高まり利便性が向上するためである。
【0021】
なお、この電子メール送信制御プログラムを用いて実現されるコンピュータ装置の動作方法(請求項7)やコンピュータ装置自体も大変有用である(請求項8)。
【0022】
また、この電子メール送信制御プログラムにおいては、前記特定ポート番号を用いたネットワークドライバ部による電子メールの転送処理は行わずに、前記プロキシーサーバ機能部に対して前記ループバック検知手段と追加手段とを備えさせるだけでも有意義である(請求項6)。
他のプログラムとの競合を回避する機能を備えていなくとも、少なくとも他のプログラムとの競合等の何らかの要因によってループバックという電子メール送信制御プログラムの不適切な動作が検知できれば、コンピュータ装置が負荷の増大によってダウンすることを未然に防止できると共に、同時に動作させるソフトウェアの種類を見直し等することで適切な動作をさせることができるようになるためである。
【発明の効果】
【0023】
以上のように、本発明によれば、電子メールの誤送信防止機能を備えた電子メール送信制御プログラムについて、他のプログラムとの競合を回避したり、他のプログラムとの競合を検知したりすることができるようになる。
【図面の簡単な説明】
【0024】
【図1】本発明に係るコンピュータ装置のハードウェア構成の概要を示す模式図である。
【図2】本発明に係るコンピュータ装置に搭載されたプログラムの関係を示す模式図である。
【図3】特願2010−022626号で提案済みの各プログラム等の動作シーケンスの概要を示す図である。
【図4】SMTPの通信手順を示す模式図である。
【図5】特願2010−022626号で提案済みの各プログラム等の動作シーケンスにおいて、ループバックが発生してしまうケースを示す図である。
【図6】本発明における各プログラム等の動作シーケンスにおいて、ループバックが発生しない様子を示す図である。
【図7】本発明による電子メール送信制御方法においてメーラMから送出される電子メールがプロキシーSに転送されて応答信号がメーラMに返信されるまでに使用されるIPアドレスやポート番号の一例を示す図である。
【図8】特願2010−022626号で提案済みの電子メール送信制御方法において、他のプログラムXが搭載されていないためにプロキシーSから電子メールサーバ2に対して正常に電子メールが送信されるケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図9】特願2010−022626号で提案済みの電子メール送信制御方法において、他のプログラムXが搭載されているためにプロキシーSから電子メールサーバ2に対して正常に電子メールが送信されずにループバックが起きるケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図10】本発明の電子メール送信制御方法において、他のプログラムXが搭載されていてもプロキシーSから電子メールサーバ2に対して正常に電子メールが送信され、ループバックが起きないケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図11】本発明における各プログラム等の動作シーケンスにおいて、電子メールを破棄する旨を通知する破棄通知用電子メールを送信する様子を示す図である。
【発明を実施するための形態】
【0025】
(第1の実施形態)
以下、本発明の第1の実施形態を、図面を参照しながら詳細に説明する。
図1は、メールの作成と送信を行うコンピュータ装置1(クライアント)のハードウェア構成を示す模式図である。
【0026】
〔構成の概要〕
CPU101は、コンピュータ装置1の備える機能を実現するためのコンピュータプログラムをハードディスク112から読み出してメモリ111にコピーして実行する機能を備えている。
本発明で実行される前記コンピュータプログラムとしては、コンピュータ装置1のオペレーティングシステム(以下、OSという。)のプログラム、電子メール送信プログラムM(以下、メーラという。)、及び電子メール送信制御プログラムが挙げられる。
この場合、前記電子メール送信制御プログラムは、ネットワークドライバ部N、プロキシーサーバ機能部S、及び、ポリシー判定部Pを含む構成となっている。
OSや電子メール送信制御プログラムは、コンピュータ装置1の電源がオンされた時点で自動的にハードディスク112から読み出されてメモリ111にコピーされ、常時実行可能な状態となるが、電子メール送信プログラムは、通常ユーザがメールの作成や送受信を行うタイミングで随時ハードディスク112から読み出されてメモリ111にコピーされて実行される。
【0027】
なお、OSには、電子メールを送受信するために必要なTCP/IP通信を実行するためのTCP/IP通信ライブラリが含まれており、予め用意されたAPI関数を用いてIPデータパケットの送受信を行うことができるようになっている。このAPI関数は、前記TCP/IP通信ライブラリとアプリケーションプログラムとの間のデータの受け渡しを行うために使用されるものである。
そして、このTCP/IP通信ライブラリによって、コンピュータ装置1から外部に送信すべきIPデータパケットを通信インタフェース121を介して他のコンピュータ装置(例えば電子メールサーバ2)に送信したり、他のコンピュータ装置からのIPデータパケットを通信インタフェース121を介して受信したりする機能が実現される。
【0028】
なお、図1ではコンピュータ装置1のCPUが1つだけの例を示しているが、複数のCPUによって構成されていても良いし、実現すべき機能のうちの一部については、その機能を実行可能な専用チップ(IC等)を備えるハードウェア構成としても良い。
【0029】
〔プログラムの動作〕
図2は本発明の電子メール送信制御プログラムの構成の概要を示すブロック図である。
以降では、図3および図5で特願2010−022626号で提案済みの発明についての動作シーケンスを説明した上で、これと対比するように本発明の動作シーケンスを図6を用いて説明する。また、これらの動作シーケンスにおいて使用されるポート番号等を図7乃至図10を用いて説明する。
実施形態に登場する各種プログラムはコンピュータ装置1に対する命令を組み合わせたものであるから、プログラムによって実現される動作や機能の主体はあくまでもコンピュータ装置1であるが、発明内容を把握しやすくするために、以下では各種プログラムを動作の主体として記載する。
【0030】
〔メーラMの設定〕
ユーザが使用するメーラMには電子メールの作成と送受信をする機能が備えられており、ユーザはメーラMを使用して作成した電子メールを送信することができる。
通常、メーラMは、使用する電子メールサーバ装置のIPアドレスとポート番号を設定しなければ動作しない仕組みになっているので、メーラMには電子メールサーバ2のIPアドレスとポート番号が設定されている。
本発明では、このコンピュータ装置1に電子メール送信制御プログラムがインストールされているかどうかに関係なく、メーラMには常に電子メールサーバ2のIPアドレスA2とポート番号N2が設定されていれば良く、電子メール送信制御プログラムがインストールされている場合にもこの設定を変更する必要はない。
【0031】
通常、企業などの社員が社内LANに接続されたコンピュータ装置を使って電子メールの送受信を行う場合、ほとんど全ての社員は当該企業の情報システム部門が準備する同一の電子メールサーバを用いてメールの送受信を実施するため、全員が同じ設定を行えば済むことが多い。
本発明では、電子メール送信制御プログラムがインストールされているかどうかに関係なく電子メールサーバ2のIPアドレスA2とポート番号N2を設定すれば良い(電子メール送信制御プログラムがインストール/アンインストールされる前後で設定を変更しなくても良い)という点で導入が容易である、というのがメリットの1つである。
【0032】
もし、電子メール送信制御プログラムがインストール/アンインストールされる前後でメーラMの設定を変更しなければいけない仕組みとすると、社員それぞれに対して設定方法を教授する手間が発生するという不便さがあり、特に、社員の使用するコンピュータ装置毎に異なる設定をしなければいけない場合には、設定方法を教授する手間も大きくなってしまう。また、設定変更を忘れたり変更ミスをしたりする不慣れな社員が多い場合には、個々の社員に対して個別にサポートを行う必要性が生じるという問題もあるが、本発明では、そういった手間はほとんど発生しない。
【0033】
〔SMTPの基本手順を用いた電子メールの送信処理の概要〕
コンピュータ装置1のOSに含まれるTCP/IP通信ライブラリ(以下、通信ライブラリという。)Tを使用するために用意されるAPI関数には、例えば、メーラMによってメールの送信処理が実行される際に送信されるべきIPデータパケットの送信先やデータ内容等を引数としてコールされる送信関数や、特定のポート番号に対応付けて生成されるTCPのソケット等の識別子を引数として当該ポート番号宛に送信されたIPデータパケットを受信するためにコールされる受信関数等がある。
メーラMは、電子メールの送信処理を実行する場合、電子メールの送信先のメールアドレスやメール本文の文字列等を格納したテキストデータへのポインタや送信先のIPアドレス等を引数として送信関数をコールすることで、電子メールを送信することができる。
【0034】
なお、電子メールの送受信を行う場合、通常SMTP(Simple Mail Transfer Protocol)というプロトコルを使用することが多い。このSMTPでは、電子メールサーバと電子メール送受信用のクライアント装置との間で所定の通信手順に従ってやりとりが行われる。この通信手順を、図4を用いて説明する。
なお、このSMTPの通信手順はIETF(Internet Engineering Task Force)のRFC(Request For Comment)で標準仕様が定められており、以下はそのRFCで定められた手順と同じである。
まず、電子メールサーバとクライアント装置との間でTCPの通信コネクションが確立される。この場合、電子メールサーバのポート番号は通常25番が使用される。そして、以降のやりとりは、このTCP通信コネクション上で、IPデータパケット形式のデータを交換することで行われる。
【0035】
TCP通信コネクションが正常に確立されたら、まず、クライアント装置は、自身のドメイン名を格納したEHLOコマンドを送信する。電子メールサーバはこれに応じて応答信号を返信する。
クライアント装置は、EHLOコマンドに対する応答信号を受けたら、電子メールの送信元メールアドレス(通常はユーザのメールアドレス)を格納したMAILコマンドと宛先メールアドレスを格納したRCPTコマンドとをそれぞれ送信する。
そして、これらについて応答信号を受信できたら、DATAコマンドを送信してメール本文の送信を開始する。メール本文のデータはメールの長さに応じて複数のIPデータパケットに分割して送信することができる。メール本文のデータを全て送り終えたら、終了を示すコード(ピリオド)を送信した後、QUITコマンドで通信を完了させる。
なお、電子メールの送信が終わったらその時点でTCP通信コネクションを切断する。
【0036】
〔電子メール送信制御プログラムの動作の概要〕
まず、ユーザがメーラMを操作して電子メールを作成し、送信処理を開始すると(メーラMの送信ボタンの押下等を行うと)、メーラMは電子メールサーバ2との間にTCP通信コネクションを確立しようとする。
そして、TCP通信コネクションが確立されたら、メーラMは、前述のSMTPの手順に沿って、電子メールの送信処理を開始することになる(図3のStep2)。
このメーラMによるTCP通信コネクションの確立や電子メールの送信処理について、OSが実行する処理を中断させた上で、後述する「横取り」を行うのがネットワークドライバ部Nである。
【0037】
ネットワークドライバ部Nは、コンピュータ装置1においてIPデータパケットの送信処理が実行されると、この処理をフックする機能を備えている(図3のStep1)。このフック機能は、何らかのアプリケーションプログラムがOSに対してIPデータパケットの送信を要求する処理を実行(送信関数をコール)した場合、その送信処理を中断すると共にIPデータパケットをネットワークドライバ部Nに引き渡す、というものである。このフック機能により、ネットワークドライバ部Nは、実際に送信処理が実行される前にIPデータパケットを「横取り」することができるようになる(図3のStep3)。
メーラMによって電子メールの送信処理が実行されると、OSの通信ライブラリTの送信関数がコールされるが、この電子メールもネットワークドライバ部Nによって横取りされることになる。
なお、このフック機能による横取りを可能な状態にするには、通常、コンピュータ装置1の起動後、電子メール送信制御プログラムの実行が開始された直後に一度フック機能を有効化するコマンドを実行しておけば、それ以降、送信関数がコールされるたびにネットワークドライバ部Nが「横取り」をすることが可能となる。
【0038】
ネットワークドライバ部Nは、横取りしたIPデータパケットが、電子メールのデータやコマンド及びその応答信号以外の電子メールとは無関係のものであれば、そのIPデータパケットに対して何らの加工処理等を施すことなく、そのまま送信を許可する。
一方、横取りしたIPデータパケットが、電子メールに関するものであれば、そのIPデータパケットの宛先のIPアドレスA2(図7では「10.1.1.1」)をコンピュータ装置1自身のIPアドレスA1(図7では「10.0.0.1」)に書き換えると共に、宛先のポート番号N2(図7では「25」)を、後述するプロキシーサーバ機能部(以下、プロキシーという。)Sの使用するポート番号N1(プロキシーSがメーラMから送信されてネットワークドライバ部Nによって転送されてくるIPデータパケットを受信するために使用するポート番号で、図7では「1021」)に設定する。なお、プロキシーSと電子メールサーバ2が同一の番号を使用している場合には、ポート番号の書き換えは行わなくても構わない。
そして、前記書き換えた内容でIPデータパケットを送信するように通信ライブラリTに指示する。以下、宛先のIPアドレス等を書き換えた上で通信ライブラリTが電子メールを送信する処理のことを「転送」と呼ぶことにする(図3のStep4)。
【0039】
なお、前記横取りしたIPデータパケットが電子メールに関するものかどうかは、当該IPデータパケットの送信先又は送信元のポート番号がSMTPプロトコルで通常使用されるポート番号(通常は25番)であるかどうかで判断すると良い。ただし、この場合、25番以外のポート番号(例えば2525番)をSMTPプロトコル用に使用することが分かっているのであれば、当該25番以外の番号を送信先ポート番号とするIPデータパケットを電子メールに関するものと判断しても良い。また、複数のポート番号のいずれか(例えば25番と2525番)を送信先ポート番号とするIPデータパケットを電子メールに関するものと判断することもできる。
また、ポート番号以外のIPデータパケットの形式等から電子メールに関するものであるかどうかを判断するようにしても良い。前述のSMTPに従ってやり取りされるコマンドが有するデータ形式は予め標準化された固定的な形式であるから、コマンドのデータ形式を記憶しておいて、取得されたIPデータパケットの形式が当該記憶してある形式と一致するかどうかを比較して一致すれば電子メールに関するものである、と判断するようにしても構わない。
【0040】
プロキシーSは、ネットワークドライバ部Nに指示されて通信ライブラリTが転送するIPデータパケットを受信する(図3のStep5)。この場合、そのIPデータパケットには電子メールに関するデータやコマンドが含まれているので、図4に示すSMTPの通信手順に従って逐次応答信号の送信処理を実行する(図3のStep6)。
このプロキシーSによる応答信号の送信処理も、メーラMによる電子メールの送信処理と同様に、OSの通信ライブラリTの送信関数をコールすることで実行されるが、ネットワークドライバ部Nは、この応答信号の送信処理についても横取りを行う(図3のStep7)。
この場合、応答信号の送信元のIPアドレスは、コンピュータ装置1自体のIPアドレスA1、ポート番号はプロキシーSの使用するポート番号N1となっている。プロキシーSが送信処理を実行したためである。
そこで、ネットワークドライバ部Nは、このIPアドレスA1とポート番号N1を電子メールサーバ2のIPアドレスA2及びポート番号N2(通常は25番)に書き換えて転送するように通信ライブラリTに通知し(図3のStep8)、この通知を受けた通信ライブラリTが応答信号をメーラM宛に送信する(図3のStep9)。
【0041】
この転送された応答信号は、メーラMによって受信されるが、メーラMは自己が電子メールの送信処理を実行した際の宛先のIPアドレスA2とポート番号N2(電子メールサーバ2のIPアドレスとポート番号)と同じIPアドレスとポート番号からの応答信号として受信することができる。このため、メーラMは、あたかも電子メールサーバ2に対して電子メールを送信し、その応答信号を受信できたかのように認識することになる。
このように、ネットワークドライバ部NがメーラMの送受信する電子メールに関連するIPデータパケットを横取りして転送することで、メーラMに対する特別な機能の追加や設定の変更を行わなくても、メーラMの動作にエラーが発生することはない。
つまり、メーラMは、本発明の電子メール送信制御プログラムの有無に関係なく動作できることになる。
また、ネットワークドライバ部Nは、コンピュータ装置1から送出されようとする全てのIPデータパケットを対象として電子メールの横取りを行うため、メーラMの種類を問わず確実に電子メールを捕捉することが可能となる。
【0042】
この一連の動作で使用されるIPアドレスやポート番号の一例を示したのが図7である。
【0043】
一方、ネットワークドライバ部Nによって転送された電子メールを受信したプロキシーSは、その電子メールをポリシー判定部Pに通知する。このポリシー判定部Pは、いわゆるエージェントとして機能するプログラムであり、予めハードディスク112に記憶したポリシーデータPD(ポリシーデータを記憶するネットワーク上のサーバ装置等から取得しても良い)を参照して、その電子メールについて判定を実施する。
例えば、特定のメールアドレスへの電子メールの送信を禁じる旨のポリシーが定義されている場合に、送信先メールアドレスが禁止されているメールアドレスであるかどうかを判定したり、添付ファイルが暗号化されていない電子メールの送信を禁じる旨のポリシーが定義されている場合に、添付ファイルの暗号化がされているかどうかを判定したりする。
【0044】
このポリシーデータPDには複数のポリシーを定義することができ、例えば、添付ファイルを禁じるポリシーA、特定の相手に対する送信を禁じるポリシーBおよびメール本文に特定の文字(例えば「秘密」)を含む電子メールの送信を禁じるポリシーCの3つを定義することができる。
このように複数のポリシーが含まれている場合、ポリシー判定部Pは、各ポリシーに合致するか否かをそれぞれ判定し、その結果をプロキシーSに通知する。
【0045】
このポリシー判定部Pによる判定結果は、当該電子メールの送信の「許可」か「破棄」か、という二者択一であっても良いし、ユーザに送信するかどうかの判断を委ねる「ユーザ判断待ち」を加えた三者択一としても良い。また、「許可」と「ユーザ判断待ち」の二者択一とすることもできる。
ポリシー判定部Pの判定結果が「許可」であれば、その判定結果を含む判定情報を通知されたプロキシーSは、電子メールの内容を加工等することなく、電子メールサーバ2宛にそのまま送出し、判定結果が「破棄」であれば、電子メールをそのまま破棄する(図3のStep11)。
なお、判定結果が「ユーザ判断待ち」となった場合には、ユーザ判定入出力部Uに対して、ユーザへの問いかけを行うGUIの呼び出しを要求する。具体的には、GUIにおいて、ユーザに対し、「このメールはポリシー判定の結果、送信を許可されていないメールアドレスに対して送信しようとしています。このまま送信しますか?」といった内容の画面表示を行うと共に、判断結果の入力手段(「はい」、「いいえ」のボタン表示等)を表示する。
そして、このユーザの判断の結果を受けて、ポリシー判定部PはプロキシーSに対して判定情報を通知する(ポリシー判定部Pに関連する処理は図3のStep10)。
【0046】
なおこの実施形態では、ポリシー判定部Pにおいて電子メールの送信を許可するか破棄するかまで判定してからその判定結果をプロキシーSに通知するようにしているが、ポリシー判定部Pは通知された電子メールがポリシーに合致するものか否かについての判定結果のみを通知し、その判定の結果を受け取ったプロキシーSの側で電子メールの送信を許可するか破棄するかを決定する、ということにしても構わない。
例えば、ポリシーデータにポリシーA、ポリシーBおよびポリシーCの3つのポリシーが含まれている場合に、ポリシー判定部Pの方では、各ポリシーに合致するか否かの結果のみをプロキシーSに通知し、プロキシーSがその3つのポリシーの各々に合致するかどうかの結果を総合的に判断した上で電子メールの送信を許可するかどうかを決定する、という実施形態でも構わない。
例えば、プロキシーSの方で、2つ以上のポリシーに合致している場合にのみ電子メールを破棄するという決定をするようにしている場合、ポリシー判定部PからポリシーAには合致しないがポリシーBおよびポリシーCには合致するという判定結果を受けた場合には、2つ以上のポリシーに合致するため、プロキシーSは電子メールを破棄するという決定を行い、ポリシー判定部PからポリシーAとポリシーBには合致しないがポリシーCには合致するという判定結果を受けた場合には、1つのポリシーにしか合致しないため、プロキシーSは電子メールの送信を許可するという決定を行う、といった方法でも構わない。
また、処理時間の短縮のために複数のポリシーに優先度を設けておき、優先度の高いポリシー(例えばポリシーA)から順番にそのポリシーに合致しているかどうかを判定していって、優先度の高いポリシーに合致していると判断されればその時点で判定を打ち切って(その他の優先度の低いポリシーについての判定を行わずに)、優先度の高いポリシーに合致しているという判定結果のみをプロキシーSに通知するといった方法を用いても構わない。
【0047】
つまり、ポリシー判定部Pは、プロキシーSが電子メールの送信を許可するか破棄するかを決定しうる情報である判定情報をプロキシーSに対して送信すれば良いのであり、必ずしもポリシー判定部Pで電子メールの送信を許可するかどうかまで判定しなくても構わない。
【0048】
以上の通り、図3のStep1乃至Step10の動作シーケンスや図7で説明したIPアドレスやポート番号の使用方法は、本発明と特願2010−022626号で提案済みの電子メール送信制御プログラムとでは差がなく同じである。
【0049】
〔プロキシーSから電子メールサーバ2への電子メールの送信処理〕
本発明では、プロキシーSから電子メールサーバ2への電子メールの送信処理が特願2010−022626号で提案済みの方法と異なっている。そこで、まず、特願2010−022626号で提案済みの方法を図3と図8に従って説明する。
プロキシーSが電子メールをそのまま電子メールサーバ2に送信することに決定した場合、プロキシーSが電子メールの送信処理を実行すると(図3のStep12−1)、通信ライブラリTの送信関数がコールされるため、他の場合と同様にネットワークドライバ部Nが当該電子メールを横取りすることになる(図3のStep12−2)。
ただし、この場合、ネットワークドライバ部Nは、横取りしたIPデータパケットの送信元のIPアドレスとポート番号の組み合わせが、プロキシーSが前記送信処理を行った際に使用したIPアドレスA1(図8では「10.0.0.1」)とポート番号N3(プロキシーSが電子メールサーバ2とIPデータパケットを送受信するために使用するポート番号で、図8では「9000」)と一致すれば、何らの処理も行わずに(データの書き換えを行わずに)そのまま送信を許可する(スルーして送信する)(図3のStep12−3)。そして、通信ライブラリTはこの電子メールを送信する(図3のStep12−4)。
ネットワークドライバ部Nがこの電子メールを横取りしてプロキシーS宛に転送してしまうと、いわゆるループバックの格好になって、電子メールサーバ2に対して電子メールを送ることができなくなるためである(Step12はStep11で電子メールを破棄しないと判定した場合の一連の処理)。
【0050】
なお、ネットワークドライバ部Nが横取りした電子メールが、プロキシーSが電子メールサーバ2宛に送ったものか、メーラMが電子メールサーバ2宛に送ったものか、を区別するには、上記のようにプロキシーSが送信処理を行ったときに使用した送信ポート番号N3をプロキシーSから予め通知してもらっておき、横取りした電子メールの送信元ポート番号がプロキシーSの送信元ポート番号N3と一致すればプロキシーSが送信元で、そうでなければメーラMが送信元である、と認識すれば良い。
【0051】
この特願2010−022626号で提案済みの一連の動作で使用されるIPアドレスやポート番号の一例を示したのが図8である。
【0052】
ここで、この特願2010−022626号で提案済みの一連の動作では、コンピュータ装置1に電子メール検閲用のプログラムである他のプログラムXが搭載されており、当該他のプログラムXがネットワークドライバ部Nよりも先に電子メールを横取りして何らかの処理を加える可能性がある場合、ネットワークドライバ部Nがループバックを引き起こしてしまうことがある点について図5及び図9を用いて詳細に説明する。
もし、プロキシーSが送信する電子メールの宛先ポート番号を電子メールサーバ2が通常電子メール受信用に使用するポート番号N2(図9にあるように通常は「25番」)にすると(図5のStep122−1)、他のプログラムXがネットワークドライバ部Nよりも先に横取り(図5のStep122−2)した場合、他のプログラムXは横取りしたIPデータパケットが電子メールであると認識できることになる。この場合、他のプログラムXが電子メールに対して何らかの検閲処理等を行った後に、当該電子メールの送信元ポート番号を他のプログラムXが使用するポート番号N6(図9では「9999番」)に書き換えて転送してしまう可能性がある(図5のStep122−3及び4)。
もし、この他のプログラムXに送信元ポート番号を書き換えられてしまうと、ネットワークドライバ部Nは、当該電子メールがプロキシーSが送信処理を行った電子メールであると認識することができなくなる。これは、図3でも既に説明した通り、横取りしたIPデータパケットの送信元のIPアドレスとポート番号の組み合わせが、プロキシーSが前記送信処理を行った際に使用したIPアドレスA1(10.0.0.1)とポート番号N3(9000)と一致した場合にのみプロキシーSが送信処理を行った電子メールであると認識するようにしていたためである。
ネットワークドライバ部Nは、横取りした電子メールがプロキシーSが送信処理を行った電子メールであると認識できなければ、プロキシーS以外のアプリケーションソフトウェア(通常は電子メール送受信用ソフトウェア)が送信処理した電子メールであると認識してプロキシーSに転送することになるため、ループバックが発生してしまう(図5のStep122−5乃至7)。すなわち、プロキシーSが、図5のStep122−7で転送されてくるメールを図3のStep5で転送されてくるメール(メーラMから発信されたメールのネットワークドライバ部Nによる転送)と判断してしまい、プロキシーSが同一の電子メールについて、Step6以降の処理を複数回繰り返し実行することになってしまう。
【0053】
そこで、本発明ではプロキシーSから電子メールサーバ2への電子メールの送信処理に以下の工夫を施した。この様子を図6と図10とを用いて詳細に説明する。
プロキシーSが電子メールを破棄せずに電子メールサーバ2に送信することに決定した場合、プロキシーSが電子メールの送信処理を実行して(図6のStep123−1)、通信ライブラリTの送信関数がコールされるが、この場合の電子メールの宛先ポート番号を、電子メールサーバ2が通常電子メール受信用に使用するポート番号N2(図9や図10における「25番」)ではなく、予め決められた番号であって電子メールの受信用に使用されない特定ポート番号N5(図10では「8888番」)に設定して送出する。
このように、宛先のポート番号を前記特定ポート番号N5のようなSMTPでは通常使用されないポート番号にしておけば、他のプログラムXが当該電子メールを横取り(図6のStep123−2)した場合に、そのIPデータパケットが電子メールではない、と認識して、何ら処理を行わずにスルーする可能性が高くなる(図6のStep123−3及び4)。
【0054】
以上のように、本発明では他のプログラムXが同一のコンピュータ装置1に搭載されている場合であっても、当該他のプログラムとの競合を回避できる確率が高くなる。
なお、この電子メールは、このままでは電子メールサーバ2の特定ポート番号N5宛に送出されて電子メールサーバ2が受信できないため、他のプログラムXが横取りした後にネットワークドライバ部Nで横取りした際に、送信先ポート番号を電子メールサーバ2が受信可能なポート番号N2(図10における25番)に置き換えてから電子メールサーバ2に向けて転送するようにした。
そうすることで、他のプログラムXとの競合を回避しつつ、電子メールをプロキシーSの所望通りに電子メールサーバ2の電子メール受信用ポート番号N2宛に送信することができるようになる(図6のStep123−5乃至8)。
【0055】
〔電子メールの破棄を通知する破棄通知用電子メールの送信処理〕
このように、プロキシーSは、ポリシー判定部Pによる判定結果に応じて、電子メールを破棄するか送信するかを決定するが、電子メールを送信する場合には、ユーザに特段の通知を行う必要はない。ユーザはメーラMにおいて電子メールの送信処理を実行し、その処理がエラーなく完了したことを見届ければそれで足りるからである。
一方、プロキシーSが電子メールを破棄した場合には、そのことを何らかの形でユーザに通知することが望ましい。なぜならば、ユーザはメーラMで電子メールの送信処理を実行し、エラーなく完了したことを見届けているため、電子メールを確かに送信したつもりになっているからである。
【0056】
そこで、プロキシーSは、ポリシー判定部Pから通知された判定結果に応じて電子メールを破棄した場合、当該電子メールを破棄した旨の破棄通知用電子メールを新たに作成すると良い。破棄通知用電子メールの宛先電子メールアドレスはユーザの使用する電子メールアドレス(破棄した電子メールの送信元メールアドレス)である。プロキシーSは、この破棄通知用電子メールを電子メールサーバ2宛に送信することが望ましい。
この場合にも、図11に示すように、プロキシーSがメーラMから送信された電子メールを電子メールサーバ2宛に送信する場合と同様に、当該破棄通知用電子メールの送信先のポート番号を前記特定ポート番号(例えば「8888番」)にすれば良い(図11のStep132−1)。
そうすれば、他のプログラムXの検閲対象にならずに送信元ポート番号の書き換え等が生じる確率が低くなるため、他のプログラムXとの競合によるループバックを回避することができるようになる(図11のStep132−2乃至4)。
なお、この場合もネットワークドライバ部Nが他のプログラムXの後で電子メールの横取りをし、その電子メールの宛先ポート番号をN6からN2に書き換えれば良い(図11のStep132−5乃至8)。
【0057】
なお、この破棄通知用電子メールの本文には、破棄された電子メールのメール本文の内容を引用しておくことが望ましい。ユーザに対して、破棄された対象がどの電子メールであったかを知らせるためである。
また、破棄した理由についても、本文に記載しておくことが望ましい。ユーザが電子メールを再編集して送信等する際に、その破棄の理由等を参照できれば、その理由を解消した上で再送信することができるためである。
さらに、破棄通知用電子メールのヘッダの領域(例えば、「In−Reply−To」や「References」の領域)に、破棄した電子メールのヘッダの領域に格納されていた「Message−Id」の値を転記しておくようにしても良い。このようにすれば、メーラMを操作して送受信済みの電子メールを並べ替え処理等した場合に、破棄された送信済み電子メールと破棄通知用電子メールとが連続した位置関係になるので、ユーザが容易に確認可能となり至便である。
【0058】
〔ループバックの検知処理〕
なお、本発明のように、プロキシーSとネットワークドライバ部Nとを協調して動作させて、プロキシーSの送信する電子メールの宛先ポート番号を特定ポート番号N5にしたとしても、他のプログラムXの動作内容等によっては、やはりループバックが発生する可能性がある。例えば、ネットワークドライバ部NがプロキシーS宛に転送した電子メールをネットワークドライバ部Nよりも後で他のプログラムが横取りしたような場合である。
【0059】
ループバックが発生したときの一番の問題点は、プロキシーSが同じ電子メールの送信を繰り返すことによるコンピュータ装置1の処理負荷の増大である。短期間にプロキシーSに対してエンドレスに電子メールの送信を繰り返し行うことになるため、コンピュータ装置1のCPU101がオーバーフローしてシステムがダウンする危険性が高い。
従って、ループバックが発生した場合にはそれを的確に検知すると共に、ループバックの繰り返しを防止できるようにすることが望ましい。
【0060】
そこで、本発明では、プロキシーSが電子メールサーバ2宛に送信する電子メールのヘッダ部分にそのことを識別可能なループバック検知用文字列を追加するようにすることが望ましい。具体的には、電子メールのヘッダ部分に「X−Mcv−Sender:McvProxy」などのような文字列を一行追加する方法である。
なお、追加する文字列はこのようなものに限られず、追加されたとしても電子メールのユーザにとって影響がなく、かつ、通信ライブラリTによる電子メールの送信処理に対しても影響を及ぼさない文字列であればどのようなものであっても良い。
【0061】
そして、プロキシーSはポート番号N3で受信した電子メール(ネットワークドライバ部Nが転送する電子メール)のヘッダ部に、自身が送信処理を行ったものと区別可能な前記ループバック検知用文字列(例えば「X−Mcv−Sender:McvProxy」)が存在するかを判定する。
もし、受信される電子メールに前記ループバック検知用文字列が含まれているのであれば、プロキシーSが送信した電子メールがループバックしていると判断できるため、このコンピュータ装置1では、他のプログラムとの競合等の何らかの要因で、本発明にかかる電子メール送信制御プログラムが適切に動作していない、ということが分かる。
【0062】
すなわち、例えば、特定ポート番号N5を用いた処理を行わなかったために図5のようにループバックが発生したとしても、プロキシーSが図5のStep122−1でメール送信要求を行う際に、前記ループバック検知用文字列を電子メールに付与しておけば、図5のStep122−7で当該電子メールがループバックされてきた場合に、そのことを検知できるようになるのである。
そして、ループバックが検知された場合には、異常が発生したと判定してネットワークドライバ部Nによる電子メールの横取り処理を中止すると共に、ユーザやネットワークシステムの管理サーバ等に対して、異常が発生した旨を通知するようにすれば良い。
【0063】
このように、プロキシーSの電子メール送信処理にループバック検知機能を付与することで、他のプログラムとの競合等の要因でコンピュータ装置1がダウンする事態を未然に回避することができるようになる。また、ユーザが電子メール送信制御プログラムに競合が起きており、正常動作させるためには何らかの対策(他のプログラムのアンインストール等)を行う必要があると認識することが可能になる。
【0064】
なお、このループバック検知機能は、特定ポート番号を利用した他のプログラムとの競合を回避する機能の有無とは関係なく有効な機能である。つまり、電子メール送信制御プログラムに対して競合を回避する機能を付与していない場合であっても、このループバックを検知する機能を設けておくことが望ましい。
ループバック検知機能を備えさせることによって、他のプログラムとの競合が発生しているか否かだけでも検知できれば、電子メール送信制御プログラムを正しい環境で動作させる(正しく動作させられない環境では動作させない)ことが可能となるからである。
【0065】
以上のように、本発明の電子メール送信制御プログラムでは、特願2010−022626号で提案済みの電子メール送信制御プログラムに対して、新たに他のプログラムとの競合を回避したり、競合によるループバックを検知したりする機能を追加したので、電子メール送信制御プログラムの導入を容易にすることが可能になる。
【0066】
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0067】
1 コンピュータ装置、 101 CPU、 111 メモリ、 112 ハードディスク、 121 通信インタフェース、 2 電子メールサーバ
M 電子メール送信プログラム、 N ネットワークドライバ部、 S プロキシーサーバ機能部、 P ポリシー判定部、 PD ポリシーデータ、 U ユーザ判定入出力部、 T TCP/IP通信ライブラリ
【技術分野】
【0001】
本発明は、電子メール送受信用プログラムによって送信される電子メールの送信を制御し、誤送信を防止するための電子メール送信制御プログラムに関する。
【背景技術】
【0002】
近年、あらゆる分野における事業活動において電子メールの活用は必要不可欠となっており、1日に100通を超える電子メールをやり取りすることが常態化している。
電子メールは手軽で瞬時に送受信が可能であるという利点がある一方で、誤った内容で送信してしまったり、宛先を間違えたりするケースも多い。
【0003】
そこで、こういったいわゆる電子メールの誤送信を未然に防ぐ方法が複数提案されている。誤送信を防止する仕組みにはいくつか存在するが、(1)ユーザが扱うクライアント装置にインストールされた電子メール送受信用ソフトウェアにメール誤送信防止機能を追加するタイプ、(2)電子メールを集配信するメールサーバ装置側にメール誤送信防止機能を追加するタイプ、(3)クライアント装置とメールサーバ装置との間に誤送信された電子メールを捕捉する誤送信防止用装置を別途設けるタイプ等がある。
上記のうち、(1)のようなものとしては例えば特許文献1等がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−193717号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の(1)〜(3)のような仕組みには、それぞれ一定の問題点やデメリットが存在する。
まず、(1)のようにクライアント装置の電子メール送受信用ソフトウェアに機能を追加する場合、少なくとも、ユーザが使用する可能性のある複数の電子メール送受信用ソフトウェア全てについてメール誤送信防止機能を開発する必要があり、開発に多大なコストを要するという問題がある。
また、ユーザが電子メール誤送信防止機能を持たない電子メール送受信用ソフトウェアを使用した場合には、そもそも電子メールの送受信を防止することができない、という問題もある。
【0006】
(1)の問題点に鑑みて、(2)や(3)のように電子メールサーバ装置側もしくは電子メールサーバ装置とクライアント装置との間に置いた誤送信防止用装置にメール誤送信防止機能を追加する方法を採用した場合、例えば、企業の社員がクライアント装置を社内LANに接続して使用する限り問題は起きないが、出張等で社外に持ち出して、別の電子メールサーバ装置を経由して送信した場合には誤送信の防止は不可能となってしまう。
【0007】
上記のような(1)乃至(3)の構成の問題点を解消するために、本発明者らは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラム(特願2010−022626号)を提案した。
この電子メール送信制御プログラムによれば、電子メール作成送信部(メーラ)によって送出されようとする全ての電子メールをネットワークドライバ部が横取りして、一旦、同一のコンピュータ装置内に存在するプロキシーサーバ機能部に転送し、当該電子メールを送信しても良いかどうかを判定することができるようになる。
また、ネットワークドライバ部がコンピュータ装置外部に送出されようとするIPデータパケットの宛先や送信元などの情報を適宜変更することにより、電子メール作成送信部(メーラ)に、電子メール送信制御プログラムの存在を意識させずに動作させることが可能になる。
なお、ここにいうネットワークドライバ部による「横取り」とは、特願2010−022626号の段落[0032]等にも記載されている通り、何らかのアプリケーション(メーラを含む)からの要求に従って、OSがIPデータパケットをコンピュータ装置外部に送出しようとした場合にその送信処理を中断することを指し、送信処理を中断した際にネットワークドライバ部がそのIPデータパケットの宛先IPアドレス等や送信元IPアドレス等を書き換えることを「転送」という。
【0008】
ところで、このようなコンピュータ装置には、前記電子メール送信制御プログラムと同じように送信される電子メールの中身を検定する他のプログラムが搭載されているケースがあり、当該他のプログラムと前記電子メール送信制御プログラムとが競合したために前記電子メール送信制御プログラムの動作がうまくいかなくなることがある。本発明者らは、そのことに気が付いた。
前記競合というのは、例えば、前記ネットワークドライバ部による電子メールの横取りの前後で、前記他のプログラム側で電子メールを同じように横取りして、当該他のプログラム側で宛先や送信元の情報を書き換えてしまったようなケースにおいて発生しうるものである。
競合する他のプログラム側で宛先や送信元を書き換えられてしまうと、前記ネットワークドライバ部が意図した通りに動作せず、前記電子メール送信制御プログラムによる仕組みが全体として機能しない恐れがある。
【0009】
こういった競合する他のプログラムを同時に動作させないことは、前記電子メール送信制御プログラムを利用する場合の使用条件の1つになるが、できるだけ同種のプログラムを同時に動作させても競合が起きないように、又は、競合が起きたことが分かるように前記電子メール送信制御プログラムに工夫を施すことが望ましい。
本発明は上記のような課題に鑑みてなされたものであり、同種の電子メールの内容検定用の他のプログラムが同一コンピュータ装置内に共存した場合にも、競合が発生しにくい、又は、競合の発生を検知可能な電子メール送信制御プログラム等を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明にかかる電子メール送信制御プログラムは、電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるためのものであり、前記ネットワークドライバ部は、前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段とを含み、前記プロキシーサーバ機能部は、前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段とを含み、前記ポリシー判定部は、ポリシーデータを取得する取得手段と、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含んでいる。
上記において、さらに、前記プロキシーサーバ機能部に、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を予め決められた番号であって電子メールの受信用に使用されない特定ポート番号に設定して送出する電子メールサーバ送出手段を備えさせた上で、前記ネットワークドライバ部には、前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が前記特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段を備えさせた。
【0011】
特願2010−022626号において本発明者らが提案した電子メール送信制御プログラムでは、前記決定手段が電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を電子メールサーバ装置が電子メールの受信用に使用するポート番号(通常は「25番」)に設定して送出していた。なお、この電子メールの送信元のIPアドレスは前記コンピュータ装置のIPアドレスであり、送信元ポート番号はプロキシーサーバ機能部が電子メールの送信用に使用するポート番号である。
そして、前記ネットワークドライバ部の中断手段で取得された電子メールの送信元ポート番号がプロキシーサーバ機能部が電子メールの送信用に使用するポート番号であれば、その電子メールについてはプロキシーサーバ機能部への転送の対象外としてそのまま送信を許可する(スルーして送信する)こととしていた。これは、いわゆるループバック(前記プロキシーサーバ機能部が送信する電子メールをプロキシーサーバ機能部へ転送すること)を回避するためである(特願2010−022626号の段落[0042]や図6等参照)。
【0012】
この特願2010−022626号の方法を採用した場合、もし、この電子メール送信制御プログラム以外に電子メールの検閲を行う他のプログラムが同時に動作していた場合、当該他のプログラムが、前記プロキシーサーバ機能部が電子メールサーバ装置宛に送信しようとする電子メールを前記ネットワークドライバ部よりも先に横取りして、その電子メールの送信元のポート番号を書き換えてしまったら、送信元ポート番号が書き換えられた後の電子メールをネットワークドライバ部が横取りすることになる。
前述の通り、ネットワークドライバ部は、電子メールの送信元ポート番号がプロキシーサーバ機能部が送信用で使用するポート番号であればスルーするが、そうでなければその電子メールをプロキシーサーバ機能部に転送してしまうため、いわゆるループバックが発生してしまう。
【0013】
このように、特願2010−022626号の方法によれば、他のプログラムが動作している場合には、ループバックの生じる恐れがあった。
これは、プロキシーサーバ機能部が送信する電子メールを他のプログラム側に横取りされて送信元ポート番号が書き換えられることによって生じる問題である。
そこで、本願では、前記プロキシーサーバ機能部が電子メールを電子メールサーバ宛に送信しようとする場合に、当該電子メールの送信先ポート番号を予め決められた特定の番号であって電子メールの受信用に使用されない特定ポート番号(例えば「8888番」等)に設定して送出するようにした。この方法によれば、前記プロキシーサーバ機能部が送信しようとする電子メールの宛先ポート番号が通常電子メールの受信用には使用されないポート番号であるから、他のプログラムが前記ネットワークドライバ部よりも先に横取りして送信元ポート番号を書き換える確率が低下する。
仮に他のプログラムがその電子メールを横取りしたとしても、宛先のポート番号が電子メールサーバ装置が電子メールの受信用で使用するポート番号(通常は「25番」)ではないので、当該他のプログラムの検閲の対象外となる確率が高まるためである。
ただし、この宛先ポート番号のまま電子メールをコンピュータ装置外部に送出しても、前記電子メールサーバ装置は当該電子メールを受け取ることができない。そこで、ネットワークドライバ部が、横取りしたIPデータパケットの宛先ポート番号が前記特定ポート番号(例えば「8888番」)の場合には、これを前記電子メールサーバ装置が電子メールの受信用に使用するポート番号(通常は「25番」)に書き換えて前記電子メールサーバ装置宛に送信する。
【0014】
このように、プロキシーサーバ機能部とネットワークドライバ部が協調して動作し、プロキシーサーバ機能部側で本来意図していない特定ポート番号(送信相手先である電子メールサーバ装置の受信用ポート番号とは異なる特定ポート番号)を付与して他のプログラムに捕捉されにくくすることで、電子メール送信制御プログラムが本来の目的を達成することができるようになる。
【0015】
なお、前記電子メール送信制御プログラムを前記コンピュータ装置を破棄通知機能部としても動作させるためのプログラムとし、その破棄通知機能部には、前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、当該破棄通知用電子メールを、送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含ませるようにすることが望ましい(請求項2)。
【0016】
電子メール送信プログラムのユーザは、原則として電子メール送信プログラムの処理が正常に完了したら電子メールの送信が行われたものと考えるのが一般的であるので、電子メールを破棄した旨を別途通知することで、電子メールが送信を許可されていないものであったことを認識させることができるようになる。
なお、このような破棄通知用電子メールを送信する場合にも、ネットワークドライバ部がプロキシーサーバ機能部に対してループバックして送信しないように、宛先のポート番号を特定ポート番号とすれば良い。
【0017】
なお、他のプログラムの動作内容によっては、ループバックが発生するケースもあるため、前記プロキシーサーバ機能部に、前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備えさせておくことが望ましい(請求項3)。
【0018】
もしループバックが発生した場合、プロキシーサーバ機能部は同じ電子メールをエンドレスに繰り返し送信しようとするため、コンピュータ装置の負荷が増大してシステムがダウンする恐れもある。
そこで、プロキシーサーバ機能部にこのようなループバックを検知する機能を設けておくことで、電子メール送信制御プログラムが適切に動作しているかどうかを判断することができるようにした。
そして、このループバック検知手段によりループバックの発生が検知された場合には、前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させてさらなるループバックの発生を阻止して、コンピュータ装置の負荷の増大を防止することが望ましい(請求項4)。
【0019】
なお、前記ポリシー判定部に、ユーザからの入力を受け付けるための表示を行う表示手段を備えさせ、当該表示手段に、前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行わせるとともに、前記情報通知手段に、当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含めさせるようにしても構わない(請求項5)。
【0020】
前記ポリシー判定部が機械的にポリシーに合致するかどうかに基づいて電子メールを送信するかどうか決めるということだけではなく、ユーザに注意喚起してユーザに最終的な判断を委ねる仕組みも取り入れた方が、柔軟性が高まり利便性が向上するためである。
【0021】
なお、この電子メール送信制御プログラムを用いて実現されるコンピュータ装置の動作方法(請求項7)やコンピュータ装置自体も大変有用である(請求項8)。
【0022】
また、この電子メール送信制御プログラムにおいては、前記特定ポート番号を用いたネットワークドライバ部による電子メールの転送処理は行わずに、前記プロキシーサーバ機能部に対して前記ループバック検知手段と追加手段とを備えさせるだけでも有意義である(請求項6)。
他のプログラムとの競合を回避する機能を備えていなくとも、少なくとも他のプログラムとの競合等の何らかの要因によってループバックという電子メール送信制御プログラムの不適切な動作が検知できれば、コンピュータ装置が負荷の増大によってダウンすることを未然に防止できると共に、同時に動作させるソフトウェアの種類を見直し等することで適切な動作をさせることができるようになるためである。
【発明の効果】
【0023】
以上のように、本発明によれば、電子メールの誤送信防止機能を備えた電子メール送信制御プログラムについて、他のプログラムとの競合を回避したり、他のプログラムとの競合を検知したりすることができるようになる。
【図面の簡単な説明】
【0024】
【図1】本発明に係るコンピュータ装置のハードウェア構成の概要を示す模式図である。
【図2】本発明に係るコンピュータ装置に搭載されたプログラムの関係を示す模式図である。
【図3】特願2010−022626号で提案済みの各プログラム等の動作シーケンスの概要を示す図である。
【図4】SMTPの通信手順を示す模式図である。
【図5】特願2010−022626号で提案済みの各プログラム等の動作シーケンスにおいて、ループバックが発生してしまうケースを示す図である。
【図6】本発明における各プログラム等の動作シーケンスにおいて、ループバックが発生しない様子を示す図である。
【図7】本発明による電子メール送信制御方法においてメーラMから送出される電子メールがプロキシーSに転送されて応答信号がメーラMに返信されるまでに使用されるIPアドレスやポート番号の一例を示す図である。
【図8】特願2010−022626号で提案済みの電子メール送信制御方法において、他のプログラムXが搭載されていないためにプロキシーSから電子メールサーバ2に対して正常に電子メールが送信されるケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図9】特願2010−022626号で提案済みの電子メール送信制御方法において、他のプログラムXが搭載されているためにプロキシーSから電子メールサーバ2に対して正常に電子メールが送信されずにループバックが起きるケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図10】本発明の電子メール送信制御方法において、他のプログラムXが搭載されていてもプロキシーSから電子メールサーバ2に対して正常に電子メールが送信され、ループバックが起きないケースであり、この場合に使用されるIPアドレスやポート番号の一例を示す図である。
【図11】本発明における各プログラム等の動作シーケンスにおいて、電子メールを破棄する旨を通知する破棄通知用電子メールを送信する様子を示す図である。
【発明を実施するための形態】
【0025】
(第1の実施形態)
以下、本発明の第1の実施形態を、図面を参照しながら詳細に説明する。
図1は、メールの作成と送信を行うコンピュータ装置1(クライアント)のハードウェア構成を示す模式図である。
【0026】
〔構成の概要〕
CPU101は、コンピュータ装置1の備える機能を実現するためのコンピュータプログラムをハードディスク112から読み出してメモリ111にコピーして実行する機能を備えている。
本発明で実行される前記コンピュータプログラムとしては、コンピュータ装置1のオペレーティングシステム(以下、OSという。)のプログラム、電子メール送信プログラムM(以下、メーラという。)、及び電子メール送信制御プログラムが挙げられる。
この場合、前記電子メール送信制御プログラムは、ネットワークドライバ部N、プロキシーサーバ機能部S、及び、ポリシー判定部Pを含む構成となっている。
OSや電子メール送信制御プログラムは、コンピュータ装置1の電源がオンされた時点で自動的にハードディスク112から読み出されてメモリ111にコピーされ、常時実行可能な状態となるが、電子メール送信プログラムは、通常ユーザがメールの作成や送受信を行うタイミングで随時ハードディスク112から読み出されてメモリ111にコピーされて実行される。
【0027】
なお、OSには、電子メールを送受信するために必要なTCP/IP通信を実行するためのTCP/IP通信ライブラリが含まれており、予め用意されたAPI関数を用いてIPデータパケットの送受信を行うことができるようになっている。このAPI関数は、前記TCP/IP通信ライブラリとアプリケーションプログラムとの間のデータの受け渡しを行うために使用されるものである。
そして、このTCP/IP通信ライブラリによって、コンピュータ装置1から外部に送信すべきIPデータパケットを通信インタフェース121を介して他のコンピュータ装置(例えば電子メールサーバ2)に送信したり、他のコンピュータ装置からのIPデータパケットを通信インタフェース121を介して受信したりする機能が実現される。
【0028】
なお、図1ではコンピュータ装置1のCPUが1つだけの例を示しているが、複数のCPUによって構成されていても良いし、実現すべき機能のうちの一部については、その機能を実行可能な専用チップ(IC等)を備えるハードウェア構成としても良い。
【0029】
〔プログラムの動作〕
図2は本発明の電子メール送信制御プログラムの構成の概要を示すブロック図である。
以降では、図3および図5で特願2010−022626号で提案済みの発明についての動作シーケンスを説明した上で、これと対比するように本発明の動作シーケンスを図6を用いて説明する。また、これらの動作シーケンスにおいて使用されるポート番号等を図7乃至図10を用いて説明する。
実施形態に登場する各種プログラムはコンピュータ装置1に対する命令を組み合わせたものであるから、プログラムによって実現される動作や機能の主体はあくまでもコンピュータ装置1であるが、発明内容を把握しやすくするために、以下では各種プログラムを動作の主体として記載する。
【0030】
〔メーラMの設定〕
ユーザが使用するメーラMには電子メールの作成と送受信をする機能が備えられており、ユーザはメーラMを使用して作成した電子メールを送信することができる。
通常、メーラMは、使用する電子メールサーバ装置のIPアドレスとポート番号を設定しなければ動作しない仕組みになっているので、メーラMには電子メールサーバ2のIPアドレスとポート番号が設定されている。
本発明では、このコンピュータ装置1に電子メール送信制御プログラムがインストールされているかどうかに関係なく、メーラMには常に電子メールサーバ2のIPアドレスA2とポート番号N2が設定されていれば良く、電子メール送信制御プログラムがインストールされている場合にもこの設定を変更する必要はない。
【0031】
通常、企業などの社員が社内LANに接続されたコンピュータ装置を使って電子メールの送受信を行う場合、ほとんど全ての社員は当該企業の情報システム部門が準備する同一の電子メールサーバを用いてメールの送受信を実施するため、全員が同じ設定を行えば済むことが多い。
本発明では、電子メール送信制御プログラムがインストールされているかどうかに関係なく電子メールサーバ2のIPアドレスA2とポート番号N2を設定すれば良い(電子メール送信制御プログラムがインストール/アンインストールされる前後で設定を変更しなくても良い)という点で導入が容易である、というのがメリットの1つである。
【0032】
もし、電子メール送信制御プログラムがインストール/アンインストールされる前後でメーラMの設定を変更しなければいけない仕組みとすると、社員それぞれに対して設定方法を教授する手間が発生するという不便さがあり、特に、社員の使用するコンピュータ装置毎に異なる設定をしなければいけない場合には、設定方法を教授する手間も大きくなってしまう。また、設定変更を忘れたり変更ミスをしたりする不慣れな社員が多い場合には、個々の社員に対して個別にサポートを行う必要性が生じるという問題もあるが、本発明では、そういった手間はほとんど発生しない。
【0033】
〔SMTPの基本手順を用いた電子メールの送信処理の概要〕
コンピュータ装置1のOSに含まれるTCP/IP通信ライブラリ(以下、通信ライブラリという。)Tを使用するために用意されるAPI関数には、例えば、メーラMによってメールの送信処理が実行される際に送信されるべきIPデータパケットの送信先やデータ内容等を引数としてコールされる送信関数や、特定のポート番号に対応付けて生成されるTCPのソケット等の識別子を引数として当該ポート番号宛に送信されたIPデータパケットを受信するためにコールされる受信関数等がある。
メーラMは、電子メールの送信処理を実行する場合、電子メールの送信先のメールアドレスやメール本文の文字列等を格納したテキストデータへのポインタや送信先のIPアドレス等を引数として送信関数をコールすることで、電子メールを送信することができる。
【0034】
なお、電子メールの送受信を行う場合、通常SMTP(Simple Mail Transfer Protocol)というプロトコルを使用することが多い。このSMTPでは、電子メールサーバと電子メール送受信用のクライアント装置との間で所定の通信手順に従ってやりとりが行われる。この通信手順を、図4を用いて説明する。
なお、このSMTPの通信手順はIETF(Internet Engineering Task Force)のRFC(Request For Comment)で標準仕様が定められており、以下はそのRFCで定められた手順と同じである。
まず、電子メールサーバとクライアント装置との間でTCPの通信コネクションが確立される。この場合、電子メールサーバのポート番号は通常25番が使用される。そして、以降のやりとりは、このTCP通信コネクション上で、IPデータパケット形式のデータを交換することで行われる。
【0035】
TCP通信コネクションが正常に確立されたら、まず、クライアント装置は、自身のドメイン名を格納したEHLOコマンドを送信する。電子メールサーバはこれに応じて応答信号を返信する。
クライアント装置は、EHLOコマンドに対する応答信号を受けたら、電子メールの送信元メールアドレス(通常はユーザのメールアドレス)を格納したMAILコマンドと宛先メールアドレスを格納したRCPTコマンドとをそれぞれ送信する。
そして、これらについて応答信号を受信できたら、DATAコマンドを送信してメール本文の送信を開始する。メール本文のデータはメールの長さに応じて複数のIPデータパケットに分割して送信することができる。メール本文のデータを全て送り終えたら、終了を示すコード(ピリオド)を送信した後、QUITコマンドで通信を完了させる。
なお、電子メールの送信が終わったらその時点でTCP通信コネクションを切断する。
【0036】
〔電子メール送信制御プログラムの動作の概要〕
まず、ユーザがメーラMを操作して電子メールを作成し、送信処理を開始すると(メーラMの送信ボタンの押下等を行うと)、メーラMは電子メールサーバ2との間にTCP通信コネクションを確立しようとする。
そして、TCP通信コネクションが確立されたら、メーラMは、前述のSMTPの手順に沿って、電子メールの送信処理を開始することになる(図3のStep2)。
このメーラMによるTCP通信コネクションの確立や電子メールの送信処理について、OSが実行する処理を中断させた上で、後述する「横取り」を行うのがネットワークドライバ部Nである。
【0037】
ネットワークドライバ部Nは、コンピュータ装置1においてIPデータパケットの送信処理が実行されると、この処理をフックする機能を備えている(図3のStep1)。このフック機能は、何らかのアプリケーションプログラムがOSに対してIPデータパケットの送信を要求する処理を実行(送信関数をコール)した場合、その送信処理を中断すると共にIPデータパケットをネットワークドライバ部Nに引き渡す、というものである。このフック機能により、ネットワークドライバ部Nは、実際に送信処理が実行される前にIPデータパケットを「横取り」することができるようになる(図3のStep3)。
メーラMによって電子メールの送信処理が実行されると、OSの通信ライブラリTの送信関数がコールされるが、この電子メールもネットワークドライバ部Nによって横取りされることになる。
なお、このフック機能による横取りを可能な状態にするには、通常、コンピュータ装置1の起動後、電子メール送信制御プログラムの実行が開始された直後に一度フック機能を有効化するコマンドを実行しておけば、それ以降、送信関数がコールされるたびにネットワークドライバ部Nが「横取り」をすることが可能となる。
【0038】
ネットワークドライバ部Nは、横取りしたIPデータパケットが、電子メールのデータやコマンド及びその応答信号以外の電子メールとは無関係のものであれば、そのIPデータパケットに対して何らの加工処理等を施すことなく、そのまま送信を許可する。
一方、横取りしたIPデータパケットが、電子メールに関するものであれば、そのIPデータパケットの宛先のIPアドレスA2(図7では「10.1.1.1」)をコンピュータ装置1自身のIPアドレスA1(図7では「10.0.0.1」)に書き換えると共に、宛先のポート番号N2(図7では「25」)を、後述するプロキシーサーバ機能部(以下、プロキシーという。)Sの使用するポート番号N1(プロキシーSがメーラMから送信されてネットワークドライバ部Nによって転送されてくるIPデータパケットを受信するために使用するポート番号で、図7では「1021」)に設定する。なお、プロキシーSと電子メールサーバ2が同一の番号を使用している場合には、ポート番号の書き換えは行わなくても構わない。
そして、前記書き換えた内容でIPデータパケットを送信するように通信ライブラリTに指示する。以下、宛先のIPアドレス等を書き換えた上で通信ライブラリTが電子メールを送信する処理のことを「転送」と呼ぶことにする(図3のStep4)。
【0039】
なお、前記横取りしたIPデータパケットが電子メールに関するものかどうかは、当該IPデータパケットの送信先又は送信元のポート番号がSMTPプロトコルで通常使用されるポート番号(通常は25番)であるかどうかで判断すると良い。ただし、この場合、25番以外のポート番号(例えば2525番)をSMTPプロトコル用に使用することが分かっているのであれば、当該25番以外の番号を送信先ポート番号とするIPデータパケットを電子メールに関するものと判断しても良い。また、複数のポート番号のいずれか(例えば25番と2525番)を送信先ポート番号とするIPデータパケットを電子メールに関するものと判断することもできる。
また、ポート番号以外のIPデータパケットの形式等から電子メールに関するものであるかどうかを判断するようにしても良い。前述のSMTPに従ってやり取りされるコマンドが有するデータ形式は予め標準化された固定的な形式であるから、コマンドのデータ形式を記憶しておいて、取得されたIPデータパケットの形式が当該記憶してある形式と一致するかどうかを比較して一致すれば電子メールに関するものである、と判断するようにしても構わない。
【0040】
プロキシーSは、ネットワークドライバ部Nに指示されて通信ライブラリTが転送するIPデータパケットを受信する(図3のStep5)。この場合、そのIPデータパケットには電子メールに関するデータやコマンドが含まれているので、図4に示すSMTPの通信手順に従って逐次応答信号の送信処理を実行する(図3のStep6)。
このプロキシーSによる応答信号の送信処理も、メーラMによる電子メールの送信処理と同様に、OSの通信ライブラリTの送信関数をコールすることで実行されるが、ネットワークドライバ部Nは、この応答信号の送信処理についても横取りを行う(図3のStep7)。
この場合、応答信号の送信元のIPアドレスは、コンピュータ装置1自体のIPアドレスA1、ポート番号はプロキシーSの使用するポート番号N1となっている。プロキシーSが送信処理を実行したためである。
そこで、ネットワークドライバ部Nは、このIPアドレスA1とポート番号N1を電子メールサーバ2のIPアドレスA2及びポート番号N2(通常は25番)に書き換えて転送するように通信ライブラリTに通知し(図3のStep8)、この通知を受けた通信ライブラリTが応答信号をメーラM宛に送信する(図3のStep9)。
【0041】
この転送された応答信号は、メーラMによって受信されるが、メーラMは自己が電子メールの送信処理を実行した際の宛先のIPアドレスA2とポート番号N2(電子メールサーバ2のIPアドレスとポート番号)と同じIPアドレスとポート番号からの応答信号として受信することができる。このため、メーラMは、あたかも電子メールサーバ2に対して電子メールを送信し、その応答信号を受信できたかのように認識することになる。
このように、ネットワークドライバ部NがメーラMの送受信する電子メールに関連するIPデータパケットを横取りして転送することで、メーラMに対する特別な機能の追加や設定の変更を行わなくても、メーラMの動作にエラーが発生することはない。
つまり、メーラMは、本発明の電子メール送信制御プログラムの有無に関係なく動作できることになる。
また、ネットワークドライバ部Nは、コンピュータ装置1から送出されようとする全てのIPデータパケットを対象として電子メールの横取りを行うため、メーラMの種類を問わず確実に電子メールを捕捉することが可能となる。
【0042】
この一連の動作で使用されるIPアドレスやポート番号の一例を示したのが図7である。
【0043】
一方、ネットワークドライバ部Nによって転送された電子メールを受信したプロキシーSは、その電子メールをポリシー判定部Pに通知する。このポリシー判定部Pは、いわゆるエージェントとして機能するプログラムであり、予めハードディスク112に記憶したポリシーデータPD(ポリシーデータを記憶するネットワーク上のサーバ装置等から取得しても良い)を参照して、その電子メールについて判定を実施する。
例えば、特定のメールアドレスへの電子メールの送信を禁じる旨のポリシーが定義されている場合に、送信先メールアドレスが禁止されているメールアドレスであるかどうかを判定したり、添付ファイルが暗号化されていない電子メールの送信を禁じる旨のポリシーが定義されている場合に、添付ファイルの暗号化がされているかどうかを判定したりする。
【0044】
このポリシーデータPDには複数のポリシーを定義することができ、例えば、添付ファイルを禁じるポリシーA、特定の相手に対する送信を禁じるポリシーBおよびメール本文に特定の文字(例えば「秘密」)を含む電子メールの送信を禁じるポリシーCの3つを定義することができる。
このように複数のポリシーが含まれている場合、ポリシー判定部Pは、各ポリシーに合致するか否かをそれぞれ判定し、その結果をプロキシーSに通知する。
【0045】
このポリシー判定部Pによる判定結果は、当該電子メールの送信の「許可」か「破棄」か、という二者択一であっても良いし、ユーザに送信するかどうかの判断を委ねる「ユーザ判断待ち」を加えた三者択一としても良い。また、「許可」と「ユーザ判断待ち」の二者択一とすることもできる。
ポリシー判定部Pの判定結果が「許可」であれば、その判定結果を含む判定情報を通知されたプロキシーSは、電子メールの内容を加工等することなく、電子メールサーバ2宛にそのまま送出し、判定結果が「破棄」であれば、電子メールをそのまま破棄する(図3のStep11)。
なお、判定結果が「ユーザ判断待ち」となった場合には、ユーザ判定入出力部Uに対して、ユーザへの問いかけを行うGUIの呼び出しを要求する。具体的には、GUIにおいて、ユーザに対し、「このメールはポリシー判定の結果、送信を許可されていないメールアドレスに対して送信しようとしています。このまま送信しますか?」といった内容の画面表示を行うと共に、判断結果の入力手段(「はい」、「いいえ」のボタン表示等)を表示する。
そして、このユーザの判断の結果を受けて、ポリシー判定部PはプロキシーSに対して判定情報を通知する(ポリシー判定部Pに関連する処理は図3のStep10)。
【0046】
なおこの実施形態では、ポリシー判定部Pにおいて電子メールの送信を許可するか破棄するかまで判定してからその判定結果をプロキシーSに通知するようにしているが、ポリシー判定部Pは通知された電子メールがポリシーに合致するものか否かについての判定結果のみを通知し、その判定の結果を受け取ったプロキシーSの側で電子メールの送信を許可するか破棄するかを決定する、ということにしても構わない。
例えば、ポリシーデータにポリシーA、ポリシーBおよびポリシーCの3つのポリシーが含まれている場合に、ポリシー判定部Pの方では、各ポリシーに合致するか否かの結果のみをプロキシーSに通知し、プロキシーSがその3つのポリシーの各々に合致するかどうかの結果を総合的に判断した上で電子メールの送信を許可するかどうかを決定する、という実施形態でも構わない。
例えば、プロキシーSの方で、2つ以上のポリシーに合致している場合にのみ電子メールを破棄するという決定をするようにしている場合、ポリシー判定部PからポリシーAには合致しないがポリシーBおよびポリシーCには合致するという判定結果を受けた場合には、2つ以上のポリシーに合致するため、プロキシーSは電子メールを破棄するという決定を行い、ポリシー判定部PからポリシーAとポリシーBには合致しないがポリシーCには合致するという判定結果を受けた場合には、1つのポリシーにしか合致しないため、プロキシーSは電子メールの送信を許可するという決定を行う、といった方法でも構わない。
また、処理時間の短縮のために複数のポリシーに優先度を設けておき、優先度の高いポリシー(例えばポリシーA)から順番にそのポリシーに合致しているかどうかを判定していって、優先度の高いポリシーに合致していると判断されればその時点で判定を打ち切って(その他の優先度の低いポリシーについての判定を行わずに)、優先度の高いポリシーに合致しているという判定結果のみをプロキシーSに通知するといった方法を用いても構わない。
【0047】
つまり、ポリシー判定部Pは、プロキシーSが電子メールの送信を許可するか破棄するかを決定しうる情報である判定情報をプロキシーSに対して送信すれば良いのであり、必ずしもポリシー判定部Pで電子メールの送信を許可するかどうかまで判定しなくても構わない。
【0048】
以上の通り、図3のStep1乃至Step10の動作シーケンスや図7で説明したIPアドレスやポート番号の使用方法は、本発明と特願2010−022626号で提案済みの電子メール送信制御プログラムとでは差がなく同じである。
【0049】
〔プロキシーSから電子メールサーバ2への電子メールの送信処理〕
本発明では、プロキシーSから電子メールサーバ2への電子メールの送信処理が特願2010−022626号で提案済みの方法と異なっている。そこで、まず、特願2010−022626号で提案済みの方法を図3と図8に従って説明する。
プロキシーSが電子メールをそのまま電子メールサーバ2に送信することに決定した場合、プロキシーSが電子メールの送信処理を実行すると(図3のStep12−1)、通信ライブラリTの送信関数がコールされるため、他の場合と同様にネットワークドライバ部Nが当該電子メールを横取りすることになる(図3のStep12−2)。
ただし、この場合、ネットワークドライバ部Nは、横取りしたIPデータパケットの送信元のIPアドレスとポート番号の組み合わせが、プロキシーSが前記送信処理を行った際に使用したIPアドレスA1(図8では「10.0.0.1」)とポート番号N3(プロキシーSが電子メールサーバ2とIPデータパケットを送受信するために使用するポート番号で、図8では「9000」)と一致すれば、何らの処理も行わずに(データの書き換えを行わずに)そのまま送信を許可する(スルーして送信する)(図3のStep12−3)。そして、通信ライブラリTはこの電子メールを送信する(図3のStep12−4)。
ネットワークドライバ部Nがこの電子メールを横取りしてプロキシーS宛に転送してしまうと、いわゆるループバックの格好になって、電子メールサーバ2に対して電子メールを送ることができなくなるためである(Step12はStep11で電子メールを破棄しないと判定した場合の一連の処理)。
【0050】
なお、ネットワークドライバ部Nが横取りした電子メールが、プロキシーSが電子メールサーバ2宛に送ったものか、メーラMが電子メールサーバ2宛に送ったものか、を区別するには、上記のようにプロキシーSが送信処理を行ったときに使用した送信ポート番号N3をプロキシーSから予め通知してもらっておき、横取りした電子メールの送信元ポート番号がプロキシーSの送信元ポート番号N3と一致すればプロキシーSが送信元で、そうでなければメーラMが送信元である、と認識すれば良い。
【0051】
この特願2010−022626号で提案済みの一連の動作で使用されるIPアドレスやポート番号の一例を示したのが図8である。
【0052】
ここで、この特願2010−022626号で提案済みの一連の動作では、コンピュータ装置1に電子メール検閲用のプログラムである他のプログラムXが搭載されており、当該他のプログラムXがネットワークドライバ部Nよりも先に電子メールを横取りして何らかの処理を加える可能性がある場合、ネットワークドライバ部Nがループバックを引き起こしてしまうことがある点について図5及び図9を用いて詳細に説明する。
もし、プロキシーSが送信する電子メールの宛先ポート番号を電子メールサーバ2が通常電子メール受信用に使用するポート番号N2(図9にあるように通常は「25番」)にすると(図5のStep122−1)、他のプログラムXがネットワークドライバ部Nよりも先に横取り(図5のStep122−2)した場合、他のプログラムXは横取りしたIPデータパケットが電子メールであると認識できることになる。この場合、他のプログラムXが電子メールに対して何らかの検閲処理等を行った後に、当該電子メールの送信元ポート番号を他のプログラムXが使用するポート番号N6(図9では「9999番」)に書き換えて転送してしまう可能性がある(図5のStep122−3及び4)。
もし、この他のプログラムXに送信元ポート番号を書き換えられてしまうと、ネットワークドライバ部Nは、当該電子メールがプロキシーSが送信処理を行った電子メールであると認識することができなくなる。これは、図3でも既に説明した通り、横取りしたIPデータパケットの送信元のIPアドレスとポート番号の組み合わせが、プロキシーSが前記送信処理を行った際に使用したIPアドレスA1(10.0.0.1)とポート番号N3(9000)と一致した場合にのみプロキシーSが送信処理を行った電子メールであると認識するようにしていたためである。
ネットワークドライバ部Nは、横取りした電子メールがプロキシーSが送信処理を行った電子メールであると認識できなければ、プロキシーS以外のアプリケーションソフトウェア(通常は電子メール送受信用ソフトウェア)が送信処理した電子メールであると認識してプロキシーSに転送することになるため、ループバックが発生してしまう(図5のStep122−5乃至7)。すなわち、プロキシーSが、図5のStep122−7で転送されてくるメールを図3のStep5で転送されてくるメール(メーラMから発信されたメールのネットワークドライバ部Nによる転送)と判断してしまい、プロキシーSが同一の電子メールについて、Step6以降の処理を複数回繰り返し実行することになってしまう。
【0053】
そこで、本発明ではプロキシーSから電子メールサーバ2への電子メールの送信処理に以下の工夫を施した。この様子を図6と図10とを用いて詳細に説明する。
プロキシーSが電子メールを破棄せずに電子メールサーバ2に送信することに決定した場合、プロキシーSが電子メールの送信処理を実行して(図6のStep123−1)、通信ライブラリTの送信関数がコールされるが、この場合の電子メールの宛先ポート番号を、電子メールサーバ2が通常電子メール受信用に使用するポート番号N2(図9や図10における「25番」)ではなく、予め決められた番号であって電子メールの受信用に使用されない特定ポート番号N5(図10では「8888番」)に設定して送出する。
このように、宛先のポート番号を前記特定ポート番号N5のようなSMTPでは通常使用されないポート番号にしておけば、他のプログラムXが当該電子メールを横取り(図6のStep123−2)した場合に、そのIPデータパケットが電子メールではない、と認識して、何ら処理を行わずにスルーする可能性が高くなる(図6のStep123−3及び4)。
【0054】
以上のように、本発明では他のプログラムXが同一のコンピュータ装置1に搭載されている場合であっても、当該他のプログラムとの競合を回避できる確率が高くなる。
なお、この電子メールは、このままでは電子メールサーバ2の特定ポート番号N5宛に送出されて電子メールサーバ2が受信できないため、他のプログラムXが横取りした後にネットワークドライバ部Nで横取りした際に、送信先ポート番号を電子メールサーバ2が受信可能なポート番号N2(図10における25番)に置き換えてから電子メールサーバ2に向けて転送するようにした。
そうすることで、他のプログラムXとの競合を回避しつつ、電子メールをプロキシーSの所望通りに電子メールサーバ2の電子メール受信用ポート番号N2宛に送信することができるようになる(図6のStep123−5乃至8)。
【0055】
〔電子メールの破棄を通知する破棄通知用電子メールの送信処理〕
このように、プロキシーSは、ポリシー判定部Pによる判定結果に応じて、電子メールを破棄するか送信するかを決定するが、電子メールを送信する場合には、ユーザに特段の通知を行う必要はない。ユーザはメーラMにおいて電子メールの送信処理を実行し、その処理がエラーなく完了したことを見届ければそれで足りるからである。
一方、プロキシーSが電子メールを破棄した場合には、そのことを何らかの形でユーザに通知することが望ましい。なぜならば、ユーザはメーラMで電子メールの送信処理を実行し、エラーなく完了したことを見届けているため、電子メールを確かに送信したつもりになっているからである。
【0056】
そこで、プロキシーSは、ポリシー判定部Pから通知された判定結果に応じて電子メールを破棄した場合、当該電子メールを破棄した旨の破棄通知用電子メールを新たに作成すると良い。破棄通知用電子メールの宛先電子メールアドレスはユーザの使用する電子メールアドレス(破棄した電子メールの送信元メールアドレス)である。プロキシーSは、この破棄通知用電子メールを電子メールサーバ2宛に送信することが望ましい。
この場合にも、図11に示すように、プロキシーSがメーラMから送信された電子メールを電子メールサーバ2宛に送信する場合と同様に、当該破棄通知用電子メールの送信先のポート番号を前記特定ポート番号(例えば「8888番」)にすれば良い(図11のStep132−1)。
そうすれば、他のプログラムXの検閲対象にならずに送信元ポート番号の書き換え等が生じる確率が低くなるため、他のプログラムXとの競合によるループバックを回避することができるようになる(図11のStep132−2乃至4)。
なお、この場合もネットワークドライバ部Nが他のプログラムXの後で電子メールの横取りをし、その電子メールの宛先ポート番号をN6からN2に書き換えれば良い(図11のStep132−5乃至8)。
【0057】
なお、この破棄通知用電子メールの本文には、破棄された電子メールのメール本文の内容を引用しておくことが望ましい。ユーザに対して、破棄された対象がどの電子メールであったかを知らせるためである。
また、破棄した理由についても、本文に記載しておくことが望ましい。ユーザが電子メールを再編集して送信等する際に、その破棄の理由等を参照できれば、その理由を解消した上で再送信することができるためである。
さらに、破棄通知用電子メールのヘッダの領域(例えば、「In−Reply−To」や「References」の領域)に、破棄した電子メールのヘッダの領域に格納されていた「Message−Id」の値を転記しておくようにしても良い。このようにすれば、メーラMを操作して送受信済みの電子メールを並べ替え処理等した場合に、破棄された送信済み電子メールと破棄通知用電子メールとが連続した位置関係になるので、ユーザが容易に確認可能となり至便である。
【0058】
〔ループバックの検知処理〕
なお、本発明のように、プロキシーSとネットワークドライバ部Nとを協調して動作させて、プロキシーSの送信する電子メールの宛先ポート番号を特定ポート番号N5にしたとしても、他のプログラムXの動作内容等によっては、やはりループバックが発生する可能性がある。例えば、ネットワークドライバ部NがプロキシーS宛に転送した電子メールをネットワークドライバ部Nよりも後で他のプログラムが横取りしたような場合である。
【0059】
ループバックが発生したときの一番の問題点は、プロキシーSが同じ電子メールの送信を繰り返すことによるコンピュータ装置1の処理負荷の増大である。短期間にプロキシーSに対してエンドレスに電子メールの送信を繰り返し行うことになるため、コンピュータ装置1のCPU101がオーバーフローしてシステムがダウンする危険性が高い。
従って、ループバックが発生した場合にはそれを的確に検知すると共に、ループバックの繰り返しを防止できるようにすることが望ましい。
【0060】
そこで、本発明では、プロキシーSが電子メールサーバ2宛に送信する電子メールのヘッダ部分にそのことを識別可能なループバック検知用文字列を追加するようにすることが望ましい。具体的には、電子メールのヘッダ部分に「X−Mcv−Sender:McvProxy」などのような文字列を一行追加する方法である。
なお、追加する文字列はこのようなものに限られず、追加されたとしても電子メールのユーザにとって影響がなく、かつ、通信ライブラリTによる電子メールの送信処理に対しても影響を及ぼさない文字列であればどのようなものであっても良い。
【0061】
そして、プロキシーSはポート番号N3で受信した電子メール(ネットワークドライバ部Nが転送する電子メール)のヘッダ部に、自身が送信処理を行ったものと区別可能な前記ループバック検知用文字列(例えば「X−Mcv−Sender:McvProxy」)が存在するかを判定する。
もし、受信される電子メールに前記ループバック検知用文字列が含まれているのであれば、プロキシーSが送信した電子メールがループバックしていると判断できるため、このコンピュータ装置1では、他のプログラムとの競合等の何らかの要因で、本発明にかかる電子メール送信制御プログラムが適切に動作していない、ということが分かる。
【0062】
すなわち、例えば、特定ポート番号N5を用いた処理を行わなかったために図5のようにループバックが発生したとしても、プロキシーSが図5のStep122−1でメール送信要求を行う際に、前記ループバック検知用文字列を電子メールに付与しておけば、図5のStep122−7で当該電子メールがループバックされてきた場合に、そのことを検知できるようになるのである。
そして、ループバックが検知された場合には、異常が発生したと判定してネットワークドライバ部Nによる電子メールの横取り処理を中止すると共に、ユーザやネットワークシステムの管理サーバ等に対して、異常が発生した旨を通知するようにすれば良い。
【0063】
このように、プロキシーSの電子メール送信処理にループバック検知機能を付与することで、他のプログラムとの競合等の要因でコンピュータ装置1がダウンする事態を未然に回避することができるようになる。また、ユーザが電子メール送信制御プログラムに競合が起きており、正常動作させるためには何らかの対策(他のプログラムのアンインストール等)を行う必要があると認識することが可能になる。
【0064】
なお、このループバック検知機能は、特定ポート番号を利用した他のプログラムとの競合を回避する機能の有無とは関係なく有効な機能である。つまり、電子メール送信制御プログラムに対して競合を回避する機能を付与していない場合であっても、このループバックを検知する機能を設けておくことが望ましい。
ループバック検知機能を備えさせることによって、他のプログラムとの競合が発生しているか否かだけでも検知できれば、電子メール送信制御プログラムを正しい環境で動作させる(正しく動作させられない環境では動作させない)ことが可能となるからである。
【0065】
以上のように、本発明の電子メール送信制御プログラムでは、特願2010−022626号で提案済みの電子メール送信制御プログラムに対して、新たに他のプログラムとの競合を回避したり、競合によるループバックを検知したりする機能を追加したので、電子メール送信制御プログラムの導入を容易にすることが可能になる。
【0066】
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0067】
1 コンピュータ装置、 101 CPU、 111 メモリ、 112 ハードディスク、 121 通信インタフェース、 2 電子メールサーバ
M 電子メール送信プログラム、 N ネットワークドライバ部、 S プロキシーサーバ機能部、 P ポリシー判定部、 PD ポリシーデータ、 U ユーザ判定入出力部、 T TCP/IP通信ライブラリ
【特許請求の範囲】
【請求項1】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とする電子メール送信制御プログラム。
【請求項2】
前記電子メール送信制御プログラムは、
前記コンピュータ装置を破棄通知機能部として動作させるためのプログラムであり、
当該破棄通知機能部は、
前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、
当該破棄通知用電子メールを、送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含む
請求項1に記載の電子メール送信制御プログラム。
【請求項3】
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備える
請求項1又は2に記載の電子メール送信制御プログラム。
【請求項4】
前記ループバック検知手段によりループバックの発生が検知された場合、
前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させる請求項1乃至3のいずれか1つに記載の電子メール送信制御プログラム。
【請求項5】
前記ポリシー判定部は、
ユーザからの入力を受け付けるための表示を行う表示手段を備えており、
当該表示手段は、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行い、
前記情報通知手段は、
当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含める
請求項1乃至4のいずれか1つに記載の電子メール送信制御プログラム。
【請求項6】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むこと
を特徴とする電子メール送信制御プログラム。
【請求項7】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムを用いた前記コンピュータ装置の動作方法であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断ステップと、
当該IPデータパケットが電子メールであるかどうかを判断する判断ステップと、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出ステップと、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換ステップとを実行し、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知ステップと、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定ステップと、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出ステップとを実行し、
前記ポリシー判定部は、
ポリシーデータを取得する取得ステップと、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定ステップと、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知ステップとを実行することを特徴とする動作方法。
【請求項8】
電子メールの作成と送信を実行する電子メール作成送信部と、ネットワークドライバ部と、プロキシーサーバ機能部と、ポリシー判定部とを備える電子メール送信制御用のコンピュータ装置であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とするコンピュータ装置。
【請求項1】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とする電子メール送信制御プログラム。
【請求項2】
前記電子メール送信制御プログラムは、
前記コンピュータ装置を破棄通知機能部として動作させるためのプログラムであり、
当該破棄通知機能部は、
前記プロキシーサーバ機能部によって電子メールが破棄された場合、破棄された電子メールの送信元メールアドレスを送信先のメールアドレスとして設定した破棄通知用電子メールを作成する手段と、
当該破棄通知用電子メールを、送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する手段とを含む
請求項1に記載の電子メール送信制御プログラム。
【請求項3】
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とをさらに備える
請求項1又は2に記載の電子メール送信制御プログラム。
【請求項4】
前記ループバック検知手段によりループバックの発生が検知された場合、
前記ネットワークドライバ部の前記中断手段及び前記送出手段のうち少なくとも一方を停止させる請求項1乃至3のいずれか1つに記載の電子メール送信制御プログラム。
【請求項5】
前記ポリシー判定部は、
ユーザからの入力を受け付けるための表示を行う表示手段を備えており、
当該表示手段は、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致する場合に前記表示手段による表示を行い、
前記情報通知手段は、
当該表示手段によって受け付けたユーザからの入力に応じた情報を前記判定情報に含める
請求項1乃至4のいずれか1つに記載の電子メール送信制御プログラム。
【請求項6】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムであって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から受け取った電子メールにループバックを検知するための文字列であるループバック検知用文字列が含まれているか否かを検知するループバック検知手段と、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、ループバック検知用文字列を当該電子メールに追加する追加手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むこと
を特徴とする電子メール送信制御プログラム。
【請求項7】
電子メールの作成と送信を実行する電子メール作成送信部としてコンピュータ装置を動作させるための電子メール送信プログラムが搭載されたコンピュータ装置を、ネットワークドライバ部とプロキシーサーバ機能部とポリシー判定部として動作させるための電子メール送信制御プログラムを用いた前記コンピュータ装置の動作方法であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断ステップと、
当該IPデータパケットが電子メールであるかどうかを判断する判断ステップと、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出ステップと、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換ステップとを実行し、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知ステップと、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定ステップと、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出ステップとを実行し、
前記ポリシー判定部は、
ポリシーデータを取得する取得ステップと、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定ステップと、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知ステップとを実行することを特徴とする動作方法。
【請求項8】
電子メールの作成と送信を実行する電子メール作成送信部と、ネットワークドライバ部と、プロキシーサーバ機能部と、ポリシー判定部とを備える電子メール送信制御用のコンピュータ装置であって、
前記ネットワークドライバ部は、
前記コンピュータ装置外部に送出されようとするIPデータパケットの送信を中断する中断手段と、
当該IPデータパケットが電子メールであるかどうかを判断する判断手段と、
その判断の結果電子メールであれば、当該IPデータパケットの送信先IPアドレスを前記コンピュータ装置のIPアドレスに設定すると共に送信先ポート番号を前記プロキシーサーバ機能部で使用されるポート番号に設定して送出する送出手段と、
前記中断手段で送信を中断したIPデータパケットの送信先IPアドレスが電子メールサーバ装置のIPアドレスでかつ送信先ポート番号が予め決められた番号であって電子メールの受信用に使用されない特定ポート番号であれば、当該IPデータパケットの送信先ポート番号を前記電子メールサーバ装置が電子メールの受信用に使用するポート番号に置き換える置換手段とを含み、
前記プロキシーサーバ機能部は、
前記ネットワークドライバ部から電子メールを受け取った旨を前記ポリシー判定部に対して通知するメール通知手段と、
前記ポリシー判定部からの判定情報に基づいて、当該電子メールの破棄又は送信を決定する決定手段と、
前記決定手段において当該電子メールを送信すると決定した場合に、当該電子メールの送信先IPアドレスを電子メールサーバ装置のIPアドレスに設定すると共に送信先ポート番号を前記特定ポート番号に設定して送出する電子メールサーバ送出手段とを含み、
前記ポリシー判定部は、
ポリシーデータを取得する取得手段と、
前記プロキシーサーバ機能部から通知された電子メールが前記ポリシーデータに定められた条件に合致するか否かを判定する判定手段と、
その判定結果に応じた判定情報を前記プロキシーサーバ機能部に対して通知する情報通知手段とを含むことを特徴とするコンピュータ装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−215985(P2011−215985A)
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願番号】特願2010−84857(P2010−84857)
【出願日】平成22年4月1日(2010.4.1)
【出願人】(504126112)住友電工システムソリューション株式会社 (78)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
【公開日】平成23年10月27日(2011.10.27)
【国際特許分類】
【出願日】平成22年4月1日(2010.4.1)
【出願人】(504126112)住友電工システムソリューション株式会社 (78)
【出願人】(000002130)住友電気工業株式会社 (12,747)
【Fターム(参考)】
[ Back to top ]