プログラム
【課題】上述した課題に鑑みたものであり、サーバ管理下のユーザを宛先とする電子メールを格納するための格納領域の使用量を節約することが可能なサーバのためのプログラムを提供すること。
【解決手段】受信した電子メールの特定データが、格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行う。
【解決手段】受信した電子メールの特定データが、格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラムに関する。
【背景技術】
【0002】
従来から、SMTP(Simple Mail Transfer Protocol)を通じてネットワーク上で電子メールの受信と送信を行うメールサーバが存在する。
【0003】
通常、このようなメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合には、格納領域に電子メールを格納する処理を行う(いわゆるローカル配送を行う)。一方、受信した電子メールの宛先が他のメールサーバのアドレスを示す場合には当該電子メールを他のメールサーバに配送する処理を行う(いわゆるリモート配送を行う)。
【0004】
そして、メールサーバは、POP(Post Office Protocol)やIMAP(Internet Message Access Protocol)等を通じて、端末から電子メールの受信要求を受信すると、格納領域にある電子メールを当該端末に送信する処理を行っている(特許文献1の0030段落参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−228673
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来のメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合に当該電子メールを格納する際、無駄に格納領域を使用してしまうことがあった。例えば、添付ファイルを含む電子メールを受信し、その後、同一内容の添付ファイルを含む別の電子メールを受信した場合には、同一内容の添付ファイルであっても各電子メールを個別に格納領域に格納していたので、格納領域を無駄に使用してしまい、結果的に格納領域の使用量が増加してしまうという問題があった。
【0007】
特に、近年では、画像データや音声データ等のファイルが添付されることが多く、数十〜数百メガバイトの添付ファイルを含む電子メールの送受信が行われており、電子メールを格納するための格納領域を節約することが期待されている。
【0008】
本発明は、上述した課題に鑑みたものであり、サーバ管理下のユーザを宛先とする電子メールを格納するための格納領域の使用量を節約することが可能なサーバのためのプログラムを提供することにある。
【課題を解決するための手段】
【0009】
(1)本発明は、受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、電子メールを受信する処理を行う受信部と、当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部として、コンピュータを機能させ、前記格納処理部が、受信した電子メールに含まれる特定データが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、前記送信部が、前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うプログラムに関する。
【0010】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成するサーバに関係する。本発明は、受信した電子メールに含まれる特定データが、格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。また、本発明は、格納領域から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うので、元の電子メールの内容が紛失されることなく送信することができる。
【0011】
(2)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる添付ファイルデータを前記特定データとし、当該添付ファイルデータが、前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0012】
本発明は、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。本発明は、例えば、音声データや画像データなどの、容量の多いファイルが添付された電子メールを格納領域に格納する際に、格納領域の使用量を従来よりも格段に節約することができる。
【0013】
(3)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0014】
本発明は、電子メールに複数の添付ファイルデータを含んでいても、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【0015】
(4)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる本文を前記特定データとし、当該本文が、前記格納領域に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0016】
本発明は、格納領域に、受信した電子メールの本文を重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【0017】
(5)また、本発明のプログラムは、前記格納領域は、当該サーバが管理する各ユーザのメールボックスと、特定領域とを含み、前記格納処理部が、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の当該電子メールを特定領域に格納する処理を行い、前記送信部が、受信要求を受け付けたユーザのメールボックスに格納された電子メール参照情報に基づき、電子メールを前記特定領域から読み出し、読み出された電子メールを当該端末に送信する処理を行うようにしてもよい。
【0018】
本発明は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。
【0019】
(6)また、本発明のプログラムは、前記格納領域に格納された電子メールが参照されているか否かを判断する参照判断部と、参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを更に機能させるようにしてもよい。
【0020】
本発明は、参照されていないと判断される電子メールを格納領域から削除する処理を行うので、保存する必要性のない電子メールを削除することができ、限られた格納領域を有効に利用することができる。
【図面の簡単な説明】
【0021】
【図1】本実施形態のメールシステムの一例。
【図2】本実施形態のサーバの機能ブロック図の一例。
【図3】図3(A)は従来の電子メールの格納処理の説明図。図3(B)は、本実施形態の電子メールの格納処理の説明図。
【図4】固有情報の説明図。
【図5】従来の電子メールの格納処理の説明図。
【図6】本実施形態の格納処理の説明図。
【図7】ハッシュテーブルの説明図。
【図8】本実施形態の電子メールの添付ファイルデータ、本文の説明図。
【図9】本実施形態の格納処理の説明図。
【図10】本実施形態の格納処理の説明図。
【図11】本実施形態の格納処理の説明図。
【図12】本実施形態の格納処理の説明図。
【図13】本実施形態の格納処理の説明図。
【図14】リファレンス値の説明図。
【図15A】本実施形態の格納処理のフローチャート図。
【図15B】本実施形態の格納処理のフローチャート図。
【図16】本実施形態の送信処理のフローチャート図。
【発明を実施するための形態】
【0022】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0023】
1.メールシステム
図1は、本実施形態のメールシステムの一例である。本実施形態のサーバ10は、MTA(Mail Transfer Agent)として機能し、SMTPを通じてネットワーク上で電子メールの受信と配送を行う。また、サーバ10は、POPやIMAPを通じて端末20から電子メールの受信要求を受け付け、当該端末20に電子メールを送信する処理も行う。
【0024】
サーバ10は、配送処理に用いるエンベロープの宛先(宛先メールアドレス)及びエンベロープの差出元(差出元メールアドレス)、メッセージとからなる電子メールを受信する。そして、サーバ10は、ネットワークを介して受信した当該電子メールを、エンベロープの宛先に基づいて配送先メールサーバを決定し、配送先のメールサーバに配送する処理を行う。
【0025】
より詳しく説明すると、サーバ10は、MUA(Mail User Agent)などの差出元から送信された電子メールを、SMTPを通じて受信する処理を行う。例えば、サーバ10は、SMTPを通じて端末20又は他のメールサーバから送信された電子メールを受信する。なお、MUAとは、ネットワークを介してサーバ10と電子メールを送受信する処理を行うクライアントプログラムであり、ユーザが差出元となる電子メールを送信する処理、ユーザ宛の電子メールを受信する処理を行う。
【0026】
次に、サーバ10は、受信した電子メールのエンベロープの宛先のドメインを管理しているDNS(Domain Name System)サーバや、サーバ10のローカルエリア内のDNSサーバ、或いは他のDNSサーバに、受信した電子メールのエンベロープの宛先のドメインを問い合わせる(例えば、宛先のドメインのMXレコードを問い合わせる)。そして、DNSサーバの応答メッセージによって決められる配送先メールサーバへ、電子メールを配送(ローカル配送、リモート配送)する処理を行う。
【0027】
また、本実施形態のサーバ10は、POP、或いは、IMAPを通じて、ユーザの端末20からの要求に応じて、格納領域に格納された当該ユーザ宛の電子メールを、当該端末20に送信する処理を行うことができる。
【0028】
また、本実施形態のサーバ10は、Webサービスを提供するWebサーバとして機能してもよい。例えば、サーバ10は、端末20のWebブラウザからHTTP(HyperText Transfer Protocol)を通じて電子メールの送信、電子メールの受信等のアクセス要求を受け付けるようにしてもよい。
【0029】
また、メールシステムは、1つのサーバ10に限らず、複数のサーバ10によって構成してもよい。また、格納領域60は、サーバ10とは別の一又は複数の記憶装置(一又は複数のハードウェア)であってもよい。
【0030】
2.構成
図2は、本実施形態のサーバ10の機能ブロック図の一例である。なお、本実施形態のサーバ10は、図2の各部を全て含む必要はなく、その一部を省略した構成としてもよい。
【0031】
記憶部50は、処理部100などのワーク領域となるもので、その機能はRAM(VRAM)などのハードウェアにより実現できる。本実施形態の記憶部50には、格納領域60を含む。この格納領域60は、受信した電子メールの宛先のドメインが当該サーバ10のドメインと同じ場合(サーバ10が管理するユーザが宛先となっている場合)に、当該電子メールを格納するための記憶領域である。また、格納領域60は、メールボックス70、特定領域80を含む。サーバ10は、サーバ10が管理するユーザ毎にメールボックス70を設ける。メールボックス70は、所与の記憶領域であり、サーバが管理する各ユーザ情報に対応づけて設けられる。例えば、メールボックス70には、電子メールや電子メール参照情報が記憶される。また、特定領域80には、受信した電子メールや特定データが格納される。例えば、特定データは、電子メールの本文、添付ファイルデータである。
【0032】
また、記憶部50は、電子メール参照情報、特定データ参照情報、特定データ参照情報に対応づけてハッシュ値を登録したハッシュテーブルTB、電子メール参照情報に対応するリファレンス値R1、特定データ参照情報に対応するリファレンス値R2などを記憶してもよい。また、記憶部50は、配送対応部(SMTP)の受信部111によって受信された電子メールを、配送(ローカル配送、リモート配送)するために一時的に格納するためのスプール領域を設けてもよい。また、記憶部50は、サーバ10が管理するユーザのユーザ情報(ユーザ名、パスワード)、ユーザのメールボックス名を記憶してもよい。
【0033】
また、情報記憶媒体180は、コンピュータにより読み取り可能であり、この情報記憶媒体180にはプログラムやデータなどが格納されている。即ち、情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。つまり、処理部100は、この情報記憶媒体180に格納されるプログラム(データ)から読み出されたデータに基づいて本実施形態の種々の処理を行うことができる。例えば、情報記録媒体180は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカード等である。
【0034】
処理部100は、記憶部50に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。なお、本実施形態の処理部100が、情報記憶媒体180に格納されているプログラムやデータを読み出し、読み出したプログラムやデータを記憶部50に格納し、そのプログラムやデータに基づいて処理を行ってもよい。処理部100(プロセッサ)は、記憶部50内の主記憶部をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)などのハードウェアや、プログラムにより実現できる。
【0035】
本実施形態の処理部100は、配送対応部(SMTP)110、受信対応部(POP/IMAP)120と、を含む。
【0036】
配送対応部110は、SMTPなどの電子メール配送プロトコルを通じて電子メールの受信、配送処理(格納処理)を行う。配送対応部110は、受信部111、格納処理部112、配送部113を含む。
【0037】
例えば、受信部111は、端末20のMUA21によって、差出元から送信され、エンベロープの宛先が指定された電子メールを受信する処理(受け付ける処理)を行う。
【0038】
また、格納処理部112は、受信した電子メールの宛先のドメインが、当該サーバ10が管理するドメインと同じ場合、つまり、受信した電子メールの宛先がサーバ10の管理下のユーザである場合に、当該電子メールを格納領域60に格納する処理を行う。すなわち、格納処理部112は、サーバ10が稼動する同一システム内にアカウントを持つユーザ宛に配送するローカル配送処理を行う。なお、ローカル配送処理は、専用のローカル配信エージェントであるMDA(Mail Delivery Agent)によって処理を行ってもよい。なお、サーバ10が管理するドメインは、1つに限らず複数であってもよい。
【0039】
また、格納処理部112は、受信した電子メールに含まれる特定データが、格納領域60に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0040】
また、格納処理部112は、受信した電子メールに含まれる添付ファイルデータを特定データとし、当該添付ファイルデータが、格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0041】
また、格納処理部112は、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0042】
また、格納処理部112は、受信した電子メールに含まれる本文を特定データとし、当該本文が、格納領域60に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0043】
また、格納処理部112は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックス70に、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域80に格納する処理を行うようにしてもよい。
【0044】
また、配送部113は、受信した電子メールの宛先ドメインが他のメールサーバのドメインである場合に、当該他のメールサーバに電子メールを配送するリモート配送処理(転送処理、中継処理)を行う。
【0045】
受信対応部120は、POP又はIMAPなどの電子メール受信プロトコルを通じて、電子メールを端末20に送信する処理を行う。本実施形態の受信対応部120は、受け付け部121、送信部122、参照判断部123、削除部124と、を含む。
【0046】
受信対応部120は、端末20から受信要求を受け付けると、ユーザ情報(ユーザ名、パスワード)を端末20から受信し、ユーザ情報に基づきユーザ認証処理を行う。例えば、受信したユーザ名とパスワードが、サーバ10側で予め登録されているユーザ名とパスワードと一致するか否かを判定し、一致した場合にユーザ認証を認め、不一致はユーザ認証を認めないように判断する。そして、受信対応部120は、ユーザ認証が認められたユーザを宛先とする電子メールを当該端末20に送信する処理を行う。
【0047】
受け付け部121は、端末20から電子メールの受信要求を受け付ける処理を行う。
【0048】
送信部122は、格納領域60に格納された電子メールを送信する処理を行う。例えば、送信部122は、格納領域60から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を特定データに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、送信部122は、受信要求を受け付けたユーザのメールボックス70に格納された電子メール参照情報に基づき、電子メールを特定領域80から読み出し、読み出された電子メールを端末20に送信する処理を行う。
【0049】
また、参照判断部123は、格納領域60に格納された電子メール(電子メールの少なくとも一部)が参照されているか否かを判断する処理を行う。例えば、参照判断部123は、電子メール参照情報に対応するリファレンス値に基づいて、格納領域60に格納された電子メールが参照されているか否かを判断する処理を行う。また、参照判断部123は、特定データ参照情報に対応するリファレンス値に基づいて、格納領域60に格納された電子メールが参照されているか否かを判断する処理を行うようにしてもよい。
【0050】
また、削除部124は、参照されていないと判断される電子メールを、格納領域60から削除する処理を行う。例えば、削除部124は、電子メール参照情報に対応するリファレンス値が所定値(例えば、0)である電子メールを、格納領域60から削除する処理を行う。また、削除部124は、特定データに対応するリファレンス値が所定値(例えば、0)である特定データを、格納領域60から削除する処理を行う。
【0051】
端末20は、コンピュータ、携帯電話、スマートフォン、タブレット型コンピュータ、携帯端末、ゲーム装置などであり、MUA21として機能する。
【0052】
3.本実施形態の処理の説明
本実施形態のサーバ10は、差出元から送信された電子メールを受信し、当該電子メールの宛先が、サーバ10が管理するユーザ宛の場合、受信した電子メールを格納領域60に格納する処理を行う。例えば、受信した電子メールの宛先のドメインがサーバ10のアドレス(例えば、「aaa.com」)を示す場合に、受信した電子メールを格納領域60に格納する処理を行う。そして、端末20からの要求に応じて格納領域60の電子メールを送信する処理を行う。以下、本実施形態の格納処理と送信処理の詳細について説明する。
【0053】
3.1 複数の宛先が指定された電子メールの格納処理と送信処理の説明
さて、従来のサーバは、複数の宛先が指定された電子メールを受信した場合、同一内容の電子メールを、各宛先のメールボックス70に格納する処理を行っていた。例えば、図3(A)に示すように、サーバが、所与の端末20或いは他のサーバから、ネットワークを介してSMTPコマンドのエンベロープの宛先(RCPT TO)で複数の宛先(例えば、userA@aaa.com、userB@aaa.com)が指定された電子メールM1を受信したとする。すると、サーバは、宛先userA@aaa.comのメールボックス70Aに電子メールM1を格納し、宛先userB@aaa.comのメールボックス70Bに電子メールM1を格納する処理を行っていた。つまり、同じ内容の電子メールM1にもかかわらず、各宛先の各メールボックス70A、70Bに、電子メールM1を格納する処理を行っていた。ゆえに、従来のサーバは、無駄に格納領域を使用してしまうという問題があった。
【0054】
そこで、本実施形態のサーバ10は、格納領域60に各ユーザのメールボックス70と特定領域80とを含むようにし、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の電子メールを特定領域80に格納する処理を行うようにする。
【0055】
例えば、図3(B)に示すように、userA@aaa.com、userB@aaa.comの宛先が指定された電子メールM1を受信すると、まず電子メールM1の電子メール参照情報を決定する。例えば、電子メールM1の参照情報が「001」であるとすると、サーバ10は、userA@aaa.comのメールボックス70A、userB@aaa.comのメールボックス70Bそれぞれに、電子メールM1の参照情報「001」を格納する。そして、一の電子メールM1を特定領域80に格納する。ここで、「電子メール参照情報」は、受信した電子メールの参照先を示す情報であり、電子メールを一意に識別できる情報であればよい。例えば、「電子メール参照情報」は、ユニーク番号や、電子メールを受信した日時とすることができる。なお、本実施形態では、「電子メール参照情報」のサイズは、所定サイズ以下(例えば、16バイト以下)とし、一般的な電子メールのサイズよりも小さいサイズにしている。
【0056】
このように、本実施形態のサーバ10は、各ユーザA、Bのメールボックス70A、70Bには電子メールM1の参照情報を記録するだけであり、特定領域80には受信した一の電子メールM1のデータを格納するだけであるので、従来よりも格納領域60の使用量を節約することができる。
【0057】
例えば、「電子メールM1のサイズ」が20,000,000バイトであり、「電子メールM1の参照情報のサイズ」が3バイトとすると、従来のサーバでは、格納領域60において、電子メールM1を個別に格納していたので40,000,000バイトを使用することになっていた。一方、本実施形態のサーバ10は、格納領域60に1つ分の電子メールM1と、電子メールM1の参照情報とを格納するだけでよいので、結果的に、20,000,006バイトだけ使用することになり、格納領域60を使用する容量を従来よりも格段に節約することができる。
【0058】
次に、サーバ10が、端末20からの受信要求に応じて格納された電子メールを当該端末20に送信する処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めると当該ユーザのメールボックスから電子メール参照情報を取得し、取得した電子メール参照情報に対応する電子メールを特定領域80から読み出し、読み出された電子メールを端末20に送信する処理を行う。
【0059】
例えば、サーバ10は、ユーザ名「userA@aaa.com」の端末20から受信要求を受け付けると、「userA@aaa.com」のメールボックス70Aにある電子メール参照情報「001」を取得する。そして、電子メール参照情報「001」に対応する電子メールM1を特定領域80から読み出し、読み出した電子メールM1を端末20に送信する。
【0060】
なお、サーバ10は、電子メールの規格(例えば、MIME(Multipurpose Internet Mail Extensions))に基づいて特定領域80から取得した電子メールM1に、固有情報を付加して送信用の電子メールを生成し、生成された電子メールを端末20に送信してもよい。例えば、図4に示すように、「Delivered−To」ヘッダを電子メールのヘッダの最上位に付加し端末20に送信するようにしてもよい。
【0061】
また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。例えば、図4に示すように、サーバ10は、固有情報のサイズを算出し、特定領域80に格納された電子メールM1のサイズ(例えば、1300バイト)に固有情報のサイズ(例えば、16バイト)を加算した合計値(例えば、1316バイト)を、端末20に送信する処理を行うようにしてもよい。このようにすれば、送信用の電子メールの正しいサイズを、端末に通知できる。
【0062】
3.2 添付ファイルデータを含む電子メールの格納処理と送信処理の例
さて、従来のサーバは、例えば、図5に示すように、T2時点でファイルF1が添付されたuserA@aaa.com宛の電子メールM2を受信し、その後、T3時点でファイルF1が添付されたuserB@aaa.com宛の電子メールM3を受信した場合、共通のファイルF1が添付された各電子メールM2、M3を、各メールボックス70A、70Bに個別に保存していたので格納領域60を無駄に使用してしまうという問題があった。
【0063】
そこで、本実施形態のサーバ10は、電子メールを受信すると、受信した電子メールに含まれる添付ファイルデータ(特定データの一例)が、格納領域60に既に格納された他の電子メールの添付ファイルデータと同じ場合には、添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。このようにすれば、同じ内容の添付ファイルデータが重複して格納されることを回避でき、格納領域60の使用を節約することができる。
【0064】
3.2.1 添付ファイルデータを含む電子メールの格納処理と送信処理の例1
3.2.1.1 格納処理
添付ファイルデータを格納する第1の処理例について説明する。まず、サーバ10は、図6に示すように、T2時点でuserA@aaa.comの宛先が指定された電子メールM2を受信すると、電子メールM2の参照先を示す一意の電子メール参照情報を決定する。そして、サーバ10は、電子メールM2の参照情報が「002」であるとすると、userA@aaa.comのメールボックス70Aに、電子メールM2の参照情報「002」を格納する。
【0065】
次に、サーバ10は、電子メールM2の添付ファイルデータF1が既に特定領域80(広義には格納領域60)に格納されているか否かを判断する。つまり、サーバ10は、添付ファイルデータF1が、特定領域80に既に格納された他の電子メールの添付ファイルデータと同じであるか否かを判断する。ここで、既に格納された他の電子メールとは、サーバ10が、電子メールM2とは異なるタイミングで過去に受信した一又は複数の電子メールのことである。
【0066】
具体的には、サーバ10は、添付ファイルデータのハッシュ値(識別情報)を計算し、ハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断する。なお、ハッシュ値は、ハッシュ関数(チェックサム、チェックディジット、フィンガープリント等)に基づき求められる値である。例えば、ハッシュ関数の入力キーを添付ファイルデータとし、ハッシュ関数の出力値をハッシュ値とする。このハッシュ値は、添付ファイルデータ(特定データの一例)を識別(特定)するための情報となる。
【0067】
例えば、サーバ10は、電子メールM2の添付ファイルデータF1のハッシュ値が「1549128」であるとすると、ハッシュ値「1549128」がハッシュテーブルTBに登録されているか否かを判断する。つまり、サーバ10は、ハッシュ値「1549128」が、ハッシュテーブルTBに登録されていると判断された場合には、電子メールM2の添付ファイルデータF1が既に特定領域80に格納されていると判断し、ハッシュ値「1549128」が、ハッシュテーブルTBに登録されていないと判断された場合には、電子メールM2の添付ファイルデータF1が特定領域80に格納されていないと判断する。
【0068】
例えば、T2の時点で、電子メールM2の添付ファイルデータF1のハッシュ値「1549128」がハッシュテーブルTBに登録されていない場合には、サーバ10は、図7に示すように、ハッシュ値「1549128」を、当該添付ファイルデータF1の特定データ参照情報に対応付けて登録する。ここで、「特定データ参照情報」は、参照先の特定データを識別する情報であり、例えば、参照先の電子メールと参照先の添付ファイルデータを識別するための情報である。本実施形態では、「特定データ参照情報」のサイズは、所定のサイズ以下とし、一般的な本文のサイズや添付ファイルデータのサイズよりも小さいサイズにしている。具体的には、「特定データ参照情報」は、「002−1」のように、「電子メール参照情報(002)」と「ファイルの番号(1番目のファイル)」の組み合わせで決定する。
【0069】
なお、「ファイルの番号」は、電子メールに添付されたファイルの番号であり、マルチパート形式の電子メールの上から順に添付ファイルの番号を決める。例えば、図8(B)に示すように、マルチパート形式の電子メールの第2のパート520以降のパートを添付ファイルデータとして扱う場合には、第2のパート520のパートボディ522のデータを1番目の添付ファイルデータとする。また、図8には示していないが、例えば、第3のパートがある場合には、第3のパートのパートボディのデータを2番目の添付ファイルデータとする。
【0070】
つまり、サーバ10は、T2時点でハッシュ値「1549128」が、ハッシュテーブルTBに登録されていないので、ハッシュ値「1549128」に対応づけて、特定データ参照情報「002−1」を登録し、添付ファイルデータF1を含む電子メールM2を、そのまま特定領域80に格納する処理を行う。
【0071】
その後、図6に示すように、T3時点(T2時点の後の時点)で、サーバ10が、userB@aaa.comの宛先が指定された電子メールM3を受信したとする。なお、電子メールM3は、電子メールM2に添付されたファイルデータと同じ内容の添付ファイルデータF1を含む。
【0072】
まず、サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM3の参照情報を決定し当該参照情報「003」を格納する。そして、サーバ10は、電子メールM3に添付された添付ファイルデータF1のハッシュ値を求め、ハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。例えば、T3時点で、添付ファイルデータF1のハッシュ値「1549128」が、ハッシュテーブルTBに登録されているので、サーバ10は、電子メールM3の添付ファイルデータF1が、特定領域80に既に格納されていると判断する。つまり、サーバ10は、T3時点で、添付ファイルデータF1が特定領域80に既に格納された他の電子メールM2の添付ファイルデータF1と同じと判断する。
【0073】
そして、サーバ10は、電子メールM3の添付ファイルデータF1をハッシュ値「1549128」に対応する特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3を特定領域80に格納する処理を行う。
【0074】
以上のように、本実施形態のサーバ10は、結果として格納領域60に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域60を使用する容量を節約することができる。特に、本実施形態のサーバ10は、音声データや画像データなど容量の多いファイルが添付された電子メールを格納領域60に保存する場合においては、格納領域60の使用量を従来よりも格段に節約することができる。
【0075】
また、本実施形態のサーバ10は、初めて添付ファイルデータを格納する際は、当該添付ファイルは電子メールから分離されることがないので、必要最小限で添付ファイルデータの書き換えを行うことになり、結果的に処理負荷を軽減することができる。
【0076】
なお、サーバ10は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に、添付ファイルデータが特定領域80(広義には格納領域60)に既に格納された他の電子メールの添付ファイルデータと同じか否かを判断し、添付ファイルデータが特定領域80に既に格納された他の電子メールの添付ファイルデータと同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域80に格納する処理を行うようにしてもよい。
【0077】
例えば、図9に示すように、T4時点でuserA@aaa.comの宛先が指定された電子メールM4を受信すると、userA@aaa.comのメールボックス70Aに、電子メールM4の参照情報「004」を格納する。そして、サーバ10は、電子メールM4の添付ファイルデータF2、F3が既に特定領域80に格納されているか否かを判断する。
【0078】
例えば、T4時点で電子メールM4の添付ファイルデータF2のハッシュ値「3478204」がハッシュテーブルTBに登録されていないので、サーバ10は、当該ハッシュ値「3478204」を、特定データ参照情報「004−1」に対応付けて登録する。この特定データ参照情報「004−1」は、電子メールM4(参照情報004)の1番目のファイルを意味している。また、サーバ10は、T4時点で電子メールM4の添付ファイルデータF3のハッシュ値「3478232」がハッシュテーブルTBに登録されていないので、当該ハッシュ値「3478232」を、特定データ参照情報「004−2」に対応付けて登録する。この特定データ参照情報「004−2」は、電子メールM4(参照情報004)の2番目のファイルを意味している。そして、サーバ10は、添付ファイルデータF2と添付ファイルデータF3とを含む電子メールM4を、そのまま特定領域80に格納する処理を行う。
【0079】
その後、サーバ10が、T5時点(T4時点の後の時点)で、userB@aaa.comの宛先が指定された電子メールM5を受信したとする。なお、電子メールM5は、添付ファイルデータF3と、添付ファイルデータF4とを含む。
【0080】
まず、サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM5の参照情報「005」を格納する。そして、サーバ10は、電子メールM5の添付ファイルデータF3、F4が既に特定領域80に格納されているか否かを判断する。
【0081】
例えば、サーバ10は、T5時点で電子メールM5の添付ファイルデータF3のハッシュ値「3478204」がハッシュテーブルTBに登録されていると判断されるので、電子メールM5の添付ファイルデータF3を、ハッシュ値「3478204」に対応する特定データ参照情報「004−2」に書き換える。また、サーバ10は、T5時点で、電子メールM5の添付ファイルデータF4のハッシュ値「2349872」がハッシュテーブルTBに登録されていないので、ハッシュテーブルTBにハッシュ値「2349872」を特定データ参照情報「005−2」に対応付けて登録する。なお、この特定データ参照情報「005−2」は、電子メールM5(参照情報005)の2番目のファイルを意味している。そして、サーバ10は、添付ファイルデータF3を特定データ参照情報「004−2」に書き換えた電子メールM5を特定領域80に格納する処理を行う。
【0082】
3.2.1.2 送信処理
次に、サーバ10の送信処理について説明する。まず、サーバ10が、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メール参照情報を取得する。そして、取得した電子メール参照情報に基づいて、電子メールを特定領域80から読み出し、特定領域80から読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を元の添付ファイルデータに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【0083】
例えば、図6のT3以後で、サーバ10が、ユーザ名「userB@aaa.com」の端末20から受信要求を受け付けると、「userB@aaa.com」のメールボックス70Bにある電子メール参照情報「003」を取得する。そして、「003」に対応する電子メールM3を特定領域80から読み出す。
【0084】
そしてサーバ10は、電子メールM3に特定データ参照情報が含まれているか否かを判断する。例えば、サーバ10は、電子メールM3において、ハッシュテーブルTBに登録されている特定データ参照情報を検出した場合には、電子メールM3に特定データ参照情報を含むと判断する。一方、サーバ10は、電子メールM3においてハッシュテーブルTBに登録されている特定データ参照情報を検出しない場合には、電子メールM3に特定データ参照情報を含まないと判断する。
【0085】
例えば、サーバ10は、電子メールM3に特定データ参照情報を含むと判断すると、特定データ参照情報「002−1」を取得する。そして、特定データ参照情報「002−1」に対応する添付ファイルデータF1を取得し、電子メールM3の当該特定データ参照情報「002−1」をファイルデータF1に書き戻す。例えば、特定データ参照情報「002−1」は、電子メールM2の1番目の添付ファイルを意味するので、サーバ10は、電子メールM2の1番目の添付ファイルデータF1(例えば、第2のパートのパートボディ)を読み出して、特定データ参照情報「002−1」を削除して代わりにファイルデータF1を書き込む処理を行う。そして、サーバ10は、書き戻された電子メールM3を端末20に送信する処理を行う。なお、サーバ10は、上述したように、電子メールM3に固有情報を加えて送信用の電子メールM3を生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。
【0086】
なお、サーバ10は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報に対応するファイルデータに、書き戻し、書き戻された電子メールを端末20に送信する処理を行う。
【0087】
以上のように、本実施形態のサーバ10は、電子メールの一部を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【0088】
3.2.2 添付ファイルデータを含む電子メールの格納処理と送信処理の例2
3.2.2.1 格納処理
また、本実施形態のサーバ10は、図10に示すように、一律に受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域80に格納するようにしてもよい。
【0089】
そして、サーバ10は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。一方、添付ファイルデータが特定領域80に格納されている場合には添付ファイルデータを重複して特定領域80に格納しないように制御する。
【0090】
例えば、図10に示すように、サーバ10は、T2時点において、電子メールM2の添付ファイルデータF1が特定領域80に格納されていない場合には、F1のハッシュ値「1549128」をF1の特定データ参照情報「002−1」に対応づけて登録する。電子メールM2の添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM2を特定領域80に格納する処理を行うと共に、添付ファイルデータF1の実データも特定領域80に格納する処理を行う。
【0091】
そして、その後、サーバ10は、T3時点で受信した電子メールM3を受信すると、添付ファイルデータF1が特定領域80に格納されているので、添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3を特定領域80に格納する処理を行う。なお、T3時点では、添付ファイルデータF1のハッシュ値「1549128」が既にハッシュテーブルTBに登録されているので、T3時点で添付ファイルデータF1を特定領域80に格納しないように制御する。
【0092】
なお、サーバ10は、上述した「3.2.1.1の格納処理」と同じように、複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。
【0093】
以上のように、処理例2においても、サーバ10は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0094】
3.2.2.2 送信処理
次に、サーバ10の送信処理について説明する。例2においても、サーバ10は、基本的には、例1の「3.2.1.2の送信処理」と同じように、処理を行う。
【0095】
例えば、サーバ10は、読み出された電子メールに特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を、特定領域80に格納されている添付ファイルデータ(特定データ参照情報に対応する添付ファイルデータ)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。
【0096】
3.2.3 添付ファイルデータを含む電子メールの格納処理と送信処理の例3
3.2.3.1 格納処理
また、本実施形態のサーバ10は、図11に示すように、受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス70に格納するようにしてもよい。
【0097】
そして、サーバ10は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。一方、添付ファイルデータが特定領域80に格納されている場合には添付ファイルデータを重複して特定領域80に格納しないように制御する。
【0098】
例えば、図11に示すように、T2時点において、サーバ10は、電子メールM2の添付ファイルデータF1が特定領域80に格納されていない場合、添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM2をメールボックス70Aに格納する処理を行うと共に、添付ファイルデータF1を特定領域80に格納する処理を行う。また、サーバ10は、ハッシュテーブルTBに、F1のハッシュ値「1549128」に対応づけて、F1の特定データ参照情報「002−1」を登録する。
【0099】
その後、サーバ10が、T3時点で受信した電子メールM3を受信すると、電子メールM3の添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3をメールボックス70Bに格納する処理を行う。なお、T3時点では、添付ファイルデータF1のハッシュ値「1549128」が既にハッシュテーブルTBに登録されているので、T3時点で添付ファイルデータF1を特定領域80に格納しないように制御する。
【0100】
なお、サーバ10は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。例えば、サーバ10は、添付ファイルデータ毎に添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを各宛先のメールボックス80に格納する。また、サーバ10は、添付ファイルデータ毎に、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。
【0101】
以上のように、例3においても、サーバ10は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0102】
3.2.3.2 送信処理
次に、処理例3のサーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めると、ユーザのメールボックスから電子メールを読み出す。
【0103】
そして、サーバ10は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を、特定領域80に格納されている添付ファイルデータ(特定データ参照情報に対応する添付ファイルデータ)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。
【0104】
また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応するファイルデータに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、サーバ10は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。なお、サーバ10は、上述したように、固有情報を加えて送信用の電子メールを生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。
【0105】
3.2.4 本文、添付ファイルデータの説明
図8(A)は、シングルパート形式の電子メールの一例を示す。図8(A)に示すように、シングルパート形式の電子メールは、添付ファイルはないものとして処理する。なお、シングルパート形式の電子メールは、1つのパートからなるヘッダ200と本文300によって構成されており、空行情報に基づいて、本文300を抽出する処理を行う。
【0106】
図8(B)は、マルチパート形式の電子メールの一例を示す。図8(B)に示すように、マルチパート形式の電子メールは、ヘッダ400と複数のパート510、520によって構成される。
【0107】
本実施形態における添付ファイルデータは、電子メールのデータのうち添付されたファイルのデータのことをいい、MIME規格のマルチパート形式のパートのデータ(例えば、パートボディのデータ、或いは、パートヘッダ及びパートボディのデータ)である。通常、マルチパート形式の電子メールの1番目のパートには、ユーザがメールソフトにおいて本文として記載したメッセージが記録されているので、本実施形態では、1番目のパート510のデータ(パートボディ512のデータ、又は、パートヘッダ511及びパートボディ512のデータ)を本文とし、2番目のパート520のデータ(パートボディ522のデータ、又は、パートヘッダ521及びパートボディ522のデータ)を添付ファイルデータとして処理を行う。なお、3つ以上のパートが存在する場合には、2番目以降のそれぞれの各パートのデータを各添付ファイルデータとして処理を行う。つまり、3つ以上のパートが存在する場合には、複数の添付ファイルデータを有することになる。
【0108】
なお、マルチパート形式のいずれかのパートが、更にマルチパート形式にデータが記録されている電子メールも存在する。かかる場合には、再帰的に各パートのデータを添付ファイルデータとして処理してもよい。また、マルチパート形式のパートに記録されている下位のマルチパートのパートのデータ(入れ子にされたマルチパートのパートのデータ)については添付ファイルデータとして処理を行わないように制御し、1段階目の各パートのデータを添付ファイルデータとして処理を行うようにしてもよい。
【0109】
なお、サーバ10は、各パートのパートヘッダを参照し、パートヘッダの「Content−Type」が「image/jpeg」等の特定のヘッダ情報である場合に、そのパートのデータを添付ファイルデータとして扱うようにしてもよい。
【0110】
また、サーバ10は、図8(B)に示すようなマルチパート形式の電子メールにおいて、各パートのデータそれぞれを、各添付ファイルデータとして扱うようにしてもよい。つまり、図8(B)の場合には、電子メールの第1のパート510のデータを1番目の添付ファイルデータとして取り扱い、第2のパート520のデータを2番目の添付ファイルデータとして取り扱ってもよい。なお、サーバ10は、図8(B)に示すようなマルチパート形式の電子メールにおいて、全パートのデータ500を本文として処理してもよいし、本文はないものとして処理してもよい。
【0111】
なお、サーバ10は、電子メールのヘッダの「Content−Type」が「multipart/mixed」である場合に、当該電子メールは添付ファイルデータを有すると判断する(マルチパート形式の電子メールであると判断する)。また、その際に、サーバ10は、各パートの区切り情報(boundary)が示すデータを取得し、区切り情報に基づき各パートデータを抽出する。また、サーバ10は、空行情報に基づいて、各パートのパートヘッダやパートボディデータを抽出し、添付ファイルデータを読み出す処理、添付ファイルデータを抽出して特定データ参照情報に書き換える処理等を行う。
【0112】
3.3 本文に関する電子メールの格納処理と送信処理の例
サーバ10は、受信した電子メールの本文(特定データの一例)が、格納領域60に既に格納された他の電子メールの本文と同じ場合に、受信した電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行うようにしてもよい。
【0113】
3.3.1 本文に関する電子メールの格納処理と送信処理の例1
3.3.1.1 格納処理
例えば、サーバ10は、図12に示すように、T6時点で、userA@aaa.comの宛先が指定された電子メールM6を受信すると、電子メールM6の電子メール参照情報を決定する。例えば、電子メールM6の電子メール参照情報が「006」であるとすると、userA@aaa.comのメールボックス70Aに電子メール参照情報「006」を格納する。
【0114】
次に、サーバ10は、T6時点において、電子メールM6の本文B1のハッシュ値を求め、ハッシュ値に基づいて、電子メールM6の本文B1が既に特定領域80(広義には格納領域60)に格納されているか否かを判断する。このハッシュ値は、本文(特定データの一例)を識別(特定)するための情報である。つまり、サーバ10は、ハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。
【0115】
例えば、本文B1のハッシュ値が「3451432」であるとすると、このハッシュ値「3451432」がハッシュテーブルTBに登録されているか否かを判断する。そして、サーバ10は、本文B1のハッシュ値を「3451432」がハッシュテーブルTBに登録されていない場合に、電子メールM6の本文が特定領域80に格納されていないと判断し、ハッシュテーブルTBにハッシュ値「3451432」に対応づけて特定データ参照情報「006−B」を登録する。なお、特定データ参照情報の「006−B」は、電子メールM6の参照情報「006」と、参照先のデータが本文であることを示すデータ「B」とを組み合わせた情報とする。そして、サーバ10は、電子メールM6をそのまま特定領域80に格納する処理を行う。
【0116】
その後、サーバ10が、T7時点(T6時点の後のタイミング)で、userB@aaa.comの宛先が指定された電子メールM7を受信したとする。サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM7の電子メール参照情報「007」を格納する。
【0117】
そして、サーバ10は、電子メールM7の本文B1のハッシュ値を求める。そして、サーバ10は、T7時点において、電子メールM7のハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。例えば、サーバ10は、T7時点で、電子メールM7の本文B1のハッシュ値「3451432」がハッシュテーブルTBに登録されている場合、電子メールM7の本文が特定領域80に格納されていると判断する。そして、電子メールM7の本文を、ハッシュ値「3451432」に対応する特定データ参照情報「006−B」に書き換えて、電子メールM7を特定領域80に格納する処理を行う。
【0118】
3.3.1.2 送信処理
次に、サーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【0119】
そして、サーバ10は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を特定領域80に格納されている本文(特定データ参照情報に対応する本文)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【0120】
例えば、図12のT7以後で、サーバ10が、ユーザ名「userB@aaa.com」の端末20から受信要求を受け付けると、「userB@aaa.com」のメールボックス70Bにある電子メール参照情報「007」を取得する。そして、「007」に対応する電子メールM7を特定領域80から読み出す。
【0121】
そして、サーバ10は、電子メールM7に特定データ参照情報を含むか否かを判断する。例えば、サーバ10は、電子メールM7に特定データ参照情報を含むと判断されると、特定データ参照情報「006−B」を取得し、「006−B」に対応する本文B1を取得し、当該特定データ参照情報「006−B」を本文B1に書き戻す。例えば、特定データ参照情報「006−B」は、電子メールM6の本文を意味するので、サーバ10は、電子メールM6の本文B1を読み出して、電子メールM7の特定データ参照情報「006−B」を削除して代わりに本文B1を書き込む処理を行う。そして、サーバ10は、書き戻された電子メールM7を端末20に送信する処理を行う。なお、サーバ10は、上述したように、電子メールM7に固有情報を加えて送信用の電子メールM7を生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールM7のサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールM7のサイズを端末20に送信するようにしてもよい。
【0122】
なお、サーバ10は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応する本文に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。
【0123】
以上のように、本実施形態のサーバ10は、電子メールの一部の本文を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【0124】
3.3.2 本文に関する電子メールの格納処理と送信処理の例2
3.3.2.1 格納処理
また、サーバ10は、図13に示すように、受信する電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス70に格納するようにしてもよい。
【0125】
そして、サーバ10は、本文のハッシュ値に基づいて、電子メールの本文が既に特定領域80に格納されているか否かを判断し、本文が特定領域80に格納されていない場合に、本文を特定領域80に格納する。一方、本文が特定領域80に格納されている場合に、本文を重複して特定領域80に格納しないように制御する。
【0126】
例えば、図13に示すように、T6時点において、サーバ10は、電子メールM6の本文B1を特定データ参照情報「006−B」に書き換え、書き換え後の電子メールM6をメールボックス70Aに格納する処理を行う。そして、サーバ10は、本文B1が特定領域80に格納されていない場合、本文B1を特定領域80に格納する処理を行い、ハッシュテーブルTBに、本文B1のハッシュ値「3451432」に対応づけて、本文B1の特定データ参照情報「006−B」を登録する。
【0127】
その後、サーバ10が、T7時点で受信した電子メールM7を受信すると、電子メールM7の本文B1を特定データ参照情報「006−B」に書き換え、書き換え後の電子メールM7をメールボックス70Bに格納する処理を行う。なお、T7時点では、本文B1のハッシュ値「3451432」が既にハッシュテーブルTBに登録されているので、T7時点で本文B1を特定領域80に格納しないように制御する。以上のように、例2においても、サーバ10は、同一の本文を重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0128】
3.3.2.2 送信処理
次に、サーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【0129】
そして、サーバ10は、読み出された電子メールの特定データ参照情報を、特定領域80に格納されている本文(特定データ参照情報に対応する本文)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、サーバ10は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。
【0130】
3.3.3 その他
サーバ10は、受信した電子メールの添付ファイルデータが、格納領域60(例えば、特定領域80)に既に格納された他の電子メールの本文と同じ場合には、受信した電子メールの当該添付ファイルデータを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0131】
また、サーバ10は、受信した電子メールの本文が、格納領域60(例えば、特定領域80)に既に格納された他の電子メールの添付ファイルデータと同じ場合には、受信した電子メールの当該本文を、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0132】
例えば、サーバ10は、マルチパート形式の電子メールを受信した場合には、特定データそれぞれについて(本文、各添付ファイルデータそれぞれについて)、特定データが格納領域60(例えば、特定領域80)に既に格納された他の電子メールの特定データ(添付ファイルデータ又は本文)と同じか否かを判断する。そして、当該特定データが既に格納された他の電子メールの特定データと同じ場合には、受信した電子メールの当該特定データを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0133】
4.削除処理
本実施形態のサーバ10は、格納領域60に格納されたデータを削除しないように制御してもよいし、格納領域60に格納されたデータを、所定条件下で削除するようにしてもよい。
【0134】
4.1 電子メール参照情報に対応するリファレンス値に基づいて、電子メールを削除する手法
例えば、サーバ10が、格納領域60に格納された電子メールを、所定条件下で削除する場合には、電子メール参照情報に対応づけてリファレンス値を設定し、リファレンス値を参照してデータの削除処理を行うことにより、誤って必要なデータを削除しないように制御する。
【0135】
4.1.1 リファレンス値を設定する処理
図14(A)は、電子メール参照情報に対応するリファレンス値R1の一例を示す。例えば、一の電子メールに対応するリファレンス値R1は、当該電子メールの一部または全部が参照される数に相当する。例えば、R1値が「0」の場合は参照されていない状態を示し、R1値が「1」以上である場合には、1以上の電子メールによって参照されている状態を示す。
【0136】
まず、サーバ10は、宛先数に応じてR1値を設定する。例えば、図3に示すように、電子メール参照情報「001」に、2つの宛先が指定されている場合には、電子メール参照情報「001」のR1値を「2」に設定する。また、図6に示すように、電子メール「002」に1つの宛先が指定されている場合には、電子メール参照情報「002」のR1値を「1」に設定する。つまり、サーバ10は、電子メール参照情報のR1値が、電子メールの宛先数以上になるように設定する。
【0137】
また、電子メールの本文の全部又は一部である特定データ(本文又は添付ファイルデータ)が他の電子メールから参照される場合、当該参照される側の電子メールのR1値を参照数に応じて増加させる。例えば、特定データ参照情報に書き換える数に応じて、特定データ参照情報に対応するR1値を1増加させる(インクリメントさせる)。
【0138】
具体的には、図6に示すように、電子メールM3の添付ファイルデータF1を特定データ参照情報「002−1」に書き換える場合に、電子メール参照情報「002」に対応するR1値を1増加させる。また、図12に示すように、電子メールM7の本文を特定データ参照情報「006−B」に書き換える場合には、電子メール参照情報「006」のR1値を1増加させる。なお、図9、10に示すような例についても、同様に処理を行う。
【0139】
4.1.2 リファレンス値に基づく電子メールの削除処理
本実施形態のサーバ10は、端末20に電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、電子メール参照情報に対応するR1値を「1」減少させる(デクリメントさせる)処理を行う。また、電子メールに特定データ参照情報を含む場合には、特定データ参照情報を、本文又は添付ファイルデータに書き戻す都度、参照先の電子メールのR1値を1減少させる(デクリメントさせる)。
【0140】
例えば、図3のT1時点後、サーバ10が、電子メール参照情報「001」に対応するR1値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comの端末20から電子メール参照情報「001」に対応する電子メールM1の送信処理を正常終了した後に、電子メール参照情報「001」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「001」に対応するR1値を「2」から「1」に更新する。
【0141】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comの端末20から電子メール参照情報「001」に対応する電子メールM1の送信処理を正常終了した後に、電子メール参照情報「001」に対応するR1値を「1」減少させる。例えば、電子メール参照情報「001」に対応するR1値を「1」から「0」に更新する。
【0142】
また、図6のT3時点後、サーバ10が、電子メール参照情報「002」に対応するR1値が「2」、電子メール参照情報「003」に対応するR1値が「1」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。
【0143】
すると、サーバ10は、userA@aaa.comの端末20から電子メール参照情報「002」に対応する電子メールM2の送信処理を正常終了した後に、電子メール参照情報「002」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「002」に対応するR1値を「2」から「1」に更新する。
【0144】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comの端末20から電子メール参照情報「003」に対応する電子メールM3の特定データ参照情報「002−1」を元の特定データ(添付ファイルデータF1)に書き戻し、当該電子メールM3の送信処理を正常終了した後に、電子メール参照情報「003」に対応するR1値を「1」減少させる。つまり、「003」に対応するR1値を「1」から「0」に更新する。また、特定データ参照情報「002−1」に基づき、参照先の電子メール参照情報「002」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「002」に対応するR1値を「1」から「0」に更新する。なお、図9、10、12等の例についても、同様に処理を行う。
【0145】
そして、サーバ10は、最終的に、R1値が0である電子メール参照情報に対応する電子メールを、参照されていない電子メールとみなし、当該電子メールを特定領域80(広義には格納領域60)から削除する処理を行う。例えば、図3の例で、電子メール参照情報「001」のR1値が0になった場合には、特定領域80に格納された電子メールM1を削除する処理を行う。また、図6の例で、電子メール参照情報「002」のR1値が0になった場合には、特定領域80に格納された電子メールM2を削除する処理を行う。なお、図9、10、12等の例についても、同様に処理を行う。
【0146】
なお、サーバ10は、R1値を更新する度に、当該R1値が0になったか否かを判断し、R1値が0になったと判断した場合に、電子メールを特定領域80から削除してもよいし、特定の削除タイミング(例えば、毎日の午前2時)に、電子メール参照情報のR1値が0である電子メールを削除するようにしてもよい。なお、サーバ10は、端末20からサーバ10側に電子メールを保存する要求情報を受け付けた場合には、R1値を減少させないように制御するようにしてもよい。
【0147】
以上のように、本実施形態のサーバ10は、保存する必要のない電子メールを削除することができるので、格納領域60の無駄な使用を削減し、格納領域60を有効に利用することができる。また、サーバ10は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【0148】
4.2 特定データ参照情報に対応するリファレンス値に基づいてデータを削除する手法
本実施形態のサーバ10は、特定データ参照情報に対応するリファレンス値R2値を設定し、特定データ(添付ファイルデータ、本文)の削除処理を行うようにしてもよい。例えば、図11、13の処理例については、特定データ参照情報に対応するリファレンス値に基づいてデータを削除する。
【0149】
4.2.1 リファレンス値を設定する処理
図14(B)は、特定データ参照情報に対応するリファレンス値R2の一例を示す。例えば、リファレンス値R2は、特定データを参照する数に相当する。例えば、R2値が「0」の場合は参照されていない状態を示し、R2値が「1」以上である場合には、1以上の電子メールによって参照されている状態を示す。
【0150】
例えば、サーバ10は、添付ファイルデータ又は本文を特定データ参照情報に書き換える度に、R2値を1増加させる(インクリメントさせる)。具体的には、図11に示すように、添付ファイルデータを特定データ参照情報「002−1」に書き換える場合に、特定データ参照情報「002−1」に対応するR2を1増加させる。また、図13に示すように、電子メールR7の本文を特定データ参照情報「006−B」に書き換える場合に、「006−B」に対応するR2を1増加させる。
【0151】
4.2.2 リファレンス値に基づく特定データの削除処理
本実施形態のサーバ10は、端末20からの受信要求があり、電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、特定データ参照情報に対応するR2値を「1」減少させる(デクリメント)処理を行う。
【0152】
例えば、図11のT3時点後、サーバ10が、特定データ参照情報「002−1」に対応するR2値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comのメールボックスにある電子メールM2の特定データ参照情報「002−1」を添付ファイルデータF1に書き戻し電子メールM2の送信処理を正常終了した後に、特定データ参照情報「002−1」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「002−1」に対応するR2値を「2」から「1」に更新する。
【0153】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comのメールボックスにある電子メールM3の特定データ参照情報「002−1」を添付ファイルデータF1に書き戻し電子メールM3の送信処理を正常終了した後に、特定データ参照情報「002−1」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「002−1」に対応するR2値を「1」から「0」に更新する。
【0154】
また、図13のT7時点後、サーバ10が、特定データ参照情報「006−B」に対応するR2値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comのメールボックスにある電子メールM6の特定データ参照情報「006−B」を本文B1に書き戻して電子メールM6の送信処理を正常終了した後に、特定データ参照情報「006−B」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「006−B」に対応するR2値を「2」から「1」に更新する。
【0155】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comのメールボックスにある電子メールM7の特定データ参照情報「006−B」を本文B1に書き戻して電子メールM7の送信処理を正常終了した後に、特定データ参照情報「006−B」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「006−B」に対応するR2値を「1」から「0」に更新する。
【0156】
そして、サーバ10は、最終的に、R2値が0である特定データ参照情報に対応する特定データ(本文又は添付ファイルデータ)を、参照されていない特定データとみなし、当該特定データを特定領域80(広義には格納領域60)から削除する処理を行う。例えば、図11の例で、特定データ参照情報「002−1」のR2値が0になった場合には、特定領域80に格納された添付ファイルデータF1を削除する処理を行う。また、図13の例で、特定データ参照情報「006−B」のR2値が0になった場合には、特定領域80に格納された本文B1を削除する処理を行う。
【0157】
なお、サーバ10は、R1値に基づく電子メールの削除処理と同じように、R2値を更新する度に、当該R2値が0になったか否かを判断し、R2値が0になったと判断した場合に、電子メールを特定領域80から削除してもよいし、特定の削除タイミング(例えば、毎日の午前2時)に、特定データ参照情報のR2値が0である電子メールを削除するようにしてもよい。なお、サーバ10は、端末20からサーバ10側に電子メールを保存する要求情報を受け付けた場合には、R2値を減少させないように制御するようにしてもよい。
【0158】
以上のように、本実施形態のサーバ10は、保存する必要のない特定データ(本文又は添付ファイルデータ)を削除することができるので、格納領域60の無駄な使用を削減し、格納領域60を有効に利用することができる。また、サーバ10は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【0159】
4.3 その他
なお、サーバ10は、電子メールが削除される際に、当該電子メールの参照情報とそのリファレンス値R1を削除してもよい。また、サーバ10は、特定データが削除される際に、当該特定データの参照情報とそのリファレンス値R2を削除し、ハッシュテーブルTBから当該特定データの参照情報とハッシュ値とを削除するようにしてもよい。また、上記削除処理は一例であり、サーバ10は、種々の態様で電子メールや特定データの削除処理を行うようにしてもよい。
【0160】
5.フローチャート
5.1 格納処理の流れ
サーバ10が、サーバ10管理下のユーザを宛先とする電子メールを受信した場合、当該電子メールを格納領域60に格納する処理の一例について、図15A、図15Bを用いて、説明する。なお、R1値の初期値は「0」である。また、下記処理の流れは添付ファイルデータを特定データとし、当該添付ファイルデータを特定データ参照情報に書き換えて格納する処理の一例である。
【0161】
まず、受信した電子メールの参照情報を決定する処理を行う(ステップS10)。そして、電子メールが添付ファイルデータを有する否かを判断する(ステップS11)。電子
メールが添付ファイルデータを有しない場合(ステップS11のN)、特定領域80に受信した電子メールを格納する(ステップS12)。次に、各宛先のメールボックスに電子メール参照情報を格納する(ステップS13)。そして、電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS14)。
【0162】
一方、電子メールが添付ファイルデータを有する場合(ステップS11のY)、添付ファイルに対応する特定データ参照情報を決定する処理を行う(ステップS15)。そして、添付ファイルデータのハッシュ値を求める(ステップS16)。次に、ハッシュ値がハッシュテーブルに登録済みか否かを判断する(ステップS17)。
【0163】
ハッシュ値がハッシュテーブルに登録済み(ステップS17のY)の場合、添付ファイルデータが実在するか否かを判断する(ステップS18)。そして、添付ファイルデータが実在しない場合(ステップS18のN)は、ステップS24に進む。
【0164】
そして、添付ファイルデータが実在する場合(ステップS18のY)は、各宛先のメールボックスに電子メール参照情報を格納する(ステップS19)。そして、電子メールの添付ファイルデータを、特定データ参照情報に書き換えて、特定領域に格納する(ステップS20)。そして、受信した電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS21)。そして、参照先の電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS22)。
【0165】
一方、ハッシュ値がハッシュテーブルに登録済みでない場合(ステップS17のN)には、ハッシュ表のハッシュ値を特定データ参照情報に対応づけて登録する(ステップS23)。そして、添付ファイルデータを特定領域に格納する(ステップS24)。そして、各宛先のメールボックスに電子メール参照情報を格納する(ステップS25)。そして、電子メールを特定領域に格納する(ステップS26)。そして、受信した電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS27)。以上で処理が終了する。
【0166】
5.2 送信処理の流れ
次に、図16を用いて、サーバ10が、端末20から受信要求に応じて、端末20に電子メールを送信する処理の一例について説明する。まず、端末20から受信要求がある場合(ステップS30のY)であって、かつ、ユーザ認証が認められた場合(ステップS31のY)に、ユーザのメールボックスから電子メール参照情報を取得する(ステップS32)。そして、特定領域から電子メール参照情報に対応する電子メールを取得する(ステップS33)。そして、電子メールに特定データ参照情報が含まれるか否かを判断する(ステップS34)。
【0167】
電子メールに特定データ参照情報が含まれない場合(ステップS34のN)は、電子メールに対し、固有情報を付加して送信用の電子メールを生成する(ステップS35)。そして、生成された電子メールを要求のあった端末20に送信する処理を行う(ステップS36)。そして、送信済みの電子メールのR1値をデクリメントする(ステップS37)。
【0168】
一方、電子メールに特定データ参照情報が含まれる場合(ステップS34のY)は、特定データ参照情報を添付ファイルデータに書き戻す処理を行う(ステップS38)。そして、電子メールに対し、固有情報を付加して送信用の電子メールを生成する(ステップS39)。そして、生成された電子メールを要求のあった端末20に送信する処理を行う(ステップS40)。そして、送信済みの電子メールのR1値をデクリメントする(ステップS41)。そして、参照元の電子メールのR1値をデクリメントする処理を行う(ステップS42)。以上で処理が終了する。
【0169】
6. 複数のドメインを管理する場合
本実施形態のサーバ10は、一つのドメイン(例えば、「aaa.com」)を管理する例について説明したが、サーバ10は、複数のドメイン(例えば、「aaa.com」、「bbb.co.jp」)を管理するようにしてもよい。
【0170】
例えば、サーバ10は、複数のドメインそれぞれについて別個独立した格納領域を設け、電子メールの格納処理、送信処理を行うようにしてもよい。より具体的に説明すると、サーバ10は、「aaa.com」の格納領域60−1と、「bbb.co.jp」の格納領域60−2を設け、「aaa.com」をドメインとする電子メールについては、格納領域60−1を用いて格納処理と送信処理を行い、「bbb.co.jp」をドメインとする電子メールについては、格納領域60−2を用いて格納処理と送信処理を行う。
【0171】
なお、サーバ10は、複数のドメイン間で格納領域を共有して電子メールの格納処理を行うようにしてもよい。例えば、サーバ10は、受信した電子メールの特定データが、既に格納領域に格納された他のドメインの電子メールの特定データと同じ場合には、受信した電子メールの特定データを特定データ参照情報に書き換えて格納してもよい。そして、当該電子メールを送信する際に、特定データ参照情報を特定データに書き戻して送信するようにしてもよい。
【0172】
より具体的に説明すると、サーバ10は、受信した電子メールM8の宛先が「userA@bbb.co.jp」であって、電子メールM8の添付ファイルデータF1(特定データの一例)が、特定領域80(広義には格納領域60)に既に格納された「userA@aaa.com」を宛先とする電子メールM2に含まれる添付ファイルデータF1と同じ場合には、電子メールM8の添付ファイルデータF1を、特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM8を特定領域80に格納する処理を行う。そして、サーバ10は、例えば、端末20からドメイン「bbb.co.jp」のuserAの電子メール受信要求を受け付けた場合には、特定領域80から読み出した電子メールM8の特定データ参照情報「002−1」に対応する添付ファイルデータF1に書き戻し、書き戻された電子メールM8を端末に送信する処理を行う。
【0173】
また、サーバ10は、ドメインが異なる複数の宛先が指定された電子メールを受信した場合に、各宛先の各メールボックスに電子メール参照情報を格納すると共に、格納領域に受信した一の電子メールを格納するようにしてもよい。
【0174】
例えば、サーバ10は、「userA@aaa.com」「userA@bbb.co.jp」が指定された電子メールM9を受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールM9に対応する電子メール参照情報(例えば、「009」)を格納すると共に、一の当該電子メールM9を特定領域80(広義には格納領域60)に格納する処理を行う。そして、サーバ10は、例えば、端末20からドメイン「bbb.co.jp」のuserAの電子メール受信要求を受け付けた場合には、「bbb.co.jp」のuserAのメールボックスに格納された電子メール参照情報「009」に基づき、電子メールM9を特定領域80から読み出し、読み出された電子メールM9を端末20に送信する処理を行う。
【0175】
以上のように、本実施形態では、サーバ10が複数のドメインを管理する場合において、格納領域を更に節約することができる。
【0176】
7. 復号化処理の説明
オリジナルのデータがバイナリデータである添付ファイルデータ(例えば、画像データ等)は、電子メールにおいて、「base64」や、「quoted−printable」などの種々の符号化方式によって符号化(エンコード)されている。したがって、符号化方式が異なるが、元来同じ内容のデータを重複して格納領域に保存してしまうことがある。
【0177】
そこで、本実施形態のサーバ10は、受信した電子メールの符号化された特定データを復号化(デコード)し、復号化された特定データに基づいて処理を行うようにしてもよい。つまり、復号化された特定データが、既に格納領域60(例えば、特定領域80)に格納されているか否かを判断する処理を行うようにしてもよい。
【0178】
例えば、サーバ10は、受信した電子メールの復号化された特定データが格納領域60に既に格納された他の電子メールに含まれていない場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルTBに登録されていない場合には、当該ハッシュ値を、復号化された特定データの特定データ参照情報に対応付けて登録し、格納領域60に、電子メールを格納する。なお、この電子メールの特定データは復号化の状態で格納する。
【0179】
一方、サーバ10は、受信した電子メールの復号化された特定データが格納領域60に既に格納された他の電子メールに含まれている場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルTBに登録されている場合には、当該特定データを、ハッシュ値に対応する特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0180】
なお、サーバ10は、特定データを復号化する際に、メール受信時の特定データの符号化方式を記憶し、端末20に電子メールを送信する際には、特定データの符号化方式を参照して当該特定データを符号化してから送信する。
【0181】
なお、サーバ10は、復号化の処理を行う場合には次のように処理する。まず、電子メールがシングルパート形式の場合は、ヘッダの「Content−Transfer−Encoding」を参照して符号化方式を検出し、符号化方式に応じて本文を復号化する。例えば、符号化方式が「base64」であれば、base64に基づく復号化処理を行い、符号化方式が「quoted−printable」であれば、「quoted−printable」に基づく復号化処理を行う。また、電子メールがマルチパート形式の場合は、パートヘッダの「Content−Transfer−Encoding」を参照して符号化方式を検出し、符号化方式に応じてパートデータを復号化する。
【0182】
このようにすれば、符号化方式のみが異なるがオリジナルのデータが同一の特定データについて重複して記憶する必要がなくなるので、記憶領域の節約を図ることができる。
【符号の説明】
【0183】
10 サーバ、100 処理部、110 配送対応部(SMTP)、111 受信部、
112 格納処理部、113 配送部、受信対応部(POP/IMAP)、
121 受け付け部、122 送信部、123 参照判断部、124 削除部、
50 記憶部、60 格納領域、70 メールボックス、80 特定領域、
180 情報記憶媒体、20 端末、21 MUA
【技術分野】
【0001】
本発明は、プログラムに関する。
【背景技術】
【0002】
従来から、SMTP(Simple Mail Transfer Protocol)を通じてネットワーク上で電子メールの受信と送信を行うメールサーバが存在する。
【0003】
通常、このようなメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合には、格納領域に電子メールを格納する処理を行う(いわゆるローカル配送を行う)。一方、受信した電子メールの宛先が他のメールサーバのアドレスを示す場合には当該電子メールを他のメールサーバに配送する処理を行う(いわゆるリモート配送を行う)。
【0004】
そして、メールサーバは、POP(Post Office Protocol)やIMAP(Internet Message Access Protocol)等を通じて、端末から電子メールの受信要求を受信すると、格納領域にある電子メールを当該端末に送信する処理を行っている(特許文献1の0030段落参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2000−228673
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかし、従来のメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合に当該電子メールを格納する際、無駄に格納領域を使用してしまうことがあった。例えば、添付ファイルを含む電子メールを受信し、その後、同一内容の添付ファイルを含む別の電子メールを受信した場合には、同一内容の添付ファイルであっても各電子メールを個別に格納領域に格納していたので、格納領域を無駄に使用してしまい、結果的に格納領域の使用量が増加してしまうという問題があった。
【0007】
特に、近年では、画像データや音声データ等のファイルが添付されることが多く、数十〜数百メガバイトの添付ファイルを含む電子メールの送受信が行われており、電子メールを格納するための格納領域を節約することが期待されている。
【0008】
本発明は、上述した課題に鑑みたものであり、サーバ管理下のユーザを宛先とする電子メールを格納するための格納領域の使用量を節約することが可能なサーバのためのプログラムを提供することにある。
【課題を解決するための手段】
【0009】
(1)本発明は、受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、電子メールを受信する処理を行う受信部と、当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部として、コンピュータを機能させ、前記格納処理部が、受信した電子メールに含まれる特定データが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、前記送信部が、前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うプログラムに関する。
【0010】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成するサーバに関係する。本発明は、受信した電子メールに含まれる特定データが、格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。また、本発明は、格納領域から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うので、元の電子メールの内容が紛失されることなく送信することができる。
【0011】
(2)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる添付ファイルデータを前記特定データとし、当該添付ファイルデータが、前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0012】
本発明は、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。本発明は、例えば、音声データや画像データなどの、容量の多いファイルが添付された電子メールを格納領域に格納する際に、格納領域の使用量を従来よりも格段に節約することができる。
【0013】
(3)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0014】
本発明は、電子メールに複数の添付ファイルデータを含んでいても、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【0015】
(4)また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる本文を前記特定データとし、当該本文が、前記格納領域に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【0016】
本発明は、格納領域に、受信した電子メールの本文を重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【0017】
(5)また、本発明のプログラムは、前記格納領域は、当該サーバが管理する各ユーザのメールボックスと、特定領域とを含み、前記格納処理部が、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の当該電子メールを特定領域に格納する処理を行い、前記送信部が、受信要求を受け付けたユーザのメールボックスに格納された電子メール参照情報に基づき、電子メールを前記特定領域から読み出し、読み出された電子メールを当該端末に送信する処理を行うようにしてもよい。
【0018】
本発明は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。
【0019】
(6)また、本発明のプログラムは、前記格納領域に格納された電子メールが参照されているか否かを判断する参照判断部と、参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを更に機能させるようにしてもよい。
【0020】
本発明は、参照されていないと判断される電子メールを格納領域から削除する処理を行うので、保存する必要性のない電子メールを削除することができ、限られた格納領域を有効に利用することができる。
【図面の簡単な説明】
【0021】
【図1】本実施形態のメールシステムの一例。
【図2】本実施形態のサーバの機能ブロック図の一例。
【図3】図3(A)は従来の電子メールの格納処理の説明図。図3(B)は、本実施形態の電子メールの格納処理の説明図。
【図4】固有情報の説明図。
【図5】従来の電子メールの格納処理の説明図。
【図6】本実施形態の格納処理の説明図。
【図7】ハッシュテーブルの説明図。
【図8】本実施形態の電子メールの添付ファイルデータ、本文の説明図。
【図9】本実施形態の格納処理の説明図。
【図10】本実施形態の格納処理の説明図。
【図11】本実施形態の格納処理の説明図。
【図12】本実施形態の格納処理の説明図。
【図13】本実施形態の格納処理の説明図。
【図14】リファレンス値の説明図。
【図15A】本実施形態の格納処理のフローチャート図。
【図15B】本実施形態の格納処理のフローチャート図。
【図16】本実施形態の送信処理のフローチャート図。
【発明を実施するための形態】
【0022】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0023】
1.メールシステム
図1は、本実施形態のメールシステムの一例である。本実施形態のサーバ10は、MTA(Mail Transfer Agent)として機能し、SMTPを通じてネットワーク上で電子メールの受信と配送を行う。また、サーバ10は、POPやIMAPを通じて端末20から電子メールの受信要求を受け付け、当該端末20に電子メールを送信する処理も行う。
【0024】
サーバ10は、配送処理に用いるエンベロープの宛先(宛先メールアドレス)及びエンベロープの差出元(差出元メールアドレス)、メッセージとからなる電子メールを受信する。そして、サーバ10は、ネットワークを介して受信した当該電子メールを、エンベロープの宛先に基づいて配送先メールサーバを決定し、配送先のメールサーバに配送する処理を行う。
【0025】
より詳しく説明すると、サーバ10は、MUA(Mail User Agent)などの差出元から送信された電子メールを、SMTPを通じて受信する処理を行う。例えば、サーバ10は、SMTPを通じて端末20又は他のメールサーバから送信された電子メールを受信する。なお、MUAとは、ネットワークを介してサーバ10と電子メールを送受信する処理を行うクライアントプログラムであり、ユーザが差出元となる電子メールを送信する処理、ユーザ宛の電子メールを受信する処理を行う。
【0026】
次に、サーバ10は、受信した電子メールのエンベロープの宛先のドメインを管理しているDNS(Domain Name System)サーバや、サーバ10のローカルエリア内のDNSサーバ、或いは他のDNSサーバに、受信した電子メールのエンベロープの宛先のドメインを問い合わせる(例えば、宛先のドメインのMXレコードを問い合わせる)。そして、DNSサーバの応答メッセージによって決められる配送先メールサーバへ、電子メールを配送(ローカル配送、リモート配送)する処理を行う。
【0027】
また、本実施形態のサーバ10は、POP、或いは、IMAPを通じて、ユーザの端末20からの要求に応じて、格納領域に格納された当該ユーザ宛の電子メールを、当該端末20に送信する処理を行うことができる。
【0028】
また、本実施形態のサーバ10は、Webサービスを提供するWebサーバとして機能してもよい。例えば、サーバ10は、端末20のWebブラウザからHTTP(HyperText Transfer Protocol)を通じて電子メールの送信、電子メールの受信等のアクセス要求を受け付けるようにしてもよい。
【0029】
また、メールシステムは、1つのサーバ10に限らず、複数のサーバ10によって構成してもよい。また、格納領域60は、サーバ10とは別の一又は複数の記憶装置(一又は複数のハードウェア)であってもよい。
【0030】
2.構成
図2は、本実施形態のサーバ10の機能ブロック図の一例である。なお、本実施形態のサーバ10は、図2の各部を全て含む必要はなく、その一部を省略した構成としてもよい。
【0031】
記憶部50は、処理部100などのワーク領域となるもので、その機能はRAM(VRAM)などのハードウェアにより実現できる。本実施形態の記憶部50には、格納領域60を含む。この格納領域60は、受信した電子メールの宛先のドメインが当該サーバ10のドメインと同じ場合(サーバ10が管理するユーザが宛先となっている場合)に、当該電子メールを格納するための記憶領域である。また、格納領域60は、メールボックス70、特定領域80を含む。サーバ10は、サーバ10が管理するユーザ毎にメールボックス70を設ける。メールボックス70は、所与の記憶領域であり、サーバが管理する各ユーザ情報に対応づけて設けられる。例えば、メールボックス70には、電子メールや電子メール参照情報が記憶される。また、特定領域80には、受信した電子メールや特定データが格納される。例えば、特定データは、電子メールの本文、添付ファイルデータである。
【0032】
また、記憶部50は、電子メール参照情報、特定データ参照情報、特定データ参照情報に対応づけてハッシュ値を登録したハッシュテーブルTB、電子メール参照情報に対応するリファレンス値R1、特定データ参照情報に対応するリファレンス値R2などを記憶してもよい。また、記憶部50は、配送対応部(SMTP)の受信部111によって受信された電子メールを、配送(ローカル配送、リモート配送)するために一時的に格納するためのスプール領域を設けてもよい。また、記憶部50は、サーバ10が管理するユーザのユーザ情報(ユーザ名、パスワード)、ユーザのメールボックス名を記憶してもよい。
【0033】
また、情報記憶媒体180は、コンピュータにより読み取り可能であり、この情報記憶媒体180にはプログラムやデータなどが格納されている。即ち、情報記憶媒体180には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。つまり、処理部100は、この情報記憶媒体180に格納されるプログラム(データ)から読み出されたデータに基づいて本実施形態の種々の処理を行うことができる。例えば、情報記録媒体180は、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)、メモリカード等である。
【0034】
処理部100は、記憶部50に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。なお、本実施形態の処理部100が、情報記憶媒体180に格納されているプログラムやデータを読み出し、読み出したプログラムやデータを記憶部50に格納し、そのプログラムやデータに基づいて処理を行ってもよい。処理部100(プロセッサ)は、記憶部50内の主記憶部をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)などのハードウェアや、プログラムにより実現できる。
【0035】
本実施形態の処理部100は、配送対応部(SMTP)110、受信対応部(POP/IMAP)120と、を含む。
【0036】
配送対応部110は、SMTPなどの電子メール配送プロトコルを通じて電子メールの受信、配送処理(格納処理)を行う。配送対応部110は、受信部111、格納処理部112、配送部113を含む。
【0037】
例えば、受信部111は、端末20のMUA21によって、差出元から送信され、エンベロープの宛先が指定された電子メールを受信する処理(受け付ける処理)を行う。
【0038】
また、格納処理部112は、受信した電子メールの宛先のドメインが、当該サーバ10が管理するドメインと同じ場合、つまり、受信した電子メールの宛先がサーバ10の管理下のユーザである場合に、当該電子メールを格納領域60に格納する処理を行う。すなわち、格納処理部112は、サーバ10が稼動する同一システム内にアカウントを持つユーザ宛に配送するローカル配送処理を行う。なお、ローカル配送処理は、専用のローカル配信エージェントであるMDA(Mail Delivery Agent)によって処理を行ってもよい。なお、サーバ10が管理するドメインは、1つに限らず複数であってもよい。
【0039】
また、格納処理部112は、受信した電子メールに含まれる特定データが、格納領域60に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0040】
また、格納処理部112は、受信した電子メールに含まれる添付ファイルデータを特定データとし、当該添付ファイルデータが、格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0041】
また、格納処理部112は、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが格納領域60に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0042】
また、格納処理部112は、受信した電子メールに含まれる本文を特定データとし、当該本文が、格納領域60に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0043】
また、格納処理部112は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックス70に、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域80に格納する処理を行うようにしてもよい。
【0044】
また、配送部113は、受信した電子メールの宛先ドメインが他のメールサーバのドメインである場合に、当該他のメールサーバに電子メールを配送するリモート配送処理(転送処理、中継処理)を行う。
【0045】
受信対応部120は、POP又はIMAPなどの電子メール受信プロトコルを通じて、電子メールを端末20に送信する処理を行う。本実施形態の受信対応部120は、受け付け部121、送信部122、参照判断部123、削除部124と、を含む。
【0046】
受信対応部120は、端末20から受信要求を受け付けると、ユーザ情報(ユーザ名、パスワード)を端末20から受信し、ユーザ情報に基づきユーザ認証処理を行う。例えば、受信したユーザ名とパスワードが、サーバ10側で予め登録されているユーザ名とパスワードと一致するか否かを判定し、一致した場合にユーザ認証を認め、不一致はユーザ認証を認めないように判断する。そして、受信対応部120は、ユーザ認証が認められたユーザを宛先とする電子メールを当該端末20に送信する処理を行う。
【0047】
受け付け部121は、端末20から電子メールの受信要求を受け付ける処理を行う。
【0048】
送信部122は、格納領域60に格納された電子メールを送信する処理を行う。例えば、送信部122は、格納領域60から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を特定データに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、送信部122は、受信要求を受け付けたユーザのメールボックス70に格納された電子メール参照情報に基づき、電子メールを特定領域80から読み出し、読み出された電子メールを端末20に送信する処理を行う。
【0049】
また、参照判断部123は、格納領域60に格納された電子メール(電子メールの少なくとも一部)が参照されているか否かを判断する処理を行う。例えば、参照判断部123は、電子メール参照情報に対応するリファレンス値に基づいて、格納領域60に格納された電子メールが参照されているか否かを判断する処理を行う。また、参照判断部123は、特定データ参照情報に対応するリファレンス値に基づいて、格納領域60に格納された電子メールが参照されているか否かを判断する処理を行うようにしてもよい。
【0050】
また、削除部124は、参照されていないと判断される電子メールを、格納領域60から削除する処理を行う。例えば、削除部124は、電子メール参照情報に対応するリファレンス値が所定値(例えば、0)である電子メールを、格納領域60から削除する処理を行う。また、削除部124は、特定データに対応するリファレンス値が所定値(例えば、0)である特定データを、格納領域60から削除する処理を行う。
【0051】
端末20は、コンピュータ、携帯電話、スマートフォン、タブレット型コンピュータ、携帯端末、ゲーム装置などであり、MUA21として機能する。
【0052】
3.本実施形態の処理の説明
本実施形態のサーバ10は、差出元から送信された電子メールを受信し、当該電子メールの宛先が、サーバ10が管理するユーザ宛の場合、受信した電子メールを格納領域60に格納する処理を行う。例えば、受信した電子メールの宛先のドメインがサーバ10のアドレス(例えば、「aaa.com」)を示す場合に、受信した電子メールを格納領域60に格納する処理を行う。そして、端末20からの要求に応じて格納領域60の電子メールを送信する処理を行う。以下、本実施形態の格納処理と送信処理の詳細について説明する。
【0053】
3.1 複数の宛先が指定された電子メールの格納処理と送信処理の説明
さて、従来のサーバは、複数の宛先が指定された電子メールを受信した場合、同一内容の電子メールを、各宛先のメールボックス70に格納する処理を行っていた。例えば、図3(A)に示すように、サーバが、所与の端末20或いは他のサーバから、ネットワークを介してSMTPコマンドのエンベロープの宛先(RCPT TO)で複数の宛先(例えば、userA@aaa.com、userB@aaa.com)が指定された電子メールM1を受信したとする。すると、サーバは、宛先userA@aaa.comのメールボックス70Aに電子メールM1を格納し、宛先userB@aaa.comのメールボックス70Bに電子メールM1を格納する処理を行っていた。つまり、同じ内容の電子メールM1にもかかわらず、各宛先の各メールボックス70A、70Bに、電子メールM1を格納する処理を行っていた。ゆえに、従来のサーバは、無駄に格納領域を使用してしまうという問題があった。
【0054】
そこで、本実施形態のサーバ10は、格納領域60に各ユーザのメールボックス70と特定領域80とを含むようにし、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の電子メールを特定領域80に格納する処理を行うようにする。
【0055】
例えば、図3(B)に示すように、userA@aaa.com、userB@aaa.comの宛先が指定された電子メールM1を受信すると、まず電子メールM1の電子メール参照情報を決定する。例えば、電子メールM1の参照情報が「001」であるとすると、サーバ10は、userA@aaa.comのメールボックス70A、userB@aaa.comのメールボックス70Bそれぞれに、電子メールM1の参照情報「001」を格納する。そして、一の電子メールM1を特定領域80に格納する。ここで、「電子メール参照情報」は、受信した電子メールの参照先を示す情報であり、電子メールを一意に識別できる情報であればよい。例えば、「電子メール参照情報」は、ユニーク番号や、電子メールを受信した日時とすることができる。なお、本実施形態では、「電子メール参照情報」のサイズは、所定サイズ以下(例えば、16バイト以下)とし、一般的な電子メールのサイズよりも小さいサイズにしている。
【0056】
このように、本実施形態のサーバ10は、各ユーザA、Bのメールボックス70A、70Bには電子メールM1の参照情報を記録するだけであり、特定領域80には受信した一の電子メールM1のデータを格納するだけであるので、従来よりも格納領域60の使用量を節約することができる。
【0057】
例えば、「電子メールM1のサイズ」が20,000,000バイトであり、「電子メールM1の参照情報のサイズ」が3バイトとすると、従来のサーバでは、格納領域60において、電子メールM1を個別に格納していたので40,000,000バイトを使用することになっていた。一方、本実施形態のサーバ10は、格納領域60に1つ分の電子メールM1と、電子メールM1の参照情報とを格納するだけでよいので、結果的に、20,000,006バイトだけ使用することになり、格納領域60を使用する容量を従来よりも格段に節約することができる。
【0058】
次に、サーバ10が、端末20からの受信要求に応じて格納された電子メールを当該端末20に送信する処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めると当該ユーザのメールボックスから電子メール参照情報を取得し、取得した電子メール参照情報に対応する電子メールを特定領域80から読み出し、読み出された電子メールを端末20に送信する処理を行う。
【0059】
例えば、サーバ10は、ユーザ名「userA@aaa.com」の端末20から受信要求を受け付けると、「userA@aaa.com」のメールボックス70Aにある電子メール参照情報「001」を取得する。そして、電子メール参照情報「001」に対応する電子メールM1を特定領域80から読み出し、読み出した電子メールM1を端末20に送信する。
【0060】
なお、サーバ10は、電子メールの規格(例えば、MIME(Multipurpose Internet Mail Extensions))に基づいて特定領域80から取得した電子メールM1に、固有情報を付加して送信用の電子メールを生成し、生成された電子メールを端末20に送信してもよい。例えば、図4に示すように、「Delivered−To」ヘッダを電子メールのヘッダの最上位に付加し端末20に送信するようにしてもよい。
【0061】
また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。例えば、図4に示すように、サーバ10は、固有情報のサイズを算出し、特定領域80に格納された電子メールM1のサイズ(例えば、1300バイト)に固有情報のサイズ(例えば、16バイト)を加算した合計値(例えば、1316バイト)を、端末20に送信する処理を行うようにしてもよい。このようにすれば、送信用の電子メールの正しいサイズを、端末に通知できる。
【0062】
3.2 添付ファイルデータを含む電子メールの格納処理と送信処理の例
さて、従来のサーバは、例えば、図5に示すように、T2時点でファイルF1が添付されたuserA@aaa.com宛の電子メールM2を受信し、その後、T3時点でファイルF1が添付されたuserB@aaa.com宛の電子メールM3を受信した場合、共通のファイルF1が添付された各電子メールM2、M3を、各メールボックス70A、70Bに個別に保存していたので格納領域60を無駄に使用してしまうという問題があった。
【0063】
そこで、本実施形態のサーバ10は、電子メールを受信すると、受信した電子メールに含まれる添付ファイルデータ(特定データの一例)が、格納領域60に既に格納された他の電子メールの添付ファイルデータと同じ場合には、添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。このようにすれば、同じ内容の添付ファイルデータが重複して格納されることを回避でき、格納領域60の使用を節約することができる。
【0064】
3.2.1 添付ファイルデータを含む電子メールの格納処理と送信処理の例1
3.2.1.1 格納処理
添付ファイルデータを格納する第1の処理例について説明する。まず、サーバ10は、図6に示すように、T2時点でuserA@aaa.comの宛先が指定された電子メールM2を受信すると、電子メールM2の参照先を示す一意の電子メール参照情報を決定する。そして、サーバ10は、電子メールM2の参照情報が「002」であるとすると、userA@aaa.comのメールボックス70Aに、電子メールM2の参照情報「002」を格納する。
【0065】
次に、サーバ10は、電子メールM2の添付ファイルデータF1が既に特定領域80(広義には格納領域60)に格納されているか否かを判断する。つまり、サーバ10は、添付ファイルデータF1が、特定領域80に既に格納された他の電子メールの添付ファイルデータと同じであるか否かを判断する。ここで、既に格納された他の電子メールとは、サーバ10が、電子メールM2とは異なるタイミングで過去に受信した一又は複数の電子メールのことである。
【0066】
具体的には、サーバ10は、添付ファイルデータのハッシュ値(識別情報)を計算し、ハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断する。なお、ハッシュ値は、ハッシュ関数(チェックサム、チェックディジット、フィンガープリント等)に基づき求められる値である。例えば、ハッシュ関数の入力キーを添付ファイルデータとし、ハッシュ関数の出力値をハッシュ値とする。このハッシュ値は、添付ファイルデータ(特定データの一例)を識別(特定)するための情報となる。
【0067】
例えば、サーバ10は、電子メールM2の添付ファイルデータF1のハッシュ値が「1549128」であるとすると、ハッシュ値「1549128」がハッシュテーブルTBに登録されているか否かを判断する。つまり、サーバ10は、ハッシュ値「1549128」が、ハッシュテーブルTBに登録されていると判断された場合には、電子メールM2の添付ファイルデータF1が既に特定領域80に格納されていると判断し、ハッシュ値「1549128」が、ハッシュテーブルTBに登録されていないと判断された場合には、電子メールM2の添付ファイルデータF1が特定領域80に格納されていないと判断する。
【0068】
例えば、T2の時点で、電子メールM2の添付ファイルデータF1のハッシュ値「1549128」がハッシュテーブルTBに登録されていない場合には、サーバ10は、図7に示すように、ハッシュ値「1549128」を、当該添付ファイルデータF1の特定データ参照情報に対応付けて登録する。ここで、「特定データ参照情報」は、参照先の特定データを識別する情報であり、例えば、参照先の電子メールと参照先の添付ファイルデータを識別するための情報である。本実施形態では、「特定データ参照情報」のサイズは、所定のサイズ以下とし、一般的な本文のサイズや添付ファイルデータのサイズよりも小さいサイズにしている。具体的には、「特定データ参照情報」は、「002−1」のように、「電子メール参照情報(002)」と「ファイルの番号(1番目のファイル)」の組み合わせで決定する。
【0069】
なお、「ファイルの番号」は、電子メールに添付されたファイルの番号であり、マルチパート形式の電子メールの上から順に添付ファイルの番号を決める。例えば、図8(B)に示すように、マルチパート形式の電子メールの第2のパート520以降のパートを添付ファイルデータとして扱う場合には、第2のパート520のパートボディ522のデータを1番目の添付ファイルデータとする。また、図8には示していないが、例えば、第3のパートがある場合には、第3のパートのパートボディのデータを2番目の添付ファイルデータとする。
【0070】
つまり、サーバ10は、T2時点でハッシュ値「1549128」が、ハッシュテーブルTBに登録されていないので、ハッシュ値「1549128」に対応づけて、特定データ参照情報「002−1」を登録し、添付ファイルデータF1を含む電子メールM2を、そのまま特定領域80に格納する処理を行う。
【0071】
その後、図6に示すように、T3時点(T2時点の後の時点)で、サーバ10が、userB@aaa.comの宛先が指定された電子メールM3を受信したとする。なお、電子メールM3は、電子メールM2に添付されたファイルデータと同じ内容の添付ファイルデータF1を含む。
【0072】
まず、サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM3の参照情報を決定し当該参照情報「003」を格納する。そして、サーバ10は、電子メールM3に添付された添付ファイルデータF1のハッシュ値を求め、ハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。例えば、T3時点で、添付ファイルデータF1のハッシュ値「1549128」が、ハッシュテーブルTBに登録されているので、サーバ10は、電子メールM3の添付ファイルデータF1が、特定領域80に既に格納されていると判断する。つまり、サーバ10は、T3時点で、添付ファイルデータF1が特定領域80に既に格納された他の電子メールM2の添付ファイルデータF1と同じと判断する。
【0073】
そして、サーバ10は、電子メールM3の添付ファイルデータF1をハッシュ値「1549128」に対応する特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3を特定領域80に格納する処理を行う。
【0074】
以上のように、本実施形態のサーバ10は、結果として格納領域60に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域60を使用する容量を節約することができる。特に、本実施形態のサーバ10は、音声データや画像データなど容量の多いファイルが添付された電子メールを格納領域60に保存する場合においては、格納領域60の使用量を従来よりも格段に節約することができる。
【0075】
また、本実施形態のサーバ10は、初めて添付ファイルデータを格納する際は、当該添付ファイルは電子メールから分離されることがないので、必要最小限で添付ファイルデータの書き換えを行うことになり、結果的に処理負荷を軽減することができる。
【0076】
なお、サーバ10は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に、添付ファイルデータが特定領域80(広義には格納領域60)に既に格納された他の電子メールの添付ファイルデータと同じか否かを判断し、添付ファイルデータが特定領域80に既に格納された他の電子メールの添付ファイルデータと同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域80に格納する処理を行うようにしてもよい。
【0077】
例えば、図9に示すように、T4時点でuserA@aaa.comの宛先が指定された電子メールM4を受信すると、userA@aaa.comのメールボックス70Aに、電子メールM4の参照情報「004」を格納する。そして、サーバ10は、電子メールM4の添付ファイルデータF2、F3が既に特定領域80に格納されているか否かを判断する。
【0078】
例えば、T4時点で電子メールM4の添付ファイルデータF2のハッシュ値「3478204」がハッシュテーブルTBに登録されていないので、サーバ10は、当該ハッシュ値「3478204」を、特定データ参照情報「004−1」に対応付けて登録する。この特定データ参照情報「004−1」は、電子メールM4(参照情報004)の1番目のファイルを意味している。また、サーバ10は、T4時点で電子メールM4の添付ファイルデータF3のハッシュ値「3478232」がハッシュテーブルTBに登録されていないので、当該ハッシュ値「3478232」を、特定データ参照情報「004−2」に対応付けて登録する。この特定データ参照情報「004−2」は、電子メールM4(参照情報004)の2番目のファイルを意味している。そして、サーバ10は、添付ファイルデータF2と添付ファイルデータF3とを含む電子メールM4を、そのまま特定領域80に格納する処理を行う。
【0079】
その後、サーバ10が、T5時点(T4時点の後の時点)で、userB@aaa.comの宛先が指定された電子メールM5を受信したとする。なお、電子メールM5は、添付ファイルデータF3と、添付ファイルデータF4とを含む。
【0080】
まず、サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM5の参照情報「005」を格納する。そして、サーバ10は、電子メールM5の添付ファイルデータF3、F4が既に特定領域80に格納されているか否かを判断する。
【0081】
例えば、サーバ10は、T5時点で電子メールM5の添付ファイルデータF3のハッシュ値「3478204」がハッシュテーブルTBに登録されていると判断されるので、電子メールM5の添付ファイルデータF3を、ハッシュ値「3478204」に対応する特定データ参照情報「004−2」に書き換える。また、サーバ10は、T5時点で、電子メールM5の添付ファイルデータF4のハッシュ値「2349872」がハッシュテーブルTBに登録されていないので、ハッシュテーブルTBにハッシュ値「2349872」を特定データ参照情報「005−2」に対応付けて登録する。なお、この特定データ参照情報「005−2」は、電子メールM5(参照情報005)の2番目のファイルを意味している。そして、サーバ10は、添付ファイルデータF3を特定データ参照情報「004−2」に書き換えた電子メールM5を特定領域80に格納する処理を行う。
【0082】
3.2.1.2 送信処理
次に、サーバ10の送信処理について説明する。まず、サーバ10が、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メール参照情報を取得する。そして、取得した電子メール参照情報に基づいて、電子メールを特定領域80から読み出し、特定領域80から読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を元の添付ファイルデータに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【0083】
例えば、図6のT3以後で、サーバ10が、ユーザ名「userB@aaa.com」の端末20から受信要求を受け付けると、「userB@aaa.com」のメールボックス70Bにある電子メール参照情報「003」を取得する。そして、「003」に対応する電子メールM3を特定領域80から読み出す。
【0084】
そしてサーバ10は、電子メールM3に特定データ参照情報が含まれているか否かを判断する。例えば、サーバ10は、電子メールM3において、ハッシュテーブルTBに登録されている特定データ参照情報を検出した場合には、電子メールM3に特定データ参照情報を含むと判断する。一方、サーバ10は、電子メールM3においてハッシュテーブルTBに登録されている特定データ参照情報を検出しない場合には、電子メールM3に特定データ参照情報を含まないと判断する。
【0085】
例えば、サーバ10は、電子メールM3に特定データ参照情報を含むと判断すると、特定データ参照情報「002−1」を取得する。そして、特定データ参照情報「002−1」に対応する添付ファイルデータF1を取得し、電子メールM3の当該特定データ参照情報「002−1」をファイルデータF1に書き戻す。例えば、特定データ参照情報「002−1」は、電子メールM2の1番目の添付ファイルを意味するので、サーバ10は、電子メールM2の1番目の添付ファイルデータF1(例えば、第2のパートのパートボディ)を読み出して、特定データ参照情報「002−1」を削除して代わりにファイルデータF1を書き込む処理を行う。そして、サーバ10は、書き戻された電子メールM3を端末20に送信する処理を行う。なお、サーバ10は、上述したように、電子メールM3に固有情報を加えて送信用の電子メールM3を生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。
【0086】
なお、サーバ10は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報に対応するファイルデータに、書き戻し、書き戻された電子メールを端末20に送信する処理を行う。
【0087】
以上のように、本実施形態のサーバ10は、電子メールの一部を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【0088】
3.2.2 添付ファイルデータを含む電子メールの格納処理と送信処理の例2
3.2.2.1 格納処理
また、本実施形態のサーバ10は、図10に示すように、一律に受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域80に格納するようにしてもよい。
【0089】
そして、サーバ10は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。一方、添付ファイルデータが特定領域80に格納されている場合には添付ファイルデータを重複して特定領域80に格納しないように制御する。
【0090】
例えば、図10に示すように、サーバ10は、T2時点において、電子メールM2の添付ファイルデータF1が特定領域80に格納されていない場合には、F1のハッシュ値「1549128」をF1の特定データ参照情報「002−1」に対応づけて登録する。電子メールM2の添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM2を特定領域80に格納する処理を行うと共に、添付ファイルデータF1の実データも特定領域80に格納する処理を行う。
【0091】
そして、その後、サーバ10は、T3時点で受信した電子メールM3を受信すると、添付ファイルデータF1が特定領域80に格納されているので、添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3を特定領域80に格納する処理を行う。なお、T3時点では、添付ファイルデータF1のハッシュ値「1549128」が既にハッシュテーブルTBに登録されているので、T3時点で添付ファイルデータF1を特定領域80に格納しないように制御する。
【0092】
なお、サーバ10は、上述した「3.2.1.1の格納処理」と同じように、複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。
【0093】
以上のように、処理例2においても、サーバ10は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0094】
3.2.2.2 送信処理
次に、サーバ10の送信処理について説明する。例2においても、サーバ10は、基本的には、例1の「3.2.1.2の送信処理」と同じように、処理を行う。
【0095】
例えば、サーバ10は、読み出された電子メールに特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を、特定領域80に格納されている添付ファイルデータ(特定データ参照情報に対応する添付ファイルデータ)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。
【0096】
3.2.3 添付ファイルデータを含む電子メールの格納処理と送信処理の例3
3.2.3.1 格納処理
また、本実施形態のサーバ10は、図11に示すように、受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス70に格納するようにしてもよい。
【0097】
そして、サーバ10は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。一方、添付ファイルデータが特定領域80に格納されている場合には添付ファイルデータを重複して特定領域80に格納しないように制御する。
【0098】
例えば、図11に示すように、T2時点において、サーバ10は、電子メールM2の添付ファイルデータF1が特定領域80に格納されていない場合、添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM2をメールボックス70Aに格納する処理を行うと共に、添付ファイルデータF1を特定領域80に格納する処理を行う。また、サーバ10は、ハッシュテーブルTBに、F1のハッシュ値「1549128」に対応づけて、F1の特定データ参照情報「002−1」を登録する。
【0099】
その後、サーバ10が、T3時点で受信した電子メールM3を受信すると、電子メールM3の添付ファイルデータF1を特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM3をメールボックス70Bに格納する処理を行う。なお、T3時点では、添付ファイルデータF1のハッシュ値「1549128」が既にハッシュテーブルTBに登録されているので、T3時点で添付ファイルデータF1を特定領域80に格納しないように制御する。
【0100】
なお、サーバ10は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。例えば、サーバ10は、添付ファイルデータ毎に添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを各宛先のメールボックス80に格納する。また、サーバ10は、添付ファイルデータ毎に、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域80に格納されているか否かを判断し、添付ファイルデータが特定領域80に格納されていない場合に、添付ファイルデータを特定領域80に格納する。
【0101】
以上のように、例3においても、サーバ10は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0102】
3.2.3.2 送信処理
次に、処理例3のサーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めると、ユーザのメールボックスから電子メールを読み出す。
【0103】
そして、サーバ10は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を、特定領域80に格納されている添付ファイルデータ(特定データ参照情報に対応する添付ファイルデータ)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。
【0104】
また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応するファイルデータに書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、サーバ10は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。なお、サーバ10は、上述したように、固有情報を加えて送信用の電子メールを生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末20に送信するようにしてもよい。
【0105】
3.2.4 本文、添付ファイルデータの説明
図8(A)は、シングルパート形式の電子メールの一例を示す。図8(A)に示すように、シングルパート形式の電子メールは、添付ファイルはないものとして処理する。なお、シングルパート形式の電子メールは、1つのパートからなるヘッダ200と本文300によって構成されており、空行情報に基づいて、本文300を抽出する処理を行う。
【0106】
図8(B)は、マルチパート形式の電子メールの一例を示す。図8(B)に示すように、マルチパート形式の電子メールは、ヘッダ400と複数のパート510、520によって構成される。
【0107】
本実施形態における添付ファイルデータは、電子メールのデータのうち添付されたファイルのデータのことをいい、MIME規格のマルチパート形式のパートのデータ(例えば、パートボディのデータ、或いは、パートヘッダ及びパートボディのデータ)である。通常、マルチパート形式の電子メールの1番目のパートには、ユーザがメールソフトにおいて本文として記載したメッセージが記録されているので、本実施形態では、1番目のパート510のデータ(パートボディ512のデータ、又は、パートヘッダ511及びパートボディ512のデータ)を本文とし、2番目のパート520のデータ(パートボディ522のデータ、又は、パートヘッダ521及びパートボディ522のデータ)を添付ファイルデータとして処理を行う。なお、3つ以上のパートが存在する場合には、2番目以降のそれぞれの各パートのデータを各添付ファイルデータとして処理を行う。つまり、3つ以上のパートが存在する場合には、複数の添付ファイルデータを有することになる。
【0108】
なお、マルチパート形式のいずれかのパートが、更にマルチパート形式にデータが記録されている電子メールも存在する。かかる場合には、再帰的に各パートのデータを添付ファイルデータとして処理してもよい。また、マルチパート形式のパートに記録されている下位のマルチパートのパートのデータ(入れ子にされたマルチパートのパートのデータ)については添付ファイルデータとして処理を行わないように制御し、1段階目の各パートのデータを添付ファイルデータとして処理を行うようにしてもよい。
【0109】
なお、サーバ10は、各パートのパートヘッダを参照し、パートヘッダの「Content−Type」が「image/jpeg」等の特定のヘッダ情報である場合に、そのパートのデータを添付ファイルデータとして扱うようにしてもよい。
【0110】
また、サーバ10は、図8(B)に示すようなマルチパート形式の電子メールにおいて、各パートのデータそれぞれを、各添付ファイルデータとして扱うようにしてもよい。つまり、図8(B)の場合には、電子メールの第1のパート510のデータを1番目の添付ファイルデータとして取り扱い、第2のパート520のデータを2番目の添付ファイルデータとして取り扱ってもよい。なお、サーバ10は、図8(B)に示すようなマルチパート形式の電子メールにおいて、全パートのデータ500を本文として処理してもよいし、本文はないものとして処理してもよい。
【0111】
なお、サーバ10は、電子メールのヘッダの「Content−Type」が「multipart/mixed」である場合に、当該電子メールは添付ファイルデータを有すると判断する(マルチパート形式の電子メールであると判断する)。また、その際に、サーバ10は、各パートの区切り情報(boundary)が示すデータを取得し、区切り情報に基づき各パートデータを抽出する。また、サーバ10は、空行情報に基づいて、各パートのパートヘッダやパートボディデータを抽出し、添付ファイルデータを読み出す処理、添付ファイルデータを抽出して特定データ参照情報に書き換える処理等を行う。
【0112】
3.3 本文に関する電子メールの格納処理と送信処理の例
サーバ10は、受信した電子メールの本文(特定データの一例)が、格納領域60に既に格納された他の電子メールの本文と同じ場合に、受信した電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行うようにしてもよい。
【0113】
3.3.1 本文に関する電子メールの格納処理と送信処理の例1
3.3.1.1 格納処理
例えば、サーバ10は、図12に示すように、T6時点で、userA@aaa.comの宛先が指定された電子メールM6を受信すると、電子メールM6の電子メール参照情報を決定する。例えば、電子メールM6の電子メール参照情報が「006」であるとすると、userA@aaa.comのメールボックス70Aに電子メール参照情報「006」を格納する。
【0114】
次に、サーバ10は、T6時点において、電子メールM6の本文B1のハッシュ値を求め、ハッシュ値に基づいて、電子メールM6の本文B1が既に特定領域80(広義には格納領域60)に格納されているか否かを判断する。このハッシュ値は、本文(特定データの一例)を識別(特定)するための情報である。つまり、サーバ10は、ハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。
【0115】
例えば、本文B1のハッシュ値が「3451432」であるとすると、このハッシュ値「3451432」がハッシュテーブルTBに登録されているか否かを判断する。そして、サーバ10は、本文B1のハッシュ値を「3451432」がハッシュテーブルTBに登録されていない場合に、電子メールM6の本文が特定領域80に格納されていないと判断し、ハッシュテーブルTBにハッシュ値「3451432」に対応づけて特定データ参照情報「006−B」を登録する。なお、特定データ参照情報の「006−B」は、電子メールM6の参照情報「006」と、参照先のデータが本文であることを示すデータ「B」とを組み合わせた情報とする。そして、サーバ10は、電子メールM6をそのまま特定領域80に格納する処理を行う。
【0116】
その後、サーバ10が、T7時点(T6時点の後のタイミング)で、userB@aaa.comの宛先が指定された電子メールM7を受信したとする。サーバ10は、userB@aaa.comのメールボックス70Bに、電子メールM7の電子メール参照情報「007」を格納する。
【0117】
そして、サーバ10は、電子メールM7の本文B1のハッシュ値を求める。そして、サーバ10は、T7時点において、電子メールM7のハッシュ値がハッシュテーブルTBに登録されているか否かを判断する。例えば、サーバ10は、T7時点で、電子メールM7の本文B1のハッシュ値「3451432」がハッシュテーブルTBに登録されている場合、電子メールM7の本文が特定領域80に格納されていると判断する。そして、電子メールM7の本文を、ハッシュ値「3451432」に対応する特定データ参照情報「006−B」に書き換えて、電子メールM7を特定領域80に格納する処理を行う。
【0118】
3.3.1.2 送信処理
次に、サーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【0119】
そして、サーバ10は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を特定領域80に格納されている本文(特定データ参照情報に対応する本文)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。一方、特定領域80から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末20に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【0120】
例えば、図12のT7以後で、サーバ10が、ユーザ名「userB@aaa.com」の端末20から受信要求を受け付けると、「userB@aaa.com」のメールボックス70Bにある電子メール参照情報「007」を取得する。そして、「007」に対応する電子メールM7を特定領域80から読み出す。
【0121】
そして、サーバ10は、電子メールM7に特定データ参照情報を含むか否かを判断する。例えば、サーバ10は、電子メールM7に特定データ参照情報を含むと判断されると、特定データ参照情報「006−B」を取得し、「006−B」に対応する本文B1を取得し、当該特定データ参照情報「006−B」を本文B1に書き戻す。例えば、特定データ参照情報「006−B」は、電子メールM6の本文を意味するので、サーバ10は、電子メールM6の本文B1を読み出して、電子メールM7の特定データ参照情報「006−B」を削除して代わりに本文B1を書き込む処理を行う。そして、サーバ10は、書き戻された電子メールM7を端末20に送信する処理を行う。なお、サーバ10は、上述したように、電子メールM7に固有情報を加えて送信用の電子メールM7を生成して端末20に送信してもよい。また、サーバ10は、端末20から電子メールM7のサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールM7のサイズを端末20に送信するようにしてもよい。
【0122】
なお、サーバ10は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ10は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応する本文に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。
【0123】
以上のように、本実施形態のサーバ10は、電子メールの一部の本文を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【0124】
3.3.2 本文に関する電子メールの格納処理と送信処理の例2
3.3.2.1 格納処理
また、サーバ10は、図13に示すように、受信する電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス70に格納するようにしてもよい。
【0125】
そして、サーバ10は、本文のハッシュ値に基づいて、電子メールの本文が既に特定領域80に格納されているか否かを判断し、本文が特定領域80に格納されていない場合に、本文を特定領域80に格納する。一方、本文が特定領域80に格納されている場合に、本文を重複して特定領域80に格納しないように制御する。
【0126】
例えば、図13に示すように、T6時点において、サーバ10は、電子メールM6の本文B1を特定データ参照情報「006−B」に書き換え、書き換え後の電子メールM6をメールボックス70Aに格納する処理を行う。そして、サーバ10は、本文B1が特定領域80に格納されていない場合、本文B1を特定領域80に格納する処理を行い、ハッシュテーブルTBに、本文B1のハッシュ値「3451432」に対応づけて、本文B1の特定データ参照情報「006−B」を登録する。
【0127】
その後、サーバ10が、T7時点で受信した電子メールM7を受信すると、電子メールM7の本文B1を特定データ参照情報「006−B」に書き換え、書き換え後の電子メールM7をメールボックス70Bに格納する処理を行う。なお、T7時点では、本文B1のハッシュ値「3451432」が既にハッシュテーブルTBに登録されているので、T7時点で本文B1を特定領域80に格納しないように制御する。以上のように、例2においても、サーバ10は、同一の本文を重複して格納しないように制御することにより、従来よりも格納領域60を使用する容量を節約することができる。
【0128】
3.3.2.2 送信処理
次に、サーバ10の送信処理について説明する。サーバ10は、端末20から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【0129】
そして、サーバ10は、読み出された電子メールの特定データ参照情報を、特定領域80に格納されている本文(特定データ参照情報に対応する本文)に書き戻し、書き戻された電子メールを端末20に送信する処理を行う。また、サーバ10は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。
【0130】
3.3.3 その他
サーバ10は、受信した電子メールの添付ファイルデータが、格納領域60(例えば、特定領域80)に既に格納された他の電子メールの本文と同じ場合には、受信した電子メールの当該添付ファイルデータを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0131】
また、サーバ10は、受信した電子メールの本文が、格納領域60(例えば、特定領域80)に既に格納された他の電子メールの添付ファイルデータと同じ場合には、受信した電子メールの当該本文を、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0132】
例えば、サーバ10は、マルチパート形式の電子メールを受信した場合には、特定データそれぞれについて(本文、各添付ファイルデータそれぞれについて)、特定データが格納領域60(例えば、特定領域80)に既に格納された他の電子メールの特定データ(添付ファイルデータ又は本文)と同じか否かを判断する。そして、当該特定データが既に格納された他の電子メールの特定データと同じ場合には、受信した電子メールの当該特定データを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納するようにしてもよい。
【0133】
4.削除処理
本実施形態のサーバ10は、格納領域60に格納されたデータを削除しないように制御してもよいし、格納領域60に格納されたデータを、所定条件下で削除するようにしてもよい。
【0134】
4.1 電子メール参照情報に対応するリファレンス値に基づいて、電子メールを削除する手法
例えば、サーバ10が、格納領域60に格納された電子メールを、所定条件下で削除する場合には、電子メール参照情報に対応づけてリファレンス値を設定し、リファレンス値を参照してデータの削除処理を行うことにより、誤って必要なデータを削除しないように制御する。
【0135】
4.1.1 リファレンス値を設定する処理
図14(A)は、電子メール参照情報に対応するリファレンス値R1の一例を示す。例えば、一の電子メールに対応するリファレンス値R1は、当該電子メールの一部または全部が参照される数に相当する。例えば、R1値が「0」の場合は参照されていない状態を示し、R1値が「1」以上である場合には、1以上の電子メールによって参照されている状態を示す。
【0136】
まず、サーバ10は、宛先数に応じてR1値を設定する。例えば、図3に示すように、電子メール参照情報「001」に、2つの宛先が指定されている場合には、電子メール参照情報「001」のR1値を「2」に設定する。また、図6に示すように、電子メール「002」に1つの宛先が指定されている場合には、電子メール参照情報「002」のR1値を「1」に設定する。つまり、サーバ10は、電子メール参照情報のR1値が、電子メールの宛先数以上になるように設定する。
【0137】
また、電子メールの本文の全部又は一部である特定データ(本文又は添付ファイルデータ)が他の電子メールから参照される場合、当該参照される側の電子メールのR1値を参照数に応じて増加させる。例えば、特定データ参照情報に書き換える数に応じて、特定データ参照情報に対応するR1値を1増加させる(インクリメントさせる)。
【0138】
具体的には、図6に示すように、電子メールM3の添付ファイルデータF1を特定データ参照情報「002−1」に書き換える場合に、電子メール参照情報「002」に対応するR1値を1増加させる。また、図12に示すように、電子メールM7の本文を特定データ参照情報「006−B」に書き換える場合には、電子メール参照情報「006」のR1値を1増加させる。なお、図9、10に示すような例についても、同様に処理を行う。
【0139】
4.1.2 リファレンス値に基づく電子メールの削除処理
本実施形態のサーバ10は、端末20に電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、電子メール参照情報に対応するR1値を「1」減少させる(デクリメントさせる)処理を行う。また、電子メールに特定データ参照情報を含む場合には、特定データ参照情報を、本文又は添付ファイルデータに書き戻す都度、参照先の電子メールのR1値を1減少させる(デクリメントさせる)。
【0140】
例えば、図3のT1時点後、サーバ10が、電子メール参照情報「001」に対応するR1値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comの端末20から電子メール参照情報「001」に対応する電子メールM1の送信処理を正常終了した後に、電子メール参照情報「001」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「001」に対応するR1値を「2」から「1」に更新する。
【0141】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comの端末20から電子メール参照情報「001」に対応する電子メールM1の送信処理を正常終了した後に、電子メール参照情報「001」に対応するR1値を「1」減少させる。例えば、電子メール参照情報「001」に対応するR1値を「1」から「0」に更新する。
【0142】
また、図6のT3時点後、サーバ10が、電子メール参照情報「002」に対応するR1値が「2」、電子メール参照情報「003」に対応するR1値が「1」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。
【0143】
すると、サーバ10は、userA@aaa.comの端末20から電子メール参照情報「002」に対応する電子メールM2の送信処理を正常終了した後に、電子メール参照情報「002」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「002」に対応するR1値を「2」から「1」に更新する。
【0144】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comの端末20から電子メール参照情報「003」に対応する電子メールM3の特定データ参照情報「002−1」を元の特定データ(添付ファイルデータF1)に書き戻し、当該電子メールM3の送信処理を正常終了した後に、電子メール参照情報「003」に対応するR1値を「1」減少させる。つまり、「003」に対応するR1値を「1」から「0」に更新する。また、特定データ参照情報「002−1」に基づき、参照先の電子メール参照情報「002」に対応するR1値を「1」減少させる。つまり、電子メール参照情報「002」に対応するR1値を「1」から「0」に更新する。なお、図9、10、12等の例についても、同様に処理を行う。
【0145】
そして、サーバ10は、最終的に、R1値が0である電子メール参照情報に対応する電子メールを、参照されていない電子メールとみなし、当該電子メールを特定領域80(広義には格納領域60)から削除する処理を行う。例えば、図3の例で、電子メール参照情報「001」のR1値が0になった場合には、特定領域80に格納された電子メールM1を削除する処理を行う。また、図6の例で、電子メール参照情報「002」のR1値が0になった場合には、特定領域80に格納された電子メールM2を削除する処理を行う。なお、図9、10、12等の例についても、同様に処理を行う。
【0146】
なお、サーバ10は、R1値を更新する度に、当該R1値が0になったか否かを判断し、R1値が0になったと判断した場合に、電子メールを特定領域80から削除してもよいし、特定の削除タイミング(例えば、毎日の午前2時)に、電子メール参照情報のR1値が0である電子メールを削除するようにしてもよい。なお、サーバ10は、端末20からサーバ10側に電子メールを保存する要求情報を受け付けた場合には、R1値を減少させないように制御するようにしてもよい。
【0147】
以上のように、本実施形態のサーバ10は、保存する必要のない電子メールを削除することができるので、格納領域60の無駄な使用を削減し、格納領域60を有効に利用することができる。また、サーバ10は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【0148】
4.2 特定データ参照情報に対応するリファレンス値に基づいてデータを削除する手法
本実施形態のサーバ10は、特定データ参照情報に対応するリファレンス値R2値を設定し、特定データ(添付ファイルデータ、本文)の削除処理を行うようにしてもよい。例えば、図11、13の処理例については、特定データ参照情報に対応するリファレンス値に基づいてデータを削除する。
【0149】
4.2.1 リファレンス値を設定する処理
図14(B)は、特定データ参照情報に対応するリファレンス値R2の一例を示す。例えば、リファレンス値R2は、特定データを参照する数に相当する。例えば、R2値が「0」の場合は参照されていない状態を示し、R2値が「1」以上である場合には、1以上の電子メールによって参照されている状態を示す。
【0150】
例えば、サーバ10は、添付ファイルデータ又は本文を特定データ参照情報に書き換える度に、R2値を1増加させる(インクリメントさせる)。具体的には、図11に示すように、添付ファイルデータを特定データ参照情報「002−1」に書き換える場合に、特定データ参照情報「002−1」に対応するR2を1増加させる。また、図13に示すように、電子メールR7の本文を特定データ参照情報「006−B」に書き換える場合に、「006−B」に対応するR2を1増加させる。
【0151】
4.2.2 リファレンス値に基づく特定データの削除処理
本実施形態のサーバ10は、端末20からの受信要求があり、電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、特定データ参照情報に対応するR2値を「1」減少させる(デクリメント)処理を行う。
【0152】
例えば、図11のT3時点後、サーバ10が、特定データ参照情報「002−1」に対応するR2値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comのメールボックスにある電子メールM2の特定データ参照情報「002−1」を添付ファイルデータF1に書き戻し電子メールM2の送信処理を正常終了した後に、特定データ参照情報「002−1」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「002−1」に対応するR2値を「2」から「1」に更新する。
【0153】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comのメールボックスにある電子メールM3の特定データ参照情報「002−1」を添付ファイルデータF1に書き戻し電子メールM3の送信処理を正常終了した後に、特定データ参照情報「002−1」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「002−1」に対応するR2値を「1」から「0」に更新する。
【0154】
また、図13のT7時点後、サーバ10が、特定データ参照情報「006−B」に対応するR2値が「2」である状態で、userA@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userA@aaa.comのメールボックスにある電子メールM6の特定データ参照情報「006−B」を本文B1に書き戻して電子メールM6の送信処理を正常終了した後に、特定データ参照情報「006−B」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「006−B」に対応するR2値を「2」から「1」に更新する。
【0155】
その後、サーバ10が、userB@aaa.comの端末20から受信要求を受け付けたとする。すると、サーバ10は、userB@aaa.comのメールボックスにある電子メールM7の特定データ参照情報「006−B」を本文B1に書き戻して電子メールM7の送信処理を正常終了した後に、特定データ参照情報「006−B」に対応するR2値を「1」減少させる。つまり、特定データ参照情報「006−B」に対応するR2値を「1」から「0」に更新する。
【0156】
そして、サーバ10は、最終的に、R2値が0である特定データ参照情報に対応する特定データ(本文又は添付ファイルデータ)を、参照されていない特定データとみなし、当該特定データを特定領域80(広義には格納領域60)から削除する処理を行う。例えば、図11の例で、特定データ参照情報「002−1」のR2値が0になった場合には、特定領域80に格納された添付ファイルデータF1を削除する処理を行う。また、図13の例で、特定データ参照情報「006−B」のR2値が0になった場合には、特定領域80に格納された本文B1を削除する処理を行う。
【0157】
なお、サーバ10は、R1値に基づく電子メールの削除処理と同じように、R2値を更新する度に、当該R2値が0になったか否かを判断し、R2値が0になったと判断した場合に、電子メールを特定領域80から削除してもよいし、特定の削除タイミング(例えば、毎日の午前2時)に、特定データ参照情報のR2値が0である電子メールを削除するようにしてもよい。なお、サーバ10は、端末20からサーバ10側に電子メールを保存する要求情報を受け付けた場合には、R2値を減少させないように制御するようにしてもよい。
【0158】
以上のように、本実施形態のサーバ10は、保存する必要のない特定データ(本文又は添付ファイルデータ)を削除することができるので、格納領域60の無駄な使用を削減し、格納領域60を有効に利用することができる。また、サーバ10は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【0159】
4.3 その他
なお、サーバ10は、電子メールが削除される際に、当該電子メールの参照情報とそのリファレンス値R1を削除してもよい。また、サーバ10は、特定データが削除される際に、当該特定データの参照情報とそのリファレンス値R2を削除し、ハッシュテーブルTBから当該特定データの参照情報とハッシュ値とを削除するようにしてもよい。また、上記削除処理は一例であり、サーバ10は、種々の態様で電子メールや特定データの削除処理を行うようにしてもよい。
【0160】
5.フローチャート
5.1 格納処理の流れ
サーバ10が、サーバ10管理下のユーザを宛先とする電子メールを受信した場合、当該電子メールを格納領域60に格納する処理の一例について、図15A、図15Bを用いて、説明する。なお、R1値の初期値は「0」である。また、下記処理の流れは添付ファイルデータを特定データとし、当該添付ファイルデータを特定データ参照情報に書き換えて格納する処理の一例である。
【0161】
まず、受信した電子メールの参照情報を決定する処理を行う(ステップS10)。そして、電子メールが添付ファイルデータを有する否かを判断する(ステップS11)。電子
メールが添付ファイルデータを有しない場合(ステップS11のN)、特定領域80に受信した電子メールを格納する(ステップS12)。次に、各宛先のメールボックスに電子メール参照情報を格納する(ステップS13)。そして、電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS14)。
【0162】
一方、電子メールが添付ファイルデータを有する場合(ステップS11のY)、添付ファイルに対応する特定データ参照情報を決定する処理を行う(ステップS15)。そして、添付ファイルデータのハッシュ値を求める(ステップS16)。次に、ハッシュ値がハッシュテーブルに登録済みか否かを判断する(ステップS17)。
【0163】
ハッシュ値がハッシュテーブルに登録済み(ステップS17のY)の場合、添付ファイルデータが実在するか否かを判断する(ステップS18)。そして、添付ファイルデータが実在しない場合(ステップS18のN)は、ステップS24に進む。
【0164】
そして、添付ファイルデータが実在する場合(ステップS18のY)は、各宛先のメールボックスに電子メール参照情報を格納する(ステップS19)。そして、電子メールの添付ファイルデータを、特定データ参照情報に書き換えて、特定領域に格納する(ステップS20)。そして、受信した電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS21)。そして、参照先の電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS22)。
【0165】
一方、ハッシュ値がハッシュテーブルに登録済みでない場合(ステップS17のN)には、ハッシュ表のハッシュ値を特定データ参照情報に対応づけて登録する(ステップS23)。そして、添付ファイルデータを特定領域に格納する(ステップS24)。そして、各宛先のメールボックスに電子メール参照情報を格納する(ステップS25)。そして、電子メールを特定領域に格納する(ステップS26)。そして、受信した電子メールの電子メール参照情報に対応するR1値を宛先数分インクリメントする(ステップS27)。以上で処理が終了する。
【0166】
5.2 送信処理の流れ
次に、図16を用いて、サーバ10が、端末20から受信要求に応じて、端末20に電子メールを送信する処理の一例について説明する。まず、端末20から受信要求がある場合(ステップS30のY)であって、かつ、ユーザ認証が認められた場合(ステップS31のY)に、ユーザのメールボックスから電子メール参照情報を取得する(ステップS32)。そして、特定領域から電子メール参照情報に対応する電子メールを取得する(ステップS33)。そして、電子メールに特定データ参照情報が含まれるか否かを判断する(ステップS34)。
【0167】
電子メールに特定データ参照情報が含まれない場合(ステップS34のN)は、電子メールに対し、固有情報を付加して送信用の電子メールを生成する(ステップS35)。そして、生成された電子メールを要求のあった端末20に送信する処理を行う(ステップS36)。そして、送信済みの電子メールのR1値をデクリメントする(ステップS37)。
【0168】
一方、電子メールに特定データ参照情報が含まれる場合(ステップS34のY)は、特定データ参照情報を添付ファイルデータに書き戻す処理を行う(ステップS38)。そして、電子メールに対し、固有情報を付加して送信用の電子メールを生成する(ステップS39)。そして、生成された電子メールを要求のあった端末20に送信する処理を行う(ステップS40)。そして、送信済みの電子メールのR1値をデクリメントする(ステップS41)。そして、参照元の電子メールのR1値をデクリメントする処理を行う(ステップS42)。以上で処理が終了する。
【0169】
6. 複数のドメインを管理する場合
本実施形態のサーバ10は、一つのドメイン(例えば、「aaa.com」)を管理する例について説明したが、サーバ10は、複数のドメイン(例えば、「aaa.com」、「bbb.co.jp」)を管理するようにしてもよい。
【0170】
例えば、サーバ10は、複数のドメインそれぞれについて別個独立した格納領域を設け、電子メールの格納処理、送信処理を行うようにしてもよい。より具体的に説明すると、サーバ10は、「aaa.com」の格納領域60−1と、「bbb.co.jp」の格納領域60−2を設け、「aaa.com」をドメインとする電子メールについては、格納領域60−1を用いて格納処理と送信処理を行い、「bbb.co.jp」をドメインとする電子メールについては、格納領域60−2を用いて格納処理と送信処理を行う。
【0171】
なお、サーバ10は、複数のドメイン間で格納領域を共有して電子メールの格納処理を行うようにしてもよい。例えば、サーバ10は、受信した電子メールの特定データが、既に格納領域に格納された他のドメインの電子メールの特定データと同じ場合には、受信した電子メールの特定データを特定データ参照情報に書き換えて格納してもよい。そして、当該電子メールを送信する際に、特定データ参照情報を特定データに書き戻して送信するようにしてもよい。
【0172】
より具体的に説明すると、サーバ10は、受信した電子メールM8の宛先が「userA@bbb.co.jp」であって、電子メールM8の添付ファイルデータF1(特定データの一例)が、特定領域80(広義には格納領域60)に既に格納された「userA@aaa.com」を宛先とする電子メールM2に含まれる添付ファイルデータF1と同じ場合には、電子メールM8の添付ファイルデータF1を、特定データ参照情報「002−1」に書き換え、書き換え後の電子メールM8を特定領域80に格納する処理を行う。そして、サーバ10は、例えば、端末20からドメイン「bbb.co.jp」のuserAの電子メール受信要求を受け付けた場合には、特定領域80から読み出した電子メールM8の特定データ参照情報「002−1」に対応する添付ファイルデータF1に書き戻し、書き戻された電子メールM8を端末に送信する処理を行う。
【0173】
また、サーバ10は、ドメインが異なる複数の宛先が指定された電子メールを受信した場合に、各宛先の各メールボックスに電子メール参照情報を格納すると共に、格納領域に受信した一の電子メールを格納するようにしてもよい。
【0174】
例えば、サーバ10は、「userA@aaa.com」「userA@bbb.co.jp」が指定された電子メールM9を受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールM9に対応する電子メール参照情報(例えば、「009」)を格納すると共に、一の当該電子メールM9を特定領域80(広義には格納領域60)に格納する処理を行う。そして、サーバ10は、例えば、端末20からドメイン「bbb.co.jp」のuserAの電子メール受信要求を受け付けた場合には、「bbb.co.jp」のuserAのメールボックスに格納された電子メール参照情報「009」に基づき、電子メールM9を特定領域80から読み出し、読み出された電子メールM9を端末20に送信する処理を行う。
【0175】
以上のように、本実施形態では、サーバ10が複数のドメインを管理する場合において、格納領域を更に節約することができる。
【0176】
7. 復号化処理の説明
オリジナルのデータがバイナリデータである添付ファイルデータ(例えば、画像データ等)は、電子メールにおいて、「base64」や、「quoted−printable」などの種々の符号化方式によって符号化(エンコード)されている。したがって、符号化方式が異なるが、元来同じ内容のデータを重複して格納領域に保存してしまうことがある。
【0177】
そこで、本実施形態のサーバ10は、受信した電子メールの符号化された特定データを復号化(デコード)し、復号化された特定データに基づいて処理を行うようにしてもよい。つまり、復号化された特定データが、既に格納領域60(例えば、特定領域80)に格納されているか否かを判断する処理を行うようにしてもよい。
【0178】
例えば、サーバ10は、受信した電子メールの復号化された特定データが格納領域60に既に格納された他の電子メールに含まれていない場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルTBに登録されていない場合には、当該ハッシュ値を、復号化された特定データの特定データ参照情報に対応付けて登録し、格納領域60に、電子メールを格納する。なお、この電子メールの特定データは復号化の状態で格納する。
【0179】
一方、サーバ10は、受信した電子メールの復号化された特定データが格納領域60に既に格納された他の電子メールに含まれている場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルTBに登録されている場合には、当該特定データを、ハッシュ値に対応する特定データ参照情報に書き換え、書き換え後の電子メールを格納領域60に格納する処理を行う。
【0180】
なお、サーバ10は、特定データを復号化する際に、メール受信時の特定データの符号化方式を記憶し、端末20に電子メールを送信する際には、特定データの符号化方式を参照して当該特定データを符号化してから送信する。
【0181】
なお、サーバ10は、復号化の処理を行う場合には次のように処理する。まず、電子メールがシングルパート形式の場合は、ヘッダの「Content−Transfer−Encoding」を参照して符号化方式を検出し、符号化方式に応じて本文を復号化する。例えば、符号化方式が「base64」であれば、base64に基づく復号化処理を行い、符号化方式が「quoted−printable」であれば、「quoted−printable」に基づく復号化処理を行う。また、電子メールがマルチパート形式の場合は、パートヘッダの「Content−Transfer−Encoding」を参照して符号化方式を検出し、符号化方式に応じてパートデータを復号化する。
【0182】
このようにすれば、符号化方式のみが異なるがオリジナルのデータが同一の特定データについて重複して記憶する必要がなくなるので、記憶領域の節約を図ることができる。
【符号の説明】
【0183】
10 サーバ、100 処理部、110 配送対応部(SMTP)、111 受信部、
112 格納処理部、113 配送部、受信対応部(POP/IMAP)、
121 受け付け部、122 送信部、123 参照判断部、124 削除部、
50 記憶部、60 格納領域、70 メールボックス、80 特定領域、
180 情報記憶媒体、20 端末、21 MUA
【特許請求の範囲】
【請求項1】
受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、
電子メールを受信する処理を行う受信部と、
当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、
端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部として、コンピュータを機能させ、
前記格納処理部が、
受信した電子メールに含まれる特定データが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、
前記送信部が、
前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記格納処理部が、
受信した電子メールに含まれる添付ファイルデータを前記特定データとし、当該添付ファイルデータが、前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項3】
請求項2において、
前記格納処理部が、
受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項4】
請求項1〜3のいずれかにおいて、
前記格納処理部が、
受信した電子メールに含まれる本文を前記特定データとし、当該本文が、前記格納領域に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項5】
請求項1〜4のいずれかにおいて、
前記格納領域は、当該サーバが管理する各ユーザのメールボックスと、特定領域とを含み、
前記格納処理部が、
複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の当該電子メールを特定領域に格納する処理を行い、
前記送信部が、
受信要求を受け付けたユーザのメールボックスに格納された電子メール参照情報に基づき、電子メールを前記特定領域から読み出し、読み出された電子メールを当該端末に送信する処理を行うことを特徴とするプログラム。
【請求項6】
請求項1〜5のいずれかにおいて、
前記格納領域に格納された電子メールが参照されているか否かを判断する参照判断部と、
参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを更に機能させることを特徴とするプログラム。
【請求項1】
受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、
電子メールを受信する処理を行う受信部と、
当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、
端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部として、コンピュータを機能させ、
前記格納処理部が、
受信した電子メールに含まれる特定データが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、
前記送信部が、
前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記格納処理部が、
受信した電子メールに含まれる添付ファイルデータを前記特定データとし、当該添付ファイルデータが、前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項3】
請求項2において、
前記格納処理部が、
受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項4】
請求項1〜3のいずれかにおいて、
前記格納処理部が、
受信した電子メールに含まれる本文を前記特定データとし、当該本文が、前記格納領域に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うことを特徴とするプログラム。
【請求項5】
請求項1〜4のいずれかにおいて、
前記格納領域は、当該サーバが管理する各ユーザのメールボックスと、特定領域とを含み、
前記格納処理部が、
複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の当該電子メールを特定領域に格納する処理を行い、
前記送信部が、
受信要求を受け付けたユーザのメールボックスに格納された電子メール参照情報に基づき、電子メールを前記特定領域から読み出し、読み出された電子メールを当該端末に送信する処理を行うことを特徴とするプログラム。
【請求項6】
請求項1〜5のいずれかにおいて、
前記格納領域に格納された電子メールが参照されているか否かを判断する参照判断部と、
参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを更に機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15A】
【図15B】
【図16】
【公開番号】特開2012−249101(P2012−249101A)
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願番号】特願2011−119618(P2011−119618)
【出願日】平成23年5月27日(2011.5.27)
【出願人】(500542745)株式会社HDE (6)
【Fターム(参考)】
【公開日】平成24年12月13日(2012.12.13)
【国際特許分類】
【出願日】平成23年5月27日(2011.5.27)
【出願人】(500542745)株式会社HDE (6)
【Fターム(参考)】
[ Back to top ]