(57)【特許請求の範囲】
【請求項１】
受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、
電子メールを受信する処理を行う受信部と、
当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、
端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部と、
前記格納領域に格納された電子メール毎に、当該電子メールのリファレンス値を設定し、当該リファレンス値に基づいて当該電子メールが参照されているか否かを判断する参照判断部と、
参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを機能させ、
前記格納処理部が、
受信した電子メールに含まれる添付ファイルデータが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、
前記送信部が、
前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記添付ファイルデータに書き戻し、書き戻された電子メールを前記端末に送信する処理を行い、
前記参照判断部が、
予め所定値が設定された電子メールのリファレンス値に当該電子メールの宛先数を加算する処理と、当該電子メールの添付ファイルデータに基づき特定データ参照情報に書き換えられた回数を当該電子メールのリファレンス値に加算する処理とを行い、
当該電子メールのリファレンス値から当該電子メールを送信した宛先数を減算する処理と、当該特定データ参照情報から当該添付ファイルデータに書き戻された回数を当該電子メールのリファレンス値から減算する処理とを行い、
当該電子メールのリファレンス値が所定値である場合に、当該電子メールが参照されていないと判断することを特徴とするプログラム。
【請求項２】
受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバであって、
電子メールを受信する処理を行う受信部と、
当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、
端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部と、
前記格納領域に格納された電子メール毎に、当該電子メールのリファレンス値を設定し、当該リファレンス値に基づいて当該電子メールが参照されているか否かを判断する参照判断部と、
参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部と、を含み
前記格納処理部が、
受信した電子メールに含まれる添付ファイルデータが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、
前記送信部が、
前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記添付ファイルデータに書き戻し、書き戻された電子メールを前記端末に送信する処理を行い、
前記参照判断部が、
予め所定値が設定された電子メールのリファレンス値に当該電子メールの宛先数を加算する処理と、当該電子メールの添付ファイルデータに基づき特定データ参照情報に書き換えられた回数を当該電子メールのリファレンス値に加算する処理とを行い、
当該電子メールのリファレンス値から当該電子メールを送信した宛先数を減算する処理と、当該特定データ参照情報から当該添付ファイルデータに書き戻された回数を当該電子メールのリファレンス値から減算する処理とを行い、
当該電子メールのリファレンス値が所定値である場合に、当該電子メールが参照されていないと判断することを特徴とするサーバ。     
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムに関する。
【背景技術】
【０００２】
従来から、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を通じてネットワーク上で電子メールの受信と送信を行うメールサーバが存在する。
【０００３】
通常、このようなメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合には、格納領域に電子メールを格納する処理を行う（いわゆるローカル配送を行う）。一方、受信した電子メールの宛先が他のメールサーバのアドレスを示す場合には当該電子メールを他のメールサーバに配送する処理を行う（いわゆるリモート配送を行う）。
【０００４】
そして、メールサーバは、ＰＯＰ（Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ）やＩＭＡＰ（Ｉｎｔｅｒｎｅｔ  Ｍｅｓｓａｇｅ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）等を通じて、端末から電子メールの受信要求を受信すると、格納領域にある電子メールを当該端末に送信する処理を行っている（特許文献１の００３０段落参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２２８６７３
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来のメールサーバは、サーバ管理下のユーザを宛先とする電子メールを受信した場合に当該電子メールを格納する際、無駄に格納領域を使用してしまうことがあった。例えば、添付ファイルを含む電子メールを受信し、その後、同一内容の添付ファイルを含む別の電子メールを受信した場合には、同一内容の添付ファイルであっても各電子メールを個別に格納領域に格納していたので、格納領域を無駄に使用してしまい、結果的に格納領域の使用量が増加してしまうという問題があった。
【０００７】
特に、近年では、画像データや音声データ等のファイルが添付されることが多く、数十〜数百メガバイトの添付ファイルを含む電子メールの送受信が行われており、電子メールを格納するための格納領域を節約することが期待されている。
【０００８】
本発明は、上述した課題に鑑みたものであり、サーバ管理下のユーザを宛先とする電子メールを格納するための格納領域の使用量を節約することが可能なサーバのためのプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
（１）本発明は、受信した電子メールを格納領域に格納し、格納された電子メールを送信する処理を行うサーバのためのプログラムであって、電子メールを受信する処理を行う受信部と、当該サーバ管理下のユーザを宛先とする電子メールを受信した場合に、当該電子メールを前記格納領域に格納する格納処理部と、端末から電子メールの受信要求を受け付けた場合に、電子メールを前記格納領域から読み出し、読み出された当該電子メールを当該端末に送信する処理を行う送信部として、コンピュータを機能させ、前記格納処理部が、受信した電子メールに含まれる特定データが、前記格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行い、前記送信部が、前記格納領域から読み出した電子メールに前記特定データ参照情報が含まれる場合には、前記特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うプログラムに関する。
【００１０】
また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成するサーバに関係する。本発明は、受信した電子メールに含まれる特定データが、格納領域に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。また、本発明は、格納領域から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を前記特定データに書き戻し、書き戻された電子メールを前記端末に送信する処理を行うので、元の電子メールの内容が紛失されることなく送信することができる。
【００１１】
（２）また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる添付ファイルデータを前記特定データとし、当該添付ファイルデータが、前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【００１２】
本発明は、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。本発明は、例えば、音声データや画像データなどの、容量の多いファイルが添付された電子メールを格納領域に格納する際に、格納領域の使用量を従来よりも格段に節約することができる。
【００１３】
（３）また、本発明のプログラムは、前記格納処理部が、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが前記格納領域に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【００１４】
本発明は、電子メールに複数の添付ファイルデータを含んでいても、格納領域に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【００１５】
（４）また、本発明のプログラムは、前記格納処理部が、受信した電子メールに含まれる本文を前記特定データとし、当該本文が、前記格納領域に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを前記格納領域に格納する処理を行うようにしてもよい。
【００１６】
本発明は、格納領域に、受信した電子メールの本文を重複して格納することを回避することができ、従来よりも格納領域を使用する容量を節約することができる。
【００１７】
（５）また、本発明のプログラムは、前記格納領域は、当該サーバが管理する各ユーザのメールボックスと、特定領域とを含み、前記格納処理部が、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の当該電子メールを特定領域に格納する処理を行い、前記送信部が、受信要求を受け付けたユーザのメールボックスに格納された電子メール参照情報に基づき、電子メールを前記特定領域から読み出し、読み出された電子メールを当該端末に送信する処理を行うようにしてもよい。
【００１８】
本発明は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域に格納する処理を行うので、従来よりも格納領域を使用する容量を節約することができる。
【００１９】
（６）また、本発明のプログラムは、前記格納領域に格納された電子メールが参照されているか否かを判断する参照判断部と、参照されていないと判断される電子メールを、前記格納領域から削除する処理を行う削除部として、コンピュータを更に機能させるようにしてもよい。
【００２０】
本発明は、参照されていないと判断される電子メールを格納領域から削除する処理を行うので、保存する必要性のない電子メールを削除することができ、限られた格納領域を有効に利用することができる。
【図面の簡単な説明】
【００２１】
【図１】本実施形態のメールシステムの一例。
【図２】本実施形態のサーバの機能ブロック図の一例。
【図３】図３（Ａ）は従来の電子メールの格納処理の説明図。図３（Ｂ）は、本実施形態の電子メールの格納処理の説明図。
【図４】固有情報の説明図。
【図５】従来の電子メールの格納処理の説明図。
【図６】本実施形態の格納処理の説明図。
【図７】ハッシュテーブルの説明図。
【図８】本実施形態の電子メールの添付ファイルデータ、本文の説明図。
【図９】本実施形態の格納処理の説明図。
【図１０】本実施形態の格納処理の説明図。
【図１１】本実施形態の格納処理の説明図。
【図１２】本実施形態の格納処理の説明図。
【図１３】本実施形態の格納処理の説明図。
【図１４】リファレンス値の説明図。
【図１５Ａ】本実施形態の格納処理のフローチャート図。
【図１５Ｂ】本実施形態の格納処理のフローチャート図。
【図１６】本実施形態の送信処理のフローチャート図。
【発明を実施するための形態】
【００２２】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２３】
１．メールシステム
図１は、本実施形態のメールシステムの一例である。本実施形態のサーバ１０は、ＭＴＡ（Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ａｇｅｎｔ）として機能し、ＳＭＴＰを通じてネットワーク上で電子メールの受信と配送を行う。また、サーバ１０は、ＰＯＰやＩＭＡＰを通じて端末２０から電子メールの受信要求を受け付け、当該端末２０に電子メールを送信する処理も行う。
【００２４】
サーバ１０は、配送処理に用いるエンベロープの宛先（宛先メールアドレス）及びエンベロープの差出元（差出元メールアドレス）、メッセージとからなる電子メールを受信する。そして、サーバ１０は、ネットワークを介して受信した当該電子メールを、エンベロープの宛先に基づいて配送先メールサーバを決定し、配送先のメールサーバに配送する処理を行う。
【００２５】
より詳しく説明すると、サーバ１０は、ＭＵＡ（Ｍａｉｌ  Ｕｓｅｒ  Ａｇｅｎｔ）などの差出元から送信された電子メールを、ＳＭＴＰを通じて受信する処理を行う。例えば、サーバ１０は、ＳＭＴＰを通じて端末２０又は他のメールサーバから送信された電子メールを受信する。なお、ＭＵＡとは、ネットワークを介してサーバ１０と電子メールを送受信する処理を行うクライアントプログラムであり、ユーザが差出元となる電子メールを送信する処理、ユーザ宛の電子メールを受信する処理を行う。
【００２６】
次に、サーバ１０は、受信した電子メールのエンベロープの宛先のドメインを管理しているＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）サーバや、サーバ１０のローカルエリア内のＤＮＳサーバ、或いは他のＤＮＳサーバに、受信した電子メールのエンベロープの宛先のドメインを問い合わせる（例えば、宛先のドメインのＭＸレコードを問い合わせる）。そして、ＤＮＳサーバの応答メッセージによって決められる配送先メールサーバへ、電子メールを配送（ローカル配送、リモート配送）する処理を行う。
【００２７】
また、本実施形態のサーバ１０は、ＰＯＰ、或いは、ＩＭＡＰを通じて、ユーザの端末２０からの要求に応じて、格納領域に格納された当該ユーザ宛の電子メールを、当該端末２０に送信する処理を行うことができる。
【００２８】
また、本実施形態のサーバ１０は、Ｗｅｂサービスを提供するＷｅｂサーバとして機能してもよい。例えば、サーバ１０は、端末２０のＷｅｂブラウザからＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を通じて電子メールの送信、電子メールの受信等のアクセス要求を受け付けるようにしてもよい。
【００２９】
また、メールシステムは、１つのサーバ１０に限らず、複数のサーバ１０によって構成してもよい。また、格納領域６０は、サーバ１０とは別の一又は複数の記憶装置（一又は複数のハードウェア）であってもよい。
【００３０】
２．構成
図２は、本実施形態のサーバ１０の機能ブロック図の一例である。なお、本実施形態のサーバ１０は、図２の各部を全て含む必要はなく、その一部を省略した構成としてもよい。
【００３１】
記憶部５０は、処理部１００などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などのハードウェアにより実現できる。本実施形態の記憶部５０には、格納領域６０を含む。この格納領域６０は、受信した電子メールの宛先のドメインが当該サーバ１０のドメインと同じ場合（サーバ１０が管理するユーザが宛先となっている場合）に、当該電子メールを格納するための記憶領域である。また、格納領域６０は、メールボックス７０、特定領域８０を含む。サーバ１０は、サーバ１０が管理するユーザ毎にメールボックス７０を設ける。メールボックス７０は、所与の記憶領域であり、サーバが管理する各ユーザ情報に対応づけて設けられる。例えば、メールボックス７０には、電子メールや電子メール参照情報が記憶される。また、特定領域８０には、受信した電子メールや特定データが格納される。例えば、特定データは、電子メールの本文、添付ファイルデータである。
【００３２】
また、記憶部５０は、電子メール参照情報、特定データ参照情報、特定データ参照情報に対応づけてハッシュ値を登録したハッシュテーブルＴＢ、電子メール参照情報に対応するリファレンス値Ｒ１、特定データ参照情報に対応するリファレンス値Ｒ２などを記憶してもよい。また、記憶部５０は、配送対応部（ＳＭＴＰ）の受信部１１１によって受信された電子メールを、配送（ローカル配送、リモート配送）するために一時的に格納するためのスプール領域を設けてもよい。また、記憶部５０は、サーバ１０が管理するユーザのユーザ情報（ユーザ名、パスワード）、ユーザのメールボックス名を記憶してもよい。
【００３３】
また、情報記憶媒体１８０は、コンピュータにより読み取り可能であり、この情報記憶媒体１８０にはプログラムやデータなどが格納されている。即ち、情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）が記憶される。つまり、処理部１００は、この情報記憶媒体１８０に格納されるプログラム（データ）から読み出されたデータに基づいて本実施形態の種々の処理を行うことができる。例えば、情報記録媒体１８０は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）、メモリカード等である。
【００３４】
処理部１００は、記憶部５０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。なお、本実施形態の処理部１００が、情報記憶媒体１８０に格納されているプログラムやデータを読み出し、読み出したプログラムやデータを記憶部５０に格納し、そのプログラムやデータに基づいて処理を行ってもよい。処理部１００（プロセッサ）は、記憶部５０内の主記憶部をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）などのハードウェアや、プログラムにより実現できる。
【００３５】
本実施形態の処理部１００は、配送対応部（ＳＭＴＰ）１１０、受信対応部（ＰＯＰ／ＩＭＡＰ）１２０と、を含む。
【００３６】
配送対応部１１０は、ＳＭＴＰなどの電子メール配送プロトコルを通じて電子メールの受信、配送処理（格納処理）を行う。配送対応部１１０は、受信部１１１、格納処理部１１２、配送部１１３を含む。
【００３７】
例えば、受信部１１１は、端末２０のＭＵＡ２１によって、差出元から送信され、エンベロープの宛先が指定された電子メールを受信する処理（受け付ける処理）を行う。
【００３８】
また、格納処理部１１２は、受信した電子メールの宛先のドメインが、当該サーバ１０が管理するドメインと同じ場合、つまり、受信した電子メールの宛先がサーバ１０の管理下のユーザである場合に、当該電子メールを格納領域６０に格納する処理を行う。すなわち、格納処理部１１２は、サーバ１０が稼動する同一システム内にアカウントを持つユーザ宛に配送するローカル配送処理を行う。なお、ローカル配送処理は、専用のローカル配信エージェントであるＭＤＡ（Ｍａｉｌ  Ｄｅｌｉｖｅｒｙ  Ａｇｅｎｔ）によって処理を行ってもよい。なお、サーバ１０が管理するドメインは、１つに限らず複数であってもよい。
【００３９】
また、格納処理部１１２は、受信した電子メールに含まれる特定データが、格納領域６０に既に格納された他の電子メールに含まれる場合には、当該特定データを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。
【００４０】
また、格納処理部１１２は、受信した電子メールに含まれる添付ファイルデータを特定データとし、当該添付ファイルデータが、格納領域６０に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該受信した電子メールに含まれる添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。
【００４１】
また、格納処理部１１２は、受信した電子メールに複数の添付ファイルデータを含む場合には、添付ファイルデータ毎に、添付ファイルデータが格納領域６０に既に格納された他の電子メールの添付ファイルデータ又は本文と同じか否かを判断し、添付ファイルデータが格納領域６０に既に格納された他の電子メールの添付ファイルデータ又は本文と同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。
【００４２】
また、格納処理部１１２は、受信した電子メールに含まれる本文を特定データとし、当該本文が、格納領域６０に既に格納された他の電子メールの本文又は添付ファイルデータと同じ場合には、当該受信した電子メールに含まれる本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。
【００４３】
また、格納処理部１１２は、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックス７０に、受信した電子メールに対応する電子メール参照情報を格納すると共に、当該電子メールを特定領域８０に格納する処理を行うようにしてもよい。
【００４４】
また、配送部１１３は、受信した電子メールの宛先ドメインが他のメールサーバのドメインである場合に、当該他のメールサーバに電子メールを配送するリモート配送処理（転送処理、中継処理）を行う。
【００４５】
受信対応部１２０は、ＰＯＰ又はＩＭＡＰなどの電子メール受信プロトコルを通じて、電子メールを端末２０に送信する処理を行う。本実施形態の受信対応部１２０は、受け付け部１２１、送信部１２２、参照判断部１２３、削除部１２４と、を含む。
【００４６】
受信対応部１２０は、端末２０から受信要求を受け付けると、ユーザ情報（ユーザ名、パスワード）を端末２０から受信し、ユーザ情報に基づきユーザ認証処理を行う。例えば、受信したユーザ名とパスワードが、サーバ１０側で予め登録されているユーザ名とパスワードと一致するか否かを判定し、一致した場合にユーザ認証を認め、不一致はユーザ認証を認めないように判断する。そして、受信対応部１２０は、ユーザ認証が認められたユーザを宛先とする電子メールを当該端末２０に送信する処理を行う。
【００４７】
受け付け部１２１は、端末２０から電子メールの受信要求を受け付ける処理を行う。
【００４８】
送信部１２２は、格納領域６０に格納された電子メールを送信する処理を行う。例えば、送信部１２２は、格納領域６０から読み出した電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を特定データに書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。また、送信部１２２は、受信要求を受け付けたユーザのメールボックス７０に格納された電子メール参照情報に基づき、電子メールを特定領域８０から読み出し、読み出された電子メールを端末２０に送信する処理を行う。
【００４９】
また、参照判断部１２３は、格納領域６０に格納された電子メール（電子メールの少なくとも一部）が参照されているか否かを判断する処理を行う。例えば、参照判断部１２３は、電子メール参照情報に対応するリファレンス値に基づいて、格納領域６０に格納された電子メールが参照されているか否かを判断する処理を行う。また、参照判断部１２３は、特定データ参照情報に対応するリファレンス値に基づいて、格納領域６０に格納された電子メールが参照されているか否かを判断する処理を行うようにしてもよい。
【００５０】
また、削除部１２４は、参照されていないと判断される電子メールを、格納領域６０から削除する処理を行う。例えば、削除部１２４は、電子メール参照情報に対応するリファレンス値が所定値（例えば、０）である電子メールを、格納領域６０から削除する処理を行う。また、削除部１２４は、特定データに対応するリファレンス値が所定値（例えば、０）である特定データを、格納領域６０から削除する処理を行う。
【００５１】
端末２０は、コンピュータ、携帯電話、スマートフォン、タブレット型コンピュータ、携帯端末、ゲーム装置などであり、ＭＵＡ２１として機能する。
【００５２】
３．本実施形態の処理の説明
本実施形態のサーバ１０は、差出元から送信された電子メールを受信し、当該電子メールの宛先が、サーバ１０が管理するユーザ宛の場合、受信した電子メールを格納領域６０に格納する処理を行う。例えば、受信した電子メールの宛先のドメインがサーバ１０のアドレス（例えば、「ａａａ．ｃｏｍ」）を示す場合に、受信した電子メールを格納領域６０に格納する処理を行う。そして、端末２０からの要求に応じて格納領域６０の電子メールを送信する処理を行う。以下、本実施形態の格納処理と送信処理の詳細について説明する。
【００５３】
３．１  複数の宛先が指定された電子メールの格納処理と送信処理の説明
さて、従来のサーバは、複数の宛先が指定された電子メールを受信した場合、同一内容の電子メールを、各宛先のメールボックス７０に格納する処理を行っていた。例えば、図３（Ａ）に示すように、サーバが、所与の端末２０或いは他のサーバから、ネットワークを介してＳＭＴＰコマンドのエンベロープの宛先（ＲＣＰＴ  ＴＯ）で複数の宛先（例えば、ｕｓｅｒＡ＠ａａａ．ｃｏｍ、ｕｓｅｒＢ＠ａａａ．ｃｏｍ）が指定された電子メールＭ１を受信したとする。すると、サーバは、宛先ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックス７０Ａに電子メールＭ１を格納し、宛先ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックス７０Ｂに電子メールＭ１を格納する処理を行っていた。つまり、同じ内容の電子メールＭ１にもかかわらず、各宛先の各メールボックス７０Ａ、７０Ｂに、電子メールＭ１を格納する処理を行っていた。ゆえに、従来のサーバは、無駄に格納領域を使用してしまうという問題があった。
【００５４】
そこで、本実施形態のサーバ１０は、格納領域６０に各ユーザのメールボックス７０と特定領域８０とを含むようにし、複数の宛先が指定された電子メールを受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールに対応する電子メール参照情報を格納すると共に、一の電子メールを特定領域８０に格納する処理を行うようにする。
【００５５】
例えば、図３（Ｂ）に示すように、ｕｓｅｒＡ＠ａａａ．ｃｏｍ、ｕｓｅｒＢ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ１を受信すると、まず電子メールＭ１の電子メール参照情報を決定する。例えば、電子メールＭ１の参照情報が「００１」であるとすると、サーバ１０は、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックス７０Ａ、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックス７０Ｂそれぞれに、電子メールＭ１の参照情報「００１」を格納する。そして、一の電子メールＭ１を特定領域８０に格納する。ここで、「電子メール参照情報」は、受信した電子メールの参照先を示す情報であり、電子メールを一意に識別できる情報であればよい。例えば、「電子メール参照情報」は、ユニーク番号や、電子メールを受信した日時とすることができる。なお、本実施形態では、「電子メール参照情報」のサイズは、所定サイズ以下（例えば、１６バイト以下）とし、一般的な電子メールのサイズよりも小さいサイズにしている。
【００５６】
このように、本実施形態のサーバ１０は、各ユーザＡ、Ｂのメールボックス７０Ａ、７０Ｂには電子メールＭ１の参照情報を記録するだけであり、特定領域８０には受信した一の電子メールＭ１のデータを格納するだけであるので、従来よりも格納領域６０の使用量を節約することができる。
【００５７】
例えば、「電子メールＭ１のサイズ」が２０，０００，０００バイトであり、「電子メールＭ１の参照情報のサイズ」が３バイトとすると、従来のサーバでは、格納領域６０において、電子メールＭ１を個別に格納していたので４０，０００，０００バイトを使用することになっていた。一方、本実施形態のサーバ１０は、格納領域６０に１つ分の電子メールＭ１と、電子メールＭ１の参照情報とを格納するだけでよいので、結果的に、２０，０００，００６バイトだけ使用することになり、格納領域６０を使用する容量を従来よりも格段に節約することができる。
【００５８】
次に、サーバ１０が、端末２０からの受信要求に応じて格納された電子メールを当該端末２０に送信する処理について説明する。サーバ１０は、端末２０から受信要求とユーザ情報を受信し、ユーザ認証を認めると当該ユーザのメールボックスから電子メール参照情報を取得し、取得した電子メール参照情報に対応する電子メールを特定領域８０から読み出し、読み出された電子メールを端末２０に送信する処理を行う。
【００５９】
例えば、サーバ１０は、ユーザ名「ｕｓｅｒＡ＠ａａａ．ｃｏｍ」の端末２０から受信要求を受け付けると、「ｕｓｅｒＡ＠ａａａ．ｃｏｍ」のメールボックス７０Ａにある電子メール参照情報「００１」を取得する。そして、電子メール参照情報「００１」に対応する電子メールＭ１を特定領域８０から読み出し、読み出した電子メールＭ１を端末２０に送信する。
【００６０】
なお、サーバ１０は、電子メールの規格（例えば、ＭＩＭＥ（Ｍｕｌｔｉｐｕｒｐｏｓｅ  Ｉｎｔｅｒｎｅｔ  Ｍａｉｌ  Ｅｘｔｅｎｓｉｏｎｓ））に基づいて特定領域８０から取得した電子メールＭ１に、固有情報を付加して送信用の電子メールを生成し、生成された電子メールを端末２０に送信してもよい。例えば、図４に示すように、「Ｄｅｌｉｖｅｒｅｄ−Ｔｏ」ヘッダを電子メールのヘッダの最上位に付加し端末２０に送信するようにしてもよい。
【００６１】
また、サーバ１０は、端末２０から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末２０に送信するようにしてもよい。例えば、図４に示すように、サーバ１０は、固有情報のサイズを算出し、特定領域８０に格納された電子メールＭ１のサイズ（例えば、１３００バイト）に固有情報のサイズ（例えば、１６バイト）を加算した合計値（例えば、１３１６バイト）を、端末２０に送信する処理を行うようにしてもよい。このようにすれば、送信用の電子メールの正しいサイズを、端末に通知できる。
【００６２】
３．２  添付ファイルデータを含む電子メールの格納処理と送信処理の例
さて、従来のサーバは、例えば、図５に示すように、Ｔ２時点でファイルＦ１が添付されたｕｓｅｒＡ＠ａａａ．ｃｏｍ宛の電子メールＭ２を受信し、その後、Ｔ３時点でファイルＦ１が添付されたｕｓｅｒＢ＠ａａａ．ｃｏｍ宛の電子メールＭ３を受信した場合、共通のファイルＦ１が添付された各電子メールＭ２、Ｍ３を、各メールボックス７０Ａ、７０Ｂに個別に保存していたので格納領域６０を無駄に使用してしまうという問題があった。
【００６３】
そこで、本実施形態のサーバ１０は、電子メールを受信すると、受信した電子メールに含まれる添付ファイルデータ（特定データの一例）が、格納領域６０に既に格納された他の電子メールの添付ファイルデータと同じ場合には、添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。このようにすれば、同じ内容の添付ファイルデータが重複して格納されることを回避でき、格納領域６０の使用を節約することができる。
【００６４】
３．２．１  添付ファイルデータを含む電子メールの格納処理と送信処理の例１
３．２．１．１  格納処理
添付ファイルデータを格納する第１の処理例について説明する。まず、サーバ１０は、図６に示すように、Ｔ２時点でｕｓｅｒＡ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ２を受信すると、電子メールＭ２の参照先を示す一意の電子メール参照情報を決定する。そして、サーバ１０は、電子メールＭ２の参照情報が「００２」であるとすると、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックス７０Ａに、電子メールＭ２の参照情報「００２」を格納する。
【００６５】
次に、サーバ１０は、電子メールＭ２の添付ファイルデータＦ１が既に特定領域８０（広義には格納領域６０）に格納されているか否かを判断する。つまり、サーバ１０は、添付ファイルデータＦ１が、特定領域８０に既に格納された他の電子メールの添付ファイルデータと同じであるか否かを判断する。ここで、既に格納された他の電子メールとは、サーバ１０が、電子メールＭ２とは異なるタイミングで過去に受信した一又は複数の電子メールのことである。
【００６６】
具体的には、サーバ１０は、添付ファイルデータのハッシュ値（識別情報）を計算し、ハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域８０に格納されているか否かを判断する。なお、ハッシュ値は、ハッシュ関数（チェックサム、チェックディジット、フィンガープリント等）に基づき求められる値である。例えば、ハッシュ関数の入力キーを添付ファイルデータとし、ハッシュ関数の出力値をハッシュ値とする。このハッシュ値は、添付ファイルデータ（特定データの一例）を識別（特定）するための情報となる。
【００６７】
例えば、サーバ１０は、電子メールＭ２の添付ファイルデータＦ１のハッシュ値が「１５４９１２８」であるとすると、ハッシュ値「１５４９１２８」がハッシュテーブルＴＢに登録されているか否かを判断する。つまり、サーバ１０は、ハッシュ値「１５４９１２８」が、ハッシュテーブルＴＢに登録されていると判断された場合には、電子メールＭ２の添付ファイルデータＦ１が既に特定領域８０に格納されていると判断し、ハッシュ値「１５４９１２８」が、ハッシュテーブルＴＢに登録されていないと判断された場合には、電子メールＭ２の添付ファイルデータＦ１が特定領域８０に格納されていないと判断する。
【００６８】
例えば、Ｔ２の時点で、電子メールＭ２の添付ファイルデータＦ１のハッシュ値「１５４９１２８」がハッシュテーブルＴＢに登録されていない場合には、サーバ１０は、図７に示すように、ハッシュ値「１５４９１２８」を、当該添付ファイルデータＦ１の特定データ参照情報に対応付けて登録する。ここで、「特定データ参照情報」は、参照先の特定データを識別する情報であり、例えば、参照先の電子メールと参照先の添付ファイルデータを識別するための情報である。本実施形態では、「特定データ参照情報」のサイズは、所定のサイズ以下とし、一般的な本文のサイズや添付ファイルデータのサイズよりも小さいサイズにしている。具体的には、「特定データ参照情報」は、「００２−１」のように、「電子メール参照情報（００２）」と「ファイルの番号（１番目のファイル）」の組み合わせで決定する。
【００６９】
なお、「ファイルの番号」は、電子メールに添付されたファイルの番号であり、マルチパート形式の電子メールの上から順に添付ファイルの番号を決める。例えば、図８（Ｂ）に示すように、マルチパート形式の電子メールの第２のパート５２０以降のパートを添付ファイルデータとして扱う場合には、第２のパート５２０のパートボディ５２２のデータを１番目の添付ファイルデータとする。また、図８には示していないが、例えば、第３のパートがある場合には、第３のパートのパートボディのデータを２番目の添付ファイルデータとする。
【００７０】
つまり、サーバ１０は、Ｔ２時点でハッシュ値「１５４９１２８」が、ハッシュテーブルＴＢに登録されていないので、ハッシュ値「１５４９１２８」に対応づけて、特定データ参照情報「００２−１」を登録し、添付ファイルデータＦ１を含む電子メールＭ２を、そのまま特定領域８０に格納する処理を行う。
【００７１】
その後、図６に示すように、Ｔ３時点（Ｔ２時点の後の時点）で、サーバ１０が、ｕｓｅｒＢ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ３を受信したとする。なお、電子メールＭ３は、電子メールＭ２に添付されたファイルデータと同じ内容の添付ファイルデータＦ１を含む。
【００７２】
まず、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックス７０Ｂに、電子メールＭ３の参照情報を決定し当該参照情報「００３」を格納する。そして、サーバ１０は、電子メールＭ３に添付された添付ファイルデータＦ１のハッシュ値を求め、ハッシュ値がハッシュテーブルＴＢに登録されているか否かを判断する。例えば、Ｔ３時点で、添付ファイルデータＦ１のハッシュ値「１５４９１２８」が、ハッシュテーブルＴＢに登録されているので、サーバ１０は、電子メールＭ３の添付ファイルデータＦ１が、特定領域８０に既に格納されていると判断する。つまり、サーバ１０は、Ｔ３時点で、添付ファイルデータＦ１が特定領域８０に既に格納された他の電子メールＭ２の添付ファイルデータＦ１と同じと判断する。
【００７３】
そして、サーバ１０は、電子メールＭ３の添付ファイルデータＦ１をハッシュ値「１５４９１２８」に対応する特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ３を特定領域８０に格納する処理を行う。
【００７４】
以上のように、本実施形態のサーバ１０は、結果として格納領域６０に、添付ファイルデータを重複して格納することを回避することができ、従来よりも格納領域６０を使用する容量を節約することができる。特に、本実施形態のサーバ１０は、音声データや画像データなど容量の多いファイルが添付された電子メールを格納領域６０に保存する場合においては、格納領域６０の使用量を従来よりも格段に節約することができる。
【００７５】
また、本実施形態のサーバ１０は、初めて添付ファイルデータを格納する際は、当該添付ファイルは電子メールから分離されることがないので、必要最小限で添付ファイルデータの書き換えを行うことになり、結果的に処理負荷を軽減することができる。
【００７６】
なお、サーバ１０は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に、添付ファイルデータが特定領域８０（広義には格納領域６０）に既に格納された他の電子メールの添付ファイルデータと同じか否かを判断し、添付ファイルデータが特定領域８０に既に格納された他の電子メールの添付ファイルデータと同じ場合には、当該添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域８０に格納する処理を行うようにしてもよい。
【００７７】
例えば、図９に示すように、Ｔ４時点でｕｓｅｒＡ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ４を受信すると、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックス７０Ａに、電子メールＭ４の参照情報「００４」を格納する。そして、サーバ１０は、電子メールＭ４の添付ファイルデータＦ２、Ｆ３が既に特定領域８０に格納されているか否かを判断する。
【００７８】
例えば、Ｔ４時点で電子メールＭ４の添付ファイルデータＦ２のハッシュ値「３４７８２０４」がハッシュテーブルＴＢに登録されていないので、サーバ１０は、当該ハッシュ値「３４７８２０４」を、特定データ参照情報「００４−１」に対応付けて登録する。この特定データ参照情報「００４−１」は、電子メールＭ４（参照情報００４）の１番目のファイルを意味している。また、サーバ１０は、Ｔ４時点で電子メールＭ４の添付ファイルデータＦ３のハッシュ値「３４７８２３２」がハッシュテーブルＴＢに登録されていないので、当該ハッシュ値「３４７８２３２」を、特定データ参照情報「００４−２」に対応付けて登録する。この特定データ参照情報「００４−２」は、電子メールＭ４（参照情報００４）の２番目のファイルを意味している。そして、サーバ１０は、添付ファイルデータＦ２と添付ファイルデータＦ３とを含む電子メールＭ４を、そのまま特定領域８０に格納する処理を行う。
【００７９】
その後、サーバ１０が、Ｔ５時点（Ｔ４時点の後の時点）で、ｕｓｅｒＢ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ５を受信したとする。なお、電子メールＭ５は、添付ファイルデータＦ３と、添付ファイルデータＦ４とを含む。
【００８０】
まず、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックス７０Ｂに、電子メールＭ５の参照情報「００５」を格納する。そして、サーバ１０は、電子メールＭ５の添付ファイルデータＦ３、Ｆ４が既に特定領域８０に格納されているか否かを判断する。
【００８１】
例えば、サーバ１０は、Ｔ５時点で電子メールＭ５の添付ファイルデータＦ３のハッシュ値「３４７８２０４」がハッシュテーブルＴＢに登録されていると判断されるので、電子メールＭ５の添付ファイルデータＦ３を、ハッシュ値「３４７８２０４」に対応する特定データ参照情報「００４−２」に書き換える。また、サーバ１０は、Ｔ５時点で、電子メールＭ５の添付ファイルデータＦ４のハッシュ値「２３４９８７２」がハッシュテーブルＴＢに登録されていないので、ハッシュテーブルＴＢにハッシュ値「２３４９８７２」を特定データ参照情報「００５−２」に対応付けて登録する。なお、この特定データ参照情報「００５−２」は、電子メールＭ５（参照情報００５）の２番目のファイルを意味している。そして、サーバ１０は、添付ファイルデータＦ３を特定データ参照情報「００４−２」に書き換えた電子メールＭ５を特定領域８０に格納する処理を行う。
【００８２】
３．２．１．２  送信処理
次に、サーバ１０の送信処理について説明する。まず、サーバ１０が、端末２０から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メール参照情報を取得する。そして、取得した電子メール参照情報に基づいて、電子メールを特定領域８０から読み出し、特定領域８０から読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を元の添付ファイルデータに書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。一方、特定領域８０から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末２０に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【００８３】
例えば、図６のＴ３以後で、サーバ１０が、ユーザ名「ｕｓｅｒＢ＠ａａａ．ｃｏｍ」の端末２０から受信要求を受け付けると、「ｕｓｅｒＢ＠ａａａ．ｃｏｍ」のメールボックス７０Ｂにある電子メール参照情報「００３」を取得する。そして、「００３」に対応する電子メールＭ３を特定領域８０から読み出す。
【００８４】
そしてサーバ１０は、電子メールＭ３に特定データ参照情報が含まれているか否かを判断する。例えば、サーバ１０は、電子メールＭ３において、ハッシュテーブルＴＢに登録されている特定データ参照情報を検出した場合には、電子メールＭ３に特定データ参照情報を含むと判断する。一方、サーバ１０は、電子メールＭ３においてハッシュテーブルＴＢに登録されている特定データ参照情報を検出しない場合には、電子メールＭ３に特定データ参照情報を含まないと判断する。
【００８５】
例えば、サーバ１０は、電子メールＭ３に特定データ参照情報を含むと判断すると、特定データ参照情報「００２−１」を取得する。そして、特定データ参照情報「００２−１」に対応する添付ファイルデータＦ１を取得し、電子メールＭ３の当該特定データ参照情報「００２−１」をファイルデータＦ１に書き戻す。例えば、特定データ参照情報「００２−１」は、電子メールＭ２の１番目の添付ファイルを意味するので、サーバ１０は、電子メールＭ２の１番目の添付ファイルデータＦ１（例えば、第２のパートのパートボディ）を読み出して、特定データ参照情報「００２−１」を削除して代わりにファイルデータＦ１を書き込む処理を行う。そして、サーバ１０は、書き戻された電子メールＭ３を端末２０に送信する処理を行う。なお、サーバ１０は、上述したように、電子メールＭ３に固有情報を加えて送信用の電子メールＭ３を生成して端末２０に送信してもよい。また、サーバ１０は、端末２０から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末２０に送信するようにしてもよい。
【００８６】
なお、サーバ１０は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ１０は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報に対応するファイルデータに、書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。
【００８７】
以上のように、本実施形態のサーバ１０は、電子メールの一部を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【００８８】
３．２．２  添付ファイルデータを含む電子メールの格納処理と送信処理の例２
３．２．２．１  格納処理
また、本実施形態のサーバ１０は、図１０に示すように、一律に受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを特定領域８０に格納するようにしてもよい。
【００８９】
そして、サーバ１０は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域８０に格納されているか否かを判断し、添付ファイルデータが特定領域８０に格納されていない場合に、添付ファイルデータを特定領域８０に格納する。一方、添付ファイルデータが特定領域８０に格納されている場合には添付ファイルデータを重複して特定領域８０に格納しないように制御する。
【００９０】
例えば、図１０に示すように、サーバ１０は、Ｔ２時点において、電子メールＭ２の添付ファイルデータＦ１が特定領域８０に格納されていない場合には、Ｆ１のハッシュ値「１５４９１２８」をＦ１の特定データ参照情報「００２−１」に対応づけて登録する。電子メールＭ２の添付ファイルデータＦ１を特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ２を特定領域８０に格納する処理を行うと共に、添付ファイルデータＦ１の実データも特定領域８０に格納する処理を行う。
【００９１】
そして、その後、サーバ１０は、Ｔ３時点で受信した電子メールＭ３を受信すると、添付ファイルデータＦ１が特定領域８０に格納されているので、添付ファイルデータＦ１を特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ３を特定領域８０に格納する処理を行う。なお、Ｔ３時点では、添付ファイルデータＦ１のハッシュ値「１５４９１２８」が既にハッシュテーブルＴＢに登録されているので、Ｔ３時点で添付ファイルデータＦ１を特定領域８０に格納しないように制御する。
【００９２】
なお、サーバ１０は、上述した「３．２．１．１の格納処理」と同じように、複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。
【００９３】
以上のように、処理例２においても、サーバ１０は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域６０を使用する容量を節約することができる。
【００９４】
３．２．２．２  送信処理
次に、サーバ１０の送信処理について説明する。例２においても、サーバ１０は、基本的には、例１の「３．２．１．２の送信処理」と同じように、処理を行う。
【００９５】
例えば、サーバ１０は、読み出された電子メールに特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を、特定領域８０に格納されている添付ファイルデータ（特定データ参照情報に対応する添付ファイルデータ）に書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。一方、特定領域８０から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末２０に送信する処理を行う。
【００９６】
３．２．３  添付ファイルデータを含む電子メールの格納処理と送信処理の例３
３．２．３．１  格納処理
また、本実施形態のサーバ１０は、図１１に示すように、受信する電子メールの添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス７０に格納するようにしてもよい。
【００９７】
そして、サーバ１０は、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域８０に格納されているか否かを判断し、添付ファイルデータが特定領域８０に格納されていない場合に、添付ファイルデータを特定領域８０に格納する。一方、添付ファイルデータが特定領域８０に格納されている場合には添付ファイルデータを重複して特定領域８０に格納しないように制御する。
【００９８】
例えば、図１１に示すように、Ｔ２時点において、サーバ１０は、電子メールＭ２の添付ファイルデータＦ１が特定領域８０に格納されていない場合、添付ファイルデータＦ１を特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ２をメールボックス７０Ａに格納する処理を行うと共に、添付ファイルデータＦ１を特定領域８０に格納する処理を行う。また、サーバ１０は、ハッシュテーブルＴＢに、Ｆ１のハッシュ値「１５４９１２８」に対応づけて、Ｆ１の特定データ参照情報「００２−１」を登録する。
【００９９】
その後、サーバ１０が、Ｔ３時点で受信した電子メールＭ３を受信すると、電子メールＭ３の添付ファイルデータＦ１を特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ３をメールボックス７０Ｂに格納する処理を行う。なお、Ｔ３時点では、添付ファイルデータＦ１のハッシュ値「１５４９１２８」が既にハッシュテーブルＴＢに登録されているので、Ｔ３時点で添付ファイルデータＦ１を特定領域８０に格納しないように制御する。
【０１００】
なお、サーバ１０は、受信した電子メールが複数の添付ファイルデータを含むと判断した場合には、添付ファイルデータ毎に処理を行うようにしてもよい。例えば、サーバ１０は、添付ファイルデータ毎に添付ファイルデータを特定データ参照情報に書き換え、書き換え後の電子メールを各宛先のメールボックス８０に格納する。また、サーバ１０は、添付ファイルデータ毎に、添付ファイルデータのハッシュ値に基づいて、電子メールの添付ファイルデータが既に特定領域８０に格納されているか否かを判断し、添付ファイルデータが特定領域８０に格納されていない場合に、添付ファイルデータを特定領域８０に格納する。
【０１０１】
以上のように、例３においても、サーバ１０は、同一の添付ファイルデータを重複して格納しないように制御することにより、従来よりも格納領域６０を使用する容量を節約することができる。
【０１０２】
３．２．３．２  送信処理
次に、処理例３のサーバ１０の送信処理について説明する。サーバ１０は、端末２０から受信要求とユーザ情報を受信し、ユーザ認証を認めると、ユーザのメールボックスから電子メールを読み出す。
【０１０３】
そして、サーバ１０は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールに特定データ参照情報が含まれる場合には、特定データ参照情報を、特定領域８０に格納されている添付ファイルデータ（特定データ参照情報に対応する添付ファイルデータ）に書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。一方、特定領域８０から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末２０に送信する処理を行う。
【０１０４】
また、サーバ１０は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応するファイルデータに書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。また、サーバ１０は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。なお、サーバ１０は、上述したように、固有情報を加えて送信用の電子メールを生成して端末２０に送信してもよい。また、サーバ１０は、端末２０から電子メールのサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールのサイズを端末２０に送信するようにしてもよい。
【０１０５】
３．２．４  本文、添付ファイルデータの説明
図８（Ａ）は、シングルパート形式の電子メールの一例を示す。図８（Ａ）に示すように、シングルパート形式の電子メールは、添付ファイルはないものとして処理する。なお、シングルパート形式の電子メールは、１つのパートからなるヘッダ２００と本文３００によって構成されており、空行情報に基づいて、本文３００を抽出する処理を行う。
【０１０６】
図８（Ｂ）は、マルチパート形式の電子メールの一例を示す。図８（Ｂ）に示すように、マルチパート形式の電子メールは、ヘッダ４００と複数のパート５１０、５２０によって構成される。
【０１０７】
本実施形態における添付ファイルデータは、電子メールのデータのうち添付されたファイルのデータのことをいい、ＭＩＭＥ規格のマルチパート形式のパートのデータ（例えば、パートボディのデータ、或いは、パートヘッダ及びパートボディのデータ）である。通常、マルチパート形式の電子メールの１番目のパートには、ユーザがメールソフトにおいて本文として記載したメッセージが記録されているので、本実施形態では、１番目のパート５１０のデータ（パートボディ５１２のデータ、又は、パートヘッダ５１１及びパートボディ５１２のデータ）を本文とし、２番目のパート５２０のデータ（パートボディ５２２のデータ、又は、パートヘッダ５２１及びパートボディ５２２のデータ）を添付ファイルデータとして処理を行う。なお、３つ以上のパートが存在する場合には、２番目以降のそれぞれの各パートのデータを各添付ファイルデータとして処理を行う。つまり、３つ以上のパートが存在する場合には、複数の添付ファイルデータを有することになる。
【０１０８】
なお、マルチパート形式のいずれかのパートが、更にマルチパート形式にデータが記録されている電子メールも存在する。かかる場合には、再帰的に各パートのデータを添付ファイルデータとして処理してもよい。また、マルチパート形式のパートに記録されている下位のマルチパートのパートのデータ（入れ子にされたマルチパートのパートのデータ）については添付ファイルデータとして処理を行わないように制御し、１段階目の各パートのデータを添付ファイルデータとして処理を行うようにしてもよい。
【０１０９】
なお、サーバ１０は、各パートのパートヘッダを参照し、パートヘッダの「Ｃｏｎｔｅｎｔ−Ｔｙｐｅ」が「ｉｍａｇｅ／ｊｐｅｇ」等の特定のヘッダ情報である場合に、そのパートのデータを添付ファイルデータとして扱うようにしてもよい。
【０１１０】
また、サーバ１０は、図８（Ｂ）に示すようなマルチパート形式の電子メールにおいて、各パートのデータそれぞれを、各添付ファイルデータとして扱うようにしてもよい。つまり、図８（Ｂ）の場合には、電子メールの第１のパート５１０のデータを１番目の添付ファイルデータとして取り扱い、第２のパート５２０のデータを２番目の添付ファイルデータとして取り扱ってもよい。なお、サーバ１０は、図８（Ｂ）に示すようなマルチパート形式の電子メールにおいて、全パートのデータ５００を本文として処理してもよいし、本文はないものとして処理してもよい。
【０１１１】
なお、サーバ１０は、電子メールのヘッダの「Ｃｏｎｔｅｎｔ−Ｔｙｐｅ」が「ｍｕｌｔｉｐａｒｔ／ｍｉｘｅｄ」である場合に、当該電子メールは添付ファイルデータを有すると判断する（マルチパート形式の電子メールであると判断する）。また、その際に、サーバ１０は、各パートの区切り情報（ｂｏｕｎｄａｒｙ）が示すデータを取得し、区切り情報に基づき各パートデータを抽出する。また、サーバ１０は、空行情報に基づいて、各パートのパートヘッダやパートボディデータを抽出し、添付ファイルデータを読み出す処理、添付ファイルデータを抽出して特定データ参照情報に書き換える処理等を行う。
【０１１２】
３．３  本文に関する電子メールの格納処理と送信処理の例
サーバ１０は、受信した電子メールの本文（特定データの一例）が、格納領域６０に既に格納された他の電子メールの本文と同じ場合に、受信した電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行うようにしてもよい。
【０１１３】
３．３．１  本文に関する電子メールの格納処理と送信処理の例１
３．３．１．１  格納処理
例えば、サーバ１０は、図１２に示すように、Ｔ６時点で、ｕｓｅｒＡ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ６を受信すると、電子メールＭ６の電子メール参照情報を決定する。例えば、電子メールＭ６の電子メール参照情報が「００６」であるとすると、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックス７０Ａに電子メール参照情報「００６」を格納する。
【０１１４】
次に、サーバ１０は、Ｔ６時点において、電子メールＭ６の本文Ｂ１のハッシュ値を求め、ハッシュ値に基づいて、電子メールＭ６の本文Ｂ１が既に特定領域８０（広義には格納領域６０）に格納されているか否かを判断する。このハッシュ値は、本文（特定データの一例）を識別（特定）するための情報である。つまり、サーバ１０は、ハッシュ値がハッシュテーブルＴＢに登録されているか否かを判断する。
【０１１５】
例えば、本文Ｂ１のハッシュ値が「３４５１４３２」であるとすると、このハッシュ値「３４５１４３２」がハッシュテーブルＴＢに登録されているか否かを判断する。そして、サーバ１０は、本文Ｂ１のハッシュ値を「３４５１４３２」がハッシュテーブルＴＢに登録されていない場合に、電子メールＭ６の本文が特定領域８０に格納されていないと判断し、ハッシュテーブルＴＢにハッシュ値「３４５１４３２」に対応づけて特定データ参照情報「００６−Ｂ」を登録する。なお、特定データ参照情報の「００６−Ｂ」は、電子メールＭ６の参照情報「００６」と、参照先のデータが本文であることを示すデータ「Ｂ」とを組み合わせた情報とする。そして、サーバ１０は、電子メールＭ６をそのまま特定領域８０に格納する処理を行う。
【０１１６】
その後、サーバ１０が、Ｔ７時点（Ｔ６時点の後のタイミング）で、ｕｓｅｒＢ＠ａａａ．ｃｏｍの宛先が指定された電子メールＭ７を受信したとする。サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックス７０Ｂに、電子メールＭ７の電子メール参照情報「００７」を格納する。
【０１１７】
そして、サーバ１０は、電子メールＭ７の本文Ｂ１のハッシュ値を求める。そして、サーバ１０は、Ｔ７時点において、電子メールＭ７のハッシュ値がハッシュテーブルＴＢに登録されているか否かを判断する。例えば、サーバ１０は、Ｔ７時点で、電子メールＭ７の本文Ｂ１のハッシュ値「３４５１４３２」がハッシュテーブルＴＢに登録されている場合、電子メールＭ７の本文が特定領域８０に格納されていると判断する。そして、電子メールＭ７の本文を、ハッシュ値「３４５１４３２」に対応する特定データ参照情報「００６−Ｂ」に書き換えて、電子メールＭ７を特定領域８０に格納する処理を行う。
【０１１８】
３．３．１．２  送信処理
次に、サーバ１０の送信処理について説明する。サーバ１０は、端末２０から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【０１１９】
そして、サーバ１０は、読み出された電子メールが特定データ参照情報を含むか否かを判断し、読み出された電子メールが特定データ参照情報を含む場合には、特定データ参照情報を特定領域８０に格納されている本文（特定データ参照情報に対応する本文）に書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。一方、特定領域８０から読み出された電子メールに特定データ参照情報が含まれない場合には、読み出した電子メールを端末２０に送信する処理を行う。このようにすれば、従来と同じように、端末にユーザ宛の電子メールを送信することができる。
【０１２０】
例えば、図１２のＴ７以後で、サーバ１０が、ユーザ名「ｕｓｅｒＢ＠ａａａ．ｃｏｍ」の端末２０から受信要求を受け付けると、「ｕｓｅｒＢ＠ａａａ．ｃｏｍ」のメールボックス７０Ｂにある電子メール参照情報「００７」を取得する。そして、「００７」に対応する電子メールＭ７を特定領域８０から読み出す。
【０１２１】
そして、サーバ１０は、電子メールＭ７に特定データ参照情報を含むか否かを判断する。例えば、サーバ１０は、電子メールＭ７に特定データ参照情報を含むと判断されると、特定データ参照情報「００６−Ｂ」を取得し、「００６−Ｂ」に対応する本文Ｂ１を取得し、当該特定データ参照情報「００６−Ｂ」を本文Ｂ１に書き戻す。例えば、特定データ参照情報「００６−Ｂ」は、電子メールＭ６の本文を意味するので、サーバ１０は、電子メールＭ６の本文Ｂ１を読み出して、電子メールＭ７の特定データ参照情報「００６−Ｂ」を削除して代わりに本文Ｂ１を書き込む処理を行う。そして、サーバ１０は、書き戻された電子メールＭ７を端末２０に送信する処理を行う。なお、サーバ１０は、上述したように、電子メールＭ７に固有情報を加えて送信用の電子メールＭ７を生成して端末２０に送信してもよい。また、サーバ１０は、端末２０から電子メールＭ７のサイズの要求情報を受信した場合には、固有情報を付加した送信用の電子メールＭ７のサイズを端末２０に送信するようにしてもよい。
【０１２２】
なお、サーバ１０は、受信要求を受け付けたユーザのメールボックスに複数の電子メール参照情報を取得した場合には、電子メール参照情報毎に処理を行う。また、サーバ１０は、読み出した電子メールに複数の特定データ参照情報が含まれる場合には、複数の特定データ参照情報それぞれについて、特定データ参照情報を対応する本文に書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。
【０１２３】
以上のように、本実施形態のサーバ１０は、電子メールの一部の本文を特定データ参照情報に書き換えたとしても、元の添付ファイルデータに戻すことができるので、データを紛失することなく確実に電子メールを送信することができる。
【０１２４】
３．３．２  本文に関する電子メールの格納処理と送信処理の例２
３．３．２．１  格納処理
また、サーバ１０は、図１３に示すように、受信する電子メールの本文を特定データ参照情報に書き換え、書き換え後の電子メールを、各宛先のメールボックス７０に格納するようにしてもよい。
【０１２５】
そして、サーバ１０は、本文のハッシュ値に基づいて、電子メールの本文が既に特定領域８０に格納されているか否かを判断し、本文が特定領域８０に格納されていない場合に、本文を特定領域８０に格納する。一方、本文が特定領域８０に格納されている場合に、本文を重複して特定領域８０に格納しないように制御する。
【０１２６】
例えば、図１３に示すように、Ｔ６時点において、サーバ１０は、電子メールＭ６の本文Ｂ１を特定データ参照情報「００６−Ｂ」に書き換え、書き換え後の電子メールＭ６をメールボックス７０Ａに格納する処理を行う。そして、サーバ１０は、本文Ｂ１が特定領域８０に格納されていない場合、本文Ｂ１を特定領域８０に格納する処理を行い、ハッシュテーブルＴＢに、本文Ｂ１のハッシュ値「３４５１４３２」に対応づけて、本文Ｂ１の特定データ参照情報「００６−Ｂ」を登録する。
【０１２７】
その後、サーバ１０が、Ｔ７時点で受信した電子メールＭ７を受信すると、電子メールＭ７の本文Ｂ１を特定データ参照情報「００６−Ｂ」に書き換え、書き換え後の電子メールＭ７をメールボックス７０Ｂに格納する処理を行う。なお、Ｔ７時点では、本文Ｂ１のハッシュ値「３４５１４３２」が既にハッシュテーブルＴＢに登録されているので、Ｔ７時点で本文Ｂ１を特定領域８０に格納しないように制御する。以上のように、例２においても、サーバ１０は、同一の本文を重複して格納しないように制御することにより、従来よりも格納領域６０を使用する容量を節約することができる。
【０１２８】
３．３．２．２  送信処理
次に、サーバ１０の送信処理について説明する。サーバ１０は、端末２０から受信要求とユーザ情報を受信し、ユーザ認証を認めるとユーザのメールボックスから電子メールを読み出す。
【０１２９】
そして、サーバ１０は、読み出された電子メールの特定データ参照情報を、特定領域８０に格納されている本文（特定データ参照情報に対応する本文）に書き戻し、書き戻された電子メールを端末２０に送信する処理を行う。また、サーバ１０は、ユーザのメールボックスに複数の電子メールが存在する場合には、電子メール毎に処理を行う。
【０１３０】
３．３．３  その他
サーバ１０は、受信した電子メールの添付ファイルデータが、格納領域６０（例えば、特定領域８０）に既に格納された他の電子メールの本文と同じ場合には、受信した電子メールの当該添付ファイルデータを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納するようにしてもよい。
【０１３１】
また、サーバ１０は、受信した電子メールの本文が、格納領域６０（例えば、特定領域８０）に既に格納された他の電子メールの添付ファイルデータと同じ場合には、受信した電子メールの当該本文を、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納するようにしてもよい。
【０１３２】
例えば、サーバ１０は、マルチパート形式の電子メールを受信した場合には、特定データそれぞれについて（本文、各添付ファイルデータそれぞれについて）、特定データが格納領域６０（例えば、特定領域８０）に既に格納された他の電子メールの特定データ（添付ファイルデータ又は本文）と同じか否かを判断する。そして、当該特定データが既に格納された他の電子メールの特定データと同じ場合には、受信した電子メールの当該特定データを、特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納するようにしてもよい。
【０１３３】
４．削除処理
本実施形態のサーバ１０は、格納領域６０に格納されたデータを削除しないように制御してもよいし、格納領域６０に格納されたデータを、所定条件下で削除するようにしてもよい。
【０１３４】
４．１  電子メール参照情報に対応するリファレンス値に基づいて、電子メールを削除する手法
例えば、サーバ１０が、格納領域６０に格納された電子メールを、所定条件下で削除する場合には、電子メール参照情報に対応づけてリファレンス値を設定し、リファレンス値を参照してデータの削除処理を行うことにより、誤って必要なデータを削除しないように制御する。
【０１３５】
４．１．１  リファレンス値を設定する処理
図１４（Ａ）は、電子メール参照情報に対応するリファレンス値Ｒ１の一例を示す。例えば、一の電子メールに対応するリファレンス値Ｒ１は、当該電子メールの一部または全部が参照される数に相当する。例えば、Ｒ１値が「０」の場合は参照されていない状態を示し、Ｒ１値が「１」以上である場合には、１以上の電子メールによって参照されている状態を示す。
【０１３６】
まず、サーバ１０は、宛先数に応じてＲ１値を設定する。例えば、図３に示すように、電子メール参照情報「００１」に、２つの宛先が指定されている場合には、電子メール参照情報「００１」のＲ１値を「２」に設定する。また、図６に示すように、電子メール「００２」に１つの宛先が指定されている場合には、電子メール参照情報「００２」のＲ１値を「１」に設定する。つまり、サーバ１０は、電子メール参照情報のＲ１値が、電子メールの宛先数以上になるように設定する。
【０１３７】
また、電子メールの本文の全部又は一部である特定データ（本文又は添付ファイルデータ）が他の電子メールから参照される場合、当該参照される側の電子メールのＲ１値を参照数に応じて増加させる。例えば、特定データ参照情報に書き換える数に応じて、特定データ参照情報に対応するＲ１値を１増加させる（インクリメントさせる）。
【０１３８】
具体的には、図６に示すように、電子メールＭ３の添付ファイルデータＦ１を特定データ参照情報「００２−１」に書き換える場合に、電子メール参照情報「００２」に対応するＲ１値を１増加させる。また、図１２に示すように、電子メールＭ７の本文を特定データ参照情報「００６−Ｂ」に書き換える場合には、電子メール参照情報「００６」のＲ１値を１増加させる。なお、図９、１０に示すような例についても、同様に処理を行う。
【０１３９】
４．１．２  リファレンス値に基づく電子メールの削除処理
本実施形態のサーバ１０は、端末２０に電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、電子メール参照情報に対応するＲ１値を「１」減少させる（デクリメントさせる）処理を行う。また、電子メールに特定データ参照情報を含む場合には、特定データ参照情報を、本文又は添付ファイルデータに書き戻す都度、参照先の電子メールのＲ１値を１減少させる（デクリメントさせる）。
【０１４０】
例えば、図３のＴ１時点後、サーバ１０が、電子メール参照情報「００１」に対応するＲ１値が「２」である状態で、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から電子メール参照情報「００１」に対応する電子メールＭ１の送信処理を正常終了した後に、電子メール参照情報「００１」に対応するＲ１値を「１」減少させる。つまり、電子メール参照情報「００１」に対応するＲ１値を「２」から「１」に更新する。
【０１４１】
その後、サーバ１０が、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から電子メール参照情報「００１」に対応する電子メールＭ１の送信処理を正常終了した後に、電子メール参照情報「００１」に対応するＲ１値を「１」減少させる。例えば、電子メール参照情報「００１」に対応するＲ１値を「１」から「０」に更新する。
【０１４２】
また、図６のＴ３時点後、サーバ１０が、電子メール参照情報「００２」に対応するＲ１値が「２」、電子メール参照情報「００３」に対応するＲ１値が「１」である状態で、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。
【０１４３】
すると、サーバ１０は、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から電子メール参照情報「００２」に対応する電子メールＭ２の送信処理を正常終了した後に、電子メール参照情報「００２」に対応するＲ１値を「１」減少させる。つまり、電子メール参照情報「００２」に対応するＲ１値を「２」から「１」に更新する。
【０１４４】
その後、サーバ１０が、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から電子メール参照情報「００３」に対応する電子メールＭ３の特定データ参照情報「００２−１」を元の特定データ（添付ファイルデータＦ１）に書き戻し、当該電子メールＭ３の送信処理を正常終了した後に、電子メール参照情報「００３」に対応するＲ１値を「１」減少させる。つまり、「００３」に対応するＲ１値を「１」から「０」に更新する。また、特定データ参照情報「００２−１」に基づき、参照先の電子メール参照情報「００２」に対応するＲ１値を「１」減少させる。つまり、電子メール参照情報「００２」に対応するＲ１値を「１」から「０」に更新する。なお、図９、１０、１２等の例についても、同様に処理を行う。
【０１４５】
そして、サーバ１０は、最終的に、Ｒ１値が０である電子メール参照情報に対応する電子メールを、参照されていない電子メールとみなし、当該電子メールを特定領域８０（広義には格納領域６０）から削除する処理を行う。例えば、図３の例で、電子メール参照情報「００１」のＲ１値が０になった場合には、特定領域８０に格納された電子メールＭ１を削除する処理を行う。また、図６の例で、電子メール参照情報「００２」のＲ１値が０になった場合には、特定領域８０に格納された電子メールＭ２を削除する処理を行う。なお、図９、１０、１２等の例についても、同様に処理を行う。
【０１４６】
なお、サーバ１０は、Ｒ１値を更新する度に、当該Ｒ１値が０になったか否かを判断し、Ｒ１値が０になったと判断した場合に、電子メールを特定領域８０から削除してもよいし、特定の削除タイミング（例えば、毎日の午前２時）に、電子メール参照情報のＲ１値が０である電子メールを削除するようにしてもよい。なお、サーバ１０は、端末２０からサーバ１０側に電子メールを保存する要求情報を受け付けた場合には、Ｒ１値を減少させないように制御するようにしてもよい。
【０１４７】
以上のように、本実施形態のサーバ１０は、保存する必要のない電子メールを削除することができるので、格納領域６０の無駄な使用を削減し、格納領域６０を有効に利用することができる。また、サーバ１０は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【０１４８】
４．２  特定データ参照情報に対応するリファレンス値に基づいてデータを削除する手法
本実施形態のサーバ１０は、特定データ参照情報に対応するリファレンス値Ｒ２値を設定し、特定データ（添付ファイルデータ、本文）の削除処理を行うようにしてもよい。例えば、図１１、１３の処理例については、特定データ参照情報に対応するリファレンス値に基づいてデータを削除する。
【０１４９】
４．２．１  リファレンス値を設定する処理
図１４（Ｂ）は、特定データ参照情報に対応するリファレンス値Ｒ２の一例を示す。例えば、リファレンス値Ｒ２は、特定データを参照する数に相当する。例えば、Ｒ２値が「０」の場合は参照されていない状態を示し、Ｒ２値が「１」以上である場合には、１以上の電子メールによって参照されている状態を示す。
【０１５０】
例えば、サーバ１０は、添付ファイルデータ又は本文を特定データ参照情報に書き換える度に、Ｒ２値を１増加させる（インクリメントさせる）。具体的には、図１１に示すように、添付ファイルデータを特定データ参照情報「００２−１」に書き換える場合に、特定データ参照情報「００２−１」に対応するＲ２を１増加させる。また、図１３に示すように、電子メールＲ７の本文を特定データ参照情報「００６−Ｂ」に書き換える場合に、「００６−Ｂ」に対応するＲ２を１増加させる。
【０１５１】
４．２．２  リファレンス値に基づく特定データの削除処理
本実施形態のサーバ１０は、端末２０からの受信要求があり、電子メール参照情報に対応する電子メールの送信処理が正常終了した後に、特定データ参照情報に対応するＲ２値を「１」減少させる（デクリメント）処理を行う。
【０１５２】
例えば、図１１のＴ３時点後、サーバ１０が、特定データ参照情報「００２−１」に対応するＲ２値が「２」である状態で、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックスにある電子メールＭ２の特定データ参照情報「００２−１」を添付ファイルデータＦ１に書き戻し電子メールＭ２の送信処理を正常終了した後に、特定データ参照情報「００２−１」に対応するＲ２値を「１」減少させる。つまり、特定データ参照情報「００２−１」に対応するＲ２値を「２」から「１」に更新する。
【０１５３】
その後、サーバ１０が、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックスにある電子メールＭ３の特定データ参照情報「００２−１」を添付ファイルデータＦ１に書き戻し電子メールＭ３の送信処理を正常終了した後に、特定データ参照情報「００２−１」に対応するＲ２値を「１」減少させる。つまり、特定データ参照情報「００２−１」に対応するＲ２値を「１」から「０」に更新する。
【０１５４】
また、図１３のＴ７時点後、サーバ１０が、特定データ参照情報「００６−Ｂ」に対応するＲ２値が「２」である状態で、ｕｓｅｒＡ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＡ＠ａａａ．ｃｏｍのメールボックスにある電子メールＭ６の特定データ参照情報「００６−Ｂ」を本文Ｂ１に書き戻して電子メールＭ６の送信処理を正常終了した後に、特定データ参照情報「００６−Ｂ」に対応するＲ２値を「１」減少させる。つまり、特定データ参照情報「００６−Ｂ」に対応するＲ２値を「２」から「１」に更新する。
【０１５５】
その後、サーバ１０が、ｕｓｅｒＢ＠ａａａ．ｃｏｍの端末２０から受信要求を受け付けたとする。すると、サーバ１０は、ｕｓｅｒＢ＠ａａａ．ｃｏｍのメールボックスにある電子メールＭ７の特定データ参照情報「００６−Ｂ」を本文Ｂ１に書き戻して電子メールＭ７の送信処理を正常終了した後に、特定データ参照情報「００６−Ｂ」に対応するＲ２値を「１」減少させる。つまり、特定データ参照情報「００６−Ｂ」に対応するＲ２値を「１」から「０」に更新する。
【０１５６】
そして、サーバ１０は、最終的に、Ｒ２値が０である特定データ参照情報に対応する特定データ（本文又は添付ファイルデータ）を、参照されていない特定データとみなし、当該特定データを特定領域８０（広義には格納領域６０）から削除する処理を行う。例えば、図１１の例で、特定データ参照情報「００２−１」のＲ２値が０になった場合には、特定領域８０に格納された添付ファイルデータＦ１を削除する処理を行う。また、図１３の例で、特定データ参照情報「００６−Ｂ」のＲ２値が０になった場合には、特定領域８０に格納された本文Ｂ１を削除する処理を行う。
【０１５７】
なお、サーバ１０は、Ｒ１値に基づく電子メールの削除処理と同じように、Ｒ２値を更新する度に、当該Ｒ２値が０になったか否かを判断し、Ｒ２値が０になったと判断した場合に、電子メールを特定領域８０から削除してもよいし、特定の削除タイミング（例えば、毎日の午前２時）に、特定データ参照情報のＲ２値が０である電子メールを削除するようにしてもよい。なお、サーバ１０は、端末２０からサーバ１０側に電子メールを保存する要求情報を受け付けた場合には、Ｒ２値を減少させないように制御するようにしてもよい。
【０１５８】
以上のように、本実施形態のサーバ１０は、保存する必要のない特定データ（本文又は添付ファイルデータ）を削除することができるので、格納領域６０の無駄な使用を削減し、格納領域６０を有効に利用することができる。また、サーバ１０は、リファレンス値に基づき削除処理を行うので、処理負荷を抑えて削除処理の判別を行うことができる。
【０１５９】
４．３  その他
なお、サーバ１０は、電子メールが削除される際に、当該電子メールの参照情報とそのリファレンス値Ｒ１を削除してもよい。また、サーバ１０は、特定データが削除される際に、当該特定データの参照情報とそのリファレンス値Ｒ２を削除し、ハッシュテーブルＴＢから当該特定データの参照情報とハッシュ値とを削除するようにしてもよい。また、上記削除処理は一例であり、サーバ１０は、種々の態様で電子メールや特定データの削除処理を行うようにしてもよい。
【０１６０】
５．フローチャート
５．１  格納処理の流れ
サーバ１０が、サーバ１０管理下のユーザを宛先とする電子メールを受信した場合、当該電子メールを格納領域６０に格納する処理の一例について、図１５Ａ、図１５Ｂを用いて、説明する。なお、Ｒ１値の初期値は「０」である。また、下記処理の流れは添付ファイルデータを特定データとし、当該添付ファイルデータを特定データ参照情報に書き換えて格納する処理の一例である。
【０１６１】
まず、受信した電子メールの参照情報を決定する処理を行う（ステップＳ１０）。そして、電子メールが添付ファイルデータを有する否かを判断する（ステップＳ１１）。電子
メールが添付ファイルデータを有しない場合（ステップＳ１１のＮ）、特定領域８０に受信した電子メールを格納する（ステップＳ１２）。次に、各宛先のメールボックスに電子メール参照情報を格納する（ステップＳ１３）。そして、電子メール参照情報に対応するＲ１値を宛先数分インクリメントする（ステップＳ１４）。
【０１６２】
一方、電子メールが添付ファイルデータを有する場合（ステップＳ１１のＹ）、添付ファイルに対応する特定データ参照情報を決定する処理を行う（ステップＳ１５）。そして、添付ファイルデータのハッシュ値を求める（ステップＳ１６）。次に、ハッシュ値がハッシュテーブルに登録済みか否かを判断する（ステップＳ１７）。
【０１６３】
ハッシュ値がハッシュテーブルに登録済み（ステップＳ１７のＹ）の場合、添付ファイルデータが実在するか否かを判断する（ステップＳ１８）。そして、添付ファイルデータが実在しない場合（ステップＳ１８のＮ）は、ステップＳ２４に進む。
【０１６４】
そして、添付ファイルデータが実在する場合（ステップＳ１８のＹ）は、各宛先のメールボックスに電子メール参照情報を格納する（ステップＳ１９）。そして、電子メールの添付ファイルデータを、特定データ参照情報に書き換えて、特定領域に格納する（ステップＳ２０）。そして、受信した電子メールの電子メール参照情報に対応するＲ１値を宛先数分インクリメントする（ステップＳ２１）。そして、参照先の電子メールの電子メール参照情報に対応するＲ１値を宛先数分インクリメントする（ステップＳ２２）。
【０１６５】
一方、ハッシュ値がハッシュテーブルに登録済みでない場合（ステップＳ１７のＮ）には、ハッシュ表のハッシュ値を特定データ参照情報に対応づけて登録する（ステップＳ２３）。そして、添付ファイルデータを特定領域に格納する（ステップＳ２４）。そして、各宛先のメールボックスに電子メール参照情報を格納する（ステップＳ２５）。そして、電子メールを特定領域に格納する（ステップＳ２６）。そして、受信した電子メールの電子メール参照情報に対応するＲ１値を宛先数分インクリメントする（ステップＳ２７）。以上で処理が終了する。
【０１６６】
５．２  送信処理の流れ
次に、図１６を用いて、サーバ１０が、端末２０から受信要求に応じて、端末２０に電子メールを送信する処理の一例について説明する。まず、端末２０から受信要求がある場合（ステップＳ３０のＹ）であって、かつ、ユーザ認証が認められた場合（ステップＳ３１のＹ）に、ユーザのメールボックスから電子メール参照情報を取得する（ステップＳ３２）。そして、特定領域から電子メール参照情報に対応する電子メールを取得する（ステップＳ３３）。そして、電子メールに特定データ参照情報が含まれるか否かを判断する（ステップＳ３４）。
【０１６７】
電子メールに特定データ参照情報が含まれない場合（ステップＳ３４のＮ）は、電子メールに対し、固有情報を付加して送信用の電子メールを生成する（ステップＳ３５）。そして、生成された電子メールを要求のあった端末２０に送信する処理を行う（ステップＳ３６）。そして、送信済みの電子メールのＲ１値をデクリメントする（ステップＳ３７）。
【０１６８】
一方、電子メールに特定データ参照情報が含まれる場合（ステップＳ３４のＹ）は、特定データ参照情報を添付ファイルデータに書き戻す処理を行う（ステップＳ３８）。そして、電子メールに対し、固有情報を付加して送信用の電子メールを生成する（ステップＳ３９）。そして、生成された電子メールを要求のあった端末２０に送信する処理を行う（ステップＳ４０）。そして、送信済みの電子メールのＲ１値をデクリメントする（ステップＳ４１）。そして、参照元の電子メールのＲ１値をデクリメントする処理を行う（ステップＳ４２）。以上で処理が終了する。
【０１６９】
６．  複数のドメインを管理する場合
本実施形態のサーバ１０は、一つのドメイン（例えば、「ａａａ．ｃｏｍ」）を管理する例について説明したが、サーバ１０は、複数のドメイン（例えば、「ａａａ．ｃｏｍ」、「ｂｂｂ．ｃｏ．ｊｐ」）を管理するようにしてもよい。
【０１７０】
例えば、サーバ１０は、複数のドメインそれぞれについて別個独立した格納領域を設け、電子メールの格納処理、送信処理を行うようにしてもよい。より具体的に説明すると、サーバ１０は、「ａａａ．ｃｏｍ」の格納領域６０−１と、「ｂｂｂ．ｃｏ．ｊｐ」の格納領域６０−２を設け、「ａａａ．ｃｏｍ」をドメインとする電子メールについては、格納領域６０−１を用いて格納処理と送信処理を行い、「ｂｂｂ．ｃｏ．ｊｐ」をドメインとする電子メールについては、格納領域６０−２を用いて格納処理と送信処理を行う。
【０１７１】
なお、サーバ１０は、複数のドメイン間で格納領域を共有して電子メールの格納処理を行うようにしてもよい。例えば、サーバ１０は、受信した電子メールの特定データが、既に格納領域に格納された他のドメインの電子メールの特定データと同じ場合には、受信した電子メールの特定データを特定データ参照情報に書き換えて格納してもよい。そして、当該電子メールを送信する際に、特定データ参照情報を特定データに書き戻して送信するようにしてもよい。
【０１７２】
より具体的に説明すると、サーバ１０は、受信した電子メールＭ８の宛先が「ｕｓｅｒＡ＠ｂｂｂ．ｃｏ．ｊｐ」であって、電子メールＭ８の添付ファイルデータＦ１（特定データの一例）が、特定領域８０（広義には格納領域６０）に既に格納された「ｕｓｅｒＡ＠ａａａ．ｃｏｍ」を宛先とする電子メールＭ２に含まれる添付ファイルデータＦ１と同じ場合には、電子メールＭ８の添付ファイルデータＦ１を、特定データ参照情報「００２−１」に書き換え、書き換え後の電子メールＭ８を特定領域８０に格納する処理を行う。そして、サーバ１０は、例えば、端末２０からドメイン「ｂｂｂ．ｃｏ．ｊｐ」のｕｓｅｒＡの電子メール受信要求を受け付けた場合には、特定領域８０から読み出した電子メールＭ８の特定データ参照情報「００２−１」に対応する添付ファイルデータＦ１に書き戻し、書き戻された電子メールＭ８を端末に送信する処理を行う。
【０１７３】
また、サーバ１０は、ドメインが異なる複数の宛先が指定された電子メールを受信した場合に、各宛先の各メールボックスに電子メール参照情報を格納すると共に、格納領域に受信した一の電子メールを格納するようにしてもよい。
【０１７４】
例えば、サーバ１０は、「ｕｓｅｒＡ＠ａａａ．ｃｏｍ」「ｕｓｅｒＡ＠ｂｂｂ．ｃｏ．ｊｐ」が指定された電子メールＭ９を受信した場合には、各宛先に対応する各ユーザのメールボックスに、受信した電子メールＭ９に対応する電子メール参照情報（例えば、「００９」）を格納すると共に、一の当該電子メールＭ９を特定領域８０（広義には格納領域６０）に格納する処理を行う。そして、サーバ１０は、例えば、端末２０からドメイン「ｂｂｂ．ｃｏ．ｊｐ」のｕｓｅｒＡの電子メール受信要求を受け付けた場合には、「ｂｂｂ．ｃｏ．ｊｐ」のｕｓｅｒＡのメールボックスに格納された電子メール参照情報「００９」に基づき、電子メールＭ９を特定領域８０から読み出し、読み出された電子メールＭ９を端末２０に送信する処理を行う。
【０１７５】
以上のように、本実施形態では、サーバ１０が複数のドメインを管理する場合において、格納領域を更に節約することができる。
【０１７６】
７．  復号化処理の説明
オリジナルのデータがバイナリデータである添付ファイルデータ（例えば、画像データ等）は、電子メールにおいて、「ｂａｓｅ６４」や、「ｑｕｏｔｅｄ−ｐｒｉｎｔａｂｌｅ」などの種々の符号化方式によって符号化（エンコード）されている。したがって、符号化方式が異なるが、元来同じ内容のデータを重複して格納領域に保存してしまうことがある。
【０１７７】
そこで、本実施形態のサーバ１０は、受信した電子メールの符号化された特定データを復号化（デコード）し、復号化された特定データに基づいて処理を行うようにしてもよい。つまり、復号化された特定データが、既に格納領域６０（例えば、特定領域８０）に格納されているか否かを判断する処理を行うようにしてもよい。
【０１７８】
例えば、サーバ１０は、受信した電子メールの復号化された特定データが格納領域６０に既に格納された他の電子メールに含まれていない場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルＴＢに登録されていない場合には、当該ハッシュ値を、復号化された特定データの特定データ参照情報に対応付けて登録し、格納領域６０に、電子メールを格納する。なお、この電子メールの特定データは復号化の状態で格納する。
【０１７９】
一方、サーバ１０は、受信した電子メールの復号化された特定データが格納領域６０に既に格納された他の電子メールに含まれている場合、つまり、復号化された特定データのハッシュ値がハッシュテーブルＴＢに登録されている場合には、当該特定データを、ハッシュ値に対応する特定データ参照情報に書き換え、書き換え後の電子メールを格納領域６０に格納する処理を行う。
【０１８０】
なお、サーバ１０は、特定データを復号化する際に、メール受信時の特定データの符号化方式を記憶し、端末２０に電子メールを送信する際には、特定データの符号化方式を参照して当該特定データを符号化してから送信する。
【０１８１】
なお、サーバ１０は、復号化の処理を行う場合には次のように処理する。まず、電子メールがシングルパート形式の場合は、ヘッダの「Ｃｏｎｔｅｎｔ−Ｔｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ」を参照して符号化方式を検出し、符号化方式に応じて本文を復号化する。例えば、符号化方式が「ｂａｓｅ６４」であれば、ｂａｓｅ６４に基づく復号化処理を行い、符号化方式が「ｑｕｏｔｅｄ−ｐｒｉｎｔａｂｌｅ」であれば、「ｑｕｏｔｅｄ−ｐｒｉｎｔａｂｌｅ」に基づく復号化処理を行う。また、電子メールがマルチパート形式の場合は、パートヘッダの「Ｃｏｎｔｅｎｔ−Ｔｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ」を参照して符号化方式を検出し、符号化方式に応じてパートデータを復号化する。
【０１８２】
このようにすれば、符号化方式のみが異なるがオリジナルのデータが同一の特定データについて重複して記憶する必要がなくなるので、記憶領域の節約を図ることができる。
【符号の説明】
【０１８３】
１０  サーバ、１００  処理部、１１０  配送対応部（ＳＭＴＰ）、１１１  受信部、
１１２  格納処理部、１１３  配送部、受信対応部（ＰＯＰ／ＩＭＡＰ）、
１２１  受け付け部、１２２  送信部、１２３  参照判断部、１２４  削除部、
５０  記憶部、６０  格納領域、７０  メールボックス、８０  特定領域、
１８０  情報記憶媒体、２０  端末、２１  ＭＵＡ
【図１】
0005864133.tif 000002
【図２】
0005864133.tif 000003
【図３】
0005864133.tif 000004
【図４】
0005864133.tif 000005
【図５】
0005864133.tif 000006
【図６】
0005864133.tif 000007
【図７】
0005864133.tif 000008
【図８】
0005864133.tif 000009
【図９】
0005864133.tif 000010
【図１０】
0005864133.tif 000011
【図１１】
0005864133.tif 000012
【図１２】
0005864133.tif 000013
【図１３】
0005864133.tif 000014
【図１４】
0005864133.tif 000015
【図１５Ａ】
0005864133.tif 000016
【図１５Ｂ】
0005864133.tif 000017
【図１６】
0005864133.tif 000018