(57)【要約】【課題】メールシステムにおいて、サーバ障害時のデータ紛失を防ぎ、高配信性能であるメールゲートウェイを実現する。【解決手段】メールゲートウェイと複数のデータストアサーバを設置し、メールゲートウェイとデータストアサーバ間の通信方法とデータの格納方法によって、メールゲートウェイの配信性能を向上する。具体的には、メールゲートウェイとデータストアサーバは、メールゲートウェイが保持すべきメールを、メールゲートウェイとデータストアサーバ上の揮発性メモリ上にそれぞれ保持する。障害による紛失の可能性の高いメール、課金の情報など重要度の高いデータは、データストアサーバ上の不揮発性メモリへ書き込む。また、データストアサーバは、複数の不揮発性メモリへのアクセスをまとめて、不揮発性メモリへ書きみを高速化する。【選択図】図１
2014170573.tif 000002
【特許請求の範囲】
【請求項１】
メール送信装置からメールを受信するメールサーバと、
前記メールおよび/または当該メールに係わる関連情報を格納するデータストアサーバと、を備えるメールシステムであって、
前記メールサーバは、
前記メールに係わる前記関連情報を生成する機能と、
前記メールおよび/または前記関連情報の格納に係わる制御情報を生成する機能と、
前記メールおよび/または前記関連情報と前記制御情報とを、前記データストアサーバへ送信する機能を備え、
前記データストアサーバは、
前記格納に用いる不揮発性メモリと揮発性メモリと、
上記制御情報に基づいて、前記メールおよび/または前記関連情報の前記格納方法を決定するデータ管理部と、
前記メールおよび/または前記関連情報を、決定された前記格納方法に従って、前記不揮発性メモリおよび/または前記揮発性メモリに格納するデータ管理部と、を備える
ことを特徴とするメールシステム。
【請求項２】
請求項１に記載のメールシステムであって、
前記メールサーバを一つ以上備えるとき、
前記データストアサーバは、
一つ以上のキューと、
一つの前記キューを、いずれか一つの前記メールサーバと対応付けるメタデータ管理部を備え、
前記データ管理部は、前記メールサーバ一つ単位で、格納する前記メールおよび/または前記関連情報を管理する
ことを特徴とするメールシステム。
【請求項３】
請求項１または２に記載のメールシステムであって、
前記データストアサーバの前記データ管理部は、
前記メールサーバの、障害の有無を監視し、
前記監視によって障害を検知すれば、前記アラームを通知する
ことを特徴とするメールシステム。
【請求項４】
請求項１ない３いずれか一に記載のメールシステムであって、
前記データストアサーバの前記データ管理部は、
前記データストアサーバに格納したデータにアクセスできるメールサーバを一意に識別可能な識別情報で管理し、
上記識別情報と対応づけられた前記メールおよび/または前記関連情報が更新されたときに、更新する情報を上記メールサーバへ通知する
ことを特徴とするメールシステム。
【請求項５】
請求項１ないし４いずれか一に記載のメールシステムであって、
前記データストアサーバの前記データ管理部は、
不揮発性メモリへの書き込みの状態を監視し、
前記メールサーバから格納要求を受信した場合に、当該キューサーバの負荷が規定値以上であれば、前記メールサーバにエラー応答を送信する
ことを特徴とするメールシステム。
【請求項６】
請求項１ないし５いずれか一に記載のメールシステムであって、
前記メールサーバは、
格納する前記メールおよび/または前記関連情報を一意に識別する識別情報を前記データストアサーバへ送信する機能と、
前記メールおよび/または前記関連情報を前記データストアサーバが揮発性メモリに保持していた場合に、前記メールおよび/または前記関連情報を不揮発性メモリへコピーする処理を、前記識別情報を用いて、前記データストアサーバに要求する機能と、を備え、
前記データストアサーバのデータ管理部は、前記識別情報に従い、要求された処理を行う
ことを特徴とするメールシステム。
【請求項７】
請求項１ないし６いずれか一に記載のメールシステムであって、
前記メールサーバは、前記メールおよび/または前記関連情報の格納の処理期限を前記制御情報に含めて生成する機能を備え、
前記データストアサーバの前記データ管理部は、前記処理期限内であれば、前記データの格納処理を、他の、前記メールおよび/または前記関連情報の格納処理と併せて行う
ことを特徴とするメールシステム。
【請求項８】
請求項１ないし７いずれか一に記載のメールシステムであって、
前記メールサーバの前記関連情報を生成する機能は、前記メールおよび/または前記関連情報について、前記不揮発性メモリと前記揮発性メモリの両方に書き込む、または、前記揮発性メモリと前記不揮発性メモリのいずれか一方への書き込みを要求し他方への書き込みを要求しない、を設定する制御情報を生成し、
前記データストアサーバの前記データ管理部は、前記制御情報に従って、前記メールおよび/または前記関連情報を格納する
ことを特徴とするメールシステム。
【請求項９】
請求項８に記載のメールシステムであって、
前記データストアサーバの前記データ管理部は、
前記制御情報を参照して、前記不揮発性メモリへの書込みが終了して応答を送信するか、または、前記不揮発性メモリへの書き込みの終了を待たずに、応答を送信するかを決定し、
前記決定に従って、前記メールおよび/または前記関連情報を格納する
ことを特徴とするメールシステム。
【請求項１０】
請求項８または９に記載のメールシステムであって、
前記メールサーバは、
通信端末から受信したメールを揮発性メモリに格納し不揮発性メモリに格納しない、と設定する制御情報を生成して、前記制御情報を含む関連情報をを前記データストアサーバへ送信する機能と、
前記データストアサーバから前記要求を正常に格納したという応答を受信した場合に、前記通信端末へ正常応答を送信する機能と、
揮発性メモリに格納し不揮発性メモリに格納しない設定の処理要求を前記データストアサーバに送信したメールについて、前記メール転送サーバへ送信し、前記メール転送サーバから一時エラーを受信した場合に、揮発性メモリに格納されている前記メールを、前記不揮発性メモリへコピーする要求を前記データストアサーバへ送信する機能と、を備え、
前記データストアサーバの前記データ管理部は、前記処理要求に従って、前記データを格納またはコピーする機能を備える
ことを特徴とするメールシステム。
【請求項１１】
請求項８ないし１０いずれか一に記載のメールシステムであって、
前記メールサーバは、前記メールおよび/または前記関連情報がデータストアサーバの揮発性メモリにある場合に、状態遷移日時と、揮発性メモリから不揮発性メモリへのコピーの指示と、を含めた要求を設定する機能を備え、
前記データストアサーバの前記データ管理部は、上記要求に含まれる前記状態遷移日時を経過しても前記前記メールおよび/または前記関連情報が存在していれば、上記要求に従った処理を行う
ことを特徴とするメールシステム
【請求項１２】
請求項８ないし１１いずれか一に記載のメールシステムであって、
前記メールサーバは、
前記メール送信装置から受信したメールを、メールの宛先ドメイン単位で管理する機能と、
宛先ドメインが、規制ドメインであるかを判定し、判定結果に応じて、前記メールを不揮発性メモリと揮発性メモリへ格納するか、不揮発性メモリには格納せず揮発性メモリへ格納するか、を設定する機能と、を備える
ことを特徴とするメールシステム。
【請求項１３】
データを格納するための要求を受信し、前記データを格納するデータストアサーバであって、
前記データは、メールおよび/または当該メールに係わる関連情報であって、
前記データストアサーバは、
前記格納に用いる不揮発性メモリと揮発性メモリと、
データ管理部と、を備え、
前記データ管理部は、
前記メールおよび/または前記関連情報と、前記メールおよび/または前記関連情報の格納に係わる制御情報と、を受信し、
前記制御情報に基づいて、前記メールおよび/または前記関連情報の前記格納方法を決定し、
受信した前記メールおよび/または前記関連情報を、決定された前記格納方法に従って、前記不揮発性メモリおよび/または前記揮発性メモリに格納する
ことを特徴とするデータストアサーバ。
【請求項１４】
請求項１３に記載のデータストアサーバであって、
前記制御情報は、前記メールおよび/または前記関連情報について、前記不揮発性メモリと前記揮発性メモリの両方に書き込む、または、前記揮発性メモリと前記不揮発性メモリのいずれか一方への書き込みを要求し他方への書き込みを要求しない設定を含み、
前記データ管理部は、前記設定に従い、前記メールおよび/または前記関連情報を格納する
ことを特徴とするデータストアサーバ。
【請求項１５】
請求項１３または１４に記載のデータストアサーバであって、
前記制御情報は、前記メールおよび/または前記関連情報の格納の処理期限を含み、
前記データ管理部は、前記処理期限内であれば、前記データの不揮発性メモリへの格納処理を、他の、前記メールおよび/または前記関連情報データの格納処理と併せて行う
ことを特徴とするデータストアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メールサーバの技術に関する。
【背景技術】
【０００２】
携帯電話の電子メール（以下、メールと表記する）の普及により、携帯電話や携帯端末（以下、携帯電話という）向けの通信サービスを提供している会社（以下、携帯通信キャリア）のメールサービスを提供するシステム（以下、メールシステム）では、大量のメールを処理している。以下、携帯通信キャリアのメールシステムの事例について説明する。
【０００３】
携帯通信キャリアは、携帯電話やインターネットから受信したメールを宛先へ中継する処理や、メールの文字コード、添付されている画像などの変換処理を行って、メールを配信している。また、携帯通信キャリアはメールを配信することにより、送信側または受信側携帯電話へ課金する。上記の処理は、携帯通信キャリア内に設置するメールゲートウェイというサーバ装置（以下、サーバ装置をサーバという）で実現している。
【０００４】
一般的なメールゲートウェイは、1通のメールを中継するために次の処理を行っている。最初にメールゲートウェイは、送信側携帯電話からメールを受信し、受信したメールの情報をRAM（Random Access Memory）などの揮発性メモリ（記憶を保持するために電源供給が必要なメモリ）と、磁気ディスクや、フラッシュメモリを使用したSSD（Solid State Drive）などの不揮発性メモリ（電源を供給しなくても記憶を保持するメモリ）に記憶し、送信側携帯電話にメールを正常に受信したことを示す応答を返す。
【０００５】
次に、メールゲートウェイは、受信したメールを宛先のメール転送サーバ（MTA: Message Transfer Agent）に中継する。中継に成功した場合、メールゲートウェイは、揮発性メモリと不揮発性メモリに記憶したメールの情報を削除して終了する。上記メールゲートウェイがメールを中継する一連の処理は、一般的にStore＆Forwardと呼ばれる。
【０００６】
メールゲートウェイのメールの中継処理中に、サーバ障害が発生し、メールゲートウェイが揮発性メモリ上に記憶したメール情報を失った場合、メールゲートウェイは不揮発性メモリに記憶したメールの情報を揮発性メモリ上にコピーして処理を継続する。即ちメールゲートウェイは、受信したメールを一度不揮発性メモリに記憶することにより、メールの中継処理中のメールの紛失を防ぐことができる。
【０００７】
しかしながら、不揮発性メモリへのアクセス速度は、揮発性メモリへのアクセス速度と比較し遅いため、上記中継処理を行うメールゲートウェイは不揮発性メモリへのアクセスがボトルネックになる。即ち、メールゲートウェイが１秒間に処理できるメール数（以下、配信性能と表記する）が、不揮発性メモリへのアクセスにより劣化する。
【０００８】
不揮発性メモリへのアクセスを高速化するために、メールゲートウェイの不揮発性メモリのデバイスをSAN(Storage Area Network)で接続した高速なストレージにする方法があるが、これらのデバイスはスケーラビリティ、コスト、運用面で課題がある。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平8-263348号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
近年、ユーザ一人当りのメールの送受信数の増加や、メールサイズの巨大化のために、トラフィックの増大が見込まれている。このような背景により、メールゲートウェイの配信性能の向上が課題となっている。
【００１１】
メールゲートウェイの配信性能を向上するためには、以下の２つのアプローチがある。
・ボトルネックである不揮発性メモリへのアクセスを削減または高速化する（以下、アクセス性能向上手法と表記する）。
・不揮発性メモリおよびメールゲートウェイをスケールアウト（台数を増やして性能向上を図る）して、全体の性能を向上する（以下、スケール向上手法と表記する）。
【００１２】
アクセス性能向上手法の実現方法として、メールゲートウェイが、受信したメールを不揮発性メモリには記憶させず、揮発性メモリに記憶させる方法がある。一般的に上記技術は分散インメモリキャッシュ、またはインメモリグリッドと呼ばれる技術である（スケール向上手法については、一般的な分散インメモリキャッシュをメールゲートウェイに適用した場合、スケーラビリティについて問題が発生するため、ここではスケール向上手法については考慮していないとする）。
【００１３】
上記方法では、メールゲートウェイのサーバ障害によるメールの紛失を防ぐために、メールゲートウェイ以外のメールを記憶するサーバ装置（以下、データストアサーバと表記する）を設置して、データストアサーバの揮発性メモリにもメールを記憶する方法が考えられる。これにより、メールゲートウェイとデータストアサーバが同時にサーバ障害を起こさなければ、メールゲートウェイは中継処中にメールの紛失を防ぐことができる。
【００１４】
しかしながら、この方法ではメールゲートウェイとデータストアサーバの設置してある場所で電源障害が発生した場合、メールが失われる可能性がある。また、メールゲートウェイは、メール転送サーバへメールの中継に失敗した場合、中継に失敗したメールの中継に成功するまで、数時間から数日はメールを保持しなければならないため、メールゲートウェイとデータストアサーバが同時に障害を起こす確率が高くなる。
【００１５】
上記課題を解決するもうひとつの方法に、特許文献１の方法がある。この方法は、アクセス性能向上手法をとる。特許文献1の技術は、各データに、揮発性メモリのデータであるか又は不揮発性メモリのデータであるかを示す属性情報が予め付与している。運用開始時にデータストアサーバが属性情報に従って、不揮発性メモリ上に全て格納しているデータを揮発性メモリに保持すべきデータであれば揮発性メモリにコピーする。アプリケーションがアクセス対象のデータを指定すると、データストアサーバが揮発性メモリのデータか又は不揮発性メモリのデータかを判断して、揮発性メモリ又は不揮発性メモリにアクセスする。
【００１６】
これをメールゲートウェイに応用すると、メールゲートウェイが長期間保持しなければならないデータ（例えばメール中継に失敗したメール）を不揮発性メモリに、それ以外を揮発性メモリに記憶することにより不揮発性メモリへのアクセスを減らすことができる。しかしながら、特許文献１の方法はデータストアサーバが予め保持しているデータに揮発性メモリか不揮発性メモリへ格納するかを決める属性情報に付加することを前提にしており、メールゲートウェイのようなStore＆Forwardを行うサーバが行う処理では、格納するデータがほとんど新規データであるため対応できない。
【００１７】
さらに、特許文献１では、スケール向上手法について考慮していない。たとえば、特許文献1の方法とスケールアウトを併用する場合、データストアサーバに格納するデータをどのように分散してスケールアウトするか、メールゲートウェイ107はどのデータがデータストアサーバに入っているかをどうやって把握するかといった、仕組みが必要であるが、特許文献１には開示されていない。
【００１８】
また、以上の課題は、メールシステムの例であったが、通信端末向けに商品やサービスを提供するサービス業者のシステムにも同様の課題がある。サービス業者装置は、商品やサービスを提供するために携帯電話のユーザの情報をRDB（Relational DataBase）などで管理して、Webサーバで上記ユーザ情報を処理してサービスを提供する。RDBのデータはSANで接続されたストレージなどに格納されるため、不揮発性メモリへのアクセスがボトルネックであることと、スケールアウトすることが難しいという問題がある。サービス業者装置がより多くの通信端末へサービスを提供するには、メールシステムと同様に、アクセス性能向上手法とスケール向上手法をとる必要がある。
【課題を解決するための手段】
【００１９】
本明細書では、メールゲートウェイと一つ以上のデータストアサーバを設置し、メールゲートウェイとデータストアサーバ間の通信方法とデータの格納方法によって、メールゲートウェイの配信性能を向上させる技術が開示される。具体的には、アクセス性能向上手法と、スケール向上手法にそれぞれに対応する以下の処理を開示する。
・メールゲートウェイとデータストアサーバが、メール中継処理において、データ紛失の可能性を低下させるために長期間保持する可能性が高いデータ、重要度の高いデータを、揮発性メモリと不揮発性メモリの両方に記憶させ、それ以外のデータは不揮発性メモリには記憶させず、複数サーバの揮発性メモリに記憶させることにより、不揮発性メモリへのアクセスを削減する。また、不揮発性メモリへの複数のアクセスをひとつのアクセスへまとめることにより、不揮発性メモリへのアクセスを高速化してもよい。
・メールゲートウェイとデータストアサーバのスケーラビリティを実現するため、メールゲートウェイとデータストアサーバ内に保持するキューを対応づけて管理し、データストアサーバは上記対応づけたメールゲートウェイの生存監視、メールゲートウェイの障害時の処理を行う。
【００２０】
開示されるメールシステムは、メールゲートウェイと、揮発性メモリおよび不揮発性メモリとを備えたデータストアサーバと、を有し、メールゲートウェイとデータストアサーバとが連携して、データを２重またはそれ以上で保持可能な構成とする。
【００２１】
メールゲートウェイが扱うデータには、メール、課金に関する情報、受信を拒絶する迷惑メールなどのメールゲートウェイ間で共有する情報、などの種類がある。メールゲートウェイは、データの種類、メール中継の処理状態、メール中継の結果などにより、不揮発性メモリと揮発性メモリに書き込むか、または不揮発性メモリには書き込まず揮発性メモリに書き込むかを判定する。たとえば、メールゲートウェイが不揮発性メモリには書き込まず揮発性メモリに書き込むと判定するのは、メール転送サーバへメールを送信できない、メール転送サーバからー時的なエラー（temporary error）を受信した場合、課金に関する情報など重要なデータの場合などである。そして、メールゲートウェイは、メールの中継処理中にデータストアサーバへ、不揮発性メモリと揮発性メモリとに同一のデータを書き込む要求、または書き込み先として不揮発性メモリを指定せず揮発性メモリを指定する要求、などを出し、データストアサーバは受信した要求に従って、処理を行う。
【００２２】
また、データストアサーバは、メールゲートウェイからの要求がなくても、不揮発性メモリには無く揮発性メモリにあるデータを不揮発性メモリへコピーして、メールゲートウェイへ通知するといった機能を持つ。このとき、不揮発性メモリへの書込み処理を高速化するため、データストアサーバは複数のデータをまとめて不揮発性メモリへ書き込んでも良い。
【００２３】
データストアサーバは、上記受信したデータを送信元のメールゲートウェイと対応づけたキューに格納する。キューは、揮発性メモリ上と、不揮発性メモリを使用する場合は不揮発性メモリ上にバックアップとして存在する。データストアサーバは、メールゲートウェイが起動時（または障害などの再起動時）に送信した情報を受信して、メールゲートウェイとキューを対応づける。データストアサーバは、上記キューの情報により、キューに格納したデータのアクセス制御、キューに格納したデータが更新されたときに更新通知を送信する処理、キューに対応づけたメールゲートウェイの生存監視、メールゲートウェイの障害時の処理などを行う。
【００２４】
具体的な一つの態様は、メール送信装置からメールを受信するメールサーバと、メールおよび/または当該メールに係わる関連情報を格納するデータストアサーバと、を備えるメールシステムであって、
当該メールシステムは、メールサーバは、メールに係わる関連情報を生成する機能と、メールおよび/または関連情報の格納に係わる制御情報を生成する機能と、メールおよび/または関連情報と制御情報とを、データストアサーバへ送信する機能を備え、
データストアサーバは、格納に用いる不揮発性メモリと揮発性メモリと、上記制御情報に基づいて、メールおよび/または関連情報の格納方法を決定するデータ管理部と、メールおよび/または関連情報を、決定された格納方法に従って、不揮発性メモリおよび/または揮発性メモリに格納するデータ管理部と、を備えることを特徴とする。
【００２５】
さらに、上記メールシステムにおいて、メールサーバの関連情報を生成する機能は、メールおよび/または関連情報について、不揮発性メモリと揮発性メモリの両方に書き込む、または、揮発性メモリと不揮発性メモリのいずれか一方への書き込みを要求し他方への書き込みを要求しない、を設定する制御情報を生成し、データストアサーバのデータ管理部は、制御情報に従って、メールおよび/または関連情報を格納するように構成しても良い。
【発明の効果】
【００２６】
サーバ障害時のデータ紛失を防ぎ、かつ高配信性能であるメールシステムを実現できる。
【００２７】
また、メールシステムのスケーラビリティを確保することも可能になる。
【図面の簡単な説明】
【００２８】
【図１】第一実施例のシステムの構成を例示する図である。
【図２】各実施例を適用したメールゲートウェイ106の構成を例示する図である。
【図３】各実施例を適用したデータストアサーバ107の構成を例示する図である。
【図４】格納データと格納応答の内容を例示する図である。
【図５】メールゲートウェイ106のメール中継シーケンスを例示する図である。
【図６】メール転送サーバ105へメールが送信できない状態における、メールゲートウェイ106のメール中継シーケンスを例示する図である。
【図７】複数のメールゲートウェイ106からデータストアサーバ107に格納した情報を参照するシーケンスを例示する図である。
【図８】メールゲートウェイ106の起動シーケンスと生存確認のシーケンスを例示する図である。
【図９】メールゲートウェイ106の障害発生と復旧シーケンスを例示する図である。
【図１０】データストアサーバ107のデータ格納処理フローを例示する図である。
【図１１】データストアサーバ107のデータ格納処理フローを例示する図である。
【図１２】第二実施例のシステムの構成を例示する図である。
【図１３】第三実施例のシステムの構成を例示する図である。
【図１４】第三実施例のシステムのシーケンスを例示する図である。
【発明を実施するための形態】
【００２９】
以下、実施例について図面を参照して説明する。
【００３０】
図1は、本実施例におけるシステム構成の一例である。
【００３１】
この図において、符号101は通信端末、符号102は無線網、符号103はキャリア設備網、符号104はインターネットなどのネットワーク、符号105はメール転送サーバ、符号106はメールゲートウェイ、符号107はデータストアサーバ、符号108は課金サーバである。
【００３２】
通信端末101は、携帯電話端末やＰＣ等のデータ通信可能な端末装置を示し、無線網102を介してキャリア設備網103と接続している。無線網102は、携帯電話通信キャリアが管理する無線ネットワークである。キャリア設備網103は、無線網102からの通信をインターネット104、メールゲートウェイ106およびデータストアサーバ107へ中継するネットワークおよびネットワーク設備である。
【００３３】
無線網102とキャリア設備網103は、本実施例のメールゲートウェイ106を管理する携帯電話キャリアによって管理される。メール転送サーバ105は、MTAとも呼ばれ、インターネット104を経由してメールゲートウェイ106とメールの送受信を行う。メール転送サーバ105は、インターネットプロバイダや、キャリア設備網103を管理している携帯電話通信キャリア以外の携帯電話通信キャリア、即ち他の通信事業者が管理する設備網に設置される。メール転送サーバ105は、メールゲートウェイ106から受信したメールを宛先へ中継する処理と、逆にメール転送サーバ105を管理する他の通信事業者のメールをメールゲートウェイ106へ中継する処理とを行う。
【００３４】
以下の説明では簡略化のため、メールゲートウェイ106からメール転送サーバ105へのメールの送信について説明するが、本実施例は、これに限定されること無く、メール転送サーバ105からメールゲートウェイ106へのメール送信にも適用可能である。
【００３５】
メールゲートウェイ106は、キャリア設備網103に設置され、通信端末101がキャリア設備網103へ送信したメールを受信し、メール転送サーバ105へメールを中継する。本実施例では、メールゲートウェイ106は複数台で負荷分散されており、メールゲートウェイ106aのようにアルファベットを添え字として表記したものは特定のサーバ単体を示し、総称する場合は、添え字を付けずに表記する。
【００３６】
本実施例では、メールゲートウェイ106と通信端末101間と、メールゲートウェイ106とメール転送サーバ105間の通信プロトコルは限定しないが、一般的にはSMTP、ESMTP(Extended SMTP)、MMS（Multimedia Messaging Service）のいずれか使用する。それ以外にも、HTTP(Hypertext Transfer Protocol)、IMAP（Internet Message Access Protocol）、POP（Post Office Protocol）などのプロトコルを適用しても実現可能である。
【００３７】
データストアサーバ107はキャリア設備網103に設置され、メールゲートウェイ106からのメールや課金に関する情報（以下、課金情報）、迷惑メールに関する情報などのデータを受信し、記憶する。また、メールゲートウェイ106に障害が発生した場合、データストアサーバ107は上記記憶しているデータをメールゲートウェイ106へ送信する。本実施例では、メールゲートウェイ106とデータストアサーバ107が1対１の場合を説明するが、メールゲートウェイ106とデータストアサーバ107を1対複数にして、データストアサーバ間でデータを保持しあうことが実現可能である。たとえば、メールゲートウェイ106とデータストアサーバ107が1対2の場合、メールゲートウェイ106はデータストアサーバ107へデータを送信し、データを受信したデータストアサーバ107がもう１台のデータストアサーバ107へデータを送信してデータを2重化する。または、メールゲートウェイ106が2台のデータストアサーバ107へ別々にデータを送信してデータを2重化することも可能である。
【００３８】
課金サーバ108はキャリア設備網103に設置され、メールゲートウェイ106から課金情報を受信する。携帯通信キャリアは、この課金サーバに格納された課金情報をもとに、通信端末101への課金を行う。
【００３９】
図２は、メールゲートウェイ106を実現する情報処理装置のハードウェア構成である。
【００４０】
メールゲートウェイ106を実現する情報処理装置は、プロセッサ202と、揮発性メモリ207と、不揮発性メモリ209と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス203と、これらを接続するバスなどの内部通信線と、を含んで構成される。
【００４１】
揮発性メモリ207は、メールゲートウェイプログラム204を格納しており、また、データを格納する揮発性記憶部205を備えている。メールゲートウェイプログラム204には、メールゲートウェイ106が通信端末101からメールを受信し、宛先メールサーバへ中継する処理を実現する各種制御プログラムが記録され、プロセッサ202により実行される。プログラムは、予めメールゲートウェイプログラム204に格納してもよいし、図示していない着脱可能な記憶媒体または通信媒体（すなわちネットワークまたはそれを伝播するデジタル信号や搬送波）を介して、メールゲートウェイプログラム204に導入されてもよい。揮発性記憶部205には、メールゲートウェイプログラム204が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生すると、揮発性記憶部205に記憶された情報は失われる。
【００４２】
不揮発性メモリ209は、不揮発性記憶部208を備えている。不揮発性記憶部208にはメールゲートウェイプログラム204が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生しても、不揮発性記憶部208に記憶された情報は保持される。
【００４３】
図３は、データストアサーバ107を実現する情報処理装置のハードウェア構成およびソフトウェア構成である。データストアサーバ107を実現する情報処理装置は、プロセッサ302と、揮発性メモリ307と、不揮発性メモリ309と、キャリア設備網103にデータを送受信するための入出力回路インタフェイス303と、これらを接続するバスなどの内部通信線と、を含んで構成される。
【００４４】
揮発性メモリ307には、データストアサーバプログラム304を格納しており、また、データを格納する揮発性記憶部305を備えている。データストアサーバプログラム304には、データストアサーバ107がメールゲートウェイ106からメールや課金情報などのデータを受信し格納する処理を実現する各種制御プログラムが記録され、プロセッサ302により実行される。
【００４５】
プログラムは、予めデータストアサーバプログラム304に格納してもよいし、図示していない着脱可能な記憶媒体または通信媒体（すなわちネットワークまたはそれを伝播するデジタル信号や搬送波）を介して、データストアサーバプログラム304に導入してもよい。
【００４６】
揮発性記憶部305には、データストアサーバプログラム304が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生すると、揮発性記憶部305に記憶された情報は失われる。
【００４７】
不揮発性メモリ309は、不揮発性記憶部308を備えている。不揮発性記憶部308にはデータストアサーバプログラム304が管理するデータを格納する。電源障害やサーバ障害によるサーバの停止や再起動が発生しても、不揮発性記憶部308に記憶された情報は保持される。
【００４８】
データストアサーバプログラム304は、メタデータ管理部312と、データ管理部313と、を含んで構成される。
【００４９】
メタデータ管理部312は、データストアサーバ107に格納するデータを管理するためのデータ、即ちメタデータを管理する部分である。メタデータ管理部312は、データストアサーバ107に格納するデータサイズやデータの配置、現在使用しているデータサイズとその領域、使用できるデータサイズとその領域、各データへのアクセス権などの情報を保持する。
【００５０】
データストアサーバ107が複数の場合は、1台がメタデータ管理部312を備えればよく、それ以外のデータストアサーバ107にはデータ管理部313は必須ではない（メタデータ管理部312のバックアップとして備えても良い）。上記の場合、メタデータ管理部312は複数台のデータストアサーバ107のデータ管理部313を管理し、全体のデータサイズやデータの配置、現在使用しているデータサイズとその領域、使用できるデータサイズとその領域、データがどのデータストアサーバ107に記憶されているか、データがどのデータストアサーバ107間で複製化しているかといった情報を保持する。
【００５１】
データ管理部313は、データストアサーバ107の揮発性メモリ307または不揮発性メモリ309に格納するデータを管理する。
【００５２】
データ管理部313は、揮発性記憶部305と不揮発性記憶部308に、キューデータ321と、データ340、データ管理情報341を格納する。データ管理部313は、主に揮発性記憶部305のキューデータ321と関連するデータ340、データ管理情報341を使用してデータを管理する。不揮発性記憶部308には、不揮発性メモリに記憶すると設定されたデータ340とデータ管理情報341が記憶される。
【００５３】
データ340は、データ管理部313が格納したメール、課金情報、迷惑メール情報などのデータあり、データ管理情報341はデータ340を管理するための情報である。データ管理情報341の内容に関しては、図4で後述する。
【００５４】
キューデータ321は、キューID322と、キューサイズ323と、キュー種別324と、複製情報325と、日時情報326と、管理サーバ327と、アクセスサーバ328と、アクセス情報329と、障害情報330と、を含んで構成される。また、キューデータ321は、データストアサーバ107が揮発性記憶部305または不揮発揮性記憶部308に記憶したデータ340およびデータ管理情報341と対応づけて管理される。データストアサーバ107のデータ管理部313は、データを格納するために、キューデータ321にデータ340を関連付けて、データを揮発性記憶部305または不揮発揮性記憶部308へ格納する。
【００５５】
キューID322は、キューを一意に識別する識別子である。
【００５６】
キューサイズ323は、キューデータ321に格納できるデータの数およびデータサイズの両方を指す（以下、キューサイズ）。
【００５７】
キュー種別324には、キューの優先度、用途、が設定される。本実施例では、ひとつのキューデータ321に、不揮発性メモリには格納されず揮発性メモリへ格納されたデータ、不揮発性メモリと揮発性メモリへ格納されたデータ、不揮発性メモリへ格納され揮発性メモリには格納されていないデータの３種類が混在する。また、他の方法として、キュー種別324には、キューの格納先を指定し、上記３種類用のキューデータ321を別々に作成してもよい。この場合、キューの格納先には、揮発性メモリ、または、揮発性メモリと不揮発性メモリ、または、不揮発性メモリ、のいずれかを設定する。キュー種別324が揮発性メモリに格納する設定であれば、キューデータ321と関連するデータ340、データ管理情報341は、不揮発性メモリには格納されず揮発性メモリに格納される。キュー種別324が揮発性メモリと不揮発性メモリに格納する設定であれば、キューデータ321と関連するデータ340、データ管理情報341は揮発性メモリと不揮発性メモリに格納され、不揮発性メモリに格納されたキューデータ321、データ340、データ管理情報341はバックアップとして使用される。キュー種別324が不揮発性メモリに格納する設定であれば、キューデータ321は、一旦、揮発性メモリと不揮発性メモリへ格納され、データ340、データ管理情報341は不揮発性メモリへ格納されるまでは揮発性メモリに保持され、データ340、データ管理情報341が不揮発性メモリへ格納された後は揮発性メモリから削除される。
【００５８】
キューの優先度は、データストアサーバ107が複数ある場合に使用され、メールゲートウェイ106は1番高い優先度（以下、プライマリ）を使用する。プライマリ以外のキューはメールゲートウェイ106から認識されず、通常時はデータストアサーバ107間でのバックアップとして、プライマリの障害発生時はプライマリの代行として使用する。また、用途として、不揮発性メモリを使用するか否かの選択、メールゲートウェイ106とキューを1対1で対応づけるか否かの選択などを設定できる。
【００５９】
複製情報325には、データストアサーバ107間でプライマリとバックアップの関係がある場合、どこのデータストアサーバ107がプライマリかバックアップであるかという情報が格納される。
【００６０】
日時情報326には、データストアサーバ107がキューデータ321を作成した日付と時刻（日時と言う）、ならびに最終更新した日時が格納される。
【００６１】
管理サーバ327には、キューデータ321と対応したメールゲートウェイ106を一意に識別する情報、たとえばＩＰアドレスが格納される。データストアサーバ107は、管理サーバであるメールゲートウェイ106とお互いに生存監視を行い、障害が発生した場合に通知をメタデータ管理部312へ送信する（詳細は、図8、図9で説明する）。
【００６２】
アクセスサーバ328には、格納データ400の管理権限やアクセス権限を持つ、メールゲートウェイ106のサーバのIPアドレス、またはメールゲートウェイ106を一意に識別できる識別情報が格納される。アクセスサーバ328には、複数のメールゲートウェイ106の識別情報を格納することが可能である。
【００６３】
アクセス情報329には、アクセスサーバ328と1対1で対応するメールゲートウェイ106の読み取り、書き取りの権限が設定される。
【００６４】
データストアサーバ107は、一般的なファイルシステムのアクセス権限の機能に加え、アクセスサーバ328に設定してある複数のメールゲートウェイ106へデータの更新を自動で通知する機能（詳細は図７で説明）や、アクセスサーバ328に設定してあるメールゲートウェイ106単位で、アクセス情報329を参照したアクセス規制を実現する。アクセスサーバ328に、データストアサーバ107に予め登録してあるメールゲートウェイ106の全てを設定することも可能である。
【００６５】
障害情報330は、管理サーバ327に設定したメールゲートウェイ106に障害が発生した場合に、データストアサーバ107が格納する情報である。具体的には、障害発生日時、障害検知内容が設定される（詳細は、図9で説明する）。
【００６６】
本実施例では、１つのデータストアサーバ107（データストアサーバプログラム304）内に、メタデータ管理部312と、データ管理部313が共存しているが、メタデータ管理部312をデータストアサーバに、データ管理部313をデータストアサーバに分割させてもよい。上記のように、メタデータ管理部312とデータ管理部313に分割する構成は、メールシステムをスケールアウトするときに有効である。その場合、メールゲートウェイ106はデータストアサーバへデータの書き込みを行う際に、最初にメタデータ管理部312をもつデータストアサーバに対してメタデータの更新を行い、次にデータ管理部313を持つデータストアサーバへデータを送信する。
【００６７】
図4はメールゲートウェイ106とデータストアサーバ107間で交換するデータの例を示す図である。この図において、符号400はメールゲートウェイ106とデータストアサーバ107間でデータを格納するときに使用するデータの構成（以下、格納データ）、符号450は、メールゲートウェイ106からデータストアサーバ107へキューの登録時に送信するデータの構成（以下、登録要求）を示す（図8、図9で説明する）。
【００６８】
格納データ400は、格納データヘッダ411と、ペイロード410と、を含んで構成される。データストアサーバ107は、格納データ400を受信すると、格納データ400を揮発性メモリ（場合により不揮発性メモリ）へ格納し、格納データヘッダ411に含まれる制御情報を解析して、データストアサーバ107が格納データ400をデータ管理領域341へ格納データヘッダ411に含まれる制御情報の内容をコピーする。
【００６９】
ペイロード410は、メールゲートウェイ106が格納するデータの本体である。たとえば、メール、課金情報、迷惑メール情報、ログなどのデータを格納する。また、既にデータストアサーバ107が保持しているデータの更新であれば、更新のための差分データをペイロード106に含めることが可能である。
【００７０】
格納データヘッダ411は、制御情報として、データサイズ401、データ種別402、ステータスコード403、シーケンスID404、キー405、処理期限406、状態遷移日時407、アクセス情報408、タイムスタンプ409、複製回数412 、を含む。データサイズ401は、格納データ400の全体のサイズである。データ種別402は、このデータが何の用途であるかを示す値であり、データストアサーバ107はこの値を参照して、データをどう処理するかを決定する。本実施例で設定するデータ種別402の例を以下に示す。
・要求か、応答の設定。メールゲートウェイ106からデータストアサーバ107へ要求を送信し、データストアサーバ107は応答を送信する。・新規格納または、既に格納したデータの更新、削除、状態問合せ、要求のキャンセルなどのデータストアサーバ107の行う処理の設定。既に格納したデータについては、データストアサーバ107はキー405が一致したデータに対して処理を行う。・データの格納先の設定（書き込み先として、揮発性メモリを指定し不揮発性メモリを指定しない、揮発性メモリと不揮発性メモリを指定、揮発性メモリを指定せず不揮発性メモリを指定、のいずれか）。
・不揮発性メモリへ書き込みにおいて、同期書込みするか、非同期書込みするかの設定。
【００７１】
不揮発性メモリへの同期書込みとは、データデータストアサーバ107がメールゲートウェイ107から受信した格納データ400について、不揮発性メモリへの書き込みが完了してからメールゲートウェイ107へ応答を返すことである。また、非同期書込みとは、上記格納データ400について、不揮発性メモリへの書き込み完了を待たずに、例えば、データデータストアサーバ107がメールゲートウェイ107から格納データ400を受信した時点で、メールゲートウェイ107へ応答を返すことである。
【００７２】
同期書込みは、メールゲートウェイ107がデータストアサーバ107107から応答を受信した時点で格納データ400が不揮発性メモリ上にあることを保証し、逆に非同期書込みの場合メールゲートウェイ107は応答を受信しても、格納データ400が不揮発性メモリ上にあることを保証できない。
【００７３】
なお、非同期書込みでは、データストアサーバ107は、不揮発性メモリへの書込みを、他の格納データ400の不揮発性メモリへの書込みと一括して書き込んでもよい。一括書き込みにより、不揮発性メモリへの書込み処理を効率化し、結果としてデータストアサーバ107全体の不揮発性メモリへの書込み処理を高速化することが可能である。
・状態遷移日時407経過後の処理設定（不揮発性メモリへコピー、削除、無効化など）。
・不揮発性メモリの種別の設定（SSD,ハードディスク、NAS(Network Attached Storage)、SANなど）。
・不揮発性メモリへアクセスがある場合に、処理期限をデータストアサーバ107が変更できるか否かの設定。
【００７４】
なお、上記項目のうち、データ種別402に設定できるのは1項目だけではなく、複数の項目をデータ種別402に格納してもよい。ステータスコード403には、データ種別402が応答の場合に、応答の詳細であるステータスコードを格納し、応答でなければ使用しない。シーケンスID404は、メールゲートウェイ106とデータストアサーバ107間のデータ交換を一意に示す識別子であり、格納データ400とその応答（格納応答420）に同じ識別子が割り当てられる。メールゲートウェイ106は、データストアサーバ107へデータを送信するたびに異なったシーケンスID424を発行する。
【００７５】
キー405は、格納データ400を一意に識別する識別子であり、データを格納するためにメールゲートウェイ106が設定する。キー405により格納データを格納するデータストアサーバ107のデータ管理部313が決定される。本実施例では、キー405を使って、格納データ400を送信するメールゲートウェイ106と、上記メールゲートウェイ106が管理サーバ327であるキューデータ321を持つ、データストアサーバ107を結びつけることも可能である。
【００７６】
データストアサーバ107は、キー405で指定したデータに対し、更新、削除、指定したデータが不揮発性メモリにあるか否かなどの状態問い合わせ、指定したキーが処理中であった場合のキャンセル、揮発性メモリにあり不揮発性メモリにないデータを不揮発性メモリへコピーするといった処理を行うことができる。
【００７７】
処理期限406は、データストアサーバ107がデータを処理する時間の期限日時であり、データストアサーバ107は処理期限406を超過しないように処理を行う。処理期限406を経過しても処理できなかった場合、メールゲートウェイ106へエラー応答を返す。
【００７８】
状態遷移日時407とは、この日時を経過しても揮発性メモリまたは不揮発性メモリは上に存在している場合、データストアサーバ107がデータ種別に指定された処理を行う日時である。たとえば、メールゲートウェイ106は、一度揮発性メモリ上にデータを格納し、状態遷移日時407を経過したらデータストアサーバ107が自動で不揮発性メモリへ格納するといった設定をすることができる。また、メールゲートウェイ106は状態遷移日時407経過後、データを削除、データへのアクセス拒否などの設定をすることができる。
【００７９】
アクセス情報408には、アクセス情報329と同様に、データのアクセス権限を格納する。アクセス情報408には、オプションにより、アクセスサーバ328の情報を付加することも可能である。
【００８０】
タイムスタンプ409は、メールゲートウェイ106が付加した日時である。タイムスタンプ409は、メールゲートウェイ106とデータストアサーバ107間、またはデータストアサーバ107が複数の場合はデータストアサーバ間でデータの相違が出た場合に、メールゲートウェイ107が、どのデータが正しいかを判定するために使用する。また、タイムスタンプ409の代わりに、データのバージョン（更新回数）を指定しても良い。
【００８１】
複製回数412は、何台のデータストアサーバ107に格納データ400を格納するか、を決定する。たとえば、複製回数412が「2」に設定してあれば、2台のデータストアサーバ107がそれぞれ格納データ400を格納することを示す（以下、複数のデータストアサーバ107へ格納データ400の複製を格納することをデータレプリケーションと表記する）。データストアサーバ107は、受信した格納データ400が「2」以上であった場合、複製回数412から「１」を減じて、別のデータストアサーバ107へ格納データ400を転送する（詳細は、図10で説明する）。
【００８２】
登録要求450は、登録種別451と、キューサイズ452と、キュー種別453と、複製情報454、アクセスサーバ455と、アクセス情報456、プロトコル情報457と、を含んで構成される。登録種別451は、メールゲートウェイ106がデータストアサーバ107のメタデータ管理部312に新規接続として登録するか、再接続して登録するかを示す。キューサイズ452は、メールゲートウェイ106が確保したいキューサイズであり、データストアサーバ107がキューデータ321のキューサイズ323へ反映する。同様にキュー種別453、複製情報454、アクセスサーバ455、アクセス情報456は、キューデータ321の各項目に対応する。接続情報457は、メールゲートウェイ106とキューデータ321がどのプロトコルで通信するか、どのプロトコルでどのポートで通信するかといった情報であり、本実施例では通信プロトコルがTCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、独自、そして使用するポートを格納する。
【００８３】
図5はメールの中継シーケンスを例示する図である。
【００８４】
メールの中継シーケンスでは、メールゲートウェイ106と、データストアサーバ107のデータ管理部313間で格納データ400、格納応答420のデータ交換を行うが、以下の説明では、メールの中継処理に特化したシーケンスを説明するために、格納データ400とは表記せずに、ペイロード410に格納したデータの種類で表記する。ペイロード410に格納したデータに名称がない場合は、そのまま格納データ400で表記する。また、データストアサーバ107からメールゲートウェイ106へ送信する、応答を示す格納データ400は、格納応答として表記する。また、データストアサーバ107は、揮発性記憶部305と不揮発性記憶部308にデータを格納するが、一方メールゲートウェイ107からは単に不揮発性メモリと揮発性メモリの判別しかしていないため、データストアサーバ107の格納場所も揮発性メモリと不揮発性メモリという表現に統一する。
【００８５】
最初に、通信端末101は、メール506をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106は送信先のドメイン判定する処理（ステップ507）を行う。送信先のドメインとは、メールの宛先メールアドレスのアットマーク（@）より後ろの部分を指し、メールゲートウェイ106は送信先のドメインをDNS(Domain Name System)サーバへ問合せることにより、どのメール転送サーバ105に送信すべきかを判定することができる。
【００８６】
ステップ507において、メールゲートウェイ106は送信先のドメインにより、揮発性メモリに記憶するか、不揮発性メモリに記憶するかを判定する。たとえば、送信先ドメインが携帯通信キャリアや大手インターネットプロバイダなどの信頼できるドメインであれば、メールゲートウェイ106からメール転送サーバ105へのメール送信（ステップ516）で失敗する可能性は低いため、不揮発性メモリには記憶せず、揮発性メモリに記憶すると判定する。また、既にメールゲートウェイ106に送信できないメールが溜まっているドメインや、過去に送信の失敗が多発しているドメインであれば、メールゲートウェイ106は、不揮発性メモリと揮発性メモリの両方に記憶すると判定する。
【００８７】
次に、メールゲートウェイ106は、メール508をデータ管理部313へ送信する。このとき、メール508のデータ種別402には、新規に揮発性メモリへ書き込み、状態遷移日時407経過後不揮発性メモリへコピーする、設定している。
【００８８】
次に、データ管理部313は受信したメール508に従って、揮発性メモリに格納する処理（ステップ509）を行う。ステップ509において、格納する処理に成功した場合、データ管理部313はメールゲートウェイ106へ成功を示す格納応答510を返し、メールゲートウェイ106は通信端末101へ正常応答（ステップ511）を送信する。データ管理部313は、格納応答510のデータ種別402に応答を示すコードを設定する。図5には記述していないが、ステップ509において格納に失敗した場合、データ管理部313はメールゲートウェイ106へ失敗を示す格納応答510を返し、メールゲートウェイ106はステップ511で通信端末101へエラー応答を返す。
【００８９】
次に、メールゲートウェイ106は課金情報作成する処理（ステップ512）を行う。次に、メールゲートウェイ106は、課金情報と制御情報をデータ管理部313へ送信する（ステップ512）。メールゲートウェイ106は課金情報を重要であると判定し、課金情報513のデータ種別402に、新規に不揮発性メモリと揮発性メモリへ書込み、不揮発性メモリへの書込み時に処理期限を設定、不揮発性メモリへの書込みを同期にする、といった設定する。次に、データ管理部313は受信した課金情報513に従って、揮発性メモリと不揮発性メモリに格納する処理（ステップ509）を行う。ステップ509において、データ管理部313は不揮発性メモリへの書込みが、他の不揮発性メモリへの書込みがあればまとめて処理し、不揮発性メモリへの書込みが終了後に格納応答515を送信する。次に、データ管理部313は、格納応答515をメールゲートウェイ106へ送信する。
【００９０】
次に、メールゲートウェイ106は、メール516をメール転送サーバ105へ送信する。次に、メール転送サーバ105は、応答517をメールゲートウェイ106へ送信する。メール転送サーバ105がメール516を正常に受信すれば、正常応答である応答517を送信し、ステップ519へ進む。メール転送サーバ105が一時的にメール516を受信できない場合、一時エラーを示す応答517を送信し、ステップ528へ進む。メール転送サーバ105からの応答517がなく、メールゲートウェイ106が応答待ちでタイムアウトした場合は、ステップ541へ進む。応答517が正常応答であった場合、メールゲートウェイ106は、課金情報519を課金サーバ108へ送信する。
【００９１】
次に、課金サーバ108は、正常応答520をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106は、メール・課金情報削除521を送信する。このとき、メール・課金情報削除521のデータ種別402には、キーが一致するデータの削除を設定している。次に、データ管理部313はメール・課金情報削除521に従って、指定したキーに一致するデータを削除する処理を行い、処理終了時に正常応答522をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はログ情報作成する処理523を行い、ログ524をデータ管理部313へ送信する。このとき、ログ524のデータ種別402には、書き込み先として揮発性メモリを指定せず不揮発性メモリを指定、かつ、不揮発性メモリへの書込みは非同期、を設定している。
【００９２】
次に、データ管理部313は受信したログ524に従って、揮発性メモリには書き込まず非同期で不揮発性メモリに格納する処理（ステップ525）を行う。
【００９３】
ステップ525において、データ管理部313は、ログ524を一度揮発性メモリへの書込んだ時点で格納応答526を送信し、揮発性メモリに書き込んだデータを不揮発性メモリへコピーし、揮発性メモリ上のデータを削除する。
【００９４】
応答517が一時エラー応答であった場合、メールゲートウェイ106は格納データ528を送信する。格納要求528のデータ種別402には、キーに一致するデータを不揮発性メモリへコピーと、処理期限406あり、とを設定する。次に、データ管理部313は受信した格納データ528に従って、既に揮発性メモリ上にある、キーが一致するデータを不揮発性メモリへコピー（ステップ530）を行う。次に、データ管理部313は、格納応答530をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はメール転送サーバ105へのメール再送信待ちになり、再送信できる状態になれば、ステップ516へ戻る。
【００９５】
メール転送サーバ105からの応答517がなく、メールゲートウェイ106が応答待ちタイムアウトした場合、メール転送サーバ105へのメール再送信待ちになる（ステップ541）。ステップ541から再送信できる状態になれば、ステップ516へ戻る。次にデータ管理部313は、メール508の状態遷移日時407経過を検知し、既に揮発性メモリ上にあるメール508を不揮発性メモリへコピー（ステップ542）を行う。本実施例では、メールゲートウェイ106の応答待ちタイムアウトと、メール508の状態遷移日時407の値の設定により、ステップ541、ステップ542の順にステップが発生している。次にデータ管理部313は、メール508のアクセスサーバ408に記述されたメールゲートウェイ106へ、データを不揮発性メモリにコピーしたことを示す格納応答543を送信する。なお、格納応答543はステップ542でエラーが発生したときだけ送信してもよいし、格納応答543自体がなくても実現可能である。
【００９６】
図6は、メール転送サーバ105へメールが送信できない状態が一定期間継続した場合の、メールゲートウェイ106のメールの中継シーケンスを例示する図である。メール転送サーバ105へメールが送信できない状態が継続する原因は、メール転送サーバ105への障害中または輻輳中である、またはメールゲートウェイ106とメール転送サーバ105間のネットワーク不通などがある。上記の場合、メールゲートウェイ106は、送信不可であるメール転送サーバ105向けのメールは全てエラーになり、メール転送サーバ105へ送信可能になるまでメールを保持しなければならない。図5で説明したように、メール中継シーケンスにおいて、メール転送サーバからの応答が一時エラーまたは無応答であった場合、データ管理部313は最終的に不揮発性メモリにコピーする処理を行っている。メール転送サーバ105へメールが送信できない状況で、特にメール転送サーバ105向けのメールトラフィックが大きい場合、データ管理部313の不揮発性メモリにコピーする処理がボトルネックになる可能性が高い。そこで、図6では上記問題を解決するために、データ管理部313が不揮発性メモリへのコピー処理を、データ管理部313の都合でまとめる処理を行う。
【００９７】
図6では、メールゲートウェイ106とメール転送サーバ105間が一定期間以上接続不可（ステップ605）になっている状況とする。最初に、通信端末101は、メール606をメールゲートウェイ106へ送信する。次に、メールゲートウェイ106はメール606の送信先が、現在転送できないドメイン（以下、規制ドメインと表記する）であるか判定する処理607を行う。
【００９８】
メールゲートウェイ107は、送信先ドメインごとにメールを管理しており、あるドメイン宛のメールが送信できないと、上記ドメイン宛のメールが滞留する。メールゲートウェイ107は、滞留したメールが予め定めた閾値を超過した場合に、上記ドメインを、規制ドメインであると判定する。また、メールゲートウェイ106は、規定時間内のメールの送信失敗数が予め定めた閾値以上である場合も、そのドメインを、規制ドメインであると判定する。また、メールゲートウェイ107のオペレーターが手動で規制ドメインを設定してもよい。ステップ607では、以上のように判定された規制ドメインと、メール606の送信先が一致すれば、メール606は規定時間以上の間送信できないため、メールゲートウェイ107はメール606を不揮発性メモリにも格納することを決定する。
【００９９】
次に、メールゲートウェイ106は、メール608をデータ管理部313へ送信する。このとき、メール608のデータ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込みを非同期にする、を設定している。
【０１００】
次に、データ管理部313は受信したメール608に従って、揮発性メモリに格納する処理（ステップ609）を行う。ステップ609において、格納する処理に成功した場合、データ管理部313はメールゲートウェイ106へ成功を示す格納応答610を返し、メールゲートウェイ106は通信端末101へ正常応答611を送信する。次に、メールゲートウェイ106はメール転送サーバ105への再送信待ち状態になり（ステップ620）、再送可能な状態になればステップ608へ戻る。次に、データ管理部313はステップ609の続きで、複数の不揮発性メモリへコピーをまとめて処理612を行う。ステップ609とステップ612の間隔は、データ管理部313データ管理部313が決定する（決定方法は、図11で説明する）。データ管理部313が他のメールで、データ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込み時に待ち時間を最小限にする、が設定されている場合であっても、図6の状況ではデータ管理部313は、処理期限408を無視する手段をとってもよい。
【０１０１】
次に、通信端末101が、メール606とは別のメール613を送信した場合を説明する。メールゲートウェイ106は、メール613を受信し、データ管理部313へメール615を送信する。
【０１０２】
このとき、メール613のデータ種別402には、新規に不揮発性メモリと揮発性メモリへ書込みと、不揮発性メモリへの書込みを同期する、を設定している。
【０１０３】
次に、データ管理部313は受信したメール608に従って、揮発性メモリに格納する処理を行おうとするが、データ管理部313の不揮発性メモリへのコピー処理の限界閾値を超過したことを検知し（ステップ621）、エラーである格納応答616を返す。格納応答616のステータスコード403には、不揮発性メモリへの書込み処理がエラーであることを示すステータスを設定する。
【０１０４】
メールゲートウェイ106は、格納応答616を受信すると、エラー応答である応答616を通信端末101へ送信する。メールゲートウェイ106は、格納応答616を受信した時点で、データ種別402の不揮発性メモリへの書込みを同期する、を、不揮発性メモリへの書込みを非同期にする、に設定変更して、データストアサーバへメール616を再送信するか、他のデータストアサーバ106にメール616を送信するかを選択することもできる。その結果、メールゲートウェイ106が正常応答である格納応答616を受信した場合、を正常応答である応答617を通信端末101に送信する。
【０１０５】
ステップ615後にデータ管理部313は、予め登録されたメールゲートウェイ106へ現在不揮発性メモリへの書込みが規制中であることを示す規制情報618を送信する。メールゲートウェイ106は規制情報618を送信したデータストアサーバ106への格納データの送信を規制する。
【０１０６】
図7は、複数のメールゲートウェイ106からデータ管理部313に格納した情報を参照するシーケンスを例示する図である。本実施例では、複数のサーバメールゲートウェイ106が参照するデータとして、迷惑メール情報を例としているが、それ以外の情報でもよい。迷惑メール情報とは、メールゲートウェイ106が迷惑メールとして検出したメールの情報であり、他のメールゲートウェイ106は上記情報を見て、以降に受信したメールが迷惑メールであるか判定する。
【０１０７】
最初に、通信端末101は、メール706をメールゲートウェイ106へ送信する。メールゲートウェイ106は、受信したメールが迷惑メールであるか検出し（ステップ707）、エラー応答708を通信端末101へ送信する。また、メールゲートウェイ106はステップ708とほぼ同時に、迷惑メール情報709をデータ管理部313へ送信する。メールゲートウェイ106は、迷惑メール情報709のデータ種別402に、新規に揮発性メモリへ書き込みを設定し、アクセスサーバ408に、迷惑メールを参照するメールゲートウェイ106の全てのサーバの情報を設定する。データ管理部313は受信した迷惑メール情報709を揮発性メモリに格納に格納する処理710を行い、格納応答711をメールゲートウェイ702へ送信する。次に、データ管理部313は、迷惑メール情報709のアクセスサーバ408に記述されたメールゲートウェイ106の全てのメールゲートウェイへ更新通知712を送信する。更新通知712を受信したメールゲートウェイ703は、更新された情報を参照する（ステップ713）。なお、ステップ713でメールゲートウェイ106が取得する更新された情報を、データ管理部313が更新通知712に含めて送信しても実現可能である。この場合、ステップ713は省略される。
【０１０８】
図8はメールゲートウェイ106の起動シーケンスと、メールゲートウェイ106とデータストアサーバ107間の生存確認のシーケンスを示す図である。図8、図9では、データストアサーバ107をメタデータ管理部312と、データ管理部313に分割して説明する。また、図8、図9の登録要求805,911の構成は、登録要求450と同一である。
【０１０９】
最初に、メールゲートウェイ106は、メタデータ管理部312にメールゲートウェイ106を登録するための登録要求805を送信する。登録要求805は、登録要求450と同一の構成のデータであるメタデータ管理部312は、登録要求805を受信すると、使用していないキューデータ321から条件に一致したデータ管理部313を探索し（ステップ806）し、データ管理部313のIPアドレスを含む登録応答807をメールゲートウェイ106へ送信する。次に、メタデータ管理部312はキューデータ321を更新する処理808を行う。
【０１１０】
次に、メールゲートウェイ106は、データ管理部803のキュー情報に新規に登録する要求（以下、新規接続要求）809を送信する。新規接続要求809には、メールゲートウェイ106の認証情報、使用するデータサイズ、用途を記述する。次に、データ管理部313はキュー情報を作成する処理810を行う。次に、データ管理部313は、新規接続要求809に対する正常応答である、接続応答811をメールゲートウェイ106へ送信する。メールゲートウェイ106は接続応答811を受信すると、メール中継可能な状態となり、図5に示すメール中継が可能となる。
【０１１１】
メールゲートウェイ106は、データストアサーバ107が正常に稼動しているか監視するために、生存監視要求812をデータ管理部313へ送信する。データ管理部313は、生存監視要求812を受信し、その正常応答813をメールゲートウェイ106へ送信する。また、データ管理部313からもメールゲートウェイ106の正常稼動を監視するために、データ管理部313が生存監視要求814を送信し、メールゲートウェイ106が正常応答815を送信する。なお、メールゲートウェイ106、データ管理部313が811〜815の生存監視を行わずに、メールゲートウェイ107、データ管理部313が図５で示すようなシーケンスで異常が発生しないことをもって、各サーバが生存していると判断（生存監視）してもよい。
【０１１２】
図9はメールゲートウェイ106の再起動と、メールゲートウェイ106の切替え、およびメールゲートウェイ106の縮退、の各場合における、メールゲートウェイ106とデータストアサーバ107間のシーケンスを示す図である。ここで、メールゲートウェイ106の切替えとは、メールゲートウェイ106に障害が発生した場合、障害の発生したメールゲートウェイ106の代わりに他のメールゲートウェイ106を起動させて代行することを示す。また、メールゲートウェイ106の縮退とは、複数稼動しているメールゲートウェイ106の1台または1部が停止して、メールゲートウェイ106の稼動台数が減ることを示す。メールゲートウェイ106の縮退は、サーバ障害が発生し障害の発生したサーバが再起動しない場合や、運用時で一部のサーバを停止するといったときに行う。
【０１１３】
図9では、複数のメールゲートウェイ106のうちの1台を示すメールゲートウェイＡ106AとメールゲートウェイＢ106Bと表記し、データストアサーバ107をメタデータ管理部312と、データ管理部313に分割して説明する。
【０１１４】
最初に、メールゲートウェイＡ106Aで、障害が発生したと仮定する（ステップ905）。データ管理部313は、メールゲートウェイＡ106Aとのコネクション切断906から、障害検知する処理907を行う。コネクション切断906は、新規接続要求809で確立し、通常時にはステップ812〜815の生存監視で使用するコネクションである。データ管理部313は、障害通知908をメタデータ管理部312へ送信する。
【０１１５】
メタデータ管理部312は、障害通知908により、データ管理部313の管理サーバであるメールゲートウェイＡ106Aに障害が発生したことを検知し、データ管理部313が管理サーバの復旧待ちであることを示す情報をキューデータ321に書き込む（更新する）（ステップ909）。
【０１１６】
障害発生905の後にメールゲートウェイＡ106Aが再起動した場合、またはメールゲートウェイ106の切替えが発生した場合について、ステップ911から説明する。ここで、メールゲートウェイＡ106Aの切替えが発生した場合は、障害発生したメールゲートウェイ106と、切替えたメールゲートウェイ106のサーバは実際に異なるが、メールゲートウェイが行う処理および送受信するデータに関してはほぼ同じであるため、本実施例では障害発生したメールゲートウェイ106と切り替えたメールゲートウェイ106をまとめてメールゲートウェイＡ106Aと表記する。
【０１１７】
最初に、メールゲートウェイＡ106Aは、登録要求911をメタデータ管理部312へ送信する。登録要求911に含まれる情報は、登録要求805の情報に加え、登録種別451に再接続であることを示す情報（以下、再接続フラグ）が設定されている。メタデータ管理部312は、登録要求911を受信すると、キューデータ321を探索し、更新する（ステップ912）。ステップ912において、登録要求911の送信サーバと、管理サーバが障害中であるデータ管理部313の管理サーバの情報が一致した場合、上記データ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。また、ステップ912において、登録要求911の送信サーバと、管理サーバが障害中であるデータ管理部313の管理サーバの情報が一致した場合、メタデータ管理部312は上記データ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。ステップ912において、登録要求911に再接続フラグがあれば、メタデータ管理部312は管理サーバが障害中であるデータ管理部313のIPアドレスを含む登録応答913をメールゲートウェイ106へ送信する。ステップ912において、上記2つの条件に一致しなければ、図示していないが、以降の処理は登録要求805と同じシーケンスなる。
【０１１８】
次に、メールゲートウェイＡ106Aは、復旧接続914をデータ管理部313へ送信する。次に、データ管理部313は、応答とメールデータ915をメールゲートウェイＡ106Aへ送信する。ステップ915以降は、メールゲートウェイＡ106Aがメール中継可能な状態になる。また、メールゲートウェイＡ106Aとデータ管理部313でステップ812〜815の生存監視を行う。
【０１１９】
次に、障害発生905の後にメールゲートウェイＡ106Aの縮退が発生した場合について、ステップ917から説明する。メタデータ管理部312は管理サーバの障害を検知してから、メールゲートウェイＡ106Aからの登録要求911を待っている時間（以下、障害待機時間とする）を超過したことを検知する（ステップ917）。次に、メタデータ管理部312は、メールゲートウェイＡ106Aの処理を引き継ぐメールゲートウェイ106（以下、代行管理サーバ）を検索し、代行管理サーバとしてメールゲートウェイＢ106Bへ処理の継続を要求する代行管理サーバ要求918を送信する。なお、ステップ917と代行管理サーバ要求918の送信は、メタデータ管理部312の代わりにデータ管理部313が行ってもよい。
【０１２０】
メールゲートウェイＢ106Bは、代行管理サーバ要求918を受信すると、登録要求919をメタデータ管理部312へ送信する。ステップ919〜924は、ステップ911〜915とほぼ同じ処理を行い、メールゲートウェイＢ106Bがメール中継可能な状態になる。
【０１２１】
図9のメタデータ管理部312とデータ管理部313は、それぞれ別サーバ装置として構成してもよい。また、図9では図示していないが、データストアサーバ107が複数の場合で、メタデータ管理部312とデータ管理部313が別サーバに構成された場合、メタデータ管理部312とデータ管理部313間で生存監視を行い、データ管理部313が障害の場合はメタデータ管理部312は、他のデータ管理部313への切替えなどを行う。
【０１２２】
図10、図11はデータストアサーバ107のデータ管理部313のデータ格納処理フローを示す図である。
【０１２３】
最初に、データ管理部313は、メールゲートウェイ106から格納データを受信（ステップ1001）する。
【０１２４】
データ管理部313は、図6で説明したメール転送サーバ105へメールが送信できない状態で、データ管理部313が高負荷状態かどうか調べ（ステップ1002）、高負荷状態でなければ、ステップ1006へ進む。
【０１２５】
上記高負荷状態とは、データ管理部313の不揮発性メモリへの書込みが大量に発生し、不揮発性メモリへ書き込み待ちのデータ数が閾値を超過した状態、または不揮発性メモリへの書込み時間が閾値を超過した状態である。
【０１２６】
ステップ1002において高負荷状態であれば、データ管理部313はデータ種別402が不揮発性メモリへ同期書込む設定かどうか調べ（ステップ1003）、上記であった場合エラー応答を送信する（ステップ1004）して終了する。データ管理部313は、ステップ1005において、高負荷状態であるためデータ管理部313の不揮発性メモリへのアクセスを効率化するために、処理期限406をメールゲートウェイ106が設定したものでなく、データ管理部313に最適な値に変更する。
【０１２７】
データ管理部313は、ステップ1006において、既にデータ管理部313にキー405があるか調べる処理である。もしキー405があれば、キー405の一致するデータを取得し（ステップ1007）、データ種別に従い格納処理を行う（ステップ1008）。ステップ1008において、データ管理部313は、揮発性メモリ上のデータの更新、削除、状態確認、格納途中であった場合のキャンセルのいずれかを行う。ステップ1009において、データ管理部313がデータ種別402に従って処理を継続する際に、不揮発性メモリへのアクセスが必要であるか否かを判定する。具体的には、揮発性メモリにあるデータを不揮発性メモリへコピーする、不揮発性メモリ上にあるデータの更新、削除などの場合である。ステップ1009において、不揮発性メモリへのアクセスがある場合、図11のステップ1117へ進み、なければステップ1020へ進む。
【０１２８】
ステップ1020は、格納データの複製回数412が「２」以上の場合、データレプリケーションを行う処理である。具体的には、データ管理部313（以下、データ管理部Ａ）が他のデータ管理部313（以下、データ管理部Ｂ）へ、複製回数412から「１」を減じた格納データを転送し、データ管理部Ｂから正常に格納したという格納応答を受信する。
【０１２９】
データ管理部Ｂが格納応答400を受信した時点で複製回数412が「２」以上の場合（即ちデータ管理部Ａが受信した時点では複製回数が「３」以上の場合）、データ管理部Ｂは、他のデータ管理部313（以下、データ管理部Ｃ）へ格納データを転送し、データ管理部Ｃから正常応答を受信してから、データ管理部Ａへ正常応答を送信する。複製回数412が増えるほど、データ管理部313は、次のデータ管理部313へ格納データを転送する。
【０１３０】
複製回数412が「２」以上の格納データを受信したデータ管理部は、複製回数から「１」を減じた格納データを他のデータ管理部313へ送信し、送信した他のデータ管理部313から正常応答を受信してから、受信した格納データの送信元のデータ管理部313へ正常応答を送信する。複製回数412が「１」の格納データを受信したデータ管理部は、他のデータ管理部313への送信を行わず、送信元のデータ管理部へ正常応答を送信する。
【０１３１】
ステップ1010で、データストアサーバは格納応答を送信して終了する。
【０１３２】
ステップ1011において、データ管理部313は、揮発性メモリに受信した格納データを書込む処理を行う。ステップ1012において、データ種別402が不揮発性メモリアクセスする必要がある処理であれば図11のステップ1114へ進み、不揮発性メモリアクセスする必要がなければ、格納応答を送信（ステップ1013）する。ステップ1014において、格納データに状態遷移時間407が設定されていて、上記データが状態遷移時間経過しても残っている場合（ステップ1015）、データ種別402に指定された処理が不揮発性メモリへのアクセスがあるかどうかを判定する（ステップ1016）。具体的には、揮発性メモリから不揮発性メモリへのコピー、不揮発性メモリからの削除などがある。ステップ1016で不揮発性メモリへのアクセスある場合、データ管理部313はステップ1117へ進み、ステップ1016で不揮発性メモリへのアクセスがない場合、データ種別402に従った処理、たとえば、揮発性メモリからの削除や、データの無効化（メールゲートウェイ106からアクセスさせない）などの処理を行う（ステップ1017）し、処理を終了する。ステップ1014において状態遷移時間が設定されていない場合、またはステップ1015で状態遷移時間経過前に上記データを削除している場合は、処理を終了する。
【０１３３】
以下、図11について説明する。ステップ1114はデータ種別402に書込みデバイスの指定があるかどうか調べる処理であり、もし書込みデバイスの指定があれば、書込みデバイスの選択する（ステップ1114）。書込みデバイスには、ハードディスク、SSD、NAS、SANなどがある。
【０１３４】
ステップ1116において、データ管理部313は、データ種別402に不揮発メモリへ同期または非同期コピーする設定があるかどうかを調べる処理である。不揮発メモリへ非同期コピーする設定であれば、ステップ1122へ進み、不揮発性メモリへ同期コピーする設定であればステップ1117へ進む。
【０１３５】
ステップ1117において、データ管理部313は格納データに処理期限406があるか調べる処理である。ステップ1117において、格納データに処理期限406がなければ、データ管理部313は即時に不揮発性メモリへ書き込みを行う。ステップ1117において、格納データに処理期限406があれば、メールゲートウェイ106へ処理期限406まで格納を遅らせてもよいため、処理期限406または不揮発メモリへの書込み条件に一致した場合まで不揮発性メモリへの書込みを待ち（ステップ1119）、条件が一致した時点で不揮発性メモリへ書き込む（ステップ1120）。ステップ1119の書込み条件とは、不揮発メモリへの書込み処理を効率化するための条件であり、以下に例を示す。
・データ管理部313が保持する不揮発性メモリへの書込み待ちのデータの数が、規定値以上になった場合。この条件では、データ管理部313は上記不揮発性メモリへの書込み待ちのデータを一括して書き込む。
・データ管理部313内が保持する不揮発性メモリへの書込み待ちのデータの中に、処理期限406の経過直前であるデータがある場合。この条件では、データ管理部313は、上記処理期限406の直前のデータと、他の不揮発性メモリへの書込み待ちのデータを一括して書き込む。
・データ管理部313が、データ管理部313全体での不揮発性メモリへの書込みを効率化するために書き込む場合。この条件は、不揮発性メモリへの書込み待ちのデータ数や各データの処理期限406以外に、データ管理部313が不揮発性メモリへのコピー以外の処理などにより決定する。
【０１３６】
以上により、データ管理部313は不揮発性メモリへの書込みを効率化することができる。
【０１３７】
ステップ1122において、データ管理部313はステップ1119と同様に、他の複数書込み条件に一致した場合まで不揮発性メモリへの書込みを待ち、条件が一致した時点で不揮発性メモリへ書き込む（ステップ1123）。ステップ1122において、データ管理部313は、データ種別402に「書き込み先として不揮発性メモリを指定し揮発性メモリを指定せず」が設定されているか調べ、設定されていれば揮発性メモリ上のデータを削除（ステップ1125）し、設定されていなければステップ1126へ進む。ステップ1126において、データ管理部313はメールゲートウェイへ格納応答を送信する。
【０１３８】
次に第二の実施例について説明する。
【０１３９】
第二の実施例は、第一の実施例のメールゲートウェイ106とデータストアサーバ107を別々のサーバとした構成ではなく、メールゲートウェイ106のプログラムとデータストアサーバ107のプログラムを同じサーバに格納した構成をとる。第二の実施例と、第一の実施例との相違点を、図12を用いて説明する。
【０１４０】
図12には、第二の実施例で想定するシステム構成の一例である。符号101〜105、108は図1と同じである。符号1209は、メールゲートウェイのプログラム1206と、データストアサーバのプログラム1007が格納したサーバである。データストアサーバのプログラム1207Bと、データストアサーバのプログラム1207Cは、メールゲートウェイのプログラム1206Aを管理サーバとしており、上記３つのプログラムで複製している。第一の実施例では、メールゲートウェイ106、データストアサーバ107としてサーバ単位の処理を記述していたが、第二の実施例ではサーバ単位の処理ではなく、メールゲートウェイ1206、データストアサーバ1207をプログラム単位の処理としている。
【０１４１】
図２において、メールゲートウェイ1206は、メールゲートウェイプログラム204と、揮発性記憶部205、不揮発性記憶部208から構成する。
【０１４２】
図３において、データストアサーバ1207は、データストアサーバプログラム304と、揮発性記憶部305と、不揮発性記憶部308から構成する。
【０１４３】
上記以外に関しては、メールゲートウェイ106をメールゲートウェイ1206、データストアサーバ107をデータストアサーバ1207に変更するだけで、シーケンス、処理の変更はない。
【０１４４】
以上の構成の違いにより第二の実施例は、第一の実施例よりもスケールアウトや運用が容易となる。第一の実施例は、メールゲートウェイ106とデータストアサーバ107の台数比が、サーバリソース（プロセッサ、揮発性メモリ、不揮発性メモリ、ネットワークの帯域など）によって異なり、メールシステムをスケールするときに上記の条件を十分考慮した上でメールゲートウェイ106とデータストアサーバ107の台数を決めなければならない。一方、第二の実施例は、メールゲートウェイのプログラム1206と、データストアサーバのプログラム1007を格納した1種類のサーバを並列に構成するため、第一の実施例のようにサーバ間のサーバリソースの差を考慮する必要がなく、1種類のサーバであるため運用も容易になる。
【０１４５】
なお、第一と第二の実施例はメールシステムだけではなく、ショートメッセージや、HTTP、PAP(Push Access Protocol)、他のプロトコルを利用したメッセージサービスにも適用可能である。
【０１４６】
次に第三の実施例について説明する。
【０１４７】
第三の実施例は、データストアサーバ1307をメールシステム以外のシステムに適用した例である。第三の実施例と、第一の実施例との相違点を、図13を用いて説明する。
【０１４８】
図13には、第三の実施例で想定するシステム構成の一例である。符号101、104、107は図1と同じである。符号1305は、通信端末101へ商品を販売するWebサーバである。Webサーバ1305は、第一の実施例のメールゲートウェイ106に相当するサーバであり、通信端末101からの通信要求を受けて、データストアサーバ107へデータを格納する。データストアサーバ107は、本実施例では通信端末101のユーザ情報に基づいた情報を格納し、本実施例では、例えば、ユーザ（通信端末101）の商品の検索履歴と、商品を購入したときの課金情報を格納する。
【０１４９】
Webサーバ1305は、通信端末101が商品の検索を行った場合、データストアサーバ107へその検索履歴を、格納先として揮発性メモリを指定した格納要求（不揮発性メモリを指定しない）をデータストアサーバ107へ送信する。
【０１５０】
また、Webサーバ1305は、通信端末101が商品購入を行った場合、データストアサーバ107へ通信端末101への課金に関する情報（以下、課金情報）を不揮発性メモリと揮発性メモリへ格納する要求をデータストアサーバ107へ送信する。
【０１５１】
図2は、本実施例に適用する場合、メールゲートウェイ106ではなくWebサーバ1305を実現する構成を示し、メールゲートウェイプログラム204の代わりにWebサーバ1305を実現するプログラムを格納する。
【０１５２】
図3、図4は、第一の実施例からの変更なく、本実施例に適用できる。
【０１５３】
図5、図6、図7に関しては、本実施例では使用しない。代わりに図14に通信端末101の商品の検索から購入までのシーケンスを例示する。
【０１５４】
図14において、最初に通信端末101は、Webサーバ1305Aへ商品を検索する要求（以下、商品検索要求）1406を送信する。Webサーバ1305Aは、商品検索要求1406を受信して、検索結果1407を返す。併せて、Webサーバ1305Aは履歴情報1408をデータストアサーバ107のデータ管理部313へ送信する。この場合、履歴情報1408のデータ種別402には、新規に揮発性メモリへ書き込み、状態遷移日時407経過後不揮発性メモリへコピーする、を設定する。また、履歴情報1408のキー405には通信端末101のを一意に識別できる識別情報を元にしたキーを設定する。
【０１５５】
次に、データ管理部313は受信した履歴情報1408のデータ種別402に従って、揮発性メモリに格納する処理（ステップ1409）を行い、格納応答1410をWebサーバ1305Aへ送信する。次に通信端末101は、Webサーバ1305Aへ商品を購入する要求（以下、商品購入要求）1411を送信する。
【０１５６】
Webサーバ1305Aは、商品購入要求1411を受信して、商品を購入するための処理（ステップ1412）を行い、課金情報1413をデータ管理部313へ送信する。課金情報1413は、履歴情報1408よりも重要度が高いため、課金情報1413のデータ種別402には、新規に揮発性メモリと不揮発性メモリへ書き込み、を設定する。
【０１５７】
また、Webサーバ1305Aは、通信端末101の利用者が優先顧客かそうでないかを判別し、優先顧客である場合、課金情報1413の処理期限406の最優先を示す値を格納し、そうでない場合はWebサーバ1305Aの通常の処理で設定する値（デフォルト値）を格納する。
【０１５８】
データ管理部313は受信した課金情報1413のデータ種別402に従って、揮発性メモリと不揮発性メモリに格納する処理（ステップ1415）を行い、格納応答1416をWebサーバ1305Aへ送信する。Webサーバ1305Aは、格納応答1416を受信後、正常に購入できたことを示す応答1417を通信端末101へ送信する。
【０１５９】
次に、Webサーバ1305Aは、購入処理1412と結びついたと判断できる履歴情報1408を抽出し、データ管理部313へ履歴情報1418を送信する。履歴情報1418のデータ種別402には、キーを指定したデータを不揮発性メモリへ移動（揮発性メモリを格納先としない）する、を設定する。
【０１６０】
データ管理部313は受信した履歴情報1418のデータ種別402に従って、揮発性メモリ上にある履歴情報1408を不揮発性メモリにコピーして、揮発性メモリ上から削除する処理（ステップ1419）を行い、格納応答1420をWebサーバ1305Aへ送信する。
【０１６１】
データ管理部313は、履歴情報1418のアクセス情報408にアクセスサーバが設定されているか、または履歴情報1418を格納したキューデータ321のアクセスサーバ328が設定されていれば、更新通知1421をアクセスサーバに設定されたWebサーバ1305Bへ更新通知1421を送信する。
【０１６２】
図8、図9、図10、図11については、第一の実施例からの変更なく、本実施例に適用できる。
【０１６３】
以上説明したとおり、第三の実施例では、データストアサーバ107へユーザ情報を格納する処理を行うWebサーバ1305について、耐障害性（重要データの紛失を防ぐ）を備え、複数のWebサーバ1305間でデータを共有できるWebサーバ1305を実現することができる。
【符号の説明】
【０１６４】
101：通信端末、103：キャリア設備網、105：メール転送サーバ、106：メールゲートウェイ、107：データストアサーバ、108：課金サーバ、204：メールゲートウェイプログラム、205，305：揮発性記憶部、208，308：不揮発性記憶部、304：データストアサーバプログラム、312：メタデータ管理部、313：データ管理部、400：格納データ、410：ペイロード、411：格納データヘッダ、450：登録要求。
【図１】
2014170573.tif 000003
【図２】
2014170573.tif 000004
【図３】
2014170573.tif 000005
【図４】
2014170573.tif 000006
【図５】
2014170573.tif 000007
【図６】
2014170573.tif 000008
【図７】
2014170573.tif 000009
【図８】
2014170573.tif 000010
【図９】
2014170573.tif 000011
【図１０】
2014170573.tif 000012
【図１１】
2014170573.tif 000013
【図１２】
2014170573.tif 000014
【図１３】
2014170573.tif 000015
【図１４】
2014170573.tif 000016
【手続補正書】
【提出日】平成26年4月25日(2014.4.25)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
受信したメッセージを処理するメッセージサーバ、ならびに、前記メッセージサーバが処理する前記メッセージを格納するプライマリデータストアサーバ、および、前記プライマリデータストアサーバに対するバックアップデータストアサーバ、を備えるメッセージシステムであって、 前記メッセージサーバは、 前記メッセージに係わる関連情報を生成する機能と、 前記メッセージと前記関連情報のいずれか一方または両方の、格納場所と格納処理とを含む格納に係わる制御情報を生成する機能と、 前記メッセージと前記関連情報のいずれか一方または両方と、前記制御情報と、を、前記プライマリデータストアサーバへ送信する機能を備え、 前記プライマリデータストアサーバおよびバックアップデータストアサーバは、 前記格納に用いる不揮発性メモリと揮発性メモリと、 前記制御情報に基づいて、前記メッセージと前記関連情報のうち格納する対象と、前記格納する対象の格納先と、を決定する機能と、 前記決定する機能による決定に従って、前記メッセージと前記関連情報のいずれか一方または両方を、前記不揮発性メモリと前記揮発性メモリのいずれか一方または両方に格納する機能と、を備えることを特徴とするメッセージシステム。
【請求項２】
請求項１に記載のメッセージシステムであって、 前記メッセージサーバを一つ以上備えるとき、 前記データストアサーバは、 一つ以上のキューを備え、 一つの前記キューを、いずれか一つの前記メッセージサーバと対応付け、 前記メッセージサーバ一つ単位で、格納する前記メッセージと前記関連情報のいずれか一方または両方を管理することを特徴とするメッセージシステム。
【請求項３】
請求項１または２に記載のメッセージシステムであって、 前記データストアサーバは、 前記メッセージサーバの障害の有無を監視し、 障害を検知すれば、アラームを通知することを特徴とするメッセージシステム。
【請求項４】
請求項１から３のいずれか一に記載のメッセージシステムであって、 前記データストアサーバは、 前記データストアサーバに格納した、前記メッセージと、当該メッセージに係わる関連情報と、のいずれか一方または両方にアクセスできるメッセージサーバを一意に識別可能な識別情報で管理し、 前記制御情報に従い、前記識別情報と対応づけられた前記メッセージと前記関連情報のいずれか一方または両方が更新されたときに、更新する情報を前記メッセージサーバへ通知することを特徴とするメッセージシステム。
【請求項５】
請求項１から４のいずれか一に記載のメッセージシステムであって、 前記データストアサーバは、 不揮発性メモリへの書き込みの状態を監視し、 前記メッセージサーバから格納要求を受信した場合に、当該キューサーバの負荷が規定値以上であれば、前記メッセージサーバにエラー応答を送信することを特徴とするメッセージシステム。
【請求項６】
請求項１から５のいずれか一に記載のメッセージシステムであって、 前記メッセージサーバは、 格納する前記メッセージと前記関連情報のいずれか一方または両方を一意に識別する識別情報を前記データストアサーバへ送信する機能と、 前記メッセージと前記関連情報のいずれか一方または両方を前記データストアサーバが揮発性メモリに保持していた場合に、前記メッセージと前記関連情報のいずれか一方または両方を不揮発性メモリへコピーする処理を、前記識別情報を用いて、前記データストアサーバに要求する機能と、を備え、 前記データストアサーバは、前記識別情報に従い、要求された処理を行うことを特徴とするメッセージシステム。
【請求項７】
請求項１ないし６いずれか一に記載のメッセージシステムであって、 前記メッセージサーバは、前記メッセージと前記関連情報のいずれか一方または両方の格納の処理期限を前記制御情報に含めて生成する機能を備え、 前記データストアサーバは、前記処理期限内であれば、前記格納処理を、他の、前記メッセージと前記関連情報のいずれか一方または両方の前記格納処理と併せて行うことを特徴とするメッセージシステム。
【請求項８】
請求項１ないし７いずれか一に記載のメッセージシステムであって、 前記メッセージサーバの前記関連情報を生成する機能は、前記メッセージと前記関連情報のいずれか一方または両方について、前記不揮発性メモリと前記揮発性メモリの両方に書き込む、または、前記揮発性メモリと前記不揮発性メモリのいずれか一方への書き込みを要求し他方への書き込みを要求しない、を設定する制御情報を生成し、 前記データストアサーバは、前記制御情報に従って、前記メッセージと前記関連情報のいずれか一方または両方を格納することを特徴とするメッセージシステム。
【請求項９】
請求項８に記載のメッセージシステムであって、 前記データストアサーバは、 前記制御情報を参照して、前記不揮発性メモリへの書込みが終了して応答を送信するか、または、前記不揮発性メモリへの書き込みの終了を待たずに、応答を送信するかを決定し、 前記決定に従って、前記メッセージと前記関連情報のいずれか一方または両方を格納することを特徴とするメッセージシステム。
【請求項１０】
請求項８または９に記載のメッセージシステムであって、 前記メッセージサーバは、 通信端末から受信したメッセージを揮発性メモリに格納し不揮発性メモリに格納しない、と設定する制御情報を生成して、前記制御情報を含む関連情報を前記データストアサーバへ送信する機能と、 前記データストアサーバから前記要求を正常に格納したという応答を受信した場合に、前記通信端末へ正常応答を送信する機能と、 揮発性メモリに格納し不揮発性メモリに格納しない設定の処理要求を前記データストアサーバに送信したメッセージについて、前記メッセージ転送サーバへ送信し、前記メッセージ転送サーバから一時エラーを受信した場合に、揮発性メモリに格納されている前記メッセージを、前記不揮発性メモリへコピーする要求を前記データストアサーバへ送信する機能と、を備え、 前記データストアサーバは、前記処理要求に従って、前記メッセージを格納またはコピーする機能を備えることを特徴とするメッセージシステム。
【請求項１１】
請求項８ないし１０いずれか一に記載のメッセージシステムであって、 前記メッセージサーバは、前記メッセージと前記関連情報のいずれか一方または両方がデータストアサーバの揮発性メモリにある場合に、状態遷移日時と、揮発性メモリから不揮発性メモリへのコピーの指示と、を含めた要求を前記制御情報に含め、 前記データストアサーバは、前記制御情報に従い、上記要求に含まれる前記状態遷移日時を経過しても前記前記メッセージと前記関連情報のいずれか一方または両方が存在していれば、上記要求に従った処理を行うことを特徴とするメッセージシステム
【請求項１２】
請求項８ないし１１いずれか一に記載のメッセージシステムであって、 前記メッセージサーバは、 前記メッセージ送信装置から受信したメッセージを、メッセージの宛先ドメイン単位で管理する機能と、 宛先ドメインが、規制ドメインであるかを判定し、判定結果に応じて、前記メッセージを不揮発性メモリと揮発性メモリへ格納するか、不揮発性メモリには格納せず揮発性メモリへ格納するか、を設定する機能と、を備えることを特徴とするメッセージシステム。
【請求項１３】
データを格納するための要求を受信し、前記データを格納するデータストアサーバであって、 前記データは、メッセージと、当該メッセージに係わる関連情報と、のいずれか一方または両方であって、 前記データストアサーバは、 前記格納に用いる不揮発性メモリと揮発性メモリとを備え、 前記メッセージと前記関連情報のいずれか一方または両方と、前記メッセージと前記関連情報のいずれか一方または両方の、格納場所と格納処理とを含む格納に係わる制御情報と、を受信し、 前記制御情報に基づいて、前記メッセージと前記関連情報のいずれか一方または両方の前記格納方法を決定し、 受信した前記メッセージと前記関連情報のいずれか一方または両方を、決定された前記格納方法に従って、前記不揮発性メモリと前記揮発性メモリのいずれか一方または両方に格納することを特徴とするデータストアサーバ。
【請求項１４】
請求項１３に記載のデータストアサーバであって、 前記制御情報は、前記メッセージと前記関連情報のいずれか一方または両方について、前記不揮発性メモリと前記揮発性メモリの両方に書き込む、または、前記揮発性メモリと前記不揮発性メモリのいずれか一方への書き込みを要求し他方への書き込みを要求しない設定を含み、 前記設定に従い、前記メッセージと前記関連情報のいずれか一方または両方を格納することを特徴とするデータストアサーバ。
【請求項１５】
請求項１３または１４に記載のデータストアサーバであって、 前記制御情報は、前記メッセージと前記関連情報のいずれか一方または両方の格納の処理期限を含み、 前記処理期限内であれば、前記不揮発性メモリへの前記格納処理を、他の、前記メッセージと前記関連情報のいずれか一方または両方の前記格納処理と併せて行うことを特徴とするデータストアシステム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】  次に、メールゲートウェイ106は課金情報作成する処理（ステップ512）を行う。次に、メールゲートウェイ106は、課金情報と制御情報をデータ管理部313へ送信する（ステップ512）。メールゲートウェイ106は課金情報を重要であると判定し、課金情報513のデータ種別402に、新規に不揮発性メモリと揮発性メモリへ書込み、不揮発性メモリへの書込み時に処理期限を設定、不揮発性メモリへの書込みを同期にする、といった設定する。次に、データ管理部313は受信した課金情報513に従って、揮発性メモリと不揮発性メモリに格納する処理（ステップ514）を行う。ステップ514において、データ管理部313は不揮発性メモリへの書込みが、他の不揮発性メモリへの書込みがあればまとめて処理し、不揮発性メモリへの書込みが終了後に格納応答515を送信する。次に、データ管理部313は、格納応答515をメールゲートウェイ106へ送信する。