(57)【特許請求の範囲】
【請求項１】
メール送信装置から受信したメールをデータストアサーバ上に格納するメールサーバであって、
前記メールの宛先アドレス別のドメイン毎に、格納されているメールの順序、およびメールサーバがメールを送信する先である送信先サーバに該当メールを送信する送信時刻、を含んで管理するドメイン別順序管理情報を備え、
前記ドメイン別順序管理情報は、
当該ドメイン別順序管理情報が管理対象とするメールのデータサイズと数とを管理し、
１通のメールに対する、当該メールをＶａｌｕｅとした際のＫｅｙと、前記送信時刻と、の組を１エントリとして管理する下位順序管理情報を、複数含むものであり、
前記下位順序管理情報は、当該下位順序管理情報が管理対象とするメールのデータサイズと数とを管理し、
前記メールサーバは、
各々の前記下位順序管理情報を、当該下位順序管理情報に含まれているエントリ数を規定以下とすること、および、当該下位順序管理情報に含まれている各エントリの、該当メールを送信先サーバに送信する時刻において、最も早いものと最も遅いものの差を規定以下とすること、の条件を満たすように、作成し、
各々の前記下位順序管理情報を、互いに順序付けて管理し、
各々の前記下位順序管理情報が管理するメールの前記データサイズと前記数とを用いて、前記ドメイン別順序管理情報が管理するメールの前記データサイズと前記数とを更新する
ことを特徴とするメールサーバ。
【請求項２】
請求項１に記載のメールサーバであって、
前記ドメイン別順序管理情報が管理する前記データサイズと予め定めた上限値とを比較して、当該ドメイン別順序管理情報と、当該ドメイン別順序管理情報の終端にある前記下位順序管理情報と、の受信規制フラグを設定または解除する
ことを特徴とするメールサーバ。
【請求項３】
請求項１または２に記載のメールサーバであって、
複数の前記ドメイン別順序管理情報が管理するメールの前記データサイズの総和と前記数の総和とを管理する上位順序管理情報を備え、
各々の前記ドメイン別順序管理情報が管理するメールの前記データサイズと前記数とを用いて、前記上位序管理情報の前記データサイズの前記総和と前記数の前記総和とを更新し、
前記上位序管理情報の前記データサイズの前記総和と予め定めた上限値とを比較して、各々の前記ドメイン別順序管理情報と、各々の前記ドメイン別順序管理情報の終端にある前記下位順序管理情報と、の受信規制フラグを設定または解除する
ことを特徴とするメールサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、メールシステムにおけるメール配信性能の向上に関する。
【背景技術】
【０００２】
携帯電話の電子メールが普及し、携帯通信キャリアが提供しているメールサービスシステム（以下、メールシステム）は、大量のメールトラフィックを処理している。携帯通信キャリアは、携帯電話やインターネットから受信したメールを宛先へ中継する処理を、携帯通信キャリア内に設置するメールゲートウェイとメールを格納するデータストアサーバから成るメール中継システムによって行われる。
【０００３】
メール中継システムは送受信性能を向上させるべく、メールの中継時に以下の処理を行っている。まず、メールゲートウェイが携帯電話からメールを受信し、受信したメールを揮発性メモリに記憶した上で、送信先サーバに中継する。中継に成功した場合、メールゲートウェイは携帯電話にメールを受信したことを示す応答を返した上で、揮発性メモリに記憶したメールを削除して終了する。
【０００４】
上記手順中、送信先サーバへ中継してから一定時間が経過した場合、メールゲートウェイは送信したメールに再送時刻を設定した上で、データストアサーバの揮発性メモリか、不揮発性メモリに記憶する。そして、メールゲートウェイは、携帯電話にメールを受信したことを示す応答を返した後、揮発性メモリに記憶したメールを削除する。次にメールゲートウェイ（受信処理を行ったメールゲートウェイに限定されない）は揮発性メモリに、データストアサーバの揮発性メモリもしくは不揮発性メモリから読み込んだメールを記憶し、メールの再送時刻に合わせて、送信先サーバに中継する。中継に成功した場合、メールゲートウェイは揮発性メモリとデータストアサーバの揮発性メモリもしくは不揮発性メモリに記憶したメールを削除して終了する。
【０００５】
メールなど、大規模なデータを格納するデータストアサーバは、スケーラビリティと処理速度を考慮して、分散インメモリＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）を利用した構成が普及している。分散インメモリＫＶＳは、ＫｅｙとＶａｌｕｅの組を揮発性メモリに記憶するデータストアであり、高いスケーラビリティを実現できるほか、インメモリのため高い処理性能を持つ。インメモリＫＶＳでは、インメモリ環境において心配されるデータのロストは、複数サーバへのデータのレプリケーション（複製）を行うことによって、保証することが可能である。以降、ＫｅｙとＶａｌｕｅの組を揮発性メモリに記憶する処理を格納、Ｋｅｙに対応するＶａｌｕｅを揮発性メモリから読み込む処理を取得、ＫｅｙとＶａｌｕｅの組を揮発性メモリから消去する処理を削除と表記する。
【０００６】
メールシステムでは、メールをＫＶＳに格納した順番で取得し、送信する必要があるため、先入れ先出しのキュー構造でメールを保持する必要がある。ＫＶＳ上にキュー構造を実現する方法として、特許文献１（段落００２０）がある。特許文献１では、順序を管理する情報（以下、順序管理情報と表記する）を用いてメールの順序をＫＶＳ上で管理する。順序管理情報は、ＫＶＳに格納されているメールの送信時刻と、メールのＶａｌｕｅに対応するＫｅｙの組を、時系列順に管理したものである。順序管理情報は、全メールゲートウェイで共有する必要があるため、特定のＫｅｙをもつＶａｌｕｅとしてＫＶＳ上に格納される。
【０００７】
しかしながら、データストアサーバ上に格納されているメール数の増加に比例して、順序管理情報のデータサイズが増加するため、データストアサーバ上に格納されているメール数の増加に比例して、データストアサーバへのメールの格納およびメールの取得処理に時間がかかり、メールゲートウェイのメール配信性能が劣化する。この理由は以下の２つである。
・ＫＶＳではデータの一部を取得および格納することができず、順序管理情報を参照および更新する際には、順序管理情報全体を取得および格納する必要がある。そのため、順序管理情報が膨大化すると、これに比例して、メールゲートウェイとＫＶＳ間のデータ送受信時間が増加する。
・インメモリ上での動作を保証するため、ＫＶＳへデータを格納するたびに複製動作が必要となる。そのため、順序管理情報が膨大化すると、これに比例して、複製動作の処理時間が増加する。
【０００８】
順序管理情報の膨大化を防ぐ方法として、順序管理情報を分割して管理する方法が挙げられる。
【０００９】
順序管理情報を分割して管理する方法として、リスト構造を用いて管理する方法がある。リスト構造は、リスト内の各要素をポインタによって連結したものであり、ＫＶＳ上でメールキューを実現する際には、各要素の中にメールの送信時刻と、メールへのＫｅｙの組を１つずつ格納する形となる。つまり、順序管理情報をメール１通毎に分割して管理する形となる。これにより、メールの格納処理や取得処理を行う際に、必要のない順序管理情報を取得することなく処理を行うことができるため、配信性能の向上を見込むことができる。
【００１０】
非特許文献１では、順序管理情報を管理する下位テーブルと、下位テーブルを管理する上位テーブルの２種類のテーブルを用いて全てのメールを階層的に管理する。下位テーブルには一定数のメールの順序管理情報が格納される。つまり、順序管理情報を一定数毎に分割して管理する形となる。これにより、メールの格納処理や取得処理を行う際に、必要のない順序管理情報を取得することなく処理を行うことができる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００２−１３２８０１号公報
【非特許文献】
【００１２】
【非特許文献１】Yuan Wang, Han Chen, Bin Wang, Jing Min Xu, Hui Lei. "A Scalable Queuing Service Based on an In-Memory Data Grid". [online]. 10-12 November 2010, IEEE Xplore DIGITAL LIBRARY, [2012年3月8日検索]. インターネット <URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=5704322>.
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかし、上記の順序管理情報を分割して管理する方法では、以下に示すメール中継システムの特徴に適した形とは言えず、メールゲートウェイのメール配信性能を改善することができない。
・送信可能なメールは複数まとめて、送信先サーバへ一括送信することで効率化を行う
・メール中継サーバのＮ分散化の観点から、送信時刻までに長時間を要するメールの取得は行わない
仮にリスト構造を用いて管理する方法を実現すると、１通毎に順序管理情報が分割されているため、送信可能なメール数分の順序管理情報の取得が必要となり、順序管理情報へのアクセス回数過多が原因となり、メール配信性能が劣化する。
【００１４】
また、仮に非特許文献１の方法を実現すると、一定数毎に順序管理情報が分割されているため、１つの順序管理情報内に送信時刻間近なメールから送信時刻まで長時間要するメールが含まれる可能性があり、取得が行えないメールの順序管理情報を取得することによる、メールゲートウェイとＫＶＳ間の順序管理情報の転送データ量の増加が原因となり、メール配信性能が劣化する。
【課題を解決するための手段】
【００１５】
本明細書で開示されるのは、順序管理情報を分割して管理する際に、メール中継システムの特徴を考慮した順序管理情報の分割および管理を行うことで、メールゲートウェイのメール配信性能を向上させる方法と、それを用いたメール中継システムである。
【００１６】
開示されるより具体的な態様は、メールサーバ（またはメールゲートウェイという）が、メール送信装置から受信したメールをデータストアサーバ上に格納する際に、格納されているメールの順序、およびメールサーバがメールを送信する先である送信先サーバに該当メールを送信する時刻を記載した順序管理情報を参照するメールサーバ（またはメールゲートウェイ）であって、上記順序管理情報の管理方法は、順序管理情報に記載された、１通のメールに対する、メール本体をＶａｌｕｅとした際のＫｅｙおよび該当メールを送信先サーバに送信する時刻の組を、１エントリとし、前記順序管理情報を分割するにあたり、分割された順序管理情報内に含まれているエントリ数を規定以下とすること、および、分割された順序管理情報内に含まれている各エントリの、該当メールを送信先サーバに送信する時刻において、最も早いものと最も遅いものの差を規定以下とすること、という２つの条件を満たすことを特徴とする。
【発明の効果】
【００１７】
開示によれば、高い配信性能を備えるメール中継システムを実現できる。
【図面の簡単な説明】
【００１８】
【図１】システム構成を例示する図である。
【図２】各実施例を適用したメールゲートウェイ１０６の構成を例示する図である。
【図３】各実施例を適用したデータストアサーバ１０７の構成を例示する図である。
【図４】順序管理情報３１２の内容を例示する図である。
【図５】順序管理情報３１２に含まれる各データとメールデータ３１３の関係を例示する図である。
【図６】メールゲートウェイ１０６のメール受信シーケンスを例示する図である。
【図７】メールゲートウェイ１０６のメール送信シーケンスを例示する図である。
【図８】送信先サーバ１０５へメールが送信できない状態における、メールゲートウェイ１０６のメール送信シーケンスを例示する図である。
【図９】メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３のメール格納処理フローを例示する図である。
【図１０】メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３のメール取得処理フローを例示する図である。
【図１１】メールゲートウェイ１０６のメール送信および削除処理フローを例示する図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施例を添付図面に基づいて説明する。
【００２０】
図１は、本発明のシステム構成の一例である。
【００２１】
携帯端末１０１は、モバイルネットワーク１０２を介してキャリア設備網１０３と接続している。モバイルネットワーク１０２は携帯端末１０１とキャリア設備網１０３を接続している、無線ネットワークである。キャリア設備網１０３は、モバイルネットワーク１０２、インターネット１０４、メールゲートウェイ１０６、データストアサーバ１０７を接続しているネットワークである。
【００２２】
送信先サーバ１０５は、インターネット１０４を介してメールゲートウェイ１０６とメールの送受信を行う。メールゲートウェイ１０６は、キャリア設備網１０３に接続されており、携帯端末１０１がキャリア設備網１０３へ送信したメールを受信し、送信先サーバ１０５へメールを中継する。データストアサーバ１０７はキャリア設備網１０３に接続されており、メールゲートウェイ１０６から送られたメールを保持する。
【００２３】
図２は、メールゲートウェイ１０６を実現する情報処理装置のハードウェア構成である。
【００２４】
メールゲートウェイ１０６を実現する情報処理装置は、ネットワークＩ／Ｆ２０２と、プロセッサ２０３と、揮発性メモリ２０４と、不揮発性メモリ２０５と、これらを接続するバスなどの内部通信線と、を含んで構成される。メールゲートウェイ１０６はネットワークＩ／Ｆ２０２を介してキャリア設備網１０３に接続している。
【００２５】
揮発性メモリ２０４は、メールゲートウェイプログラム２０６を格納しており、また、データを格納する揮発性記憶部２０７を備えている。
【００２６】
メールゲートウェイプログラム２０６は、メール中継部２１２と、データストアサーバＩ／Ｆ部２１３と、を含んで構成される。メール中継部２１２は、メールゲートウェイ１０６が携帯端末１０１からメールを受信し、そのまま送信先サーバ１０５へ中継する処理と、データストアサーバ１０７から取得されたメールを、送信先サーバ１０５へ中継する処理を実現する各種制御プログラムが記録され、プロセッサ２０３により実行される。
【００２７】
データストアサーバＩ／Ｆ部２１３は、送信先サーバ１０５へのメール中継が失敗した際の、受信したメールをデータストアサーバ１０７へ格納する処理と、データストアサーバ１０７からメールを取得する処理を実現する各種制御プログラムが記録され、プロセッサ２０３により実行される。  揮発性記憶部２０７には、メールゲートウェイプログラム２０６が管理するデータを格納する。
【００２８】
不揮発性メモリ２０５は、不揮発性記憶部２０８を備えている。不揮発性記憶部２０８には、メールゲートウェイプログラム２０６が管理するデータを格納する。
【００２９】
メール中継部２１２は、携帯端末１０１とメールゲートウェイ１０６、およびメールゲートウェイ１０６と送信先サーバ１０５の間で生じる処理を担当する。
【００３０】
データストアサーバＩ／Ｆ部２１３は、メールゲートウェイ１０６とデータストアサーバ１０７間で生じる処理を担当する。
【００３１】
図３は、データストアサーバ１０７を実現する情報処理装置のハードウェア構成である。
【００３２】
データストアサーバ１０７を実現する情報処理装置は、ネットワークＩ／Ｆ３０２と、プロセッサ３０３と、揮発性メモリ３０４と、不揮発性メモリ３０５と、これらを接続するバスなどの内部通信線と、を含んで構成される。データストアサーバ１０７はネットワークＩ／Ｆ３０２を介してキャリア設備網１０３に接続している。
【００３３】
揮発性メモリ３０４は、データストアサーバプログラム３０６を格納しており、また、データを格納する揮発性記憶部３０７を備えている。データストアサーバプログラム３０６には、データストアサーバ１０７がメールゲートウェイ１０６から受信したＫｅｙとＶａｌｕｅの組を、揮発性記憶部３０７へ格納する処理、もしくはデータストアサーバ１０７がメールゲートウェイ１０６から受信したＫｅｙに対応したＶａｌｕｅを返す処理、あるいはデータストアサーバ１０７がメールゲートウェイ１０６から受信したＫｅｙに対応したＶａｌｕｅを削除する処理を実現する各種制御プログラムが記録され、プロセッサ３０３により実行される。
【００３４】
揮発性記憶部３０７には、データストアサーバプログラム３０６が管理するデータを格納する。
【００３５】
不揮発性メモリ３０５は、不揮発性記憶部３０８を備えている。不揮発性記憶部３０８には、データストアサーバプログラム３０６が管理するデータを格納する。
【００３６】
メールデータ３１３は、データストアサーバプログラム３０６が格納したメールのデータであり、順序管理情報３１２はメールデータ３１３を送信時刻順に管理するための情報である。順序管理情報３１２の内容に関しては、後述する。
【００３７】
図４は順序管理情報３１２の構成を例示する図である。本実施例では、全メールは宛先アドレスのドメイン毎にグループ分けされる。本実施例ではさらに、宛先アドレスのドメイン毎に分けられたメールは、宛先アドレスのＨａｓｈ値によって、グループ分けされる。グループ分けに用いるＨａｓｈ関数は、ＭＤ５やＳＨＡ−１など、均等にグループ分け可能である一般的なＨａｓｈ関数であれば、何を用いても良い。
【００３８】
順序管理情報３１２は、総合管理部４０２と、ドメイン別管理部４０３と、ドメイン別グループ始端部４０４と、ドメイン別グループ終端部４０５と、メールデータ順序管理部４０６と、を含んで構成される。本実施例では、ドメイン別管理部４０３と、ドメイン別グループ始端部４０４と、ドメイン別グループ終端部４０５と、メールデータ順序管理部４０６は、データストアサーバ１０７上に複数個存在するため、ドメイン別管理部４０３ａのようにアルファベットを添え字として表記したものは特定のデータ単体を示し、総称する場合は、添え字をつけずに表記する。
【００３９】
総合管理部４０２は、データサイズ４１２と、キューサイズ４１３と、各ドメイン別管理部へのＫｅｙ４１４と、各ドメイン別管理部のデータサイズ４１５と、各ドメイン別管理部のキューサイズ４１６と、を含んで構成される。総合管理部４０２は、データストアサーバ１０７に格納されているメールおよび関連情報を一括管理するデータである。
【００４０】
データサイズ４１２は、データストアサーバ１０７に格納されている全メールの総バイト数である。この値は、各ドメイン別管理部のデータサイズ４１５の総和で表すことができる。この値が、データストアサーバ１０７に格納可能なバイト数に達した場合には、新規メールの格納が規制される。ここで、データストアサーバ１０７に格納可能なバイト数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００４１】
キューサイズ４１３は、データストアサーバ１０７に格納されている全メールの数である。この値は、各ドメイン別管理部のキューサイズ４１６の総和で表すことができる。この値が、データストアサーバ１０７に格納可能な全メール数に達した場合には、新規メールの格納が規制される。ここで、データストアサーバ１０７に格納可能な全メール数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００４２】
各ドメイン別管理部へのＫｅｙ４１４は、単体のドメイン別管理部４０３ａをＶａｌｕｅとするＫｅｙが、全ドメイン別管理部４０３分格納される。
【００４３】
各ドメイン別管理部のデータサイズ４１５は、単体のドメイン別管理部４０３ａが管理する全メールの総バイト数が、ドメイン別管理部４０３ａに一意につけられるＩＤ名とともに全ドメイン別管理部４０３分格納される。
【００４４】
各ドメイン別管理部のキューサイズ４１６は、単体のドメイン別管理部４０３ａが管理する全メールの数が、ドメイン別管理部４０３ａに一意につけられるＩＤ名とともに全ドメイン別管理部４０３分格納される。
【００４５】
ドメイン別管理部４０３は、データサイズ４２２と、キューサイズ４２３と、秒間送信数４２４と、受信規制フラグ４２５と、送信規制フラグ４２６と、コネクション数４２７と、各ドメイン別グループ始端部へのＫｅｙ４２８と、各ドメイン別グループ終端部へのＫｅｙ４２９と、各メールデータ順序管理部のデータサイズ４３０と、各メールデータ順序管理部のキューサイズ４３１と、を含んで構成される。
【００４６】
データサイズ４２２は、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものの総バイト数である。この値は、各メールデータ順序管理部のデータサイズ４３０の総和で表すことができる。この値が、データストアサーバ１０７に格納可能な各ドメインに設定されたバイト数に達した場合には、新規メールの格納が規制される。ここで、データストアサーバ１０７に格納可能な各ドメインに設定されたバイト数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００４７】
キューサイズ４２３は、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものの数である。この値は、各メールデータ順序管理部のキューサイズ４３１の総和で表すことができる。この値が、データストアサーバ１０７に格納可能な各ドメインに設定されたメール数に達した場合には、新規メールの格納が規制される。ここで、データストアサーバ１０７に格納可能な各ドメインに設定されたメール数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００４８】
秒間送信数４２４は、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものを、１秒間に送信している件数および最後に送信した時刻の２つの値で表される。この値は、特定の宛先へのメール送信が相次いだ場合に、送信規制を行う（スロットリング）ために、必要とされる。この値が、各ドメインの規定の秒間送信数に達した場合には、再送メールの送信が規制される。ここで、各ドメインの規定の秒間送信数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００４９】
受信規制フラグ４２５は、受信したメールが、宛先アドレスによって一意に定められた、該当のドメイン別管理部４０３ａの管理下のデータに、格納可能であるかどうかを示す。受信フラグ４２５がセットされている場合には、該当のドメイン別管理部４０３ａの管理下となる受信メールの格納は失敗する。
【００５０】
送信規制フラグ４２６は、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものが、送信可能であるかどうかを示す。
【００５１】
コネクション数４２７は、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものに関して、メールゲートウェイサーバ１０７と送信先サーバ１０５間にいくつのコネクションを張って送信されているかを示す。この値が、各ドメインの規定のコネクション数に達した場合には、再送メールの送信が規制される。ここで、各ドメインの規定の秒間送信数は、メールゲートウェイ１０６のメールゲートウェイプログラム２０６に規定値として与えても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理し、参照しても良い。
【００５２】
各ドメイン別グループ始端部へのＫｅｙ４２８は、各ドメイン別グループ始端部４０４をＶａｌｕｅとしたときのＫｅｙを保持する。
【００５３】
各ドメイン別グループ終端部へのＫｅｙ４２９は、各ドメイン別グループ終端部４０５をＶａｌｕｅとしたときのＫｅｙを保持する。
【００５４】
各メールデータ順序管理部のデータサイズ４３０は、該当ドメインが管理している各グループのメールデータ順序管理部４０６内に格納されているメールのデータサイズが、メールデータ順序管理部４０６に一意につけられるＩＤ名とともに全メールデータ順序管理部４０６分格納される。
【００５５】
各メールデータ順序管理部のキューサイズ４３１は、該当ドメインが管理している各グループのメールデータ順序管理部４０６内に格納されているメール数が、メールデータ順序管理部４０６に一意につけられるＩＤ名とともに全メールデータ順序管理部４０６分格納される。
【００５６】
ドメイン別グループ始端部４０４は、メールデータ順序管理部へのＫｅｙ４４２と、送信規制フラグ４４３と、送信中フラグ４４４と、を含んで構成される。
【００５７】
メールデータ順序管理部へのＫｅｙ４４２は、該当のドメイン別グループが管理しているメール群の中で、最も送信時刻が早いメール群を管理しているメールデータ順序管理部４０６へのＫｅｙを保持する。
【００５８】
送信規制フラグ４４３は、該当のドメイン別グループに管理されているメールを、送信先サーバ１０５へ送信することができるか否かを示す。この値は、特定の宛先へのメール送信が相次いだ場合にセットされる。
【００５９】
送信中フラグ４４４は、該当のドメイン別グループに管理されているメールが、メールゲートウェイ１０６によって、送信先サーバ１０５へ送信されているか否かを示す。該当ドメイン別グループに管理されているメールがあるメールゲートウェイ１０６によって送信されている最中に、メールゲートウェイ１０６ｂが該当ドメイン別グループに管理されているメールを送信すると、順序逆転や二重配信を発生させる原因となるため、送信中フラグ４４４を設けることで、これを防ぐ。送信中フラグ４４４がセットされている場合には、あるメールゲートウェイ１０６によって該当ドメイン別グループに管理されているメールが送信されているため、該当ドメイン別グループに管理されているメールの送信は行わない。また、該当ドメイン別グループに管理されているメールを送信する際には、送信前に送信中フラグ４４４の設定を行い、送信が終了しだい送信中フラグ４４４の解除を行う。
【００６０】
ドメイン別グループ終端部４０５は、メールデータ順序管理部へのＫｅｙ４５２と、フィードバック値４５３と、受信規制フラグ４５４と、メールデータ順序管理部の格納メールデータ数閾値４５５と、メールデータ順序管理部の格納メールデータ時刻閾値４５６と、を含んで構成される。
【００６１】
メールデータ順序管理部へのＫｅｙ４５２は、該当のドメイン別グループが管理しているメール群の中で、最も送信時刻が遅いメール群を管理しているメールデータ順序管理部４０６へのＫｅｙを保持する。
【００６２】
フィードバック値４５３は、総合管理部４０２およびドメイン別管理部４０３内に格納されている管理情報を更新する頻度を表す。フィードバック値は１以上の整数値をとり、この値が小さければ更新頻度が高く、この値が大きければ更新頻度が低下する。この値は、固定としても良いし、データストアサーバ１０７に格納されているメール数によって動的に変更しても良い。
【００６３】
受信規制フラグ４５４は、現在該当のドメイン別グループのメール格納が規制されているか否かを示す。ここで、この受信規制フラグが有効となるのは、新規に受信したメールを格納する際であり、再送に失敗して再格納となったメールを格納する際には、このフラグは無効である。このフラグがセットされている場合には、メールの格納は失敗し、携帯端末１０１にはエラー応答が返される。受信規制フラグは４５４が設定されるのは、全メール格納数が規定数を上回っている場合、該当ドメインのメール格納数が規定数を上回っている場合等が挙げられる。
【００６４】
メールデータ順序管理部の格納メールデータ数閾値４５５は、メールデータ順序管理部４０６内に格納できるメール数の上限値を示す。この値は固定としても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理パラメータを一括管理する情報を設置し、それらを参照し、定期的に変更しても良い。
【００６５】
メールデータ順序管理部の格納メールデータ時刻閾値４５６は、メールデータ順序管理部４０６内に格納できるメールの送信時刻の差の上限値を示す。つまり、メールデータ順序管理部４０６内に格納されているメールのうち、最も送信時刻が早いものと、最も送信時刻が遅いものの差が、メールデータ順序管理部の格納メールデータ時刻閾値４５６以内でなければならない。この値は固定としても良いし、データストアサーバ１０７の揮発性記憶部３０７上に管理パラメータを一括管理する情報を設置し、それらを参照し、定期的に変更しても良い。
【００６６】
メールデータ順序管理部４０６は、各メールデータへのＫｅｙ４６２と、各メールデータの送信時刻４６３と、格納メールデータ数４６４と、格納メールデータのデータサイズ４６５と、次のメールデータ順序管理部へのＫｅｙ４６６と、を含んで構成される。
【００６７】
各メールデータへのＫｅｙ４６２は、該当のメールデータ順序管理部４０６が管理しているメールの、メール本体をＶａｌｕｅとしたときのＫｅｙが格納される。
【００６８】
各メールデータの送信時刻４６３は、該当のメールデータ順序管理部４０６が管理しているメールの送信時刻が格納される。
【００６９】
格納メールデータ数４６４は、該当のメールデータ順序管理部４０６が管理しているメール数が格納される。
【００７０】
格納メールデータのデータサイズ４６５は、該当のメールデータ順序管理部４０６が管理しているメールの総データサイズが格納される。
【００７１】
次のメールデータ順序管理部へのＫｅｙ４６６は、該当のメールデータ順序管理部４０６ａが管理しているメール群の次に送信されるメール群を格納しているメールデータ順序管理部４０６ｂへのＫｅｙが格納される。次に送信されるメール群を格納しているメールデータ順序管理部４０６ｂがない場合には、ＮＵＬＬが格納される。
【００７２】
図５は、データストアサーバ１０７内の揮発性記憶部３０７上に格納される、図４で示した順序管理情報３１２に含まれる各データとメールデータ３１３の関係図を例示した図である。順序管理情報３１２を構成する各データは、該当データ内に含まれている他のデータへのＫｅｙを参照することによって、参照先である他データを得ることができるため、該当データと参照先データとの間にリレーションを持つことになる。図５では、該当データが保持しているＫｅｙを参照して得られるデータを表すために、該当Ｋｅｙを参照することで得られるデータを、参照元から参照先への矢印で表現している。なお、図５では全データの構成の説明を重視するため、各データ内には他のデータへのＫｅｙを図示している。
【００７３】
総合管理部４０２は、各ドメイン別管理部へのＫｅｙ４１４を保持しており、このＫｅｙを参照することでドメイン別管理部４０３を取得することができる。
【００７４】
ドメイン別管理部４０３は、ドメイン別グループ始端部へのＫｅｙ４２８およびドメイン別グループ終端部へのＫｅｙ４２９を保持しており、これらのＫｅｙを参照することでドメイン別グループ始端部４０４とドメイン別グループ終端部４０５を取得することができる。
【００７５】
ドメイン別グループ始端部４０４は、メールデータ順序管理部へのＫｅｙ４４２を保持しており、ドメイン別グループ終端部４０５は、メールデータ順序管理部へのＫｅｙ４５２を保持している。ドメイン別グループ始端部４０４、ドメイン別グループ終端部４０５は、ともに保持しているＫｅｙを参照することでメールデータ順序管理部４０６を取得することができる。
【００７６】
メールデータ順序管理部４０６は、次のメールデータ順序管理部へのＫｅｙ４６６を保持しており、このＫｅｙを参照することで次のメールデータ順序管理部を取得することができる。また、メールデータ順序管理部４０６は、各メールデータへのＫｅｙ４６２を保持しており、これらのＫｅｙを参照することでメールデータ３１３を取得することができる。  順序管理情報３１２の総合管理部４０２はドメイン別管理部４０３へのＫｅｙを持ち、ドメイン別管理部４０３はドメイン別グループ始端部４０４およびドメイン別グループ終端部４０５へのＫｅｙを持つため、総合管理部４０２、ドメイン別管理部４０３、ドメイン別グループ始端部４０４およびドメイン別グループ終端部４０５は階層構造をとることとなる。また、ドメイン別グループ始端部４０４およびドメイン別グループ終端部４０５はメールデータ順序管理部４０６へのＫｅｙを持ち、メールデータ順序管理部４０６は次のメールデータ順序管理部へのＫｅｙを持っており、メールデータ順序管理部が連結される形となるため、ドメイン別グループ始端部４０４、ドメイン別グループ終端部４０５およびメールデータ順序管理部４０６は連結リスト構造をとることとなる。
【００７７】
図６、図７、図８は、メールゲートウェイ１０６がメールを受信する際、および送信する際のシーケンスを例示する図である。本発明では、データストアサーバ１０７へのメールの格納および取得、削除動作に特化したシーケンスを説明するため、データストアサーバ１０７へのメール格納が発生しない場合、つまり送信先サーバ１０５への中継が成功した場合のシーケンスに関しては、今回取り上げない。
【００７８】
メールの受信、および送信する際のシーケンスでは、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３とデータストアサーバ１０７間でメールや各種要求および通知を交換するが、実際の交換データはヘッダ情報やデータ本体を示すペイロードなどを含む形となる。以降の説明では、メールの受信および送信処理に特化したシーケンスを説明するために、実際の交換データではなく、ペイロード部分となるメールおよび各種要求、各種通知と表記する。これは、携帯端末１０１とメールゲートウェイ１０６のメール中継部２１２間で交換するメールおよび各種通知も同様である。また、メールをデータストアサーバ１０７の揮発性記憶部３０７へ格納もしくは取得、削除する際には、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３とデータストアサーバ１０７間で順序管理情報３１２の交換が何度か行われるが、メールの受信および送信処理に特化したシーケンスを説明するため、順序管理情報３１２の交換も含め、メールの格納もしくは取得、削除に要するやりとりは１リクエスト１レスポンスの形で表現する。
【００７９】
図６は送信先サーバ１０５へメールが送信できない状態が一定期間継続した場合の、メールゲートウェイ１０６のメール受信シーケンスを例示する図である。送信先サーバ１０５へメールが送信できない状態が継続する原因は、送信先サーバ１０５への障害中または輻輳中である、またはメールゲートウェイ１０６と送信先サーバ１０５間のネットワーク不通などがある。上記の場合、メールゲートウェイ１０６は、送信に失敗した送信先サーバ１０５向けのメールは全てエラーとなり、送信先サーバ１０５へ送信可能になるまでメールを保持しなければならない。
【００８０】
最初に、携帯端末１０１は、メールをメールゲートウェイ１０６へ送信する（ステップ５０１）。そして、メールゲートウェイ１０６のメール中継部２１２は、メールを受信し（ステップ５０２）、揮発性記憶部２０７にメールを格納する（ステップ５０３）。
【００８１】
次に、メールゲートウェイ１０６のメール中継部２１２は、送信先サーバ１０５へメールを送信する（ステップ５０４）。
【００８２】
メールを送信後、応答が受信できない時間がタイムアウト値を超えた時点で、メール中継部２１２は、メールの送信時刻を更新する（ステップ５０５）。この送信時刻は、タイムアウト値を越えた時点での送信時刻に、規定の再送時刻を加えた時刻となる。
【００８３】
次に、メールゲートウェイのデータストアサーバＩ／Ｆ部２１３は、メール格納要求およびメールをデータストアサーバ１０７へ送信する（ステップ５０６）。
【００８４】
次に、データストアサーバ１０７のデータストアプログラム３０６はメール格納要求およびメールを受信し（ステップ５０７）、揮発性メモリにメールを格納する（ステップ５０８）。図６には記述していないが、ステップ５０６において格納に失敗した場合、データストアプログラム３０６はメールゲートウェイ１０６へメール格納失敗通知を返し、メールゲートウェイ１０６は携帯端末１０１へメール送信失敗通知を返す。
【００８５】
次に、データストアサーバ１０７のデータストアプログラム３０６は、メール格納完了通知をメールゲートウェイ１０６に送信し（ステップ５０９）、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３はメール格納完了通知を受信する（ステップ５１０）。
【００８６】
次に、メールゲートウェイ１０６のメール中継部２１２はメール送信完了通知を携帯端末１０１に送信し（ステップ５１１）、携帯端末１０１がメール送信完了通知を受信する（ステップ５１２）。ステップ５０９の後、メールゲートウェイ１０６のメール中継部２１２は、揮発性記憶部３０７からメールを削除する。
【００８７】
図７は再送メールの送信シーケンスを例示する図である。
【００８８】
最初に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、メール取得要求をデータストアサーバ１０７へ送信する（ステップ６０１）。そして、データストアサーバ１０７のデータストアプログラム３０６は、メール取得要求を受信し（ステップ６０２）、データストアサーバ１０７のデータストアプログラム３０６は、取得完了通知およびメールをメールゲートウェイ１０６へ送信する（ステップ６０３）。
【００８９】
次に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は取得完了通知およびメールを受信し（ステップ６０４）、揮発性記憶部２０７へ受信したメールを格納した後（ステップ６０５）、メールゲートウェイ１０６のメール中継部２１２は、取得したメールの送信時刻に、送信先サーバ１０５へメールを送信する（ステップ６０６）。
【００９０】
次に、送信先サーバ１０５がメールゲートウェイ１０６から送信されたメールを受信し（ステップ６０７）、メールゲートウェイ１０６に対してメール送信完了通知を返す（ステップ６０８）。
【００９１】
次に、メールゲートウェイ１０６のメール中継部２１２は、送信先サーバ１０５からのメール送信完了通知を受信し（ステップ６０９）、揮発性記憶部２０７からメールを削除する（ステップ６１０）。そして、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７へメール削除要求を送信する（ステップ６１２）。  次に、データストアサーバ１０７のデータストアプログラム３０６は、メール削除要求を受信し（ステップ６１２）、揮発性記憶部３０７からメールを削除し（ステップ６１３）、メールゲートウェイ１０６へ削除完了通知を送信する（ステップ６１４）。
【００９２】
最後に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７から送信された削除完了通知を受信する（ステップ６１５）。
【００９３】
図８は、送信先サーバ１０５へメールが送信できない状態が一定期間継続した場合の、メールゲートウェイ１０６の再送メール送信シーケンスを例示する図である。
【００９４】
最初に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、メール取得要求をデータストアサーバ１０７へ送信する（ステップ７０１）。そして、データストアサーバ１０７のデータストアプログラム３０６は、メール取得要求を受信し（ステップ７０２）、データストアサーバ１０７のデータストアプログラム３０６は、取得完了通知およびメールをメールゲートウェイ１０６へ送信する（ステップ７０３）。
【００９５】
次に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は取得完了通知およびメールを受信し（ステップ７０４）、揮発性記憶部２０７へ受信したメールを格納した後（ステップ７０５）、メールゲートウェイ１０６のメール中継部２１２は、取得したメールの送信時刻に、送信先サーバ１０５へメールを送信する（ステップ７０６）。
【００９６】
メールを送信後、応答が受信できない時間がタイムアウト値を超えた時点で、メール中継部２１２は、メールの送信時刻を更新する（ステップ７０７）。この送信時刻は、タイムアウト値を越えた時点での送信時刻に、規定の再送時刻を加えた時刻となる。
【００９７】
次に、メールゲートウェイのデータストアサーバＩ／Ｆ部２１３は、メール格納要求およびメールをデータストアサーバ１０７へ送信する（ステップ７０８）。ここで送信するメールは、ステップ７０７において送信時刻を更新したメールである。
【００９８】
次に、データストアサーバ１０７のデータストアプログラム３０６はメール格納要求およびメールを受信し（ステップ７０９）、揮発性メモリにメールを格納する（ステップ７１０）。
【００９９】
次に、データストアサーバ１０７のデータストアプログラム３０６は、メール格納完了通知をメールゲートウェイ１０６に送信し（ステップ７１１）、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３はメール格納完了通知を受信する（ステップ７１２）。
【０１００】
次に、メールゲートウェイ１０６のメール中継部２１２は、揮発性記憶部２０７からメールを削除し（ステップ７１３）、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７へメール削除要求を送信する（ステップ７１４）。ここで、削除要求を行ったメールは、送信時刻を更新する前のメールである。現時点では送信時刻を更新する前のメール、送信時刻を更新した後のメールが１通ずつデータストアサーバ１０７の揮発性記憶部３０７に格納されているため、古いほうのメールを削除する必要がある。
【０１０１】
次に、データストアサーバ１０７のデータストアプログラム３０６は、メール削除要求を受信し（ステップ７１５）、揮発性記憶部３０７からメールを削除し（ステップ７１６）、メールゲートウェイ１０６へ削除完了通知を送信する（ステップ７１７）。
【０１０２】
最後に、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７から送信された削除完了通知を受信する（ステップ７１８）。
【０１０３】
図９はメールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３のメール格納処理フローを示す図である。この処理フローは、図６に示したシーケンス図のステップ５０６からステップ５１０、および図８に示したシーケンス図のステップ７０８からステップ７１２までの間に発生する、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３の動作を例示したものである。
【０１０４】
最初に、データストアサーバＩ／Ｆ部２１３はドメイン別グループ終端部４０５をデータストアサーバ１０７から取得する（ステップ８０１）。ここで、ドメイン別グループ終端部４０５の取得に関して、格納するメールの宛先アドレスを元に、該当のドメイン別部ループ終端部４０５ａをＶａｌｕｅとするＫｅｙを直接指定して取得してもよいし、総合管理部４０２を取得し、総合管理部４０２内の各ドメイン別管理部へのＫｅｙ４１４を元に該当のドメイン別管理部４０３ａを取得し、取得したドメイン管理部４０３ａ内の各ドメイン別グループ終端部へのＫｅｙ４２９を元に、該当のドメイン別グループ終端部４０５ａをＶａｌｕｅとするＫｅｙを取得してもよい。
【０１０５】
前者の方法では、ドメイン別グループ終端部４０５の取得がメールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３によって支配される形となるため、取得ルールの変更はメールゲートウェイプログラム２０６の変更でしか行えない。しかしながら、直接該当のドメイン別グループ終端部４０５を取得することができるため、メールゲートウェイ１０６とデータストアサーバ１０７間の通信処理を減らすことができる。
【０１０６】
後者の方法では、ドメイン別グループ終端部４０５の取得が総合管理部４０２もしくはドメイン管理部４０３によって支配される形となるため、取得ルールの変更はこれらの順序管理情報の変更で行うことができ、柔軟であるといえる。しかしながら、総合管理部４０２およびドメイン別管理部４０３の取得が必要なため、メールゲートウェイ１０６とデータストアサーバ１０７間の通信処理が増加する。
【０１０７】
これら２つの方法は、基本は後者の方法をとり、一定時間の間ドメイン別グループ終端部４０５の情報をキャッシュとして、揮発性記憶部２０７に保持しておき、キャッシュにデータが存在する場合に前者の方法をとれば、柔軟さと低い通信処理コストを両立することも可能である。
【０１０８】
次に、格納するメールが新規かつ、取得したドメイン別グループの終端部４０５ａ内の受信規制フラグ４５４がセットされていた場合には処理を終了し、そうでない場合はステップ８０３へ進む（ステップ８０２）。受信規制フラグ４５４は、データストアサーバ１０７内に保持されているメールが規定以上の場合や、データストアサーバ１０７に格納されている全メールのうち、各ドメイン別管理部４０３の管理下にあるものが規定以上の場合などのときに設定される。この受信規制フラグは新規メールに対して有効であり、再送扱いとなって格納されるメールの場合は、この受信規制は行われない。
【０１０９】
次に、取得したドメイン別グループの終端部４０５内のメールデータ順序管理部へのＫｅｙ４５２を用いて、メールデータ順序管理部４０６を取得し（ステップ８０３）、取得したメールデータ順序管理部４０６へメールを格納できるかどうかを判定し（ステップ８０４）、格納条件を満たさない場合にはステップ８０６へ進み、格納条件を満たす場合には８０５へ進む。
【０１１０】
上記格納条件は、取得したドメイン別グループの終端部４０５内のメールデータ順序管理部の格納メールデータ数閾値４５５およびメールデータ順序格納部の格納メールデータ時間閾値４５６を元に設定され、以下の２つを満たす場合に、格納条件を満たしているとする。
・取得したメールデータ順序管理部４０６の格納メールデータ数４６４が、メールデータ順序管理部の格納メールデータ数閾値４５５の示す値未満である。
・取得したメールデータ順序管理部４０６の各メールデータの送信時刻４６３のうち、もっとも早い送信時刻と、格納するメールの送信時刻の差が、メールデータ順序管理部の格納メールデータ時間閾値４５６の示す値未満である。
【０１１１】
これらの条件を設けることによって、各順序管理部４０６内に格納されるメール群を、送信先サーバ１０５へ一括送信可能な形でまとめることが可能となる。
【０１１２】
ステップ８０６において、データストアサーバＩ／Ｆ部２１３は、新しいメールデータ順序管理情報部４０６を作成し、データストアサーバ１０７へ新しいメールデータ順序管理情報部４０６を格納する。この処理によって、順序管理情報４０６を上記２つの条件により、メールの送信単位毎に分割されることとなる。また、取得したドメイン別グループの終端部４０５内のメールデータ順序管理部へのＫｅｙ４５２を新しいメールデータ順序管理情報部４０６をＶａｌｕｅとするＫｅｙに変更し、変更したドメイン別グループの終端部４０５をデータストアサーバ１０７へ格納する。
【０１１３】
ステップ８０５において、データストアサーバＩ／Ｆ部２１３は、取得したメールデータ順序管理部４０６内の各メールデータへのＫｅｙ４０６へ、格納するメールをＶａｌｕｅとするＫｅｙを格納する。合わせて、取得したメールデータ順序管理部４０６内の各メールデータの送信時刻４６３へ、格納するメールの送信時刻を追加し、取得したメールデータ順序管理部４０６内の格納メールデータ数４６４を１増加させ、取得したメールデータ順序管理部４０６内の格納メールデータのデータサイズ４６５へ、格納するメールのデータサイズを加算する処理を行う。
【０１１４】
ステップ８０７において、データストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７の揮発性記憶部３０７に格納されているメールデータ順序管理部４０６が、ステップ８０１において取得したものと一致しているかどうかを調査する。一致している場合にはステップ８０８へ進み、一致していない場合には、このまま格納するとデータの不整合が発生するため、ステップ８０１へ進む。この処理はＣＡＳ(Ｃｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ)操作と呼ばれるものであり、データストアサーバ１０７の揮発性記憶部３０７に格納されるデータのアトミックな操作を保証するものである。ＣＡＳ操作では、格納を行うデータが、該当データの取得時から更新されていないことを確認したうえで、格納処理を行う。ＣＡＳ操作は、前述のステップ８０６でも利用する必要があり、ステップ８０６においてアトミックな操作が失敗した場合には、同様にステップ８０１へ進む。ＣＡＳ操作は、データストアサーバ１０７の揮発性記憶部３０７に既に格納されているデータを更新する際に必ず必要とされ、新しく追加するデータの格納や、データの削除の際には必要とされない。
【０１１５】
メールデータ順序管理部４０６の格納にアトミックな操作が成功した場合には、メールデータ順序管理部４０６は正常にデータストアサーバ１０７の揮発性記憶部３０７へ格納される（ステップ８０８）。
【０１１６】
次に、データストアサーバＩ／Ｆ部２１３は、格納するメールをＶａｌｕｅとし、ステップ８０５においてメールデータ順序管理部４０６内の各メールデータへのＫｅｙ４０６へ格納した、格納するメールをＶａｌｕｅとするＫｅｙをＫｅｙとして、データストアサーバ１０７の揮発性記憶部３０７へ格納する（ステップ８０９）。
【０１１７】
メールの格納をメールデータ順序管理部４０６の格納よりも先に行うと、メールの格納動作を行った後に、メールゲートウェイ１０６が電源障害やサーバ障害によって停止となった場合、格納したメールデータ３１３のＫｅｙを持つメールデータ順序管理部４０６が存在せず、格納したメールデータ３１３を取り出すことが困難となる。この状況が頻繁に発生すると、データストアサーバ１０７の揮発性記憶部３０７が取り出すことのできないメールデータ３１３によって格納可能領域が圧迫される原因となる。そのため、本実施例ではメールデータ順序管理部４０６の格納（ステップ８０８）後にメールの格納（ステップ８０９）を行う。この結果、データストアサーバ１０７の揮発性記憶部３０７に取り出すことのできないメールデータが作成されることを防ぐことができる。
【０１１８】
ステップ８１０において、データストアサーバＩ／Ｆ部２１３は、一連の処理の中で、新しいメールデータ順序管理部４０６を作成したか、もしくはステップ８０８において格納したメールデータ順序管理部４０６内の格納メールデータ数４６４がドメイン別グループ終端部４０５内のフィードバック値４５３の倍数であるかを調査し、どちらかの条件を満たす場合には、ステップ８１１へ進み、どちらの条件も満たさない場合には処理を終了する。
【０１１９】
フィードバック値４５３は、ドメイン別管理部４０３および総合管理部４０２の更新頻度を表す値であり、小さく設定することで、更新頻度が上昇し、大きく設定することで、更新頻度が低下する。更新頻度が上昇した場合には、ドメイン別管理部４０３および総合管理部４０２の情報の精度が高くなるが、その分処理負荷が増加する。また、更新頻度が低下した場合には、ドメイン別管理部４０３および総合管理部４０２の情報の精度が低くなるが、その分処理負荷が軽減できる。そのため、格納メール数が格納上限に達しつつある場合など、情報の精度を必要とする場合にはフィードバック値４５３を小さくし、情報の制度が特別必要でない場合にはフィードバック値４５３を大きくするといった運用を行うことができる。
【０１２０】
ステップ８１１において、データストアサーバＩ／Ｆ部２１３は、ドメイン別管理部４０３および総合管理部４０２を更新する。
【０１２１】
ドメイン別管理部４０３の更新は、ドメイン別管理部４０３内の各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１に、ステップ８０８にて格納したメールデータ順序管理部４０６の格納メールデータ数４６４および格納メールデータのデータサイズ４６５の値を反映する。その後、反映したドメイン別管理部４０３内の各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１を元に、データサイズ４２２およびキューサイズ４２３を各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１の総和から算出し、反映する。ここで、データサイズ４２２が、各ドメイン別のメール格納数上限に達している場合には、受信規制フラグ４２５をセットし、さらに各ドメイン別グループ終端部へのＫｅｙ４２９を参照し、各ドメイン別グループ終端部４０５内の受信規制フラグ４５４をセットする。
【０１２２】
総合管理部４０２の更新は、総合管理部４０２内の各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６に、上記手順によって更新した、ドメイン別管理部４０３のデータサイズ４２２およびキューサイズ４２３の値を反映する。その後、反映した総合管理部４０２内の各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６を元に、データサイズ４１２およびキューサイズ４１３を各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６の総和から算出し、反映する。ここで、データサイズ４１２が、全体のメール格納数上限に達している場合には、各ドメイン別管理部へのＫｅｙ４１４を参照し、ドメイン別管理部内の受信規制フラグ４２５をセットし、さらに各ドメイン別グループ終端部へのＫｅｙ４２９を参照し、各ドメイン別グループ終端部４０５内の受信規制フラグ４５４をセットする。
【０１２３】
ステップ８１０以降に関しては、新規メールの場合には、ステップ８０９後に携帯端末１０１へ送信完了通知を配信した後、行っても良い。これによって、携帯端末１０１への送信完了通知が早い段階で送信することが可能となる。
【０１２４】
図１０はメールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３のメール取得処理フローを示す図である。この処理フローは、図７に示したシーケンス図のステップ６０１からステップ６０４、および図７に示したシーケンス図のステップ７０１からステップ７０４までの間に発生する、メールゲートウェイ１０６のデータストアサーバＩ／Ｆ部２１３の動作を例示したものである。
【０１２５】
最初に、データストアサーバＩ／Ｆ部２１３はドメイン別グループ始端部４０４をデータストアサーバ１０７から取得する（ステップ９０１）。ここで、ドメイン別グループ始端部４０４の取得に関しても、ドメイン別グループ終端部４０５の取得と同様に、格納するメールの宛先アドレスを元に、該当のドメイン別グループ始端部４０４をＶａｌｕｅとするＫｅｙを直接指定して取得してもよいし、総合管理部４０２を取得し、総合管理部４０２内の各ドメイン別管理部へのＫｅｙ４１４を元に該当のドメイン別管理部４０３を取得し、取得したドメイン管理部４０３内の各ドメイン別グループ始端部へのＫｅｙ４２８を元に、該当のドメイン別グループ始端部４０４を取得してもよい。また、基本は後者の方法をとり、一定時間の間ドメイン別グループ終端部４０５の情報をキャッシュとして、揮発性記憶部２０７に保持しておき、キャッシュにデータが存在すれば前者の方法をとるようにしてもよい。
【０１２６】
次に、取得したドメイン別グループの始端部４０４内の送信規制フラグ４４３もしくは送信中フラグ４４４がセットされていた場合には処理を終了し、そうでない場合はステップ９０３へ進む（ステップ９０２）。送信規制フラグは、規定数以上のメール送信が行われ、メールの送信に規制がかかっている場合に設定される。送信中フラグ４４４は、既に該当のドメイン別グループのメールを取得し、送信しているメールゲートウェイ１０６が存在する場合に設定される。
【０１２７】
ステップ９０３において、ドメイン別グループの始端部４０４内の送信中フラグ４４４をセットする。ここでセットすることで、該当のドメイン別グループのメールの取得および送信動作を行っていることを表すことが可能となる。
【０１２８】
ステップ９０４において、データストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７の揮発性記憶部３０７に格納されているドメイン別グループ始端部４０４が、ステップ９０１において取得したものと一致しているかどうかを調査する。一致している場合にはステップ９０５へ進み、一致していない場合には、処理を終了する。この処理は前述のＣＡＳ操作と呼ばれるものであり、データストアサーバ１０７の揮発性記憶部３０７に格納されるデータのアトミックな操作を保証するものである。
【０１２９】
ドメイン別グループ始端部４０４の格納にアトミックな操作が成功した場合には、ドメイン別グループ始端部４０４は正常にデータストアサーバ１０７の揮発性記憶部３０７へ格納される（ステップ９０５）。
【０１３０】
次に、取得したドメイン別グループの始端部４０４内のメールデータ順序管理部へのＫｅｙ４４２を用いて、メールデータ順序管理部４０６を取得し（ステップ９０６）、取得したメールデータ順序管理部４０６内の各メールデータへのＫｅｙ４６２を用いて、メールデータ３１３を取得し、処理を終了する。
【０１３１】
図１１はメールゲートウェイ１０６のメール送信および削除処理フローを示す図である。この処理フローは、図７に示したシーケンス図のステップ６０６からステップ６１５、および図８に示したシーケンス図のステップ７１４からステップ７１８までの間に発生する、メールゲートウェイ１０６のメールゲートウェイプログラム２０６の動作を例示したものである。
【０１３２】
最初に、メール中継部２１２は送信先サーバ１０５へメールを送信し、送信先サーバ１０５からメール送信完了通知を取得し（ステップ１００１）、揮発性記憶部２０７からメールの削除を行う（ステップ１００２）。
【０１３３】
次に、データストアサーバＩ／Ｆ部２１３はドメイン別グループ始端部４０４をデータストアサーバ１０７から取得し、（ステップ１００３）取得したドメイン別グループの始端部４０４内のメールデータ順序管理部へのＫｅｙ４４２を用いて、メールデータ順序管理部４０６を取得する（ステップ１００４）。ここで、ドメイン別グループ始端部４０４の取得に関しては、これまでと同様にどのような手順で取得してもかまわない。
【０１３４】
ステップ１００５において、取得したメールデータ順序管理部４０６内の、各メールデータへのＫｅｙ４６２、各メールデータの送信時刻４６３から、送信が完了したメールに関する情報を削除する。
【０１３５】
ステップ１００６において、データストアサーバＩ／Ｆ部２１３は、データストアサーバ１０７の揮発性記憶部３０７に格納されているメールデータ順序管理部４０６が、ステップ１００４において取得したものと一致しているかどうかを調査する。一致している場合にはステップ１００７へ進み、一致していない場合には、ステップ１００４へ進む。この処理は前述のＣＡＳ操作と呼ばれるものであり、データストアサーバ１０７の揮発性記憶部３０７に格納されるデータのアトミックな操作を保証するものである。
【０１３６】
ドメイン別グループ始端部４０４の格納にアトミックな操作が成功した場合には、メールデータ順序管理部４０６は正常にデータストアサーバ１０７の揮発性記憶部３０７へ格納される（ステップ１００７）。
【０１３７】
ステップ１００８において、これまでの工程を経て更新されたメールデータ順序管理部４０６内の各メールデータへのＫｅｙ４６２、各メールデータの送信時刻４６３を参照し、格納されているメールが存在するか否かを調査する。調査の結果、格納されているメールが存在する場合には処理を終了し、存在しない場合にはステップ１００９へ進む。
【０１３８】
ステップ１００９において、データストアサーバＩ／Ｆ部２１３は、ドメイン別グループ始端部４０４の更新、メールデータ順序管理部４０６の削除、ドメイン別管理部４０３の更新および総合管理部４０２の更新を行う。
【０１３９】
ドメイン別グループ始端部４０４の更新は、メールデータ順序管理部へのＫｅｙ４４２を、メールデータ順序管理部４０６内の次のメールデータ順序管理部へのＫｅｙ４６６の内容に置き換え、さらに送信中フラグ４４４を解除する。
【０１４０】
ドメイン別管理部４０３の更新は、ドメイン別管理部４０３内の各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１から、削除したメールデータ順序管理部４０６に関連する情報を削除する。その後、反映したドメイン別管理部４０３内の各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１を元に、データサイズ４２２およびキューサイズ４２３を各メールデータ情報管理部のデータサイズ４３０および各メールデータ順序管理情報部のキューサイズ４３１の総和から算出し、反映する。また、秒間送信数４２４を処理時点での時刻と、今回の処理中に送信したメール数を元に、最新の値に反映し、さらにコネクション数４２７を１デクリメントする。
【０１４１】
ここで、秒間送信数４２４が、各ドメイン別のメール秒間送信数上限に達している場合には、送信規制フラグ４２６をセットし、さらに各ドメイン別グループ終端部へのＫｅｙ４２９を参照し、各ドメイン別グループ始端部４０４内の送信規制フラグ４４３をセットする。また、更新したドメイン別管理部４０３のデータサイズ４２２およびキューサイズ４２３から、受信規制が必要なくなった場合には、受信規制フラグ４２５を解除し、さらに各ドメイン別グループ終端部へのＫｅｙ４２９を参照し、各ドメイン別グループ終端部４０５内の受信規制フラグ４５４を解除する。
【０１４２】
総合管理部４０２の更新は、総合管理部４０２内の各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６に、上記手順によって更新した、ドメイン別管理部４０３のデータサイズ４２２およびキューサイズ４２３の値を反映する。その後、反映した総合管理部４０２内の各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６を元に、データサイズ４１２およびキューサイズ４１３を各ドメイン別管理部のデータサイズ４１５および各ドメイン別管理部のキューサイズ４１６の総和から算出し、反映する。ここで、データサイズ４１２から、メールの受信規制が必要なくなった場合には、各ドメイン別管理部へのＫｅｙ４１４を参照し、ドメイン別管理部内の受信規制フラグ４２５を解除し、さらに各ドメイン別グループ終端部へのＫｅｙ４２９を参照し、各ドメイン別グループ終端部４０５内の受信規制フラグ４５４を解除する。
【符号の説明】
【０１４３】
１０１：携帯端末、１０２：モバイルネットワーク、１０３：キャリア設備網、１０４：インターネット、１０５：送信先サーバ、１０６：メールゲートウェイ、１０７：データストアサーバ、２０２：ネットワークＩ／Ｆ、２０３：プロセッサ、２０４：揮発性メモリ、２０５：不揮発性メモリ、２０６：メールゲートウェイプログラム、２０７：揮発性記憶部、２０８：不揮発性記憶部、２１２：メール中継部、２１３：データストアサーバＩ／Ｆ部、３０２：ネットワークＩ／Ｆ、３０３：プロセッサ、３０４：揮発性メモリ、３０５：不揮発性メモリ、３０６：データストアサーバプログラム、３０７：揮発性記憶部、３０８：不揮発性記憶部、３１２：順序管理情報、３１３：メールデータ、４０２：総合管理部、４０３：ドメイン別管理部、４０４：ドメイン別グループ始端部、４０５：ドメイン別グループ終端部、４０６：メールデータ順序管理部。
【図１】
0005746995.tif 000002
【図２】
0005746995.tif 000003
【図３】
0005746995.tif 000004
【図４】
0005746995.tif 000005
【図５】
0005746995.tif 000006
【図６】
0005746995.tif 000007
【図７】
0005746995.tif 000008
【図８】
0005746995.tif 000009
【図９】
0005746995.tif 000010
【図１０】
0005746995.tif 000011
【図１１】
0005746995.tif 000012