IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特表2024-522611電子メール配信システム用のメッセージ転送エージェントアーキテクチャ
<>
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図1
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図2
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図3
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図4
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図5
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図6
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図7
  • 特表-電子メール配信システム用のメッセージ転送エージェントアーキテクチャ 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-06-21
(54)【発明の名称】電子メール配信システム用のメッセージ転送エージェントアーキテクチャ
(51)【国際特許分類】
   H04L 51/00 20220101AFI20240614BHJP
   H04L 67/563 20220101ALI20240614BHJP
   H04L 67/141 20220101ALI20240614BHJP
【FI】
H04L51/00
H04L67/563
H04L67/141
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023575777
(86)(22)【出願日】2021-06-14
(85)【翻訳文提出日】2023-12-19
(86)【国際出願番号】 US2021037180
(87)【国際公開番号】W WO2022260684
(87)【国際公開日】2022-12-15
(31)【優先権主張番号】17/345,520
(32)【優先日】2021-06-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】フリード,エドウィン・アール
(57)【要約】
MTAとプロキシサーバを使用して、高速で信頼性の高い管理された電子メール配信サービスを提供する電子メールメッセージ配信システムについて説明する。電子メールメッセージは、処理のためにMTAによって選択される。MTAは、電子メールメッセージに関連付けられた送信者と対象受信者とを決定する。次に、MTAは、送信者に基づいて電子メールメッセージに使用可能なソースインターネットプロトコルアドレスのプールを識別し、そのプールから特定のソースIPアドレスを選択する。次に、MTAは、選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別し、特定のソースIPアドレスと宛先IPアドレスとを含む情報を特定のプロキシサーバに通信する。次に、MTAは、特定のソースIPアドレスと宛先IPアドレスとの間にプロキシサーバによって確立された接続を使用して、電子メールメッセージを宛先IPアドレスに送信する。
【特許請求の範囲】
【請求項1】
電子メール配信サービスを提供する電子メールメッセージ配信システムが、メッセージ転送エージェント(MTA)およびプロキシサーバを実行するステップと、
前記MTAが、メッセージキューから処理する第1の電子メールメッセージを選択するステップと、を含み、前記メッセージキューは、複数の送信者から受信した複数の電子メールメッセージを含み、前記複数の送信者は前記電子メール配信サービスの複数の加入者に対応し、
前記MTAが、前記第1の電子メールメッセージに関連付けられた送信者を決定するステップと、
前記MTAが、前記第1の電子メールメッセージの受信者を決定するステップと、
前記MTAが、前記第1の電子メールメッセージに対して決定された前記送信者に基づいて、前記第1の電子メールメッセージのソースIPアドレスとして使用可能なIPアドレスを含む複数のソースインターネットプロトコル(IP)アドレスを識別するステップと、
前記MTAが、前記複数のソースIPアドレスから特定のソースIPアドレスを選択するステップと、
前記MTAが、前記電子メールメッセージの前記受信者の宛先IPアドレスを決定するステップと、
前記MTAが、および1つまたは複数のプロキシサーバのセットから、前記選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別するステップと、
前記MTAが前記特定のプロキシサーバに、前記特定のソースIPアドレスと前記宛先IPアドレスとを含む情報を通信するステップと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された接続を使用して、前記第1の電子メールメッセージを前記宛先IPアドレスに送信するステップと、を含む、方法。
【請求項2】
前記MTAが、前記第1の電子メールメッセージの前記送信者を決定するステップは、前記MTAが、前記第1の電子メールメッセージの送信を許可されている、前記第1の電子メールメッセージの前記送信者に関連付けられたユーザを決定するステップを含み、前記送信者に関連付けられた前記ユーザは、前記第1の電子メールメッセージの「差出人」フィールドに少なくとも部分的に基づいて決定される、請求項1に記載の方法。
【請求項3】
前記第1の電子メールメッセージの前記受信者は、前記第1の電子メールメッセージの「宛先」フィールドに少なくとも部分的に基づいて決定される、請求項1に記載の方法。
【請求項4】
前記MTAが、前記複数のソースIPアドレスから前記特定のソースIPアドレスを選択するステップは、前記MTAが、前記複数のソースIPアドレスからアクティブなソースIPアドレスのセットを決定するステップと、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択するステップとを含む、請求項1に記載の方法。
【請求項5】
前記MTAが、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択するための選択技術を使用するステップをさらに含む、請求項4に記載の方法。
【請求項6】
前記送信者の前記複数のソースIPアドレスの第1のセットが、プロキシサーバの前記セット内の第1のプロキシサーバに割り当てられ、前記送信者の前記複数のソースIPアドレスの第2のセットは、プロキシサーバの前記セット内の第2のプロキシサーバに割り当てられる、請求項1に記載の方法。
【請求項7】
プロキシサーバの前記セット内の第1のプロキシサーバは、ソースIPアドレスのセットを扱うように構成されており、前記セット内の第1のソースIPアドレスは、前記複数の送信者のうちの第1の送信者に関連付けられ、前記セット内の第2のソースIPアドレスは、前記複数の送信者のうちの第2の送信者に関連付けられ、前記第1の送信者は前記第2の送信者とは異なる、請求項1に記載の方法。
【請求項8】
前記MTAが、前記送信者に関連付けられた前記複数の電子メールメッセージから電子メールメッセージのサブセットを識別するステップと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された前記接続を使用して、電子メールメッセージの前記サブセットを前記宛先IPアドレスに送信するステップと、をさらに含む、請求項1に記載の方法。
【請求項9】
メッセージの前記サブセット内のメッセージの数は、前記受信者のドメインに関連付けられたメッセージ制限に少なくとも部分的に基づいて決定され、前記メッセージ制限は、前記プロキシサーバによって確立された前記接続を使用して送信できるメッセージの数を指定する、請求項8に記載の方法。
【請求項10】
前記MTAが前記宛先IPアドレスに前記第1の電子メールメッセージを送信するステップは、前記特定のソースIPアドレスと前記宛先IPアドレスとの間の前記接続が前記プロキシサーバによって正常に確立されたことを示すメッセージを前記プロキシサーバから受信することを含む、請求項1に記載の方法。
【請求項11】
前記プロキシサーバは、伝送制御プロトコル(TCP)プロキシサーバである、請求項1に記載の方法。
【請求項12】
前記MTAおよび前記プロキシサーバは単一のコンピュータシステム上に実装される、請求項1に記載の方法。
【請求項13】
電子メール配信サービスを提供する電子メール配信システムであって、
メモリと、
処理を実行するように構成された1つまたは複数のプロセッサと、を含み、前記処理は、
前記電子メール配信システムが、メッセージ転送エージェント(MTA)とプロキシサーバとを実行することと、
前記MTAが、メッセージキューから処理する第1の電子メールメッセージを選択することと、を含み、前記メッセージキューは、複数の送信者から受信した複数の電子メールメッセージを含み、前記複数の送信者は前記電子メール配信サービスの複数の加入者に対応し、
前記MTAが、前記第1の電子メールメッセージに関連付けられた送信者を決定することと、
前記MTAが、前記第1の電子メールメッセージの受信者を決定することと、
前記MTAが、前記第1の電子メールメッセージに対して決定された前記送信者に基づいて、前記第1の電子メールメッセージのソースインターネットプロトコル(IP)アドレスとして使用可能なIPアドレスを含む複数のソースIPアドレスを識別することと、
前記MTAが、前記複数のソースIPアドレスから特定のソースIPアドレスを選択することと、
前記MTAが、前記電子メールメッセージの前記受信者の宛先IPアドレスを決定することと、
前記MTAが、1つまたは複数のプロキシサーバのセットから、前記選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別することと、
前記MTAが前記特定のプロキシサーバに、前記特定のソースIPアドレスと前記宛先IPアドレスとを含む情報を通信することと、および
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された接続を使用して、前記第1の電子メールメッセージを前記宛先IPアドレスに送信することと、を含む、電子メール配信システム。
【請求項14】
前記MTAが、前記複数のソースIPアドレスから前記特定のソースIPアドレスを選択することは、前記MTAが、前記複数のソースIPアドレスからアクティブなソースIPアドレスのセットを決定することと、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択することとを含む、請求項13に記載のシステム。
【請求項15】
前記送信者の前記複数のソースIPアドレスの第1のセットが、プロキシサーバの前記セット内の第1のプロキシサーバに割り当てられ、前記送信者の前記複数のソースIPアドレスの第2のセットは、プロキシサーバの前記セット内の第2のプロキシサーバに割り当てられる、請求項13に記載のシステム。
【請求項16】
プロキシサーバの前記セット内の第1のプロキシサーバは、ソースIPアドレスのセットを扱うように構成されており、前記セット内の第1のソースIPアドレスは前記複数の送信者のうちの第1の送信者に関連付けられ、前記セット内の第2のソースIPアドレスは前記複数の送信者のうちの第2の送信者に関連付けられ、前記第1の送信者は前記第2の送信者とは異なる、請求項13に記載のシステム。
【請求項17】
前記MTAが、前記第1の電子メールメッセージを前記宛先IPアドレスに送信することは、前記特定のソースIPアドレスと前記宛先IPアドレスとの間の前記接続が前記プロキシサーバによって正常に確立されたことを示すメッセージを前記プロキシサーバから受信することを含む、請求項13に記載のシステム。
【請求項18】
プログラムコードが記憶された非一時的なコンピュータ可読媒体であって、動作を実行するために1つまたは複数の処理装置によって実行可能な前記プログラムコードは、
電子メール配信サービスが、メッセージ転送エージェント(MTA)とプロキシサーバを実行することと、
前記MTAが、メッセージキューから処理する第1の電子メールメッセージを選択することと、を含み、前記メッセージキューは、複数の送信者から受信した複数の電子メールメッセージを含み、前記複数の送信者は前記電子メール配信サービスの複数の加入者に対応し、
前記MTAが、前記第1の電子メールメッセージに関連付けられた送信者を決定することと、
前記MTAが、前記第1の電子メールメッセージの受信者を決定することと、
前記MTAが、前記第1の電子メールメッセージに対して決定された前記送信者に基づいて、前記第1の電子メールメッセージのソースIPアドレスとして使用可能なIPアドレスを含む複数のソースインターネットプロトコル(IP)アドレスを識別することと、
前記MTAが、前記複数のソースIPアドレスから特定のソースIPアドレスを選択することと、
前記MTAが、前記電子メールメッセージの前記受信者の宛先IPアドレスを決定することと、
前記MTAが、1つまたは複数のプロキシサーバのセットから、前記選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別することと、
前記MTAが前記特定のプロキシサーバに、前記特定のソースIPアドレスと前記宛先IPアドレスを含む情報を通信することと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された接続を使用して、前記第1の電子メールメッセージを前記宛先IPアドレスに送信することと、を含む、非一時的なコンピュータ可読媒体。
【請求項19】
前記MTAが、前記送信者に関連付けられた前記複数の電子メールメッセージから電子メールメッセージのサブセットを識別することと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された前記接続を使用して、電子メールメッセージの前記サブセットを前記宛先IPアドレスに送信することと、をさらに含む、請求項18に記載の非一時的なコンピュータ可読媒体。
【請求項20】
メッセージの前記サブセット内のメッセージの数は、前記受信者のドメインに関連付けられたメッセージ制限に少なくとも部分的に基づいて決定され、前記メッセージ制限は、前記プロキシサーバによって確立された前記接続を使用して送信できるメッセージの数を指定する、請求項19に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本出願は、「電子メール配信システムのためのメッセージ転送エージェントアーキテクチャ」と題する2021年6月11日に出願された米国非仮出願第17/345,520号の利益および優先権を主張する。米国非仮出願第17/345,520号の内容は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
いくつかのクラウドサービスプロバイダは、これらのサービスの顧客が対象受信者に大量の電子メールを送信するための高速かつ信頼性の高いソリューションを提供するクラウドベースの電子メール配信サービスを提供している。これらの電子メールには、マーケティング電子メール、トランザクション電子メール、警告電子メール、確認電子メール、およびその他の種類の電子メールが含まれ得る。このような電子メール配信サービスの例としては、Oracle Corporationが提供するOracle Cloud Infrastructure(OCI)電子メール配信サービスがある。OCI電子メール配信サービスは、主要な配信性メトリックを使用して、顧客の電子メールの送信評価を可能な限り最高にするプラットフォームを提供する。
【0003】
電子メール配信サービスの普及率の増大により、これらのサービスによって処理される電子メールの量は急速に増加し続けている。これらのサービスを実装する既存のアーキテクチャは、サービスを拡張性、回復力、および信頼性あるものにするために改善を必要とする。
【発明の概要】
【発明が解決しようとする課題】
【0004】
簡単な概要
本開示は、一般に、クラウドベースの電子メール配信サービスに関する。より詳細には、限定ではないが、電子メール配信サービスを実装するシステムの拡張性と信頼性を向上させる、メール転送エージェント(MTA)とプロキシサーバを使用した改良されたアーキテクチャについて説明する。
【0005】
特定の実施形態では、電子メール配信サービスを提供する電子メールメッセージ配信システムが開示される。電子メールメッセージ配信システムは、MTAとプロキシサーバとを含む。MTAは、メッセージキューから、処理する第1の電子メールメッセージを選択する。メッセージキューは、送信者のセットから受信した電子メールメッセージのセットを含む。送信者のセットは、電子メール配信サービスの加入者(テナントまたは顧客)のセットに対応する。MTAは、第1の電子メールメッセージに関連付けられた送信者を決定し、第1の電子メールメッセージの受信者を決定する。MTAは、第1の電子メールメッセージに対して決定された送信者に基づいて、第1の電子メールメッセージのソースIPアドレスとして使用可能なIPアドレスを含むソースインターネットプロトコル(IP)アドレスを識別する。MTAは、ソースIPアドレスから特定のソースIPアドレスを選択し、電子メールメッセージの受信者の宛先IPアドレスを決定する。MTAは、1つまたは複数のプロキシサーバのセットから、選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別し、プロキシサーバへの接続を確立し、特定のソースIPアドレスと宛先IPアドレスとを含む情報を特定のプロキシサーバに通信する。MTAは、特定のソースIPアドレスと宛先IPアドレスの間にプロキシサーバによって確立された接続を使用して、第1の電子メールメッセージを宛先IPアドレスに送信する。
【0006】
特定の例では、第1の電子メールメッセージの送信者を決定することは、第1の電子メールメッセージの送信者に関連付けられ、第1の電子メールメッセージを送信する権限を有するユーザをMTAが決定することを含み、送信者に関連付けられたユーザは、第1の電子メールメッセージの「差出人」フィールドに少なくとも部分的に基づいて決定される。特定の例では、第1の電子メールメッセージの受信者は、第1の電子メールメッセージの「宛先」フィールドに基づいて決定される。
【0007】
特定の例では、MTAは、ソースIPアドレスからアクティブなソースIPアドレスのセットを決定することによって、ソースIPアドレスから特定のソースIPアドレスを選択し、アクティブなソースIPアドレスのセットから特定のソースIPアドレスを選択する。特定の例では、MTAは、アクティブなソースIPアドレスのセットから特定のソースIPアドレスを選択するための選択技術を使用する。特定の例では、選択技術はラウンドロビン技術である。
【0008】
特定の例では、送信者のソースIPアドレスの第1セットはプロキシサーバのセット内の第1のプロキシサーバに割り当てられ、送信者のソースIPアドレスの第2セットはプロキシサーバのセット内の第2のプロキシサーバに割り当てられる。特定の例では、プロキシサーバのセット内の第1のプロキシサーバは、ソースIPアドレスのセットを扱うように構成され、セット内の第1のソースIPアドレスは第1の送信者に関連付けられ、セット内の第2のソースIPアドレスは、第2の送信者に関連付けられている。特定の例では、第1の送信者は第2の送信者とは異なる。
【0009】
特定の例では、MTAは、送信者に関連付けられた電子メールメッセージから電子メールメッセージのサブセットを識別し、特定のソースIPアドレスと宛先IPアドレスとの間にプロキシサーバによって確立された接続を使用して、電子メールメッセージのサブセットを宛先IPアドレスに送信する。特定の例では、メッセージのサブセット内のメッセージの数は、受信者のドメインに関連付けられたメッセージ制限に基づいて決定され、メッセージ制限は、プロキシサーバによって確立された接続を使用して送信できるメッセージの数を指定する。
【0010】
特定の例では、MTAは、特定のソースIPアドレスと宛先IPアドレスとの間の接続がプロキシサーバによって正常に確立されたことを示すメッセージをプロキシサーバから受信する。特定の例では、プロキシサーバは伝送制御プロトコル(TCP)プロキシサーバである。特定の例では、MTAとプロキシサーバは単一のコンピュータシステム上に実装される。
【0011】
本明細書では、方法、システム、1つまたは複数のプロセッサによって実行可能なプログラム、コード、または命令を記憶する非一時的なコンピュータ可読記憶媒体などを含むさまざまな実施形態が説明される。これらの例示的な実施形態は、本開示を限定したり定義したりするためではなく、本開示の理解を助けるための例を提供するために言及されている。追加の実施形態は詳細な説明で説明され、さらなる説明がそこで提供される。
【図面の簡単な説明】
【0012】
図1】特定の実施形態による、電子メールメッセージを効率的に処理し、受信者のセットに配信するための改善された機能を含む電子メールメッセージ配信システム(EMDS)を含むコンピューティング環境を示す。
図2】特定の実施形態による、図1に示されるMTA内のメッセージキューの内容の例示的な図である。
図3】特定の実施形態による、EMDSによって受信され、対象受信者に配信される電子メールメッセージを処理するために、プロキシサーバと協働してMTAによって実行されるプロセスの例を示す。
図4】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための1つのパターンを示すブロック図である。
図5】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
図6】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
図7】少なくとも1つの実施形態による、サービスシステムとしてのクラウドインフラストラクチャを実装するための別のパターンを示すブロック図である。
図8】さまざまな実施形態が実装され得る例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【0013】
詳細な説明
以下の説明では、説明の目的で、特定の実施形態の完全な理解を提供するために特定の詳細が記載される。しかし、これらの特定の詳細がなくても、さまざまな実施形態を実施できることは明らかであろう。図および説明は、限定することを意図したものではない。「例示的な」という言葉は、本明細書では「実施例、例、または実例として機能する」という意味で使用される。本明細書で「例示的」として説明される任意の実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいまたは有利であると解釈されるべきではない。
【0014】
本開示は、概して、クラウドベースの電子メール配信サービスに関する。より具体的には、限定ではないが、電子メール配信サービスを実装するシステムの拡張性と信頼性を向上させる、メール転送エージェント(MTA)とプロキシサーバを使用した改良されたアーキテクチャについて説明する。
【0015】
クラウドベースの電子メール配信サービスは、セットの対象受信者に配信される大量の電子メールを送信するための高速かつ信頼性の高い管理ソリューションを提供する。クラウドベースの電子メール配信サービスは、1つまたは複数のクラウドベースの電子メール配信システムを使用して実装できる。クラウドベースの電子メール配信システム(EMDS)は、通常、電子メール配信サービスのさまざまなテナントまたは顧客から電子メールメッセージを受信し、その電子メールメッセージを対象受信者に配信するように構成されたメッセージ送信エージェント(MSA)とメッセージ転送エージェント(MTA)とのセットを含む。本明細書で説明するように、EMDSの顧客またはテナントは、電子メールメッセージの1人または複数人の「送信者」を表すことができる。電子メールメッセージを対象受信者に通信するために、さまざまな電子メールメッセージ配信プロトコルが使用され得る。一実施形態では、電子メールメッセージを対象受信者に通信するために、簡易メッセージ転送プロトコル(例えば、SMTP)が使用される。
【0016】
アウトバウンドメッセージフローを処理するために、電子メール配信システム内のMSAは通常、送信者から電子メールメッセージを受信し、電子メールメッセージが電子メール配信システムからアウトバウンドに送信されるため、その電子メールメッセージを「アウトバウンドMTA」と呼ばれるMTAにルーティングする。選択技術は、複数の利用可能なMTAの中からアウトバウンドMTAを選択するために使用される。特定の実装では、アウトバウンドMTAがランダムに選択され得る。他の実装では、ラウンドロビン選択技術、最長未使用の技術、または他のより高度な選択技術が使用されてもよい。しかし、MSA層とMTA層を別々にすると、通常、そのようなアーキテクチャの実装に必要な追加のハードウェアの点で、電子メール配信サービスのリソースの使用が非効率になる。さらに、複数のMTA層を使用するには、正しいIPアドレスのセットが接続されているMTAへのメッセージの正確なルーティングを実行する必要がある。
【0017】
本開示で説明される電子メールメッセージ配信システムは、従来のクラウドベースのメッセージ配信サービスに対していくつかの技術的進歩および/または改善を提供する。本開示で説明される電子メールメッセージ配信システムは、より高い動作効率を達成し、電子メール処理の全体的なオーバーヘッドを削減するように構成されたネットワーク要素(例えば、MTAおよびMSA)の堅牢なインフラストラクチャを実装することによって、高速で信頼性の高い管理された電子メール配信サービスを提供する。リソースの非効率的な使用と複数の電子メールメッセージキューの管理がより複雑になる、各層の各構成要素が独自の専用リソースを必要とする2つの個別のMSA層とMTA層とを用意する代わりに、MTAとプロキシサーバを含む新しいアーキテクチャについて説明する。MTAは、従来のMSAとMTAを組み合わせた機能を提供するように構成される。
【0018】
特定の実装では、プロキシサーバは、ソースエンティティ、例えばソースMTAと接続エンドポイントとの間の中間ネットワークエンティティとして機能する伝送制御プロトコル(TCP)プロキシサーバとして実装され得る。ここで、接続エンドポイントは、対象受信者への電子メールメッセージの配信を容易にするものである。システムの拡張性と耐障害性とを高めるために、特定の送信者に割り当てられたソースIPアドレスのプールが複数のプロキシサーバに分散され得る。特定の実装では、特定の送信者のソースIPアドレスのプール内のIPアドレスは、重複しないアドレス範囲に分割され得、各範囲が別個のプロキシサーバに割り当てられ得、それによってアドレスが複数のプロキシサーバに分散される。この分散により、EMDSシステムの耐障害性が向上する。特定の送信者のIPアドレスにサービスを提供するプロキシサーバがダウンしても、別の1つまたは複数のプロキシサーバが送信者にサービスを提供することが依然として可能であり、その送信者への電子メールの配信を継続できる。プロキシサーバの観点から見ると、そのプロキシサーバに指定された、または割り当てられたソースIPアドレスは、送信者のみに対するものである場合もあれば、複数の送信者に対するものである場合もある。
【0019】
MTAおよびプロキシサーバを含む新しく改良されたアーキテクチャは、さらに、MTAとプロキシサーバとの間でリソースを共有することを可能にし、その結果、リソースのより効率的な使用がもたらされる。特定の実装では、MTAとプロキシサーバの両方が同じハードウェアリソースを共有できる。例えば、1つまたは複数のMTAと1つまたは複数のプロキシサーバが同じコンピュータシステムによってホストされ、実行され得る。本明細書で説明するアーキテクチャは、プロキシサーバがダウンした場合の復旧も簡素化する。第1に、プロキシサーバは単純で複雑ではない構成要素(例えば、非常に少ない行のコードを使用して実装される)であるため、その失敗率が減少する。しかし、プロキシサーバがダウンした場合、MTAはそのプロキシサーバの使用を停止するだけである。MTAは、電子メールメッセージを送信するために、他の機能するプロキシサーバに割り当てられたソースIPアドレスを使用および選択し得る。プロキシサーバが再び起動するか、再び動作可能になると、MTAはそのプロキシサーバに割り当てられたソースIPアドレスを使用して再起動され得る。
【0020】
これまでのように、送信者ごとに異なるキューを使用する複数の電子メールメッセージキューの維持を必要とするのではなく、本明細書で説明する改良されたアーキテクチャでは、MTAは、複数の異なる送信者から受信し、複数の異なる受信者に宛てられた電子メールメッセージを含めることができる単一のメッセージキューを維持できるようになった。したがって、MTAは、異なる送信者に対して個別のメッセージキューを維持する必要がない。さらに、さまざまな受信者宛てのメッセージが単一のMTAメッセージキューを通過するようになった。したがって、MTAが維持する必要があるメッセージキューの数は1つのメッセージキューに減る。これにより、MTAがダウンした場合の回復手順が簡素化される。MTAがダウンするか動作不能になった場合、メモリ内のMTAのメッセージキュー内の電子メールメッセージは、特定の電子メールメッセージや電子メールメッセージの送信者を気にすることなく、別のMTAに簡単に再マウントできる。MTAごとに管理する必要があるキューは1つだけであるため、最初の送信と第1の配信試行との間の待ち時間も大幅に短縮される。このメトリクスは、電子メール配信サービスを利用して購入または売却の推奨情報を配布し得、遅延の影響を特に受けやすい金融サービスに特に役立ち得る。
【0021】
ここで図面を参照すると、図1は、特定の実施形態による、電子メールメッセージを効率的に処理し、受信者のセットに配信するための改善された機能を含む電子メールメッセージ配信システム(EMDS)を含むコンピューティング環境を示す。EMDS102は、EMDS102を実装するためにコンピュータ可読命令(例えば、コード、プログラム)を実行する1つまたは複数のコンピューティングシステムによって実装され得る。図1に示すように、EMDS102は、ロードバランサ108、1つまたは複数のメッセージ転送エージェント(MTA)110A、110B、および110Cのセット、ならびに1つまたは複数のプロキシサーバ112A、112B、および112Cのセットを含むさまざまなシステムおよびサブシステムを含む。図1に示されるシステムおよびサブシステムは、コンピューティングシステム、ハードウェア、またはそれらの組み合わせの1つまたは複数の処理装置(例えば、プロセッサ、コア)によって実行されるソフトウェア(例えば、コード、命令、プログラム)を使用して実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。
【0022】
EMDS102は、さまざまな異なる構成で実装することができる。特定の実施形態では、EMDS102は、クラウドプロバイダネットワークの1つまたは複数のサーバ上に実装され得、その電子メールメッセージ配信サービスは、加入ベースでクラウドサービスの加入者に提供され得る。図1に示すコンピューティング環境100は、単なる一例であり、請求される実施形態の範囲を不当に限定することを意図するものではない。当業者であれば、多くの可能な変形、代替、および修正を認識するであろう。例えば、いくつかの実装では、EMDS102は、図1に示されるサブシステムよりも多いまたは少ないサブシステムを使用して実装することができ、2つ以上のサブシステムを組み合わせてもよいし、サブシステムの異なる構成または配置を有してもよい。
【0023】
特定の実施形態では、EMDS102は、大量の電子メールメッセージ(本明細書ではメッセージまたは電子メールとも呼ばれる)を受信者のセットに送信するための高速かつ信頼性の高いメッセージ配信サービスを提供する。電子メールメッセージは、さまざまなソース104A~104Nによって生成され得る。ソース(例えば、104A)は、クラウドプロバイダの顧客またはテナント(例えば、組織、企業、または個人)などのエンティティのシステムを表し得、クラウドプロバイダは、電子メールメッセージを処理し、受信者のセットに配信するために、EMDS102によって提供されるサービスに加入する。特定の例では、EMDS102は、受信者のセットに配信するためにソース104A~104Nから電子メールメッセージを受信することができる。例として、ソース104Aからの電子メールメッセージ105Aは、大量(例えば10億)の請願型(solicited)商業電子メール(例えば、マーケティング電子メール、ニュースレター、クーポン、招待状など)、または受信者のセットに配信するためのトランザクション電子メールを含み得る。各電子メールメッセージは、受信者のセット内の特定の受信者に配信されるようにカスタマイズできる。別の例として、ソースからの電子メールメッセージは、受信者のセットに配信するためにソースのユーザによって送信される一般的な請願型商業電子メールメッセージを含むことができる。本明細書で使用される場合、ユーザは、EMDS102によって提供される電子メール配信サービスを利用するためにEMDS102と対話するソース(例えば、104A)に関連するエンドユーザ、事業主、またはマーケティング担当者を指してもよい。
【0024】
特定の例では、ソース104Aに関連付けられたユーザは、おそらく公衆ネットワーク106(例えば、インターネット)を介してEMDSに通信可能に結合されたユーザ装置を使用してEMDS102と対話することができる。ユーザ装置は、携帯電話、タブレット、デスクトップコンピュータなどを含むがこれらに限定されないさまざまなタイプのものであり得る。例えば、ユーザは、ユーザ装置によって実行されるアプリケーションのユーザインターフェース(UI)(グラフィカルユーザインターフェース(GUI)であってもよい)を使用してEMDS102と対話することができる。この対話には、例えば、ユーザ(例えば、組織の管理者)がUIを介して、組織のユーザがEMDS102と対話できるようにするためのさまざまな構成パラメータをセットアップすることが含まれ得る。例えば、ユーザはUIを介して、(テナント内で電子メールを送信するすべてのユーザの「差出人:」アドレスを識別することによって)承認済み送信者リストをセットアップでき、その組織のユーザを識別するために使用されるソースIPアドレスのプールの作成を要求し、通信プロトコル(例えば、簡易メール転送プロトコル(SMTP))およびユーザがEMDS102を介して電子メールを送信するためのユーザ認証情報をセットアップし、ソースIPアドレスで同時にサポートできるアウトバウンド接続の最大数(つまり、そのIPアドレスが1つの受信者ドメインに対して同時にオープンできるアウトバウンド接続の最大数)の制限を指定し、単一の接続で受信者のドメインに送信できるメッセージ数に関するメッセージ制限を指定できる。
【0025】
特定の例では、IPアドレスのプールに追加するIPアドレスの数は、組織のメッセージ送信量要件に直接相関し得る。通常、1日に大量のメッセージを送信する組織には、より多くのIPアドレスを持つIPプールを作成できる。さらに、メッセージの受信者の電子メールサービス(受信トレイ)プロバイダ(例えば、Gmail(登録商標)、Yahoo(登録商標)、Microsoft(登録商標)など)であり得る受信者のドメインによって指定された接続制限は、プールに追加されるIPアドレスの数に影響を与える可能性がある。例えば、接続制限では、単一のソースIPが受信者ドメインに対してオープンできる同時接続の数の制限を指定したり、単一の接続で受信者ドメインに送信できるメッセージの数の制限を指定したりできる。
【0026】
EMDS102による組織用のIPプールの作成は、組織の全体的な評価を保護するのにも役立ち、メッセージ配信性の向上につながり得る。送信評価が良好な組織は、大量のスパムレポートを生成する、またはユーザエンゲージメントが不十分な組織とは対照的に、メールを配信するために必要なIP数が少なくなる可能性がある。場合によっては、組織は個別のIPプールを作成したい場合がある。個別のIPプールを使用すると、組織は異なる種類の電子メール(毎月のニュースレター、プロモーション電子メール、またはトランザクション電子メール)を個別のIPアドレスのセットを通じて送信できる。例えば、組織は毎月のニュースレターには「ニュースレター」プールを使用し、電子メールには「トランザクション」プールを使用できる。このようにして、IPの各プールは独自の評価を維持でき、別のプール内のIPの影響を受けない。
【0027】
上述のようにEMDS102を構成した後、ソース(例えば、104A)に関連付けられたエンドユーザは、ユーザ装置を介して、セットの1つまたは複数の受信者に配信するために電子メールメッセージをEMDS102に送信することができる。特定の例では、ユーザは、装置にインストールされた電子メールクライアントアプリケーション(例えば、メールユーザエージェント)を利用して電子メールメッセージを作成することができる。メールユーザエージェント(MUA)は、EMDS102に送信する前に、電子メールメッセージを適切な形式にフォーマットしてもよい。特定の例では、MUAは、送信プロトコル(例えば、SMTP、HTTP、または他のプロトコル)を利用して、メッセージをEMDS102に送信することができる。特定の実装では、電子メールメッセージは、ユーザの装置にインストールされているアプリケーションを介してEMDSに自動的に送信され得る。
【0028】
特定の実施形態では、EMDS102内のロードバランサ108は、ソース104A~104Nから電子メールメッセージ105A~105Nを受信し、電子メールメッセージを処理するためにEMDS102内のMTA110A~110NのセットからMTAを選択するように構成され得る。本明細書で説明されるように、MTAは、さまざまなソースから電子メールメッセージを受信し、その電子メールメッセージを適切なエンドユーザまたは宛先に転送するように構成されたEMDS102内のネットワーク要素(例えば、メールサーバ)であり得る。各MTAでは、MTAが処理のために受信した電子メールメッセージは、MTAのメッセージキューにキューイングされる。通常、新しい電子メールメッセージはメッセージキューの最後または末尾に追加され、電子メールメッセージはMTAによる処理のためにキューの開始または先頭から取得される。特定の実施形態では、MTAは、キューへのメッセージの追加、処理するキューからのメッセージの選択などのタスクの実行を含む、MTAメッセージキューの管理に関連するタスクの実行を担当するキューマネージャを含んでもよい。MTAメッセージキューには、複数の異なる送信者からの電子メールメッセージが含まれ得、電子メールメッセージは異なる受信者に向けて送られ得る。
【0029】
図2は、特定の実施形態による、図1に示されるMTA内のメッセージキューの内容の例示的な図である。図2に示す実施形態は、MTA110Aのメッセージキュー113Aの内容を示す。メッセージキュー113Aは、複数の送信者からの電子メールメッセージおよび同じ送信者からの複数の電子メールメッセージを記憶することができる。例として、メッセージキュー113Aは、複数の送信者(M1、S1)、(M2、S2)、(M3、S3)、(M4、S4)、(M5、S1)、(M6、S5)、(M7、S5)からの電子メールメッセージを記憶し得、電子メールメッセージは別の受信者に向けて送られ得る。
【0030】
図1の説明に戻ると、特定の実装では、各MTA(例えば、110A、110B、または110C)は、メッセージ送信エージェント(MSA)(図1には示されていない)を含むことができ、これは、ユーザの装置のメールユーザエージェント(MUA)から電子メールを受信し、受信者のセットにメールを配信するためにメール転送エージェント(MTA)と連携する、MTA内に実装されたコンピュータプログラムまたはソフトウェアエージェントであり得る。MTAは追加のタスクを実行し得る。これらのタスクには、送信電子メールのフローの監視、送信電子メールの配信、電子メールメッセージのキューイング、スロットリング、スケジュール設定、接続管理、および電子メール配信ステータスの追跡が含まれるが、これらに限定されない。
【0031】
ロードバランサ108は、電子メールメッセージを処理するためにMTA110A、110B、および110CのセットからMTAを選択するために、さまざまな手法を使用することができる。例えば、一手法では、ロードバランサ108は、ラウンドロビンスケジューリングプロセスを使用してMTAを選択し、MTAのセット内の各MTAにわたって電子メールメッセージの処理を効率的に分散することができる。例えば、ラウンドロビンスケジューリングを使用すると、ロードバランサ108は、ソースから受信したメッセージの第1のバッチ(例えば、第1の1000)を処理し、受信者のセットに配信するために、MTAのセット内の第1のMTA(例えば、110A)、ソースから受信したメッセージの第2のバッチ(例えば、第2の1000)を処理し、受信者のセットに配信する第2のMTA(例えば、110B)、およびソースから受信されたメッセージの第3のバッチ(例えば、第3の1000)を処理し、受信者のセットに配信するMTAのセット内の第3のMTA(例えば、110C)を選択できる。
【0032】
選択されたMTA(例えば、110A)は、電子メールメッセージを受信し、後続の処理のためにそのメッセージをそのメッセージキュー113Aに追加する。一定数のメッセージ(例えば、電子メールメッセージのバッチ)が受信され、メッセージキュー113Aに記憶されると、MTAは、そのメッセージキュー113Aに記憶されたメッセージの処理を開始する。MTAは、メッセージキューが空になるまで、メッセージキューに記憶されているすべてのメッセージをエンドユーザ(受信者)または宛先に定期的に送信しようとする。受信者のサーバが応答しない場合、MTAは受信者への電子メールメッセージの送信を繰り返し試行する。電子メールメッセージが特定の期間(例えば、特定の日数)の間配信に失敗する場合、MTAは電子メールメッセージをホスト(メッセージの送信者)に返す。
【0033】
特定の実施形態では、MTAによる電子メールメッセージの処理には、MTAが、そのメッセージキューから、処理するための電子メールメッセージを選択すること、ならびにMTAが、第1の電子メールメッセージに関連付けられた送信者および対象受信者を決定することが含まれ得る。次に、MTAは、送信者に基づいて電子メールメッセージのソースIPアドレスとして使用できるソースIPアドレスのプールを識別し、ソースIPアドレスのプールから特定のソースIPアドレスを選択する。次に、MTAは、選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバをプロキシサーバ112A~112Cのセットから識別し、特定のソースIPアドレスおよび宛先IPアドレスを含む情報を特定のプロキシサーバに通信する。次に、MTAは、特定のソースIPアドレスと宛先IPアドレスとの間にプロキシサーバによって確立された接続を使用して、電子メールメッセージを宛先IPアドレスに送信する。
【0034】
特定の実装では、送信者に割り当てられたソースIPアドレスのプールは、プロキシサーバのセット全体に分散することができる。プールからの1つまたは複数のIPアドレスをプロキシサーバのセット内の第1のプロキシサーバに割り当てることができ、プールからのPアドレスの異なるセットをプロキシサーバのセット内の第2のプロキシサーバに割り当てることができる。特定の例では、プロキシサーバのセット内の各プロキシサーバは、1つまたは複数のソースIPアドレスのセットにバインドされてもよく、1つまたは複数のソースIPアドレスのセット内の特定のソースIPアドレスが特定の送信者に関連付けられてもよい。例えば、図1に示される実施形態では、第1のプロキシサーバ112Aは、ソースIPアドレスのセットにバインドされ得、セット内の第1のソースIPアドレスは第1の送信者に関連付けられ得、セット内の第2のソースIPアドレスは第2の送信者に関連付けられ得、第1の送信者は第2の送信者と異なる場合がある。特定の例では、送信者に関連付けられたIPアドレスの異なるプロキシサーバへの割り当ては、送信者がEMDSによって提供されるサービスに加入するときに、EMDSの管理者によって実行されてもよい。電子メールメッセージを処理し、セットの1つまたは複数の受信者に配信するためにMTAおよびプロキシサーバによって実行される処理に関する詳細は、図2および図3ならびにそれに付随する説明に示されるフローチャートに関して以下で説明される。
【0035】
コンピューティング環境100は、1つまたは複数のリレーMTA114および受信者システム118をさらに備える。リレーMTA114および受信者システム118は、1つまたは複数の通信ネットワーク106(例えば、インターネット)を介してEMDS102に通信可能に接続され得る。特定の例では、電子メールメッセージは、対象受信者に配信される前に、ソースMTA(例えば、110A)によって別のMTA(本明細書ではリレーMTAとも呼ばれるが、EMDS内に実装されないことがある)にリレー、すなわち転送することができる。リレーMTA114が電子メールメッセージを受信すると、受信トレースヘッダフィールドをメッセージのヘッダの先頭に追加し、それによってメッセージを扱うMTAの連続記録を構築する。次のホップ(ルート)のためのリレーMTAの選択は、EMDS102の管理者による電子メールメッセージを処理するためのMTAの構成の一部として決定され得る。リレーMTA114は、メッセージを受信すると、そのシステム上のユーザにメッセージを配信することができる、またはルート内で識別された別のリレーMTAにメッセージを渡すことができる。最終的に、メッセージは最終宛先であるMTAに到着する。メッセージがシステム上のユーザに宛てられたものである場合、MTAはそれを最終的な配信のために受信者システム118に渡す。受信者システム118は、電子メールメッセージの受信者の電子メールサービス(受信トレイ)プロバイダ(例えば、Gmail(登録商標)、Yahoo(登録商標)、Microsoft(登録商標)など)を表すことができる。受信者システム118は、対象受信者がメッセージを取得する準備ができるまで、メッセージをメッセージストア116に記憶することができる。受信者は、受信者の装置上のMUAを使用して受信者システム118に連絡し、メッセージストアからメッセージを取得することができる。受信者システムは要求者の認証に成功すると、そのユーザのメッセージをユーザのMUAに転送する。特定の例では、受信者は、さまざまなソース104A~104Nから正当な請願型商用電子メールメッセージ(例えば、広告、販売コンテンツなどを含む電子メールメッセージ)を受信するエンドユーザであってもよい。
【0036】
図3は、特定の実施形態による、EMDSによって受信され、対象受信者に配信される電子メールメッセージを処理するために、プロキシサーバと協働してMTAによって実行されるプロセス300の例を示す。図3に示す処理は、それぞれのシステムの1つまたは複数の処理装置(例えば、プロセッサ、コア)、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア(例えば、コード、命令、プログラム)で実装され得る。ソフトウェアは、非一時的な記憶媒体(例えば、メモリ装置)に記憶されてもよい。図3に示され、以下に説明されるプロセス300は、例示的なものであり、限定的なものではない。図3は、特定の順序または順番で行われるさまざまな処理ステップを示しているが、これに限定されるものではない。特定の代替実施形態では、ステップは何らかの異なる順番で実行されてもよいし、一部のステップは並行して実行されてもよい。図1に示される実施形態などの特定の実施形態では、図3に示す処理は、MTA(例えば、MTA110A)およびプロキシ(例えば、プロキシ112A)などのEMDS102の構成要素によって実行され得る。
【0037】
図3に示す処理は、EMDSが、対象の受信者に配信される電子メールメッセージのセットを受信したことを前提としている。電子メールメッセージは、EMDSによって提供される電子メール配信サービスの1人または複数人の異なる顧客(つまり、送信者)または加入者から受信され得る。受信された電子メールメッセージは、処理のためにEMDSの1つまたは複数のMTAに転送される。各MTAでは、MTAが処理のために受信した電子メールメッセージは、MTAのメッセージキューにキューイングされる。前述したように、MTAメッセージキューには複数の異なる送信者からの電子メールメッセージが含まれ得、電子メールメッセージは異なる受信者に向けて送られ得る。
【0038】
例えば、図1に示す実施形態では、EMDS102は複数の送信者から電子メールメッセージを受信することができる。EMDS102内では、ロードバランサ108を使用して電子メールメッセージを異なるMTA110A、110B、および110Cに分散することができ、電子メールメッセージを個々のMTAのメッセージキューにキューイングされることができる。例えば、図1では、処理のためにMTA110Aによって受信された電子メールメッセージは、MTA110Aのメッセージキュー113Aにキューイングされることができる。
【0039】
図3に示す処理は、ブロック302で、MTAによる処理のためにメッセージキューの先頭から電子メールメッセージが選択されたときに開始され得る。例えば、図1では、MTA110Aは、処理のためにメッセージキュー113Aの先頭にある電子メールメッセージを選択することができる。
【0040】
ブロック304で、302で選択された電子メールメッセージについて、MTAは、選択された電子メールメッセージの送信者および対象受信者を決定する。例えば、図1では、MTA110Aは、メッセージキュー113Aから処理するために選択された電子メールメッセージの送信者および対象受信者を決定することができる。
【0041】
各電子メールメッセージは、電子メールメッセージの送信者に関連付けられたユーザを識別する「差出人」フィールド、電子メールメッセージの対象受信者を識別する「宛先」フィールド、電子メールの内容を含む「本文」フィールドなど、複数のフィールドを含む。304の処理の一部として、MTAは、選択された電子メールメッセージを解析して、電子メールメッセージの「差出人」フィールドから電子メールメッセージのユーザを決定し、「宛先」フィールドから電子メールメッセージの対象受信者を決定することができる。特定の実装では、MTAは「差出人」フィールド内の文字列を解析して、電子メールメッセージの送信を許可されている送信者に関連付けられたユーザを決定し得る。例えば、「差出人」フィールドには「user1@abccompany.com」という形式の文字列が含まれ得る。ここで、「user1」は電子メールメッセージの送信者に関連付けられたユーザを識別し得る。「@」記号の後の文字列の部分は、送信者に関連付けられたドメイン名または完全修飾ドメイン名を識別する。MTAは、ドメイン名に基づいて電子メールメッセージの送信者を識別し得る。user1@abcompany.comの例では、送信者はABC Companyとして識別され得る。
【0042】
特定の例では、電子メールメッセージの送信者を決定した後、MTAは事前の認証に基づいて許可処理を開始し、送信者が使用を許可されているすべての可能な差出人アドレスのリストを決定できる。次に、MTAは送信者からのメッセージをチェックして、許可された差出人アドレスが使用されていることを確認する。特定の実施形態では、送信者が電子メールメッセージの「宛先」フィールドに対応するドメインに電子メールメッセージを送信することを許可されているかどうかを確認するためのチェックも行われ得る。
【0043】
ブロック306で、304で選択されたメッセージの送信者に基づいて、MTAはソースIPアドレスのプールを識別し、そのプールには電子メールメッセージのソースIPアドレスとして使用できるIPアドレスが含まれる。特定の例では、送信者およびその送信者に関連付けられたユーザのソースIPアドレスのプールがEMDSによって事前に割り当てられ得る。例えば、これは、送信者が電子メール配信サービスに加入し、許可されたユーザのリストをEMDSに提供するときに実行できる。
【0044】
特定の実装では、送信者はソースIPアドレスの特定のプールを識別することができる。例えば、図1では、MTA110Aは、304で電子メールメッセージに対して決定された送信者に基づいて、ソースIPアドレスのプールを識別することができる。他の実施形態では、電子メールメッセージに対して決定された送信者を使用して、ソースIPアドレスのプールを識別することができる。特定の実装では、ソースIPアドレスのプールが送信者間で共有され得る。
【0045】
ブロック308で、MTAは、ブロック306で識別されたソースIPアドレスのプールから、302で選択された電子メールメッセージを送信するためのソースIPアドレスとして使用される特定のソースIPアドレスを選択する。MTAは、さまざまな選択技術を使用して、ソースIPアドレスのプールから特定のソースIPアドレスを選択することができる。特定の実装では、MTAは最初にIPアドレスのプールからアクティブなIPアドレスのセットを決定し得る。IPアドレスの有効期限が切れておらず、まだ機能している場合、そのIPアドレスは能動であるとみなされる。アクティブなIPアドレスは、電子メールの送信に引き続き使用できるソースIPアドレスを表す。例えば、306で決定されたIPアドレスのプール内のIPアドレスは、能動ではない、または使用できない可能性があり、それは、ソースIPアドレスが電子メールメッセージの特定の受信者に対する接続速度制限を超えている、そのIPアドレスにサービスを提供するプロキシサーバが失敗または非能動としてマークされている、そのIPアドレスを使用した電子メールメッセージの配信が過去に失敗した、などであるためである。308の処理の一部として、MTAは、306で決定されたアドレスのプールから能動ではないアドレスをフィルタリングして除外することができる。
【0046】
IPアドレスのアクティブなセットが識別された後、MTAは選択技術を使用して、アクティブなアドレスのセットから単一のソースIPアドレスを選択することができる。特定の実装では、選択技術には、アクティブなIPアドレスのセットからIPアドレスをランダムに選択することが含まれ得る。いくつかの他の実施形態では、ラウンドロビン選択技術または最長未使用の技術を使用して、アクティブなアドレスのセットから単一のIPアドレスを選択することができる。さらに他の実装では、単一のアドレスは、アクティブなアドレスのセットに関連付けられた評価に基づいて選択され得る。例えば、最も高い評価を持つIPアドレスが選択され得る。例えば、図1に示される実施形態では、MTA110Aは、アクティブなソースIPアドレスのセットを識別し、その後、例えばラウンドロビン選択方式(または何らかの他の選択技術)を使用して、そのセットから単一のソースIPアドレスを選択することができる。
【0047】
ブロック310で、MTAは、ブロック308で選択されたソースIPアドレスを扱うように事前に構成されたプロキシサーバを識別する。一般的なシナリオでは、プロキシサーバは、ソースIPアドレスに基づいて複数のプロキシサーバの中から選択され得る。特定の実装では、プロキシサーバは、ソースエンティティ、例えばソースMTAと接続エンドポイントとの間の仲介ネットワークエンティティとして機能するTCPプロキシサーバとして実装でき、接続エンドポイントは、対象受信者への電子メールメッセージの配信を容易にするものである。
【0048】
特定の実装では、さまざまな送信者についてEMDSによって管理されるソースIPアドレスは、MTAのセットに事前に指定されるか、または事前に割り当てられ得る。例えば、図1では、EMDS102によって扱われるソースIPアドレスは、プロキシサーバ112A、112B、および112Cの間で割り当てられ得る。システムの拡張性と耐障害性とを高めるために、特定の送信者のソースIPアドレスのプールが複数のプロキシサーバに分散され得る。特定の実装では、特定の送信者のソースIPアドレスのプール内のIPアドレスは、重複しないアドレス範囲に分割され得、各範囲が別個のプロキシサーバに割り当てられ得、それによってアドレスが複数のプロキシサーバに分散される。この分散により、EMDSシステムの耐障害性が向上する。特定の送信者のIPアドレスにサービスを提供するプロキシサーバがダウンしても、他の1つまたは複数のプロキシサーバが引き続き送信者にサービスを提供するために利用でき、その送信者への電子メールの配信を続行できる。プロキシサーバの観点から見ると、そのプロキシサーバに指定された、または割り当てられたソースIPアドレスは、送信者のみに対するものである場合もあれば、複数の送信者に対するものである場合もある。
【0049】
例えば、図1では、310の処理の一部として、MTA110Aは、308で選択されたソースIPアドレスがプロキシサーバ-1 112Aにマッピングされるか、またはプロキシサーバ-1 112Aに割り当てられると決定することができる。それに応じて、MTA110Aは、310においてプロキシサーバ-1 112Aを選択することができる。選択されたプロキシサーバは、MTAを実行するのと同じコンピュータマシン上で実行されているか、または他のコンピュータシステム上で実行され得る。
【0050】
312で、MTAは、304で識別された電子メールメッセージの対象受信者に基づいて、送信される電子メールメッセージの宛先IPアドレスを決定する。312で決定された宛先IPアドレスは、対象受信者への電子メールメッセージの通信を容易にするために、電子メールメッセージが送信されるネットワークエンドポイントのIPアドレスに対応する。例えば、上で説明したように、電子メールメッセージの対象受信者は、電子メールメッセージの「宛先」フィールドで識別され得る。例えば、「宛先」フィールドは「recipient@xyz.com」という形式の文字列を含むことができ、「recipient」はユーザ名を識別し、「xyz.com」はドメイン名を識別する。ドメイン名「xyz.com」自体は、組織を識別する第1の部分「xyz」と、トップレベルドメイン(TLD)を識別する第2の部分「.com」を含む(TLDは、.com、.org、.edu、.net、.govなどであり得る)。312の処理の一部として、MTAは、電子メールメッセージの対象受信者のユーザ名とドメインに基づいて、電子メールメッセージの送信先となる宛先IPアドレスを決定することができる。例えば、MTAはドメイン名を解決して、ドメインネームシステム(DNS)内のメール交換サーバの完全修飾ドメイン名を決定することができる。ドメインのDNSサーバは、そのドメインのメール交換サーバ(例えば、受信者のISPによって実行されるリレーMTA(例えば、114))をリストする任意のメール交換(MX)レコードで応答する。312では、そのリレーMTAのIPアドレスが宛先IPアドレスとして決定される。
【0051】
ブロック314で、MTAは、プロキシサーバに接続し、その後、310で識別されたプロキシサーバに接続要求を送信し、ここで、接続要求には、308で選択されたソースIPアドレスと、312で決定された宛先IPアドレスが含まれる。接続要求には、プロキシサーバにソースIPアドレスと宛先IPアドレスとの間の接続をセットアップするように要求する命令も含まれ得る。
【0052】
ブロック316で、プロキシサーバはMTAから接続要求を受信する。例えば、図1では、プロキシサーバ-1 112Aは、MTA110Aから接続要求を受信することができる。
【0053】
ブロック318で、プロキシサーバは、接続要求で受信したソースIPアドレスと接続要求で受信した宛先IPアドレスとの間の接続を確立する。例えば、図1では、プロキシサーバ-1 112Aは、接続要求で受信したソースIPアドレスと宛先IPアドレスとを決定し、ソースIPアドレスと宛先IPアドレスとの間の接続を確立することができる。
【0054】
320で、プロキシサーバは、318で確立された接続に関するステータス情報を、接続要求を受信したMTAに送信することができる。例えば、図1では、プロキシサーバ-1 112Aはステータス情報をMTA110Aに送信することができる。ステータスは、接続のセットアップの成功または失敗を示し得る。失敗した場合、MTAとプロキシサーバは何らかのエラー修正手順を実行することができる。
【0055】
ブロック322で、MTAは、プロキシサーバによって318で確立された接続を使用して、302で選択された電子メールメッセージを送信する。電子メールのソースIPアドレスが電子メールのソースとなり、電子メールが宛先IPアドレスに送信されるように電子メールが送信され、宛先IPアドレスは、対象受信者への電子メールメッセージの通信を容易にするエンドポイント(例えば、リレーMTA)のものである。例えば、図1では、MTA110Aは、プロキシサーバ-1 112Aによって確立された接続を介して、選択された電子メールメッセージをリレーMTA114に送信することができる。特定の実装では、電子メールメッセージは、Simple Mail Transfer Protocol(SMTP)を使用して送信され得る。EMDSの制御外で動作するリモートシステム上で電子メールメッセージを受信したリレーMTAは、メッセージを対象の受信者に関連付けられるメッセージストア(例えば、図1のメッセージストア116)に転送することができるか、別のリレーMTAなどの別の中間ネットワークエンティティに転送し得る。このようにして、電子メールメッセージは1つまたは複数のリレーMTAを介して、対象受信者のメッセージストアに通信される。メッセージストアは、例えば、電子メールメッセージの対象受信者に関連付けられた受信トレイであってもよい。
【0056】
特定の実施形態では、322において、MTAは、プロキシサーバによって確立された接続を介して複数の電子メールメッセージを送信することができる。これらの電子メールメッセージには、例えば、同じ送信者から同じ受信者に宛てられた電子メールメッセージが含まれ得る。他のいくつかの実施形態では、これらの複数の電子メールメッセージは、同じ送信者から同じドメイン(例えば、「xyz.com」)に宛てられ、場合によってはその共通ドメインの異なる受信者に宛てられた電子メールメッセージを含むことができる。特定の実施形態では、MTAは、そのメッセージキュー内の電子メールメッセージを調べて、プロキシサーバによって確立された接続を介して複数の電子メールメッセージを送信できるかどうかを決定することができる。MTAは、これらの複数の電子メールメッセージを識別してメッセージキューから削除し、複数の電子メールメッセージを含むジョブを形成し得る。ジョブ内の電子メールメッセージは、318でプロキシサーバによって確立された接続を使用して、322で送信され得る。
【0057】
特定の例では、ジョブに追加できるメッセージの数は、単一の接続を介して受信者のドメインに送信できるメッセージ数のメッセージ制限に少なくとも部分的に基づいて決定され得る。次に、MTAは、キュー内で受信された順序でキューからメッセージを取得し、MTAのプロキシサーバによって確立された接続を使用して、複数のメッセージを受信者に送信する。接続を介して特定の数のメッセージを送信した後、特定の実施形態では、ブロック324で、MTAはプロキシサーバから切断され得、プロキシサーバはリモートシステムから切断され得る。
【0058】
特定の実装では、MTAはまた、プロキシサーバがソースIPアドレスと宛先IPアドレスとの間の接続を確立できないエラー状態を扱うように構成されている。1つのエラー取り扱い技術によれば、プロキシサーバによる一定回数の接続確立再試行の後、プロキシサーバは、ブロック318で、接続を確立できなかったというエラーコードをMTAに返すことができる。次に、MTAは電子メールメッセージに対して別のソースIPアドレスを選択し、新しいソースIPアドレスと受信者に対応する宛先IPアドレスとの間の接続を確立するようにプロキシサーバに要求することができる。
【0059】
さらに他の状況では、322でMTAが電子メールメッセージを送信した後、MTAは、電子メールメッセージを対象受信者に配信できなかったことを示すエラーコードを受信し得る。これは、電子メールメッセージの送信に使用されたソースIPアドレスに関連する評価に問題があり、電子メールメッセージが受信者の電子メールシステムによって拒否される、電子メールメッセージの送信に使用されたソースIPアドレスが、特定の受信者システム(受信トレイプロバイダ)の接続速度制限を超えている、そのソースIPアドレスでのプロキシサーバ接続が失敗している、受信者がそのソースIPで電子メールをもう受信することができない、またはその他の理由による宛先IPアドレスの問題、ネットワークの問題のためであり得る。接続レート制限は、ソースIPアドレスを使用して受信者のシステムのメールボックスプロバイダに対して確立できる同時接続の最大数を指定する。このような状況では、EMDSはさまざまな再試行技術を使用し得る。例えば、1つの技術によれば、正常に送信できなかった特定の電子メールメッセージは、メッセージキューまたは再試行キューに戻される。電子メールメッセージが送信用にキューから選択されると、以前に選択されたソースIPアドレスとは異なる新しいソースIPアドレスが電子メールメッセージに対して選択される。電子メールメッセージは、次いで、新しいソースIPアドレスを使用して送信される。
【0060】
特定の実施形態では、本開示で説明されるMTAプロキシサーバアーキテクチャは、より優れた動作効率および効率的なリソース管理を提供する。特定の実装では、MTAとプロキシサーバの両方が同じハードウェアリソースを共有できる。例えば、1つまたは複数のMTAと1つまたは複数のプロキシサーバが同じコンピュータシステムによってホストされ、実行され得る。例えば、図1に示される実施形態では、MTA110Aおよびプロキシサーバ-1 112Aは、同じコンピューティングシステム120によってホストされ、実行される。メモリリソース、処理リソース、およびネットワークリソースなどのコンピュータシステム120のリソースは、MTA110Aおよびプロキシサーバ-1 112Aによって共有され得る。同様に、MTA110Bおよびプロキシサーバ-2 112Bは同じコンピュータシステム122上にあり、MTA110Cおよびプロキシサーバ-3 112Cはコンピュータシステム124上にある。図1に示される構成は、単なる一例であり、請求される実施形態の範囲を不当に限定することを意図するものではない。当業者であれば、多くの可能な変形例、代替例、および修正例を認識するであろう。例えば、複数のプロキシサーバが同じコンピュータシステムによって実行される、複数のMTAが同じコンピュータシステムによって実行される、MTAおよびプロキシサーバの各々が別個のコンピュータシステム上に実装されるなど、他の実装も可能である。
【0061】
本明細書に開示される実施形態では、MTAによって維持されるメッセージキューは、異なる送信者からの、異なる受信者に宛てられた電子メールメッセージを含むことができる。MTAは、異なる送信者に対して個別のメッセージキューを維持する必要はない。さらに、さまざまな受信者向けに意図されたメッセージが単一のMTAメッセージキューを通過するようになった。したがって、MTAが維持する必要があるメッセージキューの数は単一のメッセージキューに減る。これにより、MTAがダウンした場合の回復手順が簡素化される。MTAがダウンするか動作不能になった場合、メモリ内のMTAのメッセージキュー内の電子メールメッセージは、特定の電子メールメッセージや電子メールメッセージの送信者を気にすることなく、別のMTAに簡単に再マウントできる。
【0062】
本明細書で説明するアーキテクチャの実施形態は、プロキシサーバがダウンした場合の回復も簡素化する。第1に、プロキシサーバは単純で複雑ではない構成要素(例えば、コード行数が非常に少ない)であるため、その失敗率が減少する。しかし、プロキシサーバがダウンした場合、MTAはそのプロキシサーバの使用を停止するだけである。MTAは、そのプロキシサーバに割り当てられているソースIPアドレスの使用を停止し得る。例えば、図3の308の処理の一部として、MTAは、ダウンしているプロキシサーバに割り当てられているソースIPアドレス、またはMTAによって非機能もしくは動作不能としてタグ付けされているソースIPアドレスをフィルタリングして除外し得る。MTAは、電子メールメッセージを送信するために、他の機能するプロキシサーバに割り当てられたソースIPアドレスを使用および選択し得る。プロキシサーバが再び起動するか、再び動作可能になると、MTAはそのプロキシサーバに割り当てられたソースIPアドレスを使用して再起動され得る。
【0063】
アーキテクチャ例
クラウドサービスという用語は、一般に、クラウドサービスプロバイダ(CSP)によって提供されるシステムとインフラストラクチャ(クラウドインフラストラクチャ)とを使用して、CSPによってユーザまたは顧客がオンデマンド(例えば、加入モデルを介して)で利用できるようにするサービスを指すために使用される。通常、CSPのインフラストラクチャを構成するサーバおよびシステムは、顧客自身のオンプレミスのサーバおよびシステムとは別のものである。したがって、顧客は、サービス用のハードウェアおよびソフトウェアリソースを個別に購入する必要なく、CSPが提供するクラウドサービスを利用できる。クラウドサービスは、サービスの提供に使用されるインフラストラクチャの調達に顧客が投資する必要なく、加入顧客がアプリケーションやコンピューティングリソースに簡単かつ拡張的にアクセスできるように設計される。
【0064】
さまざまな種類のクラウドサービスを提供するクラウドサービスプロバイダがいくつかある。クラウドサービスには、Software-as-a-Service(SaaS)、Platform-as-a-Service(PaaS)、Infrastructure-as-a-Service(IaaS)など、さまざまな異なる種類またはモデルがある。
【0065】
顧客は、CSPによって提供される1つまたは複数のクラウドサービスに加入することができる。顧客は、個人、組織、企業などの任意のエンティティにすることができる。顧客がCSPが提供するサービスに加入または登録すると、その顧客用にテナントまたはアカウントが作成される。その後、顧客は、このアカウントを介して、そのアカウントに関連付けられた加入済みの1つまたは複数のクラウドリソースにアクセスできる。
【0066】
上で述べたように、サービスとしてのインフラストラクチャ(IaaS)は、クラウドコンピューティングの特定のタイプの1つである。IaaSは、パブリックネットワーク(インターネットなど)経由で仮想化されるコンピューティングリソースを提供するように構成できる。IaaSモデルでは、クラウドコンピューティングプロバイダは、インフラストラクチャ構成要素(例えば、サーバ、記憶装置、ネットワークノード(例えばハードウェア)、展開ソフトウェア、プラットフォーム仮想化(例えばハイパーバイザ層)など)をホストすることができる。場合によっては、IaaSプロバイダは、これらのインフラストラクチャ構成要素に付随するさまざまなサービス(例えば、請求、監視、ロギング、負荷分散、およびクラスタリングなど)を提供することもできる。したがって、これらのサービスはポリシー推進型であり得るため、IaaSユーザは負荷分散を推進するポリシーを実装して、アプリケーションの可用性と性能を維持できる可能性がある。
【0067】
場合によっては、IaaS顧客は、インターネットなどのワイドエリアネットワーク(WAN)を介してリソースおよびサービスにアクセスすることができ、クラウドプロバイダのサービスを使用してアプリケーションスタックの残りの要素をインストールすることができる。例えば、ユーザはIaaSプラットフォームにログインして、仮想マシン(VM)の作成、各VMへのオペレーティングシステム(OS)のインストール、データベースなどのミドルウェアの展開、ワークロードとバックアップ用の記憶バケットの作成、さらにはエンタープライズソフトウェアをそのVMにインストールすることができる。その後、顧客はプロバイダのサービスを使用して、ネットワークトラフィックのバランス、アプリケーションの問題のトラブルシューティング、性能の監視、災害復旧の管理などのさまざまな機能を実行できる。
【0068】
ほとんどの場合、クラウドコンピューティングモデルはクラウドプロバイダの参加を必要とする。クラウドプロバイダは、IaaSの提供(例えば、提供、レンタル、販売)を専門とするサードパーティサービスであってもかまわないが、そうである必要はない。エンティティはプライベートクラウドを展開して、独自のインフラストラクチャサービスプロバイダになることも選択できる。
【0069】
いくつかの例では、IaaS展開は、新しいアプリケーション、またはアプリケーションの新しいバージョンを、準備されているアプリケーションサーバなどに配置するプロセスである。これには、サーバを準備するプロセス(例えば、ライブラリ、デーモンなどのインストールなど)も含まれ得る。これは多くの場合、ハイパーバイザ層(例えば、サーバ、記憶装置、ネットワークハードウェア、および仮想化)の下のクラウドプロバイダによって管理される。したがって、顧客は、(OS)、ミドルウェア、および/またはアプリケーション展開(例えば、セルフサービス仮想マシン(例えば、オンデマンドでスピンアップできる)など)などの取り扱いに責任を負うことができる。
【0070】
一部の例では、IaaSプロビジョニングは、使用するコンピュータまたは仮想ホストを取得し、それらに必要なライブラリまたはサービスをインストールすることさえも指し得る。ほとんどの場合、展開にはプロビジョニングが含まれておらず、最初にプロビジョニングを実行する必要があり得る。
【0071】
場合によっては、IaaSプロビジョニングには2つの異なる課題がある。まず、何かを実行する前にインフラストラクチャの初期セットをプロビジョニングするという最初の課題がある。第2に、すべてがプロビジョニングされた後に、既存のインフラストラクチャを進化させるという課題がある(例えば、新しいサービスの追加、サービスの変更、サービスの削除など)。場合によっては、インフラストラクチャの構成を宣言的に画定できるようにすることで、これら2つの課題に対処できる場合がある。言い換えれば、インフラストラクチャ(例えば、どの構成要素が必要か、どのように対話するか)は1つまたは複数の構成ファイルによって画定できる。したがって、インフラストラクチャの全体的なトポロジ(例えば、どのリソースがどのリソースに依存するか、およびそれぞれがどのように連携するかなど)を宣言的に記述することができる。場合によっては、トポロジが画定されると、構成ファイルに記述されているさまざまな構成要素を作成および/または管理するワークフローを生成できる。
【0072】
いくつかの例では、インフラストラクチャは、相互接続されている多くの要素を有し得る。例えば、コアネットワークとしても知られる、1つまたは複数の仮想プライベートクラウド(VPC)(例えば、構成可能および/または共有コンピューティングリソースの潜在的にオンデマンドのプール)が存在し得る。いくつかの例では、ネットワークの受信トラフィックおよび/または送信トラフィックがどのように設定されるかを画定するためにプロビジョニングされる1つまたは複数の受信/送信トラフィックグループルールと、1つまたは複数の仮想マシン(VM)が存在する場合もある。ロードバランサ、データベースなどの他のインフラストラクチャ要素もプロビジョニングできる。より多くのインフラストラクチャ要素が望まれたり追加されたりするにつれて、インフラストラクチャは段階的に進化し得る。
【0073】
場合によっては、さまざまな仮想コンピューティング環境にわたるインフラストラクチャコードの展開を可能にするために、継続的展開技術が使用されてもよい。さらに、説明されている技術により、これらの環境内でのインフラストラクチャ管理が可能になる。いくつかの例では、サービスチームは、1つまたは複数の、しかし多くの場合、多くの異なる生産環境(例えば、さまざまな異なる地理的位置にまたがり、場合によっては全世界に及ぶ)に展開することが望ましいコードを書くことができる。しかし、例によっては、コードを展開するインフラストラクチャを最初にセットアップする必要がある。場合によっては、プロビジョニングは手動で行うことができ、プロビジョニングツールを利用してリソースをプロビジョニングすることができ、および/または展開ツールを利用して、インフラストラクチャがプロビジョニングされた後にコードを展開することができる。
【0074】
図4は、少なくとも1つの実施形態による、IaaSアーキテクチャのパターン例を示すブロック図400である。サービスオペレータ402は、仮想クラウドネットワーク(VCN)406およびセキュアホストサブネット408を含むことができるセキュアホストテナント404に通信可能に結合することができる。いくつかの例では、サービスオペレータ402は、1つまたは複数のクライアントコンピューティング装置を使用することができ、これは、ポータブルハンドヘルド装置(例えば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))もしくはウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、Microsoft Windows Mobile(登録商標)などの実行ソフトウェア、および/またはiOS、WindowsPhone、Android、BlackBerry8、PalmOSなどのさまざまなモバイルオペレーティングシステム、ならびにインターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、または有効な他の通信プロトコルであり得る。あるいは、クライアントコンピューティング装置は、例えば、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティング装置は、例えばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを含むがこれらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIX類似のオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替として、または追加として、クライアントコンピューティング装置は任意の他の電子装置であってもよく、シンクライアントコンピュータ、インターネット対応ゲームシステム(例えば、Kinect(登録商標)ジェスチャ入力装置あり、または無しのMicrosoft Xboxゲームコンソール)、および/またはVCN406および/またはインターネットにアクセスできるネットワークを介して通信できるパーソナルメッセージング装置などである。
【0075】
VCN406は、SSHVCN412に含まれるLPG410を介してセキュアシェル(SSH)VCN412に通信可能に結合することができるローカルピアリングゲートウェイ(LPG)410を含むことができる。SSHVCN412は、SSHサブネット414を含むことができ、SSHVCN412は、制御プレーンVCN416に含まれるLPG410を介して制御プレーンVCN416に通信可能に結合することができる。また、SSHVCN412は、LPG410を介してデータプレーンVCN418に通信可能に結合することができる。制御プレーンVCN416およびデータプレーンVCN418は、IaaSプロバイダが所有および/または動作できるサービステナント419に含めることができる。
【0076】
制御プレーンVCN416は、境界ネットワーク(例えば、企業イントラネットと外部ネットワークとの間の企業ネットワークの一部)として機能する制御プレーン非武装地帯(DMZ)層420を含むことができる。DMZベースのサーバは責任が制限されており、侵害を阻止するのに役立ち得る。さらに、DMZ層420は、1つまたは複数のロードバランサ(LB)サブネット422、アプリサブネット426を含むことができる制御プレーンアプリ層424、制御プレーンデータ層428を含むことができ、これには、データベース(DB)サブネット430(例えば、フロントエンドDBサブネットおよび/またはバックエンドDBサブネット)を含めることができる。制御プレーンDMZ層420に含まれるLBサブネット422は、制御プレーンアプリ層424に含まれるアプリサブネット426および制御プレーンVCN416に含まれ得るインターネットゲートウェイ434に通信可能に結合することができ、アプリサブネット426は、制御プレーンデータ層428に含まれるDBサブネット430、ならびにサービスゲートウェイ436およびネットワークアドレス変換(NAT)ゲートウェイ438に通信可能に結合することができる。制御プレーンVCN416は、サービスゲートウェイ436およびNATゲートウェイ438を含むことができる。
【0077】
制御プレーンVCN416は、アプリサブネット426を含むことができるデータプレーンミラーアプリ層440を含むことができる。データプレーンミラーアプリ層440に含まれるアプリサブネット426は、コンピューティングインスタンス444を実行できる仮想ネットワークインターフェースコントローラ(VNIC)442を含むことができる。コンピューティングインスタンス444は、データプレーンミラーアプリ層440のアプリサブネット426を、データプレーンアプリ層446に含めることができるアプリサブネット426に通信可能に結合することができる。
【0078】
データプレーンVCN418は、データプレーンアプリ層446、データプレーンDMZ層448、およびデータプレーンデータ層450を含むことができる。データプレーンDMZ層448は、データプレーンアプリ層446のアプリサブネット426およびデータプレーンVCN418のインターネットゲートウェイ434に通信可能に結合され得るLBサブネット422を含むことができる。アプリサブネット426は、データプレーンVCN418のサービスゲートウェイ436およびデータプレーンVCN418のNATゲートウェイ438に通信可能に結合することができる。データプレーンデータ層450は、データプレーンアプリ層446のアプリサブネット426に通信可能に結合できるDBサブネット430を含むこともできる。
【0079】
制御プレーンVCN416およびデータプレーンVCN418のインターネットゲートウェイ434は、パブリックインターネット454に通信可能に結合され得るメタデータ管理サービス452に通信可能に結合され得る。パブリックインターネット454は、制御プレーンVCN416およびデータプレーンVCN418のNATゲートウェイ438に通信可能に接続することができる。制御プレーンVCN416およびデータプレーンVCN418のサービスゲートウェイ436は、クラウドサービス456に通信可能に結合することができる。
【0080】
いくつかの例では、制御プレーンVCN416またはデータプレーンVCN418のサービスゲートウェイ436は、パブリックインターネット454を経由せずに、クラウドサービス456へのアプリケーションプログラミングインターフェース(API)呼び出しを行うことができる。サービスゲートウェイ436からクラウドサービス456へのAPI呼び出しは一方向であり得る:サービスゲートウェイ436はクラウドサービス456へのAPI呼び出しを行うことができ、クラウドサービス456は要求されるデータをサービスゲートウェイ436に送信することができる。しかし、クラウドサービス456は、サービスゲートウェイ436へのAPI呼び出しを開始できない場合がある。
【0081】
いくつかの例では、セキュアホストテナント404は、サービステナント419に直接接続することができ、そうでなければ分離され得る。セキュアホストサブネット408は、LPG410を介してSSHサブネット414と通信することができ、LPG410は、そうでなければ分離されるシステムを介した双方向通信を可能にすることができる。セキュアホストサブネット408をSSHサブネット414に接続すると、セキュアホストサブネット408にサービステナント419内の他のエンティティへのアクセスを与えることができる。
【0082】
制御プレーンVCN416により、サービステナント419のユーザが所望のリソースをセットアップまたはプロビジョニングできるようにすることができる。制御プレーンVCN416内にプロビジョニングされる所望のリソースは、データプレーンVCN418内に展開または使用され得る。いくつかの例では、制御プレーンVCN416はデータプレーンVCN418から分離することができ、制御プレーンVCN416のデータプレーンミラーアプリ層440は、データプレーンミラーアプリ層440およびデータプレーンアプリ層446に含まれることができるVNIC442を介して、データプレーンVCN418のデータプレーンアプリ層446と通信することができる。
【0083】
いくつかの例では、システムのユーザまたは顧客は、要求をメタデータ管理サービス452に通信することができるパブリックインターネット454を介して、例えば作成、読み取り、更新、または削除(CRUD)動作などの要求を行うことができる。メタデータ管理サービス452は、インターネットゲートウェイ434を介して要求を制御プレーンVCN416に通信することができる。この要求は、制御プレーンDMZ層420に含まれるLBサブネット422によって受信され得る。LBサブネット422は、要求が有効であると決定することができ、この決定に応答して、LBサブネット422は、制御プレーンアプリ層424に含まれるアプリサブネット426に要求を送信することができる。要求が検証され、パブリックインターネット454への呼び出しが必要な場合、パブリックインターネット454への呼び出しは、パブリックインターネット454への呼び出しを行うことができるNATゲートウェイ438に送信され得る。要求によって記憶されることが望ましい場合があるメモリは、DBサブネット430に記憶できる。
【0084】
いくつかの例では、データプレーンミラーアプリ層440は、制御プレーンVCN416とデータプレーンVCN418との間の直接通信を容易にすることができる。例えば、構成に対する変更、更新、または他の適切な修正を、データプレーンVCN418に含まれるリソースに適用することが望ましい場合がある。VNIC442を介して、制御プレーンVCN416は、データプレーンVCN418に含まれるリソースと直接通信することができ、それにより、データプレーンVCN418に含まれるリソースに対する構成の変更、更新、または他の適切な修正を実行することができる。
【0085】
いくつかの実施形態では、制御プレーンVCN416およびデータプレーンVCN418は、サービステナント419に含めることができる。この場合、システムのユーザまたは顧客は、制御プレーンVCN416またはデータプレーンVCN418のいずれも所有または動作することはできない。代わりに、IaaSプロバイダは、制御プレーンVCN416およびデータプレーンVCN418を所有または動作することができ、これらは両方ともサービステナント419に含まれ得る。この実施形態は、ユーザまたは顧客が他のユーザまたは他の顧客のリソースと対話することを防止し得るネットワークの分離を可能にすることができる。また、この実施形態により、システムのユーザまたは顧客は、記憶のために所望のレベルの脅威防止を持たない可能性があるパブリックインターネット454に依存する必要なく、データベースをプライベートに記憶することができる。
【0086】
他の実施形態では、制御プレーンVCN416に含まれるLBサブネット422は、サービスゲートウェイ436から信号を受信するように構成され得る。この実施形態では、制御プレーンVCN416およびデータプレーンVCN418は、パブリックインターネット454を呼び出すことなく、IaaSプロバイダの顧客によって呼び出されるように構成され得る。顧客が使用するデータベースはIaaSプロバイダによって制御され、パブリックインターネット454から隔離され得るサービステナント419に記憶され得るため、IaaSプロバイダの顧客は、この実施形態を望む可能性がある。
【0087】
図5は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック図500である。サービスオペレータ502(例えば、図4のサービスオペレータ402)は、セキュアホストテナント504(例えば、図4のセキュアホストテナント404)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)506(例えば、図4のVCN406)およびセキュアホストサブネット508(例えば、図4のセキュアホストサブネット408)を含むことができる。VCN506は、ローカルピアリングゲートウェイ(LPG)510(例えば、図4のLPG410)を含むことができ、これは、SSHVCN512に含まれるLPG410を介してセキュアシェル(SSH)VCN512(例えば、図4のSSHVCN412)に通信可能に結合することができる。SSHVCN512は、SSHサブネット514(例えば、図4のSSHサブネット414)を含むことができ、SSHVCN512は、制御プレーンVCN516に含まれるLPG510を介して、制御プレーンVCN516(例えば、図4の制御プレーンVCN416)に通信可能に結合することができる。制御プレーンVCN516は、サービステナント519(例えば、図4のサービステナント419)に含めることができ、データプレーンVCN518(例えば、図4のデータプレーンVCN418)は、システムのユーザまたは顧客によって所有または動作され得る顧客テナント521に含めることができる。
【0088】
制御プレーンVCN516は、LBサブネット522(例えば、図4のLBサブネット422)を含むことができる制御プレーンDMZ層520(例えば、図4の制御プレーンDMZ層420)、アプリサブネット526(例えば、図4のアプリサブネット426)を含むことができる制御プレーンアプリ層524(例えば、図4の制御プレーンアプリ層424)、データベース(DB)サブネット530(例えば、図4のDBサブネット430と同様)を含むことができる制御プレーンデータ層528(例えば、図4の制御プレーンデータ層428)を含むことができる。制御プレーンDMZ層520に含まれるLBサブネット522は、制御プレーンアプリ層524に含まれるアプリサブネット526と、制御プレーンVCN516に含まれ得るインターネットゲートウェイ534(例えば、図4のインターネットゲートウェイ434)とに通信可能に結合することができ、アプリサブネット526は、制御プレーンデータ層528に含まれるDBサブネット530、ならびにサービスゲートウェイ536(例えば、図4のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ538(例えば、図4のNATゲートウェイ438)に通信可能に結合することができる。制御プレーンVCN516は、サービスゲートウェイ536およびNATゲートウェイ538を含むことができる。
【0089】
制御プレーンVCN516は、アプリサブネット526を含むことができるデータプレーンミラーアプリ層540(例えば、図4のデータプレーンミラーアプリ層440)を含むことができる。データプレーンミラーアプリ層540に含まれるアプリサブネット526は、コンピューティングインスタンス544(例えば、図4のコンピューティングインスタンス444と同様)を実行できる仮想ネットワークインターフェースコントローラ(VNIC)542(例えば、442のVNIC)を含むことができる。コンピューティングインスタンス544は、データプレーンミラーアプリ層540のアプリサブネット526とアプリサブネット526との間の通信を容易にすることができ、これは、データプレーンミラーアプリ層540に含まれるVNIC542およびデータプレーンアプリ層546に含まれるVNIC542を介して、データプレーンアプリ層546(例えば、図4のデータプレーンアプリ層446)に含まれることができる。
【0090】
制御プレーンVCN516に含まれるインターネットゲートウェイ534は、メタデータ管理サービス552(例えば、図4のメタデータ管理サービス452)に通信可能に結合することができ、これは、パブリックインターネット554(例えば、図4のパブリックインターネット454)に通信可能に結合することができる。パブリックインターネット554は、制御プレーンVCN516に含まれるNATゲートウェイ538に通信可能に結合することができる。制御プレーンVCN516に含まれるサービスゲートウェイ536は、クラウドサービス556(例えば、図4のクラウドサービス456)に通信可能に結合することができる。
【0091】
いくつかの例では、データプレーンVCN518は、顧客テナント521に含まれることができる。この場合、IaaSプロバイダは、各顧客に対して制御プレーンVCN516を提供することができ、IaaSプロバイダは、各顧客に対して、サービステナント519に含まれる一意のコンピューティングインスタンス544をセットアップすることができる。各コンピューティングインスタンス544は、サービステナント519に含まれる制御プレーンVCN516と、顧客テナント521に含まれるデータプレーンVCN518との間の通信を可能にしてもよい。コンピューティングインスタンス544は、サービステナント519に含まれる制御プレーンVCN516内にプロビジョニングされるリソースが、顧客テナント521に含まれるデータプレーンVCN518内に展開されるか、そうでなければ使用されることを可能にし得る。
【0092】
他の例では、IaaSプロバイダの顧客は、顧客テナント521内に存在するデータベースを有し得る。この例では、制御プレーンVCN516は、アプリサブネット526を含むことができるデータプレーンミラーアプリ層540を含むことができる。データプレーンミラーアプリ層540はデータプレーンVCN518内に存在することができるが、データプレーンミラーアプリ層540はデータプレーンVCN518内に存在しなくてもよい。つまり、データプレーンミラーアプリ層540は、顧客テナント521にアクセスできるが、データプレーンミラーアプリ層540は、データプレーンVCN518に存在しなくてもよいし、IaaSプロバイダの顧客によって所有または動作されてもよい。データプレーンミラーアプリ層540は、データプレーンVCN518への呼び出しを行うように構成されてもよいが、制御プレーンVCN516に含まれる任意のエンティティへの呼び出しを行うように構成されなくてもよい。顧客は、制御プレーンVCN516内にプロビジョニングされるデータプレーンVCN518内のリソースを展開またはそうでなければ使用することを望む場合があり、データプレーンミラーアプリ層540は、顧客の所望の展開またはリソースの他の使用を容易にすることができる。
【0093】
いくつかの実施形態では、IaaSプロバイダの顧客は、データプレーンVCN518にフィルタを適用することができる。この実施形態では、顧客はデータプレーンVCN518が何にアクセスできるかを決定することができ、顧客はデータプレーンVCN518からパブリックインターネット554へのアクセスを制限することができる。IaaSプロバイダは、フィルタを適用したり、外部ネットワークまたはデータベースへのデータプレーンVCN518のアクセスを制御したりできない場合がある。顧客によるフィルタおよび制御を顧客テナント521に含まれるデータプレーンVCN518に適用すると、データプレーンVCN518を他の顧客およびパブリックインターネット554から分離するのに役立ち得る。
【0094】
いくつかの実施形態では、クラウドサービス556は、パブリックインターネット554上、制御プレーンVCN516上、またはデータプレーンVCN518上に存在しない可能性があるサービスにアクセスするために、サービスゲートウェイ536によって呼び出すことができる。クラウドサービス556と制御プレーンVCN516またはデータプレーンVCN518との間の接続は、ライブまたは継続的ではない可能性がある。クラウドサービス556は、IaaSプロバイダが所有または動作する別のネットワーク上に存在し得る。クラウドサービス556は、サービスゲートウェイ536から呼び出しを受信するように構成されてもよいし、パブリックインターネット554から呼び出しを受信しないように構成されてもよい。一部のクラウドサービス556は、他のクラウドサービス556から分離されてもよく、制御プレーンVCN516は、制御プレーンVCN516と同じ領域になくてもよいクラウドサービス556から分離されてもよい。例えば、制御プレーンVCN516は「領域1」に配置され、クラウドサービス「展開4」は領域1と「領域2」に配置され得る。展開4への呼び出しが、領域1にある制御プレーンVCN516に含まれるサービスゲートウェイ536によって行われた場合、その呼び出しは領域1の展開4に送信され得る。この例では、制御プレーンVCN516、または領域1の展開4は、領域2の展開4に通信可能に結合されていない、または通信していない可能性がある。
【0095】
図6は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック図600である。サービスオペレータ602(例えば、図4のサービスオペレータ402)は、セキュアホストテナント604(例えば、図4のセキュアホストテナント404)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)606(例えば、図4のVCN406)およびセキュアホストサブネット608(例えば、図4のセキュアホストサブネット408)を含むことができる。VCN606は、SSHVCN612(例えば、図4のSSHVCN412)に含まれるLPG610を介してSSHVCN612に通信可能に結合され得るLPG610(例えば、図4のLPG410)を含むことができる。SSHVCN612は、SSHサブネット614(例えば、図4のSSHサブネット414)を含むことができ、SSHVCN612は、制御プレーンVCN616(例えば、図4の制御プレーンVCN416)に含まれるLPG610を介して制御プレーンVCN616に通信可能に結合することができ、データプレーンVCN618(例えば、図4のデータプレーン418)に含まれるLPG610を介してデータプレーンVCN618に通信可能に結合することができる。制御プレーンVCN616およびデータプレーンVCN618は、サービステナント619(例えば、図4のサービステナント419)に含めることができる。
【0096】
制御プレーンVCN616は、ロードバランサ(LB)サブネット622(例えば、図4のLBサブネット422)を含むことができる制御プレーンDMZ層620(例えば、図4の制御プレーンDMZ層420)、アプリサブネット626(例えば、図4のアプリサブネット426と同様)を含むことができる制御プレーンアプリ層624(例えば、図4の制御プレーンアプリ層424)、DBサブネット630を含むことができる制御プレーンデータ層628(例えば、図4の制御プレーンデータ層428)を含むことができる。制御プレーンDMZ層620に含まれるLBサブネット622は、制御プレーンアプリ層624に含まれるアプリサブネット626と、制御プレーンVCN616に含まれ得るインターネットゲートウェイ634(例えば、図4のインターネットゲートウェイ434)とに通信可能に結合され得、アプリサブネット626は、制御プレーンデータ層628に含まれるDBサブネット630、サービスゲートウェイ636(例えば、図4のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ638(例えば、図4のNATゲートウェイ438)に通信可能に結合することができる。制御プレーンVCN616は、サービスゲートウェイ636およびNATゲートウェイ638を含むことができる。
【0097】
データプレーンVCN618は、データプレーンアプリ層646(例えば、図4のデータプレーンアプリ層446)、データプレーンDMZ層648(例えば、図4のデータプレーンDMZ層448)、およびデータプレーンデータ層650(例えば、図4のデータプレーンデータ層450)を含むことができる。データプレーンDMZ層648は、LBサブネット622を含むことができ、これは、データプレーンアプリ層646の信頼できるアプリサブネット660と信頼できないアプリサブネット662、およびデータプレーンVCN618に含まれるインターネットゲートウェイ634に通信可能に結合することができる。信頼できるアプリサブネット660は、データプレーンVCN618に含まれるサービスゲートウェイ636、データプレーンVCN618に含まれるNATゲートウェイ638、およびデータプレーンデータ層650に含まれるDBサブネット630に通信可能に結合することができる。信頼できないアプリサブネット662は、データプレーンVCN618に含まれるサービスゲートウェイ636およびデータプレーンデータ層650に含まれるDBサブネット630に通信可能に結合することができる。データプレーンデータ層650は、データプレーンVCN618に含まれるサービスゲートウェイ636に通信可能に結合できるDBサブネット630を含むことができる。
【0098】
信頼できないアプリサブネット662は、テナント仮想マシン(VM)666(1)~(N)に通信可能に結合することができる1つまたは複数の1次VNIC664(1)~(N)を含むことができる。各テナントVM666(1)~(N)は、それぞれのアプリサブネット667(1)~(N)に通信可能に結合することができ、これは、それぞれの顧客テナント670(1)~(N)に含めることができるそれぞれのコンテナ出口VCN668(1)~(N)に含めることができる。それぞれの2次VNIC672(1)~(N)は、データプレーンVCN618に含まれる信頼できないアプリサブネット662と、コンテナ出口VCN668(1)~(N)に含まれるアプリサブネットとの間の通信を容易にすることができる。各コンテナ出口VCN668(1)~(N)は、パブリックインターネット654(例えば、図4のパブリックインターネット454)に通信可能に結合できるNATゲートウェイ638を含むことができる。
【0099】
制御プレーンVCN616に含まれ、データプレーンVCN618に含まれるインターネットゲートウェイ634は、パブリックインターネット654に通信可能に結合できるメタデータ管理サービス652(例えば、図4のメタデータ管理システム452)に通信可能に結合することができる。パブリックインターネット654は、制御プレーンVCN616に含まれ、データプレーンVCN618に含まれるNATゲートウェイ638に通信可能に結合することができる。制御プレーンVCN616に含まれ、データプレーンVCN618に含まれるサービスゲートウェイ636は、クラウドサービス656に通信可能に結合することができる。
【0100】
いくつかの実施形態では、データプレーンVCN618は、顧客テナント670と統合することができる。この統合は、コード実行時のサポートが必要な場合など、IaaSプロバイダの顧客にとって有益または望ましい場合がある。顧客は、破壊的な可能性があるコード、他の顧客リソースと通信する可能性のあるコード、またはその他の望ましくない影響を引き起こす可能性のあるコードの実行を提供し得る。これに応じて、IaaSプロバイダは、顧客からIaaSプロバイダに提供されるコードを実行するかどうかを決定できる。
【0101】
いくつかの例では、IaaSプロバイダの顧客は、IaaSプロバイダに一時的なネットワークアクセスを許可し、データプレーン層アプリ646に付加される機能を要求することができる。機能を実行するコードは、VM666(1)~(N)で実行することができ、コードはデータプレーンVCN618上の他の場所で実行するように構成することはできない。各VM666(1)~(N)は、1つの顧客テナント670に接続できる。VM666(1)~(N)に含まれるそれぞれのコンテナ671(1)~(N)は、コードを実行するように構成され得る。この場合、二重隔離が存在する可能性があり(例えば、コンテナ671(1)~(N)のコード実行、コンテナ671(1)~(N)は、信頼できないアプリサブネット662に含まれる少なくともVM666(1)~(N)に含まれ得る)、これは、間違ったコードや望ましくないコードがIaaSプロバイダのネットワークに損害を与えたり、別の顧客のネットワークに損害を与えたりすることを防ぐのに役立ち得る。コンテナ671(1)~(N)は、顧客テナント670に通信可能に結合されてもよく、顧客テナント670からデータを送信または受信するように構成されてもよい。コンテナ671(1)~(N)は、データプレーンVCN618内の任意の他のエンティティからデータを送信または受信するように構成されていない可能性がある。コードの実行が完了すると、IaaSプロバイダはコンテナ671(1)~(N)を強制終了するか、その他の方法で破棄することができる。
【0102】
いくつかの実施形態では、信頼できるアプリサブネット660は、IaaSプロバイダによって所有または動作され得るコードを実行し得る。この実施形態では、信頼できるアプリサブネット660は、DBサブネット630に通信可能に結合され、DBサブネット630内でCRUD動作を実行するように構成され得る。信頼できないアプリサブネット662は、DBサブネット630に通信可能に結合され得るが、この実施形態では、信頼できないアプリサブネットは、DBサブネット630において読み取り動作を実行するように構成され得る。各顧客のVM666(1)~(N)に含めることができ、顧客からのコードを実行することができるコンテナ671(1)~(N)は、DBサブネット630と通信可能に結合されていなくてもよい。
【0103】
他の実施形態では、制御プレーンVCN616とデータプレーンVCN618は、直接通信可能に結合されていなくてもよい。この実施形態では、制御プレーンVCN616とデータプレーンVCN618との間に直接通信が存在しなくてもよい。しかし、通信は少なくとも1つの方法を通じて間接的に行うことができる。LPG610は、制御プレーンVCN616とデータプレーンVCN618との間の通信を容易にすることができるIaaSプロバイダによって確立され得る。別の例では、制御プレーンVCN616またはデータプレーンVCN618は、サービスゲートウェイ636を介してクラウドサービス656への呼び出しを行うことができる。例えば、制御プレーンVCN616からクラウドサービス656への呼び出しは、データプレーンVCN618と通信できるサービスに対する要求を含むことができる。
【0104】
図7は、少なくとも1つの実施形態による、IaaSアーキテクチャの別のパターン例を示すブロック図700である。サービスオペレータ702(例えば、図4のサービスオペレータ402)は、セキュアホストテナント704(例えば、図4のセキュアホストテナント404)に通信可能に結合することができ、これは、仮想クラウドネットワーク(VCN)706(例えば、図4のVCN406)およびセキュアホストサブネット708(例えば、図4のセキュアホストサブネット408)を含むことができる。VCN706は、SSHVCN712に含まれるLPG710を介してSSHVCN712(例えば、図4のSSHVCN412)に通信可能に結合され得るLPG710(例えば、図4のLPG410)を含むことができる。SSHVCN712は、SSHサブネット714(例えば、図4のSSHサブネット414)を含むことができ、SSHVCN712は、制御プレーンVCN716(例えば、図4の制御プレーンVCN416)に含まれるLPG710を介して、制御プレーンVCN716に通信可能に結合することができ、データプレーンVCN718(例えば、図4のデータプレーン418)に含まれるLPG710を介して、データプレーンVCN718に通信可能に結合することができる。制御プレーンVCN716およびデータプレーンVCN718は、サービステナント719(例えば、図4のサービステナント419)に含めることができる。
【0105】
制御プレーンVCN716は、LBサブネット722(例えば、図4のLBサブネット422)を含むことができる制御プレーンDMZ層720(例えば、図4の制御プレーンDMZ層420)、アプリサブネット726(例えば、図4のアプリサブネット426)を含むことができる制御プレーンアプリ層724(例えば、図4の制御プレーンアプリ層424)、DBサブネット730(例えば、図6のDBサブネット630)を含むことができる制御プレーンデータ層728(例えば、図4の制御プレーンデータ層428)を含むことができる。制御プレーンDMZ層720に含まれるLBサブネット722は、制御プレーンアプリ層724に含まれるアプリサブネット726に通信可能に結合することができ、制御プレーンVCN716に含めることができるインターネットゲートウェイ734(例えば、図4のインターネットゲートウェイ434)に通信可能に結合することができ、アプリサブネット726は、制御プレーンデータ層728に含まれるDBサブネット730に通信可能に結合することができ、サービスゲートウェイ736(例えば、図4のサービスゲートウェイ)およびネットワークアドレス変換(NAT)ゲートウェイ738(例えば、図4のNATゲートウェイ438)に通信可能に結合することができる。制御プレーンVCN716は、サービスゲートウェイ736およびNATゲートウェイ738を含むことができる。
【0106】
データプレーンVCN718は、データプレーンアプリ層746(例えば、図4のデータプレーンアプリ層446)、データプレーンDMZ層748(例えば、図4のデータプレーンDMZ層448)、およびデータプレーンデータ層750(例えば、図4のデータプレーンデータ層450)を含むことができる。データプレーンDMZ層748は、LBサブネット722を含むことができ、それは、信頼できるアプリサブネット760(例えば、図6の信頼できるアプリサブネット660)に通信可能に結合され得、データプレーンアプリ層746の信頼できないアプリサブネット762(例えば、図6の信頼できないアプリサブネット662)およびデータプレーンVCN718に含まれるインターネットゲートウェイ734に通信可能に結合することができる。信頼できるアプリサブネット760は、データプレーンVCN718に含まれるサービスゲートウェイ736に通信可能に結合することができ、データプレーンVCN718に含まれるNATゲートウェイ738、およびデータプレーンデータ層750に含まれるDBサブネット730に通信可能に結合することができる。信頼できないアプリサブネット762は、データプレーンVCN718に含まれるサービスゲートウェイ736およびデータプレーンデータ層750に含まれるDBサブネット730に通信可能に接続することができる。データプレーンデータ層750は、データプレーンVCN718に含まれるサービスゲートウェイ736に通信可能に結合できるDBサブネット730を含むことができる。
【0107】
信頼できないアプリサブネット762は、1次VNIC764(1)~(N)を含むことができ、これは、信頼できないアプリサブネット762内に存在するテナント仮想マシン(VM)766(1)~(N)に通信可能に結合することができる。各テナントVM766(1)~(N)は、それぞれのコンテナ767(1)~(N)内でコードを実行することができ、コンテナ出口VCN768に含めることができるデータプレーンアプリ層746に含めることができるアプリサブネット726に通信可能に結合することができる。それぞれの2次VNIC772(1)~(N)は、データプレーンVCN718に含まれる信頼できないアプリサブネット762とコンテナ出口VCN768に含まれるアプリサブネットとの間の通信を容易にすることができる。コンテナ出口VCNは、パブリックインターネット754(例えば、図4のパブリックインターネット454)に通信可能に結合できるNATゲートウェイ738を含むことができる。
【0108】
制御プレーンVCN716に含まれ、データプレーンVCN718に含まれるインターネットゲートウェイ734は、パブリックインターネット754に通信可能に結合できるメタデータ管理サービス752(例えば、図4のメタデータ管理システム452)に通信可能に結合することができる。パブリックインターネット754は、制御プレーンVCN716に含まれ、データプレーンVCN718に含まれるNATゲートウェイ738に通信可能に結合することができる。制御プレーンVCN716に含まれ、データプレーンVCN718に含まれるサービスゲートウェイ736は、クラウドサービス756に通信可能に結合することができる。
【0109】
いくつかの例では、図7のブロック図700のアーキテクチャによって示されるパターンは、図6のブロック図600のアーキテクチャによって示されるパターンの例外であると考えられ、IaaSプロバイダが顧客と直接通信できない場合(例えば、切断されている領域)、IaaSプロバイダの顧客にとっては望ましい場合がある。各顧客のVM766(1)~(N)に含まれるそれぞれのコンテナ767(1)~(N)は、顧客によってリアルタイムでアクセス可能である。コンテナ767(1)~(N)は、コンテナ出口VCN768に含まれることができるデータプレーンアプリ層746のアプリサブネット726に含まれるそれぞれの2次VNIC772(1)~(N)への呼び出しを行うように構成され得る。2次VNIC772(1)~(N)は、呼び出しをパブリックインターネット754に送信することができるNATゲートウェイ738に呼び出しを送信することができる。この例では、顧客がリアルタイムでアクセスできるコンテナ767(1)~(N)は、制御プレーンVCN716から分離することができ、データプレーンVCN718に含まれる他のエンティティから分離することができる。コンテナ767(1)~(N)は、他の顧客からのリソースから隔離されてもよい。
【0110】
他の例では、顧客は、コンテナ767(1)~(N)を使用して、クラウドサービス756を呼び出すことができる。この例では、顧客は、クラウドサービス756からサービスを要求するコードをコンテナ767(1)~(N)内で実行することができる。コンテナ767(1)~(N)は、この要求を2次VNIC772(1)~(N)に送信することができ、2次VNIC772(1)~(N)は、要求をパブリックインターネット754に送信することができるNATゲートウェイに要求を送信することができる。パブリックインターネット754は、インターネットゲートウェイ734を介して、制御プレーンVCN716に含まれるLBサブネット722に要求を送信することができる。要求が有効であるとの決定に応答して、LBサブネットは、サービスゲートウェイ736を介してクラウドサービス756に要求を送信できるアプリサブネット726に要求を送信することができる。
【0111】
図に示されているIaaSアーキテクチャ400、500、600、700は、示されているもの以外の構成要素を有し得ることを理解されたい。さらに、図に示される実施形態は、本開示の実施形態を組み込むことができるクラウドインフラストラクチャシステムのいくつかの例にすぎない。他のいくつかの実施形態では、IaaSシステムは、図示されているよりも多いもしくは少ない構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の異なる構成もしくは配置を有してもよい。
【0112】
特定の実施形態では、本明細書で説明されるIaaSシステムは、セルフサービス、サブスクリプションベース、弾力的に拡張可能、信頼性が高く、可用性が高く、安全な方法で顧客に提供されるアプリケーション、ミドルウェア、およびデータベースサービス製品のスイートを含むことができる。このようなIaaSシステムの一例として、本譲受人が提供するOracle Cloud Infrastructure(OCI)がある。
【0113】
図8は、さまざまな実施形態が実装され得る例示的なコンピュータシステム800を示す。システム800は、上述のコンピュータシステムのいずれかを実装するために使用することができる。図に示すように、コンピュータシステム800は、バスサブシステム802を介して多くの周辺サブシステムと通信する処理装置804を含む。これらの周辺サブシステムは、処理加速装置806、I/Oサブシステム808、記憶サブシステム818、および通信サブシステム824を含み得る。記憶サブシステム818は、有形のコンピュータ可読記憶媒体822およびシステムメモリ810を含む。
【0114】
バスサブシステム802は、コンピュータシステム800のさまざまな構成要素およびサブシステムが意図したとおりに相互に通信できるようにする機構を提供する。バスサブシステム802は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態では複数のバスを利用することができる。バスサブシステム802は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。例えば、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびPeripheral Component Interconnect(PCI)バスが含まれ得る。これは、IEEEP1386.1標準に従って製造されるメザニンバスとして実装できる。
【0115】
処理装置804は、1つまたは複数の集積回路(例えば、従来のマイクロプロセッサまたはマイクロコントローラ)として実装することができ、コンピュータシステム800の動作を制御する。1つまたは複数のプロセッサが処理装置804に含まれてもよい。これらのプロセッサには、単一コアプロセッサまたはマルチコアプロセッサが含まれ得る。特定の実施形態では、処理装置804は、各処理装置に含まれる単一コアプロセッサまたはマルチコアプロセッサを有する1つまたは複数の独立した処理装置832および/または834として実装され得る。他の実施形態では、処理装置804は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理装置として実装されてもよい。
【0116】
さまざまな実施形態において、処理装置804は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時実行プログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ804および/または記憶サブシステム818に存在することができる。適切なプログラミングを通じて、プロセッサ804は、上述のさまざまな機能を提供することができる。コンピュータシステム800は、デジタルシグナルプロセッサ(DSP)、専用プロセッサ等を含むことができる処理加速装置806をさらに含むことができる。
【0117】
I/Oサブシステム808は、ユーザインターフェース入力装置およびユーザインターフェース出力装置を含むことができる。ユーザインターフェース入力装置にはキーボード、マウスやトラックボールなどのポインティング装置、ディスプレイに組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを備えたオーディオ入力装置、マイク、および他のタイプの入力装置が含まれ得る。ユーザインターフェース入力装置には、例えば、Microsoft Kinect(登録商標)モーションセンサーなどのモーションセンシングおよび/またはジェスチャ認識装置が含まれ得、ユーザは、ジェスチャや音声コマンドを使用した自然なユーザインターフェースを通じて、Microsoft Xbox(登録商標)360ゲームコントローラーなどの入力装置を制御し、対話できるようになる。ユーザインターフェース入力装置には、ユーザからの目の活動(例えば、写真撮影中および/またはメニュー選択中の「瞬き」)を検出し、目のジェスチャを入力装置(例えば、Google Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識装置も含まれ得る。さらに、ユーザインターフェース入力装置は、ユーザが音声コマンドを通じて音声認識システム(例えば、Siri(登録商標)ナビゲータ)と対話できるようにする音声認識センシング装置を含んでもよい。
【0118】
ユーザインターフェース入力装置には、限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルビデオカメラなどのオーディオ/ビジュアル装置、ポータブルメディアプレーヤ、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザ距離計、および視線追跡装置なども含まれ得る。さらに、ユーザインターフェース入力装置には、例えば、コンピュータ断層撮影法、磁気共鳴画像法、位置放射断層撮影法、医療用超音波検査装置などの医療用画像入力装置が含まれてもよい。ユーザインターフェース入力装置には、例えば、MIDIキーボード、デジタル楽器などのオーディオ入力装置も含まれ得る。
【0119】
ユーザインターフェース出力装置には、ディスプレイサブシステム、インジケータライト、またはオーディオ出力装置などの非視覚的ディスプレイが含まれてもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル装置、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という用語の使用は、コンピュータシステム800からユーザまたは他のコンピュータに情報を出力するためのあらゆる可能なタイプの装置および機構を含むことを意図している。例えば、ユーザインターフェース出力装置には、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置、およびモデムなど、テキスト、グラフィックス、およびオーディオ/ビデオ情報を視覚的に伝達するさまざまな表示装置が含まれるが、これらに限定されない。
【0120】
コンピュータシステム800は、システムメモリ810内に現在配置されているように示されるソフトウェア要素を備える記憶サブシステム818を備えることができる。システムメモリ810は、処理装置804上でロード可能および実行可能なプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶することができる。
【0121】
コンピュータシステム800の構成および種類に応じて、システムメモリ810は、揮発性(ランダムアクセスメモリ(RAM)など)および/または不揮発性(読み取り専用メモリ(ROM)、フラッシュメモリなど)の場合がある。RAMは通常、処理装置804に即座にアクセス可能な、ならびに/または処理装置804によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態では、システムメモリ810は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。いくつかの実装形態では、起動中など、コンピュータシステム800内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム(BIOS)は、通常、ROMに記憶され得る。限定ではなく一例として、システムメモリ810は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム812、プログラムデータ814、およびオペレーティングシステム816も示す。一例として、オペレーティングシステム816には、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinuxオペレーティングシステム、さまざまな市販のUNIX(登録商標)もしくはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)8OS、およびPalm(登録商標)OSオペレーティングシステムなどのモバイルオペレーティングシステムが含まれ得る。
【0122】
記憶サブシステム818はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ可読記憶媒体を提供することもできる。プロセッサによって実行されると、上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、記憶サブシステム818に記憶され得る。これらのソフトウェアモジュールまたは命令は、処理装置804によって実行され得る。記憶サブシステム818はまた、本開示に従って使用されるデータを記憶するためのリポジトリを提供することもできる。
【0123】
記憶サブシステム800はまた、コンピュータ可読記憶媒体822にさらに接続できるコンピュータ可読記憶媒体リーダ820を含んでもよい。一緒に、そして任意でシステムメモリ810と組み合わせて、コンピュータ可読記憶媒体822は、リモート、ローカル、固定、および/または取り外し可能な記憶装置に加えて、コンピュータ可読情報を一時的および/またはより永続的に収容、記憶、送信、および取得するための記憶媒体を包括的に表すことができる。
【0124】
コードまたはコードの一部を含むコンピュータ可読記憶媒体822には、当技術分野で既知または使用されている任意の適切な媒体を含めることもでき、これには、情報の記憶および/または送信のための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能なおよび取り外し不可能な媒体などの記憶媒体および通信媒体が含まれるが、これらに限定されない。これには、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくはその他のメモリテクノロジ、CD-ROM、デジタルバーサタイルディスク(DVD)などの有形のコンピュータ可読記憶媒体、または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または他の有形のコンピュータ可読媒体が含まれ得る。これには、データ信号、データ送信、または所望の情報を送信するために使用でき、コンピューティングシステム800によってアクセスできる任意の他の媒体などの、無形のコンピュータ可読媒体も含まれ得る。
【0125】
一例として、コンピュータ可読記憶媒体822は、取り外し不可能な不揮発性磁気媒体に対して読み取りまたは書き込みを行うハードディスクドライブ、取り外し可能な不揮発性磁気ディスクに対して読み取りまたは書き込みを行う磁気ディスクドライブ、およびCDROM、DVD、Blu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク、またはその他の光媒体に対して読み取りまたは書き込みを行う光ディスクドライブを含むことができる。コンピュータ可読記憶媒体822には、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどが含まれてもよいが、これらに限定されない。コンピュータ可読記憶媒体822には、フラッシュメモリベースのSSDなどの不揮発性メモリに基づくソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROMなど、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリをベースにしたSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDを組み合わせて使用するハイブリッドSSDも含まれ得る。ディスクドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータシステム800のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶を提供し得る。
【0126】
通信サブシステム824は、他のコンピュータシステムおよびネットワークへのインターフェースを提供する。通信サブシステム824は、コンピュータシステム800から他のシステムとの間でデータを送受信するためのインターフェースとして機能する。例えば、通信サブシステム824は、コンピュータシステム800がインターネットを介して1つまたは複数の装置に接続できるようにすることができる。いくつかの実施形態では、通信サブシステム824は、無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバ構成要素を含めることができる(例えば、携帯電話技術、3G、4G、またはEDGE(地球規模の進化のための強化されるデータレート)などの高度なデータネットワーク技術を使用する)、WiFi(IEEE802.11ファミリ標準、または他のモバイル通信技術、またはそれらの任意の組み合わせ)、全地球測位システム(GPS)受信機構成要素、および/または他の構成要素を含むことができる。いくつかの実施形態では、通信サブシステム824は、無線インターフェースに加えて、またはその代わりに、有線ネットワーク接続(例えば、イーサネット)を提供することができる。
【0127】
いくつかの実施形態では、通信サブシステム824は、コンピュータシステム800を使用することができる1人または複数のユーザに代わって、構造化および/または非構造化データフィード826、イベントストリーム828、イベント更新830などの形式で入力通信を受信することもできる。
【0128】
一例として、通信サブシステム824は、ソーシャルネットワーク、および/もしくはTwitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのWebフィードなどのその他の通信サービス、ならびに/または1つもしくは複数のサードパーティ情報ソースからのリアルタイム更新のユーザからリアルタイムでデータフィード826を受信するように構成され得る。
【0129】
さらに、通信サブシステム824は、連続データストリームの形式でデータを受信するように構成されてもよく、これには、リアルタイムイベントおよび/またはイベント更新830のイベントストリーム828が含まれ得、これらは、連続的または明示的な終わりのない本質的に無制限であり得る。連続データを生成するアプリケーションの例には、例えば、センサーデータアプリケーション、金融ティッカ、ネットワーク性能測定ツール(例えば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などが含まれ得る。
【0130】
通信サブシステム824はまた、構造化および/または非構造化データフィード826、イベントストリーム828、イベント更新830などを、コンピュータシステム800に結合される1つまたは複数のストリーミングデータソースコンピュータと通信することができる1つまたは複数のデータベースに出力するように構成することもできる。
【0131】
コンピュータシステム800は、ハンドヘルドポータブル装置(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブル装置(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
【0132】
コンピュータおよびネットワークの絶え間なく変化する性質のため、図に示されるコンピュータシステム800の説明は、特定の例としてのみ意図されている。図に示されているシステムよりも多くの、または少ない構成要素を備えた他の多くの構成が可能である。例えば、カスタマイズされているハードウェアも使用されたり、特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはその組み合わせで実装されたりし得る。さらに、ネットワーク入出力装置などの他のコンピューティング装置への接続が使用されてもよい。本明細書で提供される開示および教示に基づいて、当業者であれば、さまざまな実施形態を実装するための他の手法および/または方法を理解するであろう。
【0133】
特定の実施形態について説明してきたが、さまざまな修正、変更、代替構造、および均等物も本開示の範囲内に含まれる。実施形態は、特定の特有のデータ処理環境内での動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、特定の一連のトランザクションおよびステップを使用して実施形態を説明したが、本開示の範囲が説明した一連のトランザクションおよびステップに限定されないことは当業者には明らかである。上述の実施形態のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。
【0134】
さらに、ハードウェアとソフトウェアの特定の組み合わせを使用して実施形態を説明したが、ハードウェアとソフトウェアの他の組み合わせも本開示の範囲内であることを認識されたい。実施形態は、ハードウェアのみで、もしくはソフトウェアのみで、またはそれらの組み合わせを使用して実装することができる。本明細書で説明するさまざまなプロセスは、同じプロセッサ上で実装することも、異なるプロセッサを任意に組み合わせて実装することもできる。したがって、構成要素またはモジュールが特定の動作を実行するように構成されていると説明されている場合、このような構成は、例えば、動作を実行する電子回路を設計することによって、動作を実行するようにプログラマブル電子回路(マイクロプロセッサなど)をプログラムすることによって、またはそれらの任意の組み合わせによって達成することができる。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、プロセスの異なる対が異なる技術を使用したり、同じプロセスの対が異なる時点で異なる技術を使用したりすることができる。
【0135】
したがって、明細書および図面は、限定的な意味ではなく、例示的な意味としてみなされるべきである。しかし、特許請求の範囲に記載のより広い趣旨および範囲から逸脱することなく、追加、減算、削除、ならびにその他の修正および変更を行うことができることは明らかである。したがって、特定の開示実施形態について説明してきたが、これらは限定することを意図したものではない。さまざまな修正および均等物は、以下の特許請求の範囲内に含まれる。
【0136】
開示されている実施形態を説明する文脈における(特に、以下の特許請求の範囲の文脈において)用語「a」、「an」、「the」、および同様の指示対象の使用は、本明細書で別途指示するか、文脈と明らかに矛盾しない限り、単数形と複数形の両方をカバーすると解釈されるべきである。「含む」、「有する」、「含む」、および「含有する」という用語は、特に断りのない限り、無制限の用語(すなわち、「含むがこれらに限定されない」を意味する)として解釈されるべきである。「接続されている」という用語は、たとえ何かが介在している場合でも、部分的または全体的に内部に含まれている、取り付けられている、または結合されていると解釈される。本明細書における値の範囲の記載は、本明細書に別段の記載がない限り、その範囲内にある各々の個別の値を個別に参照する簡略的な方法として機能することを単に意図しており、個別の各値は、あたかも本明細書に個別に記載されているかのように明細書に組み込まれる。本明細書に記載されるすべての方法は、本明細書に別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で実行することができる。本明細書で提供されるあらゆる例、または例示的な文言(例えば、「など」)の使用は、単に実施形態をより良く説明することを目的としており、別段の請求がない限り、本開示の範囲に制限を課すものではない。本明細書のいかなる文言も、特許請求されていない任意の要素が本開示の実施に必須であることを示すものとして解釈されるべきではない。
【0137】
「X、Y、またはZのうちの少なくとも1つ」という句などの選言的表現は、特に別段の記載がない限り、項目、用語などがX、Y、またはZのいずれか、またはそれらの任意の組み合わせ(例えば、X、Y、および/またはZ)であり得ることを示すために一般に使用されると文脈内で理解されることを意図している。したがって、そのような選言的表現は、一般に、特定の実施形態が、Xの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つがそれぞれ存在することを必要とすることを意味することを意図したものではなく、また、意味するべきではない。
【0138】
本開示の好ましい実施形態が、本開示を実施するための既知の最良のモードを含めて、本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読めば当業者には明らかになるであろう。当業者であれば、そのような変形を必要に応じて採用することができるはずであり、本開示は、本明細書に具体的に記載された以外の方法で実施することもできる。したがって、本開示には、適用される法律によって許可される、本明細書に添付の特許請求の範囲に記載されている主題のすべての修正および均等物が含まれる。さらに、本明細書で別段の指示がない限り、可能なすべての変形例における上述の要素の任意の組み合わせが本開示に包含される。
【0139】
本明細書に引用される刊行物、特許出願、および特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別かつ具体的に示され、その全体が本明細書に記載されるのと同じ程度に、参照により本明細書に組み込まれる。
【0140】
前述の明細書では、本開示の態様は、その特定の実施形態を参照して説明されているが、当業者は、本開示がそれに限定されないことを認識するであろう。上述の開示のさまざまな特徴および態様は、個別にまたは組み合わせて使用することができる。さらに、実施形態は、本明細書のより広範な趣旨および範囲から逸脱することなく、本明細書に記載されているものを超える任意の数の環境および用途において利用することができる。したがって、明細書および図面は、限定的なものではなく、例示的なものとみなされるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2024-04-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
電子メール配信サービスを提供する電子メールメッセージ配信システムが、メッセージ転送エージェント(MTA)およびプロキシサーバを実行するステップと、
前記MTAが、メッセージキューから処理する第1の電子メールメッセージを選択するステップと、を含み、前記メッセージキューは、複数の送信者から受信した複数の電子メールメッセージを含み、前記複数の送信者は前記電子メール配信サービスの複数の加入者に対応し、
前記MTAが、前記第1の電子メールメッセージに関連付けられた送信者を決定するステップと、
前記MTAが、前記第1の電子メールメッセージの受信者を決定するステップと、
前記MTAが、前記第1の電子メールメッセージに対して決定された前記送信者に基づいて、前記第1の電子メールメッセージのソースIPアドレスとして使用可能なIPアドレスを含む複数のソースインターネットプロトコル(IP)アドレスを識別するステップと、
前記MTAが、前記複数のソースIPアドレスから特定のソースIPアドレスを選択するステップと、
前記MTAが、前記電子メールメッセージの前記受信者の宛先IPアドレスを決定するステップと、
前記MTAが、および1つまたは複数のプロキシサーバのセットから、前記選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別するステップと、
前記MTAが前記特定のプロキシサーバに、前記特定のソースIPアドレスと前記宛先IPアドレスとを含む情報を通信するステップと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された接続を使用して、前記第1の電子メールメッセージを前記宛先IPアドレスに送信するステップと、を含む、方法。
【請求項2】
前記MTAが、前記第1の電子メールメッセージの前記送信者を決定するステップは、前記MTAが、前記第1の電子メールメッセージの送信を許可されている、前記第1の電子メールメッセージの前記送信者に関連付けられたユーザを決定するステップを含み、前記送信者に関連付けられた前記ユーザは、前記第1の電子メールメッセージの「差出人」フィールドに少なくとも部分的に基づいて決定される、請求項1に記載の方法。
【請求項3】
前記第1の電子メールメッセージの前記受信者は、前記第1の電子メールメッセージの「宛先」フィールドに少なくとも部分的に基づいて決定される、請求項1または2に記載の方法。
【請求項4】
前記MTAが、前記複数のソースIPアドレスから前記特定のソースIPアドレスを選択するステップは、前記MTAが、前記複数のソースIPアドレスからアクティブなソースIPアドレスのセットを決定するステップと、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択するステップとを含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記MTAが、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択するための選択技術を使用するステップをさらに含む、請求項4に記載の方法。
【請求項6】
前記送信者の前記複数のソースIPアドレスの第1のセットが、プロキシサーバの前記セット内の第1のプロキシサーバに割り当てられ、前記送信者の前記複数のソースIPアドレスの第2のセットは、プロキシサーバの前記セット内の第2のプロキシサーバに割り当てられる、請求項1~5のいずれか一項に記載の方法。
【請求項7】
プロキシサーバの前記セット内の第1のプロキシサーバは、ソースIPアドレスのセットを扱うように構成されており、前記セット内の第1のソースIPアドレスは、前記複数の送信者のうちの第1の送信者に関連付けられ、前記セット内の第2のソースIPアドレスは、前記複数の送信者のうちの第2の送信者に関連付けられ、前記第1の送信者は前記第2の送信者とは異なる、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記MTAが、前記送信者に関連付けられた前記複数の電子メールメッセージから電子メールメッセージのサブセットを識別するステップと、
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された前記接続を使用して、電子メールメッセージの前記サブセットを前記宛先IPアドレスに送信するステップと、をさらに含む、請求項1~7のいずれか一項に記載の方法。
【請求項9】
メッセージの前記サブセット内のメッセージの数は、前記受信者のドメインに関連付けられたメッセージ制限に少なくとも部分的に基づいて決定され、前記メッセージ制限は、前記プロキシサーバによって確立された前記接続を使用して送信できるメッセージの数を指定する、請求項8に記載の方法。
【請求項10】
前記MTAが前記宛先IPアドレスに前記第1の電子メールメッセージを送信するステップは、前記特定のソースIPアドレスと前記宛先IPアドレスとの間の前記接続が前記プロキシサーバによって正常に確立されたことを示すメッセージを前記プロキシサーバから受信することを含む、請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記プロキシサーバは、伝送制御プロトコル(TCP)プロキシサーバである、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記MTAおよび前記プロキシサーバは単一のコンピュータシステム上に実装される、請求項1~11のいずれか一項に記載の方法。
【請求項13】
電子メール配信サービスを提供する電子メール配信システムであって、
メモリと、
処理を実行するように構成された1つまたは複数のプロセッサと、を含み、前記処理は、
前記電子メール配信システムが、メッセージ転送エージェント(MTA)とプロキシサーバとを実行することと、
前記MTAが、メッセージキューから処理する第1の電子メールメッセージを選択することと、を含み、前記メッセージキューは、複数の送信者から受信した複数の電子メールメッセージを含み、前記複数の送信者は前記電子メール配信サービスの複数の加入者に対応し、
前記MTAが、前記第1の電子メールメッセージに関連付けられた送信者を決定することと、
前記MTAが、前記第1の電子メールメッセージの受信者を決定することと、
前記MTAが、前記第1の電子メールメッセージに対して決定された前記送信者に基づいて、前記第1の電子メールメッセージのソースインターネットプロトコル(IP)アドレスとして使用可能なIPアドレスを含む複数のソースIPアドレスを識別することと、
前記MTAが、前記複数のソースIPアドレスから特定のソースIPアドレスを選択することと、
前記MTAが、前記電子メールメッセージの前記受信者の宛先IPアドレスを決定することと、
前記MTAが、1つまたは複数のプロキシサーバのセットから、前記選択された特定のソースIPアドレスを扱うように構成された特定のプロキシサーバを識別することと、
前記MTAが前記特定のプロキシサーバに、前記特定のソースIPアドレスと前記宛先IPアドレスとを含む情報を通信することと、および
前記MTAが、前記特定のソースIPアドレスと前記宛先IPアドレスとの間に前記プロキシサーバによって確立された接続を使用して、前記第1の電子メールメッセージを前記宛先IPアドレスに送信することと、を含む、電子メール配信システム。
【請求項14】
前記MTAが、前記複数のソースIPアドレスから前記特定のソースIPアドレスを選択することは、前記MTAが、前記複数のソースIPアドレスからアクティブなソースIPアドレスのセットを決定することと、アクティブなソースIPアドレスの前記セットから前記特定のソースIPアドレスを選択することとを含む、請求項13に記載のシステム。
【請求項15】
前記送信者の前記複数のソースIPアドレスの第1のセットが、プロキシサーバの前記セット内の第1のプロキシサーバに割り当てられ、前記送信者の前記複数のソースIPアドレスの第2のセットは、プロキシサーバの前記セット内の第2のプロキシサーバに割り当てられる、請求項13または14に記載のシステム。
【請求項16】
プロキシサーバの前記セット内の第1のプロキシサーバは、ソースIPアドレスのセットを扱うように構成されており、前記セット内の第1のソースIPアドレスは前記複数の送信者のうちの第1の送信者に関連付けられ、前記セット内の第2のソースIPアドレスは前記複数の送信者のうちの第2の送信者に関連付けられ、前記第1の送信者は前記第2の送信者とは異なる、請求項13~15のいずれか一項に記載のシステム。
【請求項17】
前記MTAが、前記第1の電子メールメッセージを前記宛先IPアドレスに送信することは、前記特定のソースIPアドレスと前記宛先IPアドレスとの間の前記接続が前記プロキシサーバによって正常に確立されたことを示すメッセージを前記プロキシサーバから受信することを含む、請求項13~16のいずれか一項に記載のシステム。
【請求項18】
請求項1~12のいずれか一項に記載の方法をコンピュータに実行させるためのプログラム。
【国際調査報告】