Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5280148B2 - メールシステム - Google Patents
[go: Go Back, main page]

JP5280148B2 - メールシステム - Google Patents

メールシステム Download PDF

Info

Publication number
JP5280148B2
JP5280148B2 JP2008274678A JP2008274678A JP5280148B2 JP 5280148 B2 JP5280148 B2 JP 5280148B2 JP 2008274678 A JP2008274678 A JP 2008274678A JP 2008274678 A JP2008274678 A JP 2008274678A JP 5280148 B2 JP5280148 B2 JP 5280148B2
Authority
JP
Japan
Prior art keywords
mail
delivery
status
module
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008274678A
Other languages
English (en)
Other versions
JP2010103850A (ja
Inventor
裕 福冨
Original Assignee
株式会社Hde
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社Hde filed Critical 株式会社Hde
Priority to JP2008274678A priority Critical patent/JP5280148B2/ja
Publication of JP2010103850A publication Critical patent/JP2010103850A/ja
Application granted granted Critical
Publication of JP5280148B2 publication Critical patent/JP5280148B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、メールシステムに関する。
従来から、冗長化させた複数のメールサーバによって構成されるメールシステムが存在する。このようなメールシステムは、障害発生時の復旧時間を短縮させるために、待機中の第2のメールサーバが、稼動中の第1のメールサーバを監視し、第1のメールサーバに障害が発生したことを第2のメールサーバが検知すると、第2のメールサーバが稼働し、第1のメールサーバを引き継ぐ処理を行う(特許文献1)。
特開2004−104732号公報
しかし、従来のメールシステムでは、復旧時間を節約しようとしても、第1のメールサーバから第2のメールサーバにデータを引き継ぐ処理に数時間を要するものであった。例えば、代替する第2のメールサーバは、ネットワークの再構築を行ったり、ファイルシステムの整合性のチェックを行うために時間を要していた。したがって、既に第1のメールサーバが受け付けた電子メールは、この引継作業が終了するまで、第2のサーバによっては配送されない事態が生じていた。
このように、一旦受け付けた電子メールが引継作業中の数時間において配送されない事態が生じる従来のメールシステムは、利用者に不便をきたすものであり、即時伝達という電子メールの魅力を失わせてしまう。
本発明は、上述した課題に鑑みたものであり、複数のメールサーバにより構成されるメールシステムにおいて、可用性の高いメールシステムを提供することにある。
(1)本発明は、複数のメールサーバと、当該複数のメールサーバが共有するデータベースとによって構成されるメールシステムであって、前記各メールサーバが、電子メールを受け付ける受け付け部と、受け付けた電子メールと、当該電子メールの配送状況とを、前記データベースに格納する処理を行う格納部と、前記データベースに格納されている電子メールのうち、配送状況が未配送である電子メールを特定し、特定された電子メールの配送状況を、配送中を示す情報に更新する処理を行う更新部と、配送状況が配送中を示す情報に更新された前記電子メールを、配送する処理を行う配送部とを含むメールシステムに関する。また、本発明は、上記各部としてコンピュータを機能させるプログラム、及び、コンピュータ読み取り可能な情報記憶媒体であって、上記各部としてコンピュータを機能させるプログラムを記憶した情報記憶媒体に関する。
本発明によれば、一方のメールサーバのサービスが停止した場合であっても、一方のメールサーバから他方のメールサーバに、引継作業を要することなく、運用を続行することができ、可用性の高いメールシステムを提供することができる。すなわち、本発明によれば、一旦受け付けた電子メールはデータベースに格納され、複数のメールサーバのうち、いずれかのメールサーバが配送処理を行うことになるので、仮に、一方のメールサーバのサービスが停止したとしても、他方のメールサーバが遅滞なく、データベースに格納されている電子メールを配送することができる。さらに、本発明によれば、配送状況に基づいて電子メールを配送する処理を行うので、同一の電子メールに対する重複配送を回避することができる。
(2)また、本発明のメールシステムは、前記各メールサーバが、前記データベースに格納されている電子メールのうち、配送状況が配送中を示す情報に更新された時点から所定期間内に配送完了に更新されていない電子メールを、検索する検索部を更に含み、前記更新部が、配送処理が完了した電子メールの配送状況を、配送完了に更新する処理と、検索された前記電子メールの配送状況を、未配送に更新する処理とを行うようにしてもよい。
本発明によれば、仮に、電子メール配送中のメールサーバが停止した場合でも、他のメールサーバが、この電子メールを配送することができる。
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
1.構成
(1)メールサーバ
本実施形態のメールシステムは、冗長化させた複数のメールサーバ(メールサーバS1、S2)を備える。図1は、各メールサーバの機能ブロック図の一例である。本実施形態の各メールサーバは、図1の各部を全て含む必要はなく、その一部を省略した構成としてもよい。
記憶部170は、処理部100などのワーク領域となるもので、記憶部170には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)を記憶することができる。
また、記憶部170は、RAM(VRAM)、光ディスク(CD、DVD)、光磁気ディスク(MO)、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ(ROM)等によるコンピュータにより読み取り可能な情報記憶媒体を含み、この情報記憶媒体にはプログラムやデータなどが格納されている。即ち、情報記憶媒体には、本実施形態の各部としてコンピュータを機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
また記憶部170は、複数のモジュール(モジュール1、モジュール2、モジュール3)等のモジュールプログラムが格納されている。なお、モジュール実行部117の実行命令に基づき、これらのモジュールが実行されることになる。
処理部100は、記憶部170に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行い、記憶部170内の主記憶部をワーク領域として各種処理を行う。処理部100の機能は各種プロセッサ(CPU、DSP等)などのハードウエアや、プログラムにより実現できる。
処理部100は、受け付け部111、格納部112、取得部113、判断部114、更新部115、検索部116、モジュール実行部117、配送部118、削除部119、データベース制御部120を含む。
受け付け部111は、電子メールを受け付ける処理を行う。具体的には、受け付け部111は、SMTP(Simple Mail Transfer Protocol)を通じてネットワーク上で電子メールを受け付ける処理を行う。例えば、図3に示す端末20のMUA(Mail User Agent)によって送信された電子メールを受け付ける処理を行う。
格納部112は、受け付けた電子メールと、当該電子メールの更新識別情報MIDと、当該電子メールの配送状況とを、データベースに格納する処理を行う。例えば、格納部112は、電子メールを受け付けると、当該電子メールに固有の識別情報を付与し、当該識別情報に対応づけて、電子メールと、更新識別情報MIDと、配送ステータスとを、データベースに格納する処理を行う。ここで、配送ステータスとは、未配送、配送中、配送完了、配送エラーなどの配送状況を数値で表したデータである。また、格納部112は、受け付けた電子メールを、エンベロープの宛先、エンベロープの差出元、メッセージのヘッダ、メッセージのボディ等に解析する処理を行い、解析された各データをデータベースDB1、DB2のテーブルに対応づけて格納する処理を行う。
取得部113は、メールサーバがデータベースに対してなした要求に対する応答結果を取得する。例えば、取得部113は、検索要求に対する検索結果を取得したり、更新要求に対する更新結果(更新成功、更新失敗)の情報を取得する。例えば、取得部113は、データベースに対して未配送の電子メールの検索を要求し、検索された電子メールを取得する。
判断部114は、データベースに対してデータの更新要求を行い、当該更新要求の結果に基づいて更新権を有するか否かを判断する。判断部114は、例えば、検索された未配送の電子メールの配送権を有するか否かを、配送状況の更新要求に対する更新結果に基づいて判断する。例えば、判断部114は、配送状況の更新要求に対してデータベースから更新成功を取得すると、検索された未配送の電子メールの配送権を有すると判断し、配送状況の更新要求に対してデータベースから更新失敗を取得すると、検索された未配送の電子メールの配送権を有しないと判断する。
更新部115は、データベースに格納されている電子メールのうち、配送状況が未配送を示す電子メールを特定し、特定された電子メールの配送状況を、配送中を示す情報に更新する。つまり、更新部115は、データベースに対して、未配送の電子メールを検索する要求をし、検索結果を取得することによって、配送状況が未配送を示す電子メールを特定し、データベースに対して、当該特定された電子メールの配送状況を、配送中を示す情報に更新要求する。なお、更新部115は、未配送の電子メールを検索した時点(第1の時点)の更新識別情報MIDと、配送状況を配送中を示す情報に更新要求する時点(第2の時点)の更新識別情報MIDとが一致することを条件に、配送状況を未配送から、配送中を示す情報に更新要求すると共に、更新識別情報MIDの値(例えば、「1」)を、第1の時点の更新識別情報MIDとは異なる値(例えば「2」)に更新要求する。
更新部115は、電子メールの配送処理が完了した場合には、当該電子メールの配送状況を配送完了(配送済)に更新する。また、更新部115は、検索部116によって、データベースに格納されている電子メールのうち、配送状況が配送中を示す情報に更新した時点から所定期間内に配送完了に更新されていない電子メールが検索された場合には、当該検索された電子メールの配送状況を、未配送に更新する処理を行う。
検索部116は、データベースに格納されている電子メールのうち、配送状況が配送中を示す情報に更新された時点から所定期間内に配送完了に更新されていない電子メールを検索する。つまり、検索部116は、データベースに格納されている電子メールのうち、電子メールに対応する配送状況が配送中を示す情報に更新された時点(更新日時)から所定期間内(例えば10分以内)に、当該配送状況が未だ配送完了に更新されていない電子メールを検索する。
モジュール実行部117は、予め記憶部170に格納されているモジュール1、モジュール2、モジュール3を実行させる処理を行う。例えば、モジュール1実行部117aは、電子メールのウイルスを検出する処理を行うモジュールを実行させる処理を行う。モジュール2実行部117bは、電子メールを電子メール蓄積用データベースに登録させる処理を行うモジュールを実行させる処理を行う。モジュール3実行部117cは、電子メールを所定条件に基づいてフィルタリング処理を行うモジュールを実行させる処理を行う。モジュール実行部117は、データベースに格納されている各電子メールに対して、予めデータベースDB1、DB2に格納されている実行順に即してモジュールを実行させる処理を行う。
配送部118は、データベースに格納されている電子メールを配送する処理を行う。例えば、配送部118は、配送状況が配送中を示す情報に更新された電子メールを配送する処理を行う。ここで、電子メールを配送するとは、SMTPを通じて、受け付けた電子メールを他のメールサーバに配送する処理や、メールサーバが稼動する同一システム内にアカウントを持つユーザ宛に配送するためのローカル配信エージェントMDA(Mail Delivery Agent)に配送する処理、MDAを介せずにメールサーバが稼動する同一システム内にアカウントを持つユーザ宛に配送する場合も含む。配送部118は、データベースDB1、DB2に格納されているの電子メールの配送命令51が有効である場合にその電子メールを配送する処理を行う。
また、本実施形態の配送部118は、データベースに格納されている配送先メールサーバ53のアドレスを参照し、ネットワークを介して、配送先メールサーバに電子メールを配送する処理を行う。
削除部119は、配送処理が完了した電子メールを、データベースから削除する。具体的には、削除部119は、データベースDB1、DB2に登録されている電子メールのうち、モジュール実行部117における全モジュール処理が完了し(モジュール1、2、3の全モジュールが実行完了し)、配送命令が有効である電子メールの配送処理が完了した電子メール、及び、モジュール実行部117における全モジュール処理が完了し(モジュール1、2、3の全モジュールが実行完了し)、配送命令が無効である電子メールを、データベースDB1、DB2から削除する処理を行う。
データベース制御部120は、本実施形態のデータベースDB1、DB2が同一のデータが書き込まれるように、同期レプリケーション処理を行うものである。例えば、データベース制御部120は、データベースに対する格納・更新・削除・参照、検索などの要求データ(クエリ)を、データベースDB1、DB2それぞれ同時に送信する処理を行い、データベースDB1、DB2間においてタイムラグが生じることなくデータの同一性を維持させるようにする。また、データベース制御部120は、一方のデータベース(例えばデータベースDB1)に障害が発生したことを検出した場合や、データベースDB1、DB2間においてデータの不整合を検出した場合には、一方のデータベース(例えばデータベースDB1)を切り離す処理を行い、他方のデータベース(例えばデータベースDB2)が格納・更新・削除・参照などの処理を継続して行う。
(2)データベース
図2は、本実施形態のデータベース(データベースDB1、DB2)に格納されるデータの一例を示す。ここで、データベースとは、データの管理や、要求データ(クエリ、コマンド)に基づいて、データの格納、削除、更新、参照、検索などの処理を行う機能を有する。本実施形態のメールシステムのデータベースDB1、DB2それぞれは、メールサーバにおけるデータベース制御部120の同期レプリケーション処理により、同一のデータが記録される。
電子メール格納領域30は、メールサーバS1、S2が受け付けた電子メールデータが格納される。例えば、電子メール格納領域30には、メールサーバS1、S2が受け付けた電子メールを固有の識別情報(ID)に対応づけて、電子メールのエンベロープの宛先、電子メールのエンベロープの差出元、電子メールの内容(ヘッダ部、ボディ部の内容)、登録日時、更新日時、更新識別情報(MID)が格納される。
モジュール情報格納領域40には、モジュール1のステータス41、モジュール2のステータス42、モジュール3のステータス43、経過ステータス44のデータが格納される。モジュール1のステータス41、モジュール2のステータス42、モジュール3のステータス43は、電子メールの識別情報(ID)に対応する、それぞれのモジュールの実行状況データである。なお、経過ステータス44は、モジュールの実行順に即したモジュールの実行状況データである。
配送情報格納領域50には、電子メールの識別情報(ID)に対応付けて、配送命令51、配送ステータス52、配送先メールサーバ53が格納される。配送命令51は、配送命令の有無を示すデータであり、配送ステータス52は、配送状況を示すデータであり、配送先メールサーバ53は、メールサーバS1、S2が電子メールを配送するための配送先メールサーバのアドレス(IPアドレス、メールサーバ名)である。
2.本実施形態の処理の手法
(1)メールシステムの概要
図3は、本実施形態のメールシステムのネットワーク図を示す。本実施形態は、冗長化された複数のメールサーバS1、S2と、冗長化された複数のデータベースDB1、DB2とを含むメールシステムである。ここで、メールサーバは、MTA(Message Transfer Agent)であり、他のメールサーバからインターネットを介して配送された電子メールやLAN(Local Area Network)の端末のMUAから送信された電子メールを、受け付けて配送する処理を行うものである。
本実施形態のメールサーバS1、S2は、データベース(データベースDB1、DB2)を共有し、同一のデータを用いて、電子メールの処理を行っている。つまり、本実施形態のメールシステムは、例えば、端末20から送信され、宛先(送信先)が指定された電子メールを、メールサーバS1、S2のうちいずれかのメールサーバが受け付け、受け付けた電子メールをデータベースDB1、DB2に格納し、メールサーバS1、S2のうちいずれかのメールサーバが、データベースDB1、DB2に格納されている電子メールを、配送先のメールサーバに配送する処理を行うものである。
図4は、本実施形態のメールシステムにおいて、電子メールに対するジョブの流れを図示したものである。まず、他のメールサーバ等から配送された電子メールが、メールサーバS1、S2のいずれかに受け付けられると、データベースDB1、DB2に格納され、メールサーバS1、S2のうちいずれかのメールサーバが、電子メールについてモジュール1の実行処理を行い、モジュール1の実行処理が完了すると、メールサーバS1、S2のうちいずれかのメールサーバが、モジュール2の実行処理を行い、モジュール2の実行処理が完了すると、メールサーバS1、S2のうちいずれかのメールサーバが、モジュール3の実行処理を行う。そして、この電子メールに対する配送命令が有効である場合に、メールサーバS1、S2のうちいずれかのメールサーバが、電子メールを配送先メールサーバに配送する処理を行う。そして、モジュール1、2、3の実行処理と、配送処理がすべて完了すると、電子メールはデータベースから削除される。つまり、本実施形態のメールシステムにおいて、データベースDB1、DB2に格納された電子メールのジョブは、電子メールに対してモジュール1を実行するジョブ、電子メールに対してモジュール2を実行するジョブ、電子メールに対してモジュール3を実行するジョブ、電子メールを配送する処理を行うジョブ、電子メールをデータベースから削除するジョブがある。
このように、本実施形態のメールシステムは、仮に、一方のメールサーバS2が障害等により停止したとしても、他方のメールサーバS1が稼働しているので、データベースDB1、DB2に格納されている電子メールのモジュールの実行処理、配送処理を滞りなく行うことができる。例えば、図5に示すように、メールサーバS2においてモジュール1の実行完了後に、メールサーバS2が停止した場合には、メールサーバS1が、当該電子メールに対するモジュール2、モジュール3の実行、及び、配送処理を行う。
なお、本実施形態のメールシステムでは、メールサーバS1、S2は、それぞれ異なる装置(ハードウエア)で稼動してもよいし、同一の装置で稼動してもよい。また、データベースDB1はメールサーバS1と同じ装置で稼動するものでもよいし、メールサーバS1、S2、データベースDB2とは異なる装置で稼動するものでもよい。同様にデータベースDB2もメールサーバS2と同じ装置で稼動するものでもよいし、メールサーバS1、S2、データベースDB1とは異なる装置で稼動するものであってもよい。また、メールサーバS1、S2、データベースDB1、DB2は、同一のLANに接続され、データベースDB1、DB2とデータの送受信ができるように、各メールサーバS1、S2は、データベースDB1、DB2のデータベース名や、データベースサーバ名(ホスト名)、IPアドレス、ポート番号を予め記憶部に記憶する。
(2)ステータス情報
本実施形態では、データベースに格納されている電子メールそれぞれについて、モジュールの実行経過を示す経過ステータス44、各モジュールのステータス41、42、43、配送ステータス52等のステータス情報が設定され、本実施形態のメールサーバは、ステータス情報を参照して、未実行(未処理)のジョブを検索し、検索されたジョブを実行する処理を行っている。
図6(A)は経過ステータス44の一覧を示す。まず、電子メールについてモジュール1、2、3が未実行である場合、つまり、モジュール1、2、3のいずれのモジュールも実行されていない状況である場合には、経過ステータス44の値は「1」に設定される。そして、電子メールについて、モジュール1の実行が完了し、モジュール2の実行が完了される前の状況は、経過ステータス44の値は「2」に設定される。そして、電子メールについて、モジュール1、2の実行が完了し、モジュール3の実行が完了される前の状況は、経過ステータス44の値は「3」に設定される。そして、電子メールについて、モジュール1、2、3の実行が完了された状況である場合には、経過ステータス44の値は「4」に設定される。
図6(B)は、モジュール1、2、3のステータス41、42、43の一覧を示す。例えば、電子メールについてモジュール1が未実行である場合には、モジュール1のステータス41の値は「1」に設定される。そして、電子メールについて、モジュール1の実行中である場合には、モジュール1のステータス41の値は「2」に設定される。そして、モジュール1の実行が完了した場合には、モジュール1のステータス41の値は「3」に設定される。また、モジュール1の実行がエラーで終了した場合には、モジュール1のステータス41の値は「4」に設定される。モジュール2のステータス42の値、モジュール3のステータス43の値は、モジュール1のステータス41と同様に実行状況に応じて設定される。
図6(C)は、配送ステータス52の一覧を示す。例えば、電子メールについての配送状況が未配送である場合には、配送ステータス52の値は「1」に設定される。そして、電子メールについて、配送状況が配送中である場合には、配送ステータス52の値は「2」に設定される。そして、電子メールの配送状況が配送完了になると、配送ステータス52の値は「3」に設定される。また、配送処理がエラーで終了した場合には、配送ステータス52の値は「4」に設定される。
(3)受け付け処理
本実施形態のメールサーバS1、S2は、図3に示すように、SMTPを通じて、他のメールサーバからインターネットを介して配送された電子メールや、端末20のMUAから送信された電子メールを受け付け、受け付けた電子メールを、データベースDB1、DB2それぞれに格納させる処理を行う。つまり、本実施形態では、メールサーバS1、S2は、受け付けた電子メールを、メールサーバS1、S2が共有するデータベースDB1、DB2にスプールさせる処理を行っている。
また、図3に示すように、本実施形態のメールシステムのDNS(Domain Name System)のMXレコードには、メールアドレスの同一のドメインに対応づけて、メールサーバS1のメールサーバ名を定義するレコードと、メールサーバS2のメールサーバ名を定義するレコードとを設定する。その際に、メールサーバS1、メールサーバS2のMXレコードの優先順位(プリファレンス値)を同位にして設定してもよい。このようにすれば、メールサーバS1、S2それぞれが、ほぼ均等に電子メールを受け付けることができる。
また、本実施形態では、メールサーバS1、S2が受け付けた電子メールをデータベースDB1、DB2に格納する際に、経過ステータス44を「1」(未実行)に設定して、電子メールの識別情報(ID)に対応づけてデータベースDB1、DB2に格納し、モジュール1、2、3のステータス41、42、43を「1」(未実行)に設定して、電子メールの識別情報(ID)に対応づけてデータベースDB1、DB2に格納し、配送ステータス52を「1」(未配送)に設定して、電子メールの識別情報(ID)に対応づけてデータベースDB1、DB2に格納する。
(4)モジュールを実行させる処理
本実施形態のメールサーバS1、S2は、電子メールについて、複数のモジュールを実行させる処理を行う。複数のモジュールとは、例えば、ウイルスを検出するウイルス検出モジュール、電子メールを外部記憶領域に蓄積させるモジュール、電子メールのフィルタリングを行うモジュール等である。
本実施形態では、これらのモジュールの実行順序を、モジュールに対応づけて予めデータベースに格納している。例えば、ウイルスを検出するウイルス検出モジュールをモジュール1として1番目に実行させ、電子メールを外部記憶領域に蓄積させるモジュールをモジュール2として2番目に実行させ、電子メールのフィルタリングを行うモジュールをモジュール3として3番目に実行させるという実行順をデータベースに格納し、各メールサーバが共有できるようにしている。
そして、本実施形態では、経過ステータス44や、モジュール1、2、3のステータス41、42、43を参照し、電子メールそれぞれについてモジュール実行順に各モジュールを実行するように制御している。
例えば、経過ステータス44が「1」(未実行)、各モジュールのステータス41、42、43が「1」(未実行)の状態である電子メールAに対する各モジュールの実行処理について説明する。
まず、メールサーバS1、S2が、経過ステータス44が「1」(未実行)である電子メール(モジュール1のステータス41が「1」(未実行)である電子メール)を検索する。そして、例えば、メールサーバS1が、メールサーバS2よりも先に、電子メールAを検索したとする。すると、メールサーバS1が、電子メールAについてモジュール1を実行する処理を行う。本実施形態では、メールサーバS1が、電子メールAについてモジュール1を実行する前に、電子メールAのモジュール1のステータス41を「2」(実行中)に更新し、その後、電子メールAについてモジュール1を実行する。このように、モジュール1のステータス41を、モジュール1の実行前に更新する理由は、一方のメールサーバS1のモジュール1の実行中に、他方のメールサーバS2が電子メールAを検索してモジュール1を実行することを回避するためである。そして、メールサーバS1において、モジュール1の実行が完了すると、メールサーバS1が、電子メールAについてのモジュール1のステータス41を「3」(実行完了)に更新し、経過ステータス44を「2」(モジュール1の実行完了)に更新する。
そして、メールサーバS1、S2が、経過ステータス44が「2」(モジュール1の実行完了)である電子メールであって、モジュール2のステータス42が「1」(未実行)である電子メールを検索し、例えば、メールサーバS1が、メールサーバS2よりも先に、電子メールAを検索したとする。すると、メールサーバS1が、電子メールAについてモジュール2を実行する処理を行う。その際に、メールサーバS1が、電子メールAについてモジュール2を実行する前に、電子メールAのモジュール2のステータス42を「2」(実行中)に更新し、その後、電子メールAについてモジュール2を実行する。そして、メールサーバS1において、モジュール2の実行が完了すると、メールサーバS1が、電子メールAについての、モジュール2のステータス42を「3」(実行完了)に更新し、経過ステータス44を「3」(モジュール2の実行完了)に更新する。
そして、メールサーバS1、S2が、経過ステータス44が「3」(モジュール2の実行完了)である電子メールであって、モジュール3のステータス43が「1」(未実行)である電子メールを検索し、例えば、メールサーバS1が、メールサーバS2よりも先に、電子メールAを検索したとする。すると、メールサーバS1が、電子メールAについてモジュール3を実行する処理を行う。その際に、メールサーバS1が、電子メールAについてモジュール3を実行する前に、電子メールAのモジュール3のステータス43を「2」(実行中)に更新し、その後、電子メールAについてモジュール3を実行する。そして、メールサーバS1において、モジュール3の実行が完了すると、メールサーバS1が、電子メールAについての、モジュール3のステータス43を「3」(実行完了)に更新し、経過ステータス44を「4」(モジュール3の実行完了)に更新する。
このように、本実施形態では、経過ステータス44、モジュール1、2、3のステータス41、42、43を参照することによって、各電子メールについてモジュール1、2、3を実行させる処理を行っている。
また、本実施形態では、重複処理を回避するために、複数のメールサーバS1、S2のうち、いずれか1つのメールサーバが、モジュール1の実行処理を行い、また、複数のメールサーバS1、S2のうち、いずれか1つのメールサーバが、モジュール2の実行処理を行い、複数のメールサーバS1、S2のうち、いずれか1つのメールサーバが、モジュール3の実行処理を行う。本実施形態では、未実行のモジュールを最先に検索したメールサーバが、モジュールの実行権を取得し、モジュールの実行をさせるようにしている。
このように、本実施形態のメールシステムによれば、電子メールを受け付けたメールサーバ(例えばメールサーバS1)が、その電子メールの各モジュールの実行権を取得し、各モジュールを実行することもできるし、電子メールを受け付けたメールサーバ(例えばメールサーバS1)とは異なるメールサーバ(例えばメールサーバS2)が、その電子メールの各モジュールの実行権を取得し、各モジュールを実行することもできる。したがって、仮に一方のメールサーバが停止した場合であっても、他方のメールサーバが、電子メールについて各モジュールの実行処理を継続して行うことができ、可用性のあるメールシステムを提供することができる。
(5)配送処理
本実施形態では、メールサーバS1、S2が、データベースDB1、DB2に格納されている配送命令51を参照し、配送命令51が有効に設定されている電子メールについて、その電子メールを配送させる処理を行っている。なお、本実施形態の配送命令51の有効・無効は、初期値としていずれかを設定してもよいし、モジュール1、2、3のうち、少なくとも1つのモジュールの実行中に設定するようにしてもよい。例えば、ウイルスを検出するモジュール1の処理において、ウイルスがないと判断された電子メールについて、配送命令51を有効に設定し、ウイルスがあると判断された電子メールについて配送命令51を無効に設定する。また、配送命令の有効・無効は、例えば、配送フラグを用いて設定する。具体的には、配送命令が有効である場合に、配送フラグを真に設定し、配送命令が無効である場合に、配送フラグを偽に設定する。
そして、本実施形態では、メールサーバS1、S2が、配送ステータス52が「1」(未配送)であって、配送命令51が有効に設定されている電子メールを検索し、検索された当該電子メールを配送先メールサーバに配送させる処理を行っている。
例えば、配送命令51が有効に設定され、配送ステータス52が「1」(未配送)である電子メールAについての配送処理について説明する。
まず、配送命令51が有効であり、配送ステータス52が「1」(未配送)である電子メールを、メールサーバS1、S2が検索する。そして、例えば、メールサーバS1が、メールサーバS2よりも先に、電子メールAを検索したとする。すると、メールサーバS1が、電子メールAを配送先メールサーバに配送させる処理を行う。本実施形態では、メールサーバS1が、電子メールAについて配送処理を開始する前に、電子メールAの配送ステータス52を「2」(配送中)に更新し、その後、電子メールAについて配送処理を開始させる。このように、配送ステータス52を、配送処理開始前に更新する理由は、モジュールの実行と同様に、一方のメールサーバS1の配送中に、他方のメールサーバS2が電子メールAを検索して配送処理を行うことを回避するためである。そして、メールサーバS1において、配送処理が完了すると、メールサーバS1が、電子メールAについて、配送ステータス52を「3」(配送完了)に更新する。
また、本実施形態では、重複処理を回避するために、複数のメールサーバS1、S2のうち、いずれか1つのメールサーバが、配送処理を行うように制御する。例えば、本実施形態では、配送命令が有効であって、未配送の電子メールを最先に検索したメールサーバが、配送権を取得し、その電子メールの配送処理を行うようにしている。
このように、本実施形態のメールシステムによれば、電子メールを受け付けたメールサーバ(例えばメールサーバS1)が、その電子メールを配送する権利を取得し、配送処理を行うこともできるし、電子メールを受け付けたメールサーバ(例えばメールサーバS1)とは異なるメールサーバ(例えばメールサーバS2)が、その電子メールを配送する権利を取得し、配送処理を行うこともできる。したがって、仮に一方のメールサーバが停止した場合であっても、他方のメールサーバが配送処理を継続して行うことができ、可用性のあるメールシステムを提供することができる。
(6)重複処理を回避させる手法
また、本実施形態では、重複処理を回避するために、複数のメールサーバS1、S2のうち、未実行のモジュールを最先に検索したメールサーバが、モジュールの実行権を取得し、モジュールの実行をさせるようにし、また、複数のメールサーバS1、S2のうち、配送命令が有効であって、未配送の電子メールを最先に検索したメールサーバが、配送権を取得し、その電子メールの配送処理を行うようにしている。
より詳しく説明すると、本実施形態では、更新識別情報MIDを参照することによって、複数のメールサーバS1、S2のうち、モジュールの実行権の有するメールサーバ、或いは、配送権を有するメールサーバが決定される。
図7(A)は、配送命令51が有効であって、配送ステータス52が「1」(未配送)である電子メールAについて、各メールサーバが配送権を有するか否かを判断する手法を説明するための図である。例えば、メールサーバS1が、配送命令51が有効であって、配送ステータス52が「1」(未配送)である電子メールAを検索すると、電子メールAを検索した時点(T1時点)において、更新識別情報MIDを取得する。
そして、メールサーバS1は、データベースDB1、DB2にアクセスして配送ステータス52を、「1」(未配送)から「2」(配送中)に更新要求する際(T3時点)において、検索時(T1時点)の更新識別情報MIDと、配送ステータス52の更新要求時(T3時点)の更新識別情報MIDとが一致することを条件に、電子メールAの更新識別情報MIDを、検索時(T1時点)の更新識別情報MID(MID=1)とは異なる更新識別情報MID(例えば、MID=2)に更新すると共に、配送ステータス52を「1」(未配送)から「2」(配送中)に更新する要求をデータベースDB1、DB2に対して行う。
そして、検索時(T1時点)の更新識別情報MIDと、配送ステータス52の更新要求時(T3時点)の更新識別情報MIDとが一致する場合には、データベースDB1、DB2において、更新識別情報MID及び配送ステータス52の更新処理に成功する。メールサーバS1は、データベースDB1、DB2から更新成功の情報を取得した場合に、配送権を有すると判断し、電子メールAを配送する処理を行う。
一方、検索時(T1時点)の更新識別情報MIDと、配送ステータス52の更新要求時(T3時点)の更新識別情報MIDとが一致しない場合には、データベースDB1、DB2において、更新識別情報MID及び配送ステータス52の更新処理に失敗する。メールサーバS1は、データベースDB1、DB2から更新失敗(エラー)の情報を取得した場合に、配送権を有しないと判断し、電子メールAの配送処理を行わないように制御する。
図7(A)の例では、メールサーバS1は、検索時(T1時点)の更新識別情報MID(MID=1)と、配送ステータス52の更新要求時(T3時点)の更新識別情報MID(MID=1)とが一致するので、更新識別情報MID及び配送ステータス52の更新に成功し、配メールサーバS1は、電子メールAについて配送処理を開始させる処理を行う。
また、メールサーバS2の観点で検討すると、メールサーバS2は、T1時点の直後のT2時点において、配送命令51が有効であって、配送ステータス52が「1」(未配送)である電子メールAを検索すると、電子メールAを検索した時点(T2時点)において、更新識別情報MIDを取得する。
そして、メールサーバS2は、データベースDB1、DB2にアクセスして配送ステータス52を、「1」(未配送)から「2」(配送中)に更新要求する際(T4時点)において、検索時(T2時点)の更新識別情報MIDと、配送ステータス52の更新要求時(T4時点)の更新識別情報MIDとが一致することを条件に、電子メールAの更新識別情報MIDを、検索時(T2時点)の更新識別情報MID(MID=1)とは異なる更新識別情報MID(例えば、MID=2)に更新すると共に、配送ステータス52を「1」(未配送)から「2」(配送中)に更新する要求をデータベースDB1、DB2に対して行う。
しかし、ここでデータベースDB1、DB2において、T3時点でメールサーバS1によって、更新識別情報MIDの値が1から2へ更新されているため、電子メールAが検索された時点(T2時点)の更新識別情報MID(MID=1)と、ステータス更新要求時(T4時点)の更新識別情報MID(MID=2)とが不一致となり、メールサーバS2は、データベースDB1、DB2から更新失敗の情報を取得する。そして、メールサーバS2は、更新失敗の情報を取得すると、電子メールAについて配送権を有しないと判断し、配送処理を行わないように制御する。
このように、本実施形態では、配送ステータス52の更新と同時に、更新識別情報MIDを更新する処理を行うので、例えば、他のメールサーバS2において、極僅かな差で、メールサーバS1との配送重複処理が行われてしまうことを回避することができる。
また、図7(B)に示すように、メールサーバS1において、電子メールAの配送処理が完了した場合にも、更新識別情報MIDを用いて配送ステータス52の値を更新する処理を行う。例えば、メールサーバS1は、配送ステータス52を「2」(配送中)から、「3」(配送完了)に更新する要求を、データベースDB1、DB2に対して行う。
かかる場合に、電子メールAに対する直前に更新した時点(T3時点)の更新識別情報MIDと、配送ステータス52を「2」(配送中)から「3」(配送完了)に更新要求する時点(T7時点)の更新識別情報MIDとが一致することを条件に、電子メールAの更新識別情報MIDを、直前の更新時(T3時点)の更新識別情報MID(MID=2)とは異なる更新識別情報MID(例えば、MID=3)に更新すると共に、配送ステータス52を「2」(配送中)から「3」(配送完了)に更新する要求をデータベースDB1、DB2に対して行う。
図7(B)の例では、メールサーバS1は、T3時点の更新識別情報MIDと、更新要求時(T7時点)の更新識別情報MIDとが一致する(MID=2で一致する)ので、電子メールAの更新識別情報MIDを、直前の更新時(T3時点)の更新識別情報MID(MID=2)とは異なる更新識別情報MID(例えば、MID=3)に更新すると共に、配送ステータス52を、「2」(配送中)から、「3」(配送完了)に更新することができる。
このようにすれば、複数のメールサーバS1、S2が同一のデータベースDB1、DB2を共有する場合であっても、デッドロック等の問題を回避することができる。
なお、本実施形態では、配送ステータス52だけでなく、経過ステータス44や、モジュール1、2、3のステータス41、42、43を更新する度に、更新識別情報MIDを用いて、メールサーバS1、S2が、更新権(モジュールの実行権、配送権)を有するか否かを判断して、メールシステム全体として、重複処理を回避させたり、矛盾を生じさせないように制御してもよい。
(7)エラーの検索
本実施形態では、モジュール1のステータス41が「2」(実行中)に更新された時点から、所定期間内にモジュール1の実行が完了しない場合、つまり、所定期間内にモジュール1のステータス41が「3」(実行完了)に更新されていない場合には、モジュール1のステータス41を「1」(未実行)に更新する処理を行っている。同様に、モジュール2のステータス42、モジュール3のステータス43についても、モジュールのステータスが「2」(実行中)に更新された時点から、所定期間内にモジュールのステータスが「3」(実行完了)に更新されていない場合には、モジュールのステータスを「1」(未実行)に更新する処理を行っている。また、配送ステータス52が「2」(配送中)に更新された時点から、所定期間内に配送処理が完了しない場合、つまり、配送ステータス52が「2」(配送中)に更新された時点から、所定期間内に配送ステータス52が「3」(配送完了)に更新されていない場合には、配送ステータス52を「1」(未配送)に更新する処理を行っている。
例えば、図7(C)に示すように、配送ステータス52を「2」(配送中)に更新した時点から所定期間(10分)内に、配送ステータス52が「3」(配送完了)に更新されない電子メールを、メールサーバS1、S2が検索する。つまり、メールサーバS1、S2は、データベースに格納されている電子メールのうち、配送ステータス52が「2」(配送中)に更新された時点から所定期間経過しても未だに配送ステータス52が「2」(配送中)である電子メールを検索する。そして、例えば、メールサーバS2が、メールサーバS1よりも先に、配送ステータス52を「2」(配送中)に更新した時点から所定期間内に、配送ステータス52が「3」(配送完了)に更新されていない電子メールAを検索すると、メールサーバS2が、電子メールAの配送ステータス52を「1」(未配送)に更新する処理を行う。このようにすれば、メールサーバS1が、電子メールAの配送途中で停止した場合であっても、電子メールAは、再度、未配送の電子メールとして検索対象となり、配送される機会を与えられることになる。
(8)削除処理
本実施形態では、各モジュールのステータス41、42、43が「3」(実行完了)であり、配送命令51が有効であって配送ステータス52が「3」(配送完了)である電子メール、及び、各モジュールのステータス41、42、43が「3」(実行完了)であり、配送命令51が無効である電子メールを検索し、検索された電子メールを、データベースDB1、DB2から削除する処理を行う。つまり、削除対象として検索された電子メールは、全てのジョブが完了したので、データベースDB1、DB2から電子メールと、当該電子メールに対応する各モジュールのステータス41、42、43、経過ステータス44、配送ステータス52を削除する。
3.メールサーバ間におけるデータを共有する手法
本実施形態では、データベースDB1、DB2に電子メールを格納しているので、メールサーバS1、S2間で、ヘッダ情報を書き換えずに情報を共有することができる。例えば、通常、メールサーバ間で電子メールの配送、受け取りを行う場合に、メールサーバ間で、特定情報を共有させる場合には、電子メールのヘッダ部分に、その特定情報を記録する必要があった。しかし、本実施形態のメールシステムによれば、メールサーバS1、S2において、特定情報を共有する場合には、その特定情報をデータベースDB1、DB2に格納すればよいので、電子メールのヘッダ部分に特定情報を記録することなく、特定情報をメールサーバS1、S2間で共有することができる。
4.フローチャート
本実施形態のメールサーバS1、S2の処理の流れを図8を用いて説明する。まず、未実行のジョブを検索する(ステップS1)。例えば、データベースに格納されている1又は複数の電子メールそれぞれについて、各電子メールのステータス情報、配送命令に基づき、未実行のジョブを有する電子メールを検索する。例えば、ジョブとは、電子メールに対してモジュールを実行させる処理、電子メールを配送させる処理、電子メールをデータベースDB1、DB2から削除させる処理等である。
具体的に説明すると、経過ステータス44が「1」(モジュール1、2、3が未実行)である電子メールは、モジュール1のジョブが未実行であるとして検索される。また、経過ステータス44が「2」(モジュール1の実行完了)であって、モジュール2のステータス42が「1」(未実行)である電子メールは、モジュール2のジョブが未実行であるとして検索される。また、経過ステータス44が「3」(モジュール2の実行完了)であって、モジュール3のステータス43が「1」(未実行)である電子メールは、モジュール3のジョブが未実行であるとして検索される。
また、配送命令51が有効であって、配送ステータス52が「1」(未配送)である場合には、電子メールの配送ジョブが未実行であるとして検索される。なお、本実施形態では、経過ステータス44、モジュールのステータス41、42、43の値に関わらず、配送命令51が有効であって、配送ステータス52が「1」(未配送)である電子メールは、配送が未実行であるとして検索される。
そして、未実行のジョブがあるか否かを判断し(ステップS2)、未実行のジョブがあると判断されると(ステップS2のYes)、次の処理に進む。一方、未実行のジョブがないと判断されると(ステップS2のNo)、処理を終了する。
そして、検索されたジョブを実行する(ステップS3)。例えば、未実行のモジュール1の電子メールAが検索された場合には、当該電子メールAについて、モジュール1を実行させる処理を行う。そして、検索された全てのジョブが終了したか否かを判断し(ステップS4)、検索された全てのジョブが終了した場合(ステップS4のYes)、処理を終了する。検索された全てのジョブが終了していない場合(ステップS4のNo)、ステップS3に戻り、終了していないジョブを実行する処理を行う。そして、本実施形態では、処理終了後、再度ステップS1に戻り、永続的に繰り返し処理を行っている。
5.応用例
(1)本実施形態のメールシステムの応用例として、例えば、メールサーバS1、S2が、受け付けた電子メールをデータベースDB1、DB2に格納し、メールサーバS1、S2が、データベースDB1、DB2に格納されている電子メールを取得して配送する処理を行うようにしてもよい。つまり、各メールサーバが、モジュールを実行させることなく、電子メールの受け付け処理と、受け付けた電子メールをデータベースDB1、DB2に格納する処理、データベースDB1、DB2に格納されている電子メールを取得して配送処理を行うようにする。かかる場合には、一方のメールサーバS1が格納した電子メールAを、他方のメールサーバS2が取得して電子メールAを配送することが可能であるので、仮に、一方のメールサーバS1が停止した場合であっても、メールサーバS2が、メールサーバS1が受け付けた電子メールを、配送することができ、メールシステム全体として、電子メールの受け付け、配送のサービスを停止させないようにすることができる。
(2)本実施形態のメールシステムは、未配送の電子メールとして検索された電子メールが、他のメールサーバによって配送されている電子メールのエンベロープの宛先と、同一のエンベロープの宛先が指定されている電子メールである場合には、検索された電子メールを配送させないようにしてもよい。
例えば、メールサーバS1が暗号化されたファイルを添付した電子メール(以下、「第1の電子メール」という。)を、第1の電子メールのエンベロープの宛先に基づいて、配送する処理を行い、メールサーバS2が、第1の電子メールのエンベロープの宛先と、同一のエンベロープの宛先であって、第1の電子メールに添付した暗号化ファイルの復号化パスワードを通知するための電子メール(以下、「第2の電子メール」という)を配送する処理を行う場合がある。
かかる場合に、メールサーバS1が、添付ファイルの暗号化に処理時間を要するために、メールサーバS1が第1の電子メールを配送完了する前に、メールサーバS2が第2の電子メールを配送完了してしまう場合がある。つまり、同一の宛先に対して複数の電子メールを配送する際に、配送開始順と配送完了順とが異なってしまう場合がある。このように、配送開始順と配送完了順が異なってしまうと、例えば、本来、第1の電子メールを第2の電子メールよりも先に受信するべき受信者が、第2の電子メールを受信した後に、第1の電子メールを受信することになってしまい混乱してしまうおそれがある。
そこで、本実施形態のメールシステムのメールサーバS1、S2は、未配送の電子メールを検索した場合に、その電子メールのエンベロープの宛先と同一のエンベロープの宛先が指定されている他の電子メールを検索し、検索された他の電子メールの配送ステータス52が「2」(配送中)である場合には、未配送の電子メールを配送しないように制御する。
例えば、メールサーバS2は、未配送の第2の電子メールを検索した場合に、第2の電子メールのエンベロープの宛先と同一のエンベロープの宛先が指定されている電子メールを検索し、第1の電子メールが検索されたとする。すると、メールサーバS2は、検索された第1の電子メールの配送ステータス52を参照することによって、第1の電子メールの配送ステータス52が「2」(配送中)であると判断すると、第2の電子メールを配送しないように制御する。つまり、第2の電子メールの配送ステータス52を「1」(未配送)のまま、この第2の電子メールの配送ジョブを無視し、検索された他のジョブの実行処理に移行する。なお、無視された第2の電子メールは、配送ステータス52が「1」(未配送)であり、メールサーバS1、S2のジョブ検索対象であるので、配送される機会は失われない。
このようにすれば、例えば、メールサーバS1が、添付ファイルの暗号化に処理時間を要したとしても、メールサーバS2は、メールサーバS1が第1の電子メールを配送中は、第2の電子メールの配送処理を行わないように制御するので、第1の電子メールの配送後に、第2の電子メールが配送されることになる。つまり、同一の宛先に対して複数の電子メールを配送する場合でも、配送開始順と配送完了順とを同じ順にすることができる。
(3)本実施形態のメールシステムは、他のメールサーバによって配送されている電子メールのエンベロープの宛先のドメインと、同一のエンベロープの宛先のドメインが指定されている電子メールについて、配送を制御するようにしてもよい。このようにすれば、例えば、上記応用例(2)と同様に、同一のドメイン宛に対して複数の電子メールを配送する際に、配送開始順と配送完了順とが異なってしまう問題を解決でき、さらに、あるドメイン宛の配送がスローダウンするような問題が発生した場合でも、すべてのメールサーバがそのドメイン宛の配送を行うことがないので、メールシステム全体への影響を小さくすることができる。
つまり、本実施形態のメールシステムのメールサーバS1、S2は、未配送の電子メールを検索した場合に、その電子メールのエンベロープの宛先のドメインと同一のドメインを有するエンベロープの宛先が指定されている他の電子メールを検索し、検索された他の電子メールの配送ステータス52が「2」(配送中)である場合には、未配送の電子メールを配送しないように制御する。
例えば、メールサーバS2は、未配送の第3の電子メールを検索した場合に、第3の電子メールのエンベロープの宛先のドメインと同一のドメインを有するエンベロープの宛先が指定されている電子メールを検索し、第1の電子メールが検索されたとする。すると、メールサーバS2は、検索された第1の電子メールの配送ステータス52を参照することによって、第1の電子メールの配送ステータス52が「2」(配送中)であると判断すると、第3の電子メールを配送しないように制御する。つまり、第3の電子メールの配送ステータス52を「1」(未配送)のまま、この第3の電子メールの配送ジョブを無視し、検索された他のジョブの実行処理に移行する。なお、無視された第3の電子メールは、配送ステータス52が「1」(未配送)であり、メールサーバS1、S2のジョブ検索対象であるので、配送される機会は失われない。
(4)本実施形態のメールシステムでは、配送命令が有効に設定された電子メールについて、配送処理を行うように制御しているが、配送命令に関係なく、データベースDB1、DB2に格納されている全ての電子メールを配送するようにしてもよい。
(5)本実施形態のメールシステムでは、メールサーバS1、S2のうち、モジュールのステータス41、42、43が「4」(実行エラー)である電子メールを最先に検索したメールサーバが、検索された実行エラーの電子メールについて、再度、モジュールの実行を行わせるようにしてもよい。
また、本実施形態のメールシステムでは、メールサーバS1、S2のうち、配送ステータス52が「4」(配送エラー)である電子メールを最先に検索したメールサーバが、検索された配送エラーの電子メールについて、再度、配送処理を行わせるようにしてもよい。
本実施形態のメールシステムのメールサーバ。 本実施形態のメールシステムのデータベース。 本実施形態のメールシステムのネットワーク図。 本実施形態における、電子メールのジョブの一例を示す図。 本実施形態における、電子メールのジョブの一例を示す図。 本実施形態のステータス情報の説明図。 本実施形態の更新識別情報を用いた処理を説明するための図。 本実施形態の更新識別情報を用いた処理を説明するための図。 本実施形態のエラーを検出するための図。 本実施形態のメールサーバのフローチャート。
符号の説明
S1、S2 メールサーバ、DB1、DB2 データベース、20、21 端末、
30 電子メール格納領域、
40 モジュール情報格納領域、
41 モジュール1のステータス、42 モジュール2のステータス、
43 モジュール3のステータス、44 経過ステータス、
50 配送情報格納領域、51 配送命令、
52 配送ステータス、53 配送先メールサーバ、
100 処理部、111 受け付け部、112 格納部、113 取得部、
114 判断部、115 更新部、116 検索部、117 モジュール実行部、
117a モジュール1実行部、117b モジュール2実行部、
117c モジュール3実行部、118 配送部、119 削除部、
120 データベース制御部、170 記憶部

Claims (3)

  1. 複数のメールサーバと、当該複数のメールサーバが共有するデータベースとによって構成されるメールシステムであって、
    前記各メールサーバが、
    電子メールを受け付ける受け付け部と、
    受け付けた電子メールと、当該電子メールの配送状況とを、前記データベースに格納する処理を行う格納部と、
    前記データベースに格納されている電子メールのうち、配送状況が未配送である電子メールを特定し、特定された電子メールの配送状況を、配送中を示す情報に更新する処理を行う更新部と、
    配送状況が配送中を示す情報に更新された前記電子メールを、配送する処理を行う配送部と
    前記データベースに格納されている電子メールのうち、配送状況が配送中を示す情報に更新された時点から所定期間内に配送完了に更新されていない電子メールを検索する検索部と、を含み、
    前記更新部が、
    配送処理が完了した電子メールの配送状況を、配送完了に更新する処理と、
    検索された前記電子メールの配送状況を、未配送に更新する処理とを行うことを特徴とするメールシステム。
  2. 請求項1において、
    前記各メールサーバは、前記電子メールに対してモジュールの実行処理を行った後に、前記電子メールを配送する処理を行い、
    前記データベースに格納されている電子メールのうち、モジュール実行状況が未実行である電子メールを特定し、特定された電子メールのモジュール実行状況を、実行中を示す情報に更新する処理を行うモジュール実行状況更新部と、
    前記配送部が前記電子メールを配送する処理を行う前に、モジュール実行状況が実行中を示す情報に更新された前記電子メールに対して、所定のモジュール処理を実行するモジ
    ュール実行部と、
    前記データベースに格納されている電子メールのうち、モジュール実行状況が実行中を示す情報に更新された時点から所定期間内に実行完了に更新されていない電子メールを検索するモジュール未実行メール検索部と、をさらに含み、
    前記モジュール実行状況更新部が、
    所定のモジュール処理の実行が完了した電子メールのモジュール実行状況を、実行完了に更新する処理と、
    モジュール未実行メール検索部によって検索された前記電子メールのモジュール実行状況を未実行に更新する処理と、を行うことを特徴とするメールシステム。
  3. 請求項2において
    前記格納部は、
    前記受け付けた電子メールの配送命令を前記データベースに格納する処理を行い、
    前記モジュール実行部は、
    前記電子メールに対する所定のモジュール処理の実行結果に応じて、前記電子メールの前記配送命令を有効に設定し、
    前記更新部は、
    前記データベースに格納されている電子メールのうち、前記配送命令が有効であって、前記配送状況が未配送である電子メールを特定し、特定された電子メールの配送状況を、配送中を示す情報に更新する処理を行うことを特徴とするメールシステム。
JP2008274678A 2008-10-24 2008-10-24 メールシステム Active JP5280148B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008274678A JP5280148B2 (ja) 2008-10-24 2008-10-24 メールシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008274678A JP5280148B2 (ja) 2008-10-24 2008-10-24 メールシステム

Publications (2)

Publication Number Publication Date
JP2010103850A JP2010103850A (ja) 2010-05-06
JP5280148B2 true JP5280148B2 (ja) 2013-09-04

Family

ID=42294061

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008274678A Active JP5280148B2 (ja) 2008-10-24 2008-10-24 メールシステム

Country Status (1)

Country Link
JP (1) JP5280148B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5545141B2 (ja) * 2010-09-09 2014-07-09 富士ゼロックス株式会社 データ中継システム、中継装置、およびプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04280534A (ja) * 1991-03-08 1992-10-06 Fujitsu Ltd メールヘッダアクセス方式
JP2524450B2 (ja) * 1992-04-09 1996-08-14 株式会社アイテイーエル 検索システム
JP2000020376A (ja) * 1998-06-30 2000-01-21 Nec Software Ltd トランザクションシステムの排他制御の方法及びシステム
JP4107019B2 (ja) * 2002-09-04 2008-06-25 日本電気株式会社 排他制御装置および排他制御方法
JP3765488B2 (ja) * 2002-09-13 2006-04-12 村田機械株式会社 メールサーバ
JP2005071158A (ja) * 2003-08-26 2005-03-17 Hitachi Software Eng Co Ltd ファイル排他制御方法
JP2006350980A (ja) * 2005-06-15 2006-12-28 Kei Tekku:Kk 並列接続したメールシステムをクラスタ化する機能を備えたメールシステム

Also Published As

Publication number Publication date
JP2010103850A (ja) 2010-05-06

Similar Documents

Publication Publication Date Title
US8429233B2 (en) Method and system for journaling electronic messages
CN101325561B (zh) 一种处理电子邮件的方法、装置及系统
JP4794143B2 (ja) 通知ボンドを使用してキャッシュオブジェクトを管理するためのシステムおよび方法
US9130894B2 (en) Delivering messages in a communication system
US20070067354A1 (en) Productivity suite to line of business synchronization mechanism
CN107656695B (zh) 一种数据存储、删除方法、装置及分布式存储系统
US9069632B2 (en) Message processing
US7453865B2 (en) Communication channels in a storage network
JP5280148B2 (ja) メールシステム
US7954112B2 (en) Automatic recovery from failures of messages within a data interchange
US8805942B2 (en) Storing and partitioning email messaging data
JP2019212223A (ja) 情報処理システム、およびその制御方法
US11438295B1 (en) Efficient backup and recovery of electronic mail objects
JP4616035B2 (ja) サーバ負荷分散プログラム,装置および方法
WO2020153053A1 (ja) データベース管理サービス提供システム
JP4910542B2 (ja) Sipメッセージ引渡プログラム
JP5026130B2 (ja) メール管理方法およびメール管理システム並びにメール管理プログラム
JP6583934B2 (ja) メールサーバ装置、メール管理方法、及びメール管理プログラム
WO2007035680A1 (en) Productivity suite to line of business synchronization mechanism
JP4223505B2 (ja) メールサーバ移行支援プログラムおよびメールサーバ移行支援装置
JP2006352641A (ja) ドメイン情報記憶装置、ドメイン情報記憶方法およびドメイン情報記憶プログラム
JP4844615B2 (ja) 間欠接続環境下通知システム、間欠接続環境下通知方法、接続元情報処理装置、及び接続元装置用プログラム
WO2022003911A1 (ja) ワークフロー整合性確保装置、ワークフロー整合性確保方法、および、ワークフロー整合性確保プログラム
HK1122430B (en) Method, apparatus and system for processing electronic mail
JP2003132164A (ja) 保守契約に基づく保守システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110930

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130515

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130522

R150 Certificate of patent or registration of utility model

Ref document number: 5280148

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250