CommuniGate Pro
Version 5.1
システム
 
 
 
ルータ

ルータ

このセクションの説明は、管理者向けです。ルーティングメソッドは、通常はデフォルトのメソッ ドで十分です。この説明は、CommuniGate Pro サーバーを使ってメッセージまたはシグナルを別のシ ステムにリレーしたい場合、または、複雑なルーティングスキームを使用する場合に限って、お読みください。

送信されたメッセージがCommuniGate Pro サーバーに到着すると、そのメッセージのエンベロープ から受取人(recipient) 情報が取り出されます。続いて、そのメッセージが格納されるモジュール キューのほか(通常はアクセスモジュールのキュー)、そのモジュールからメッセージが送信される エンティティ、そのエンティティに対するモジュールの処理方法が決定されます。リアルタイムシ グナル(外部ソースから受信、または内部コンポーネントで生成されるリアルタイムシグナル) の 場合も同じように処理され、ローカルまたは外部のエンティティに送信されます。

ログインの際のアドレスもアクセスモジュール(POPIMAPWebUser インターフェイスなど) に よって処理されます。例えば、クライアントアプリケーション/ プログラムからのログインが発生 すると、ログインに必要なアカウントの名前(アドレス) が送信されます。このアドレスは、アク セスモジュールによってメッセージやシグナルのアドレスと同じように処理されます。

ルーティング処理は、CommuniGate Pro のルータ(Router) コンポーネントによって実行されます。 CommuniGate Pro サーバーで何らかのアドレスが受信されると、ルータコンポーネントを使って、そ のアドレスが処理されます。この処理により、サーバーの全コンポーネントの間で整合性が生まれ ます。例えばアカウントにエイリアスを作成している場合、そのエイリアスを介してメールやシグ ナルが、そのアカウントに送信されます。また、エイリアスを使って、そのアカウントにログインが実行されます。

アドレスの構造

電子メールアドレスはいずれも、ドメイン名とローカル部の2 つの部分で構成されています。つま り、一般には、電子メールアドレスはxxxx@yyyyy という形式で表され、ここでyyyyy がドメイン 名(受取人のメールシステムを示す一意の名前)、xxxx がローカル部(受取人のメールシステムの ユーザー名またはアカウント名) です。

電子メールアドレスとしては、さらに複雑な形式もあります。例えば、下記のように、パス情報が置 かれることもあります。
<@zzzz:xxxx@yyyyy> or zzzz!yyyyy!xxxx or xxxx%yyyyy@zzzz
上のような電子メールアドレスの場合、メッセージはまず、システムzzzz に送信され、続い て、そのシステムからxxxx@yyyyy (つまり、システムyyyyy のアカウントxxxx) に送られま す。

メッセージの電子メールアドレスは、ルータで解析され、そのメッセージの送信先のシステムの名前 が取り出されます。このシステムの名前が電子メールのドメイン名部として使われます。また、アド レスの残りの部分は、ローカル部として扱われます。ドメイン名で示されるシステムにメッセージが 配信される場合、このローカル部の受取人に対してメッセージが送信されることになります。上記の 例では、ドメイン名はzzzz、ローカル部はxxxx@yyyyy です。

電子メールアドレスの形式については、詳しくは、RFC822、その他の関連ドキュメントを参照してく ださい。

ローカル部が複雑なアドレス( ローカル部がドメイン名とローカル部で構成されているようなアドレ ス) の場合、そのローカル部は、"%" 記号を使って示されます(例えば、ローカル% ドメイン1% ド メイン2 の形式)。この場合、CommuniGate Pro の正規の形式は、 local%domain1%domain2@domain です。


メールのドメイン名

ルータで、電子メールアドレスからドメイン名が抽出される場合、そのドメイン名とサーバー上のド メイン名が比較されます(この設定は、[General] ページで行えます)。比較でドメイン名が同じであると判定された場合、そのドメイン名は空白の文字列として設定されます。その後、ルータによって ローカル部の処理が開始され、そのローカル部が再度、ドメイン名とローカル部に分割されます。
例えば、CommuniGate Pro サーバーのメインドメインの名前がstalker.com だったとします。この場 合、次の2 つのアドレスはそれぞれ、右側に示すようにローカル部とドメイン部に分割されます。

電子メールアドレスローカル部ドメイン部
support@company.com support company.com
-- routed --> support  
 
 <@company.com:sales@example.com>   sales@example.com company.com
-- routed --> sales@example.com  
-- routed --> sales example.com

ドメインとDNS レコード

CommuniGate Pro は、メイン(サーバー) ドメインに加えて、複数の独立したドメインをサポートし ています。

複数のドメインを使用する場合、特定のドメインに宛てられたメッセージ(またはシグナル) が正常 に処理されることが必要ですが、そのためにはグローバルDNS システムを使用しなければなりませ ん。

例1: サーバー(example.com) にexample.com とparteners-example.com という2 つのドメインがあっ たとします。この場合、両方のドメインについてDNS MX レコードを作成し、またMX レコードがそ れぞれサーバー(example.com) を指すように設定しなければなりません。

例2: サーバー(example.com) をクライアントシステムのリモートPOP メールホストリレーとして 使用するとします。クライアントは3 つで、ドメイン名はそれぞれclient1.com、client2.com、 client3.com です。ここで、ルータを使って、ドメインclient1.com に宛てられたメッセージがすべて 統合ドメインワイドアカウントであるclient1 にルートされるようにしたかったとします。また、ド メインclient1.com へのメッセージがサーバー(example.com) にもルートされるようにします。この 場合、DNS システムにclient1.com のMX レコードを作成し、そのレコードがサーバー(example.com) を指すようにしなければなりません。


ルーティングテーブル

ルータで電子メールアドレスが解析され、その結果、抽出されたドメイン名がサーバーのメインドメ インの名前とは異なっていた場合、ルータにより、ルーティングテーブルのルーティングレコードが チェックされます。

ルーティングテーブルの内容は、定義と変更が可能です。定義や変更を行いたい場合、WebAdmin イ ンターフェイスの[Settings] セクションの[Router] ページを開きます。

ログレベル:
Add 非修飾ドメイン名に

ルーティングテーブルは複数の行で構成され、各行がそれぞれ独立したルーティングレコードです。 ルーティングレコードは左側の部分と右側の部分に分かれ、両者を等号(=) でつなぎます。右側の部 分には、セミコロン(;) を付加し、その右にコメントを入力できます。また、行の先頭にセミコロ ンを入力し、その右にコメントを入力することもできます。

処理ではまず、ルータに分析後のアドレス(つまりドメイン部とローカル部に分割されたアドレス) が送られます。その後、ルータによりルーティングテーブルのレコードが上から下までスキャンされ ます。ここで該当するレコードが見つかれば必要な処理が実行され(下記を参照)、その後、修正さ れたアドレスが再度、ルータによって処理されます。

ログレベル (Log Level)
CommuniGate Pro のルータにはログ設定があり、このログ設定はWeb ブラウザを使って変更 できます。設定には[Log] オプションを使い、ここで、ルータによってシステムログに記 録される情報の種類を指定できます。このオプションは、通常は[Major] (アドレスのルー ティング) に設定しておきます。ただし、ルータに何らかの問題が発生しているようであれ ば、[Low-Level] または[All Info] に変更します。この場合、ルータの低レベルの情報がシ ステムログに格納されます。システムログのうち、ルータによって出力されたログには ROUTER タグが付加されます。

接頭辞

ルーティングレコードにはリレーモード接頭辞を指定できます。リレーモード接頭辞としては、 Relay: (R: と簡略化可能)、NoRelay: (N: と簡略化可能)、RelayAll: の3 種類があります(詳し くは、保護 のセクションを参照)。リレーモード接頭辞を指定しなかったときには、接頭辞として Relay: が指定されていると見なされます。

また、ルーティングレコードには次の接頭辞(処理に関する接頭辞) を指定できます。 上記の3 種類の接頭辞はいずれも、リレーモード接頭辞(指定する場合) の後ろに指定しなければな りません。また、上記の接頭辞を指定しなかったときには、アドレスの処理と関係なくレコードが使 用されます。

サンプル

ルーティングレコードの左側の部分はサンプル(見本) です。サンプルは文字列で、ワイルドカードを使用できます。

サポートされているワイルドカードは次の通りです。
*
このワイルドカード(アステリスク) は、0 以上の記号(文字) を表します。
例1:
sta*r
上の例は、任意の文字列staXXXXXXr に一致します。ここでXXXXXXは任意のサブ文字列 (サブ文字列がない文字列、つまりstar も含みます) です。
( サイズタイプ)
タイプはサブ文字列のタイプです。
  • d - 10 進数 (0 .. 9)
  • h - 16 進数 (0 .. 9, A .. F, a .. f)
  • L - 英数字 (0 .. 9, A .. Z, a .. z)
  • * - 任意の文字

サイズはサブ文字列の長さで、オプションです。次の形式で指定できます。
  • nnn ( nnn は10 進数) : サブ文字列の長さがnnn個の場合、文字列(サンプル) が一致。
  • nnn+: サブ文字列の長さがnnn個以上の場合、文字列が一致。
  • nnn-mmm ( mmm は10 進数で、mmm >= nnn) : サブ文字列の長さがnnn個からmmm個の場 合、文字列が一致。
サンプル1:
sta(3*)r
このサンプルは、文字列staXXXr を表します。XXXは3 文字の任意の文字列です。
サンプル2:
sta(4+d)r
このサンプルは、文字列staDDDDDr を表します。DDDDDは4 個以上の10 進数です。
サンプル3:
sta(3-5h)r
このサンプルは、文字列staHHHr を表します。HHHは、数が3、4、5 個のいずれかの16進数です。

バックスラッシュ(\) をエスケープ文字として使用できます。バックスラッシュ2 つ(\\) は、一 つのバックスラッシュとして処理されます。\* は、アステリスクとして処理されます。

単一のサンプルに指定できるワイルドカードは一つに限られます。

ルート

ルーティングレコードの右側の部分はルート(経路) です。ルートは文字列で、オプションでワイル ドカードを使用できます。

処理対象のアドレスがいずれかのサンプルと一致した場合、そのアドレスはルート(レコードルー ト) に変換されます。サンプルとルートの両方にワイルドカードを指定した場合、サンプルのワイル ドカードに相当するサブ文字列が、ルートのワイルドカードの文字列として使用されます。

The backslash (\) symbol is used as an escape symbol: \\ is processed as a single backslash symbol, \* is processed as an asterisk symbol, etc.

Only one wildcard symbol is allowed in a Route.

ドメインレベルのルーティングレコード

ルーティングレコードの左側の部分にドメイン名を指定した場合、そのレコードについて、ドメイン レベルのルーティングが実行されます。

サーバー上で何らかのアドレスが処理され、そのアドレスのドメイン名がルーティングテーブルのい ずれかのレコードの左側の部分に定義されていた場合、レコードの左側の部分が自動的に右側の部分 に置き換えられます。

例:
hq.company.com = twisted.company.com
この場合、ドメイン名hq.stalker.com は、ドメインtwisted.stalker.com に変換されます。この 後、ルータにより、変換後のアドレスを使って処理が行われます。

下は、ルーティングパスとしてリレーを指定するときの例です。

例:
hq.company.com = hq.company.com@relay.company.com
この場合、ドメインhq.stalker.com に向けられたメッセージはすべてシステム( ドメイン) relay.stalker.com にリダイレクトされ、さらにrelay.stalker.com からドメインhq.stalker.com にリダイレクトされます。

メッセージの宛先が複数の場合( ドメイン名の一部が同じ)、同じようにしてルートできます。この 場合、ワイルドカードとしてアステリスクを使います。

例:
*.old_company.com = new_company.com
この場合、メッセージのうち、その送信先のドメインの名前が.old_company.com で終わるメッ セージがすべてドメインnew_company.com にルートされます。

上の方法は、ドメインのサブドメインすべてにメッセージをルートしたいときにも有用です。下は例 です。

例:
*.mycompany.com = mycompany.com
mycompany.com は、サーバーのメインドメイン名です。この場合、メインドメインのサブド メインに宛てられたメッセージはすべて、メインドメインに送信されます。例えば、ユー ザー名@mail.mycompany.com というアドレスは、ユーザー名@mycompany.com として処理さ れます。
下は、左側と右側の両方でアステリスクを使用した例です。
*.old_company.com = *.new_company.com
この場合、ドメインhost5.old_company.com に向けられたメッセージはドメイン host5.new_company.com にルートされます。.
下は、アステリスクを使ったもう一つの例です。
system-*.mycompany.com = uu*.local
このルーティングレコードの場合、system-abc.mycompany.com 宛のメッセージは、ドメイン uuabc.local にルートされます。

以上はいずれもドメインレベルのルーティングレコードですが、アカウントレベルのルーティングレ コードを使って、ドメインレベルのルーティングを定義することもできます(下記を参照)。また、 ルーティングレコードとしては、統合ドメインワイドアカウントのレコードも定義でき、このレ コードもドメインレベルのルーティングレコードです。

アカウントレベルのルーティングレコード

ルーティングレコードの左側の部分には電子メールアドレスを定義することもでき、定義する場合、 電子メールアドレスを山括弧(< と>) で囲みます。これで、そのレコードは、アカウントレベルの ルーティングルールとして解釈されます。

ルータにより、電子メールアドレスの解析が行われ、その後、ルーティングテーブルのレコードがス キャンされる際、その電子メールアドレスのドメイン部と、各レコードの左側の部分のドメイン部が 比較されます。ドメイン部が同じレコードが見つかったときには、さらに、その電子メールアドレスのローカル部と、各レコードの左側の部分のローカル部が比較されます。レコードの左側の部分には アステリスクを使用することもでき、比較では、このアステリスクも考慮されます。このようにして、 電子メールアドレスのドメイン部とローカル部の両方が同じレコードが見つかった場合、ルーティン グレコードの右側の部分(エイリアス) が、その電子メールアドレスの新規のアドレスとして解釈さ れます。その後、ルータにより再度、その新規のアドレスの解析と処理が行われます。

注意: ルータによる解析の際、サーバーのメインドメインの名前は、その場で空白の文字列に置き換 えられます。そのため、アカウントレベルのルーティングレコードの場合、左側の部分にはメインド メインの名前を指定しないようにします。

以下、例を使って説明します。いずれの例でも、mycompany.com はサーバーのメインドメイン名です。

下は、一般的な定義の例です。
<sales> = bill
上の場合、送信先がsales@mycompany.com のメッセージはすべて、Bill に送られます。つまり、 Bill@mycompany.com に宛てて送信されたのと同じです。
注意: アカウントレベルのレコードにローカル名xxxx (アカウント) を指定した場合でも、その実 際のアカウントxxxx をサーバー上で作成する必要はありません。また、実際のアカウントxxxx を作 成しても、そのアカウントにメッセージが格納されることはないため無駄です。アカウントxxxx に 宛てられたメッセージはすべて、「別の場所」にルートされます。

アカウントレベルのレコードの右側には、電子メールアドレスを指定することもできます。

下は、右側に電子メールアドレスを定義した例です。
<sales> = Bill@thatcompany.com
この場合、sales@mycompany.com に向けられたメッセージはすべて、Bill@thatcompany.com に 送信されます。つまり、Bill@thatcompany.com が新規のアドレスとして解釈され、ここから ドメイン名(thatcompany.com) とローカル部(Bill) が取り出されます。その後、ルータに より、thatcompany.com へのルートが検索されます。

アカウントレベルのレコードの左側の部分では、そのローカル部にワイルドカードとしてアステリス ク(*) を使用できます。また、アステリスクは右側の部分にも定義でき、その場合、アステリスクは 任意の場所に置くことができます。右側に定義したときには、左側のアステリスクの内容が右側のア ステリスクで使われます。

下は、左側と右側の両方でアステリスクを定義した例です
<dept-*> = postmaster@*-dept.mycompany.com
ルータ 上の場合、dept-sales@mycompany.com に宛てられたメッセージはすべて、salesdept. mycompany.com (営業部門のメールサーバー) のポストマスターに配信されます。

ルータエイリアスレコードを使って、サーバーのセカンダリドメインに向けられたメッセー ジをリルートすることもできます。

下は、ローカルのセカンダリドメインclient.com にメッセージをリルートするときの例です。
<sales@client.com> = Bill@client.com
この場合、sales@client.com 宛のメッセージはいずれも、Bill@client.com に送信されます。
下も同様の例です。
<sales@client.com> = Bill
この場合、sales@client.com に向けられたメッセージはすべて、Bill@mycompany.com ( メイン ドメインのアカウントBill) に送信されます。

なお、アカウントレベルのルーティングレコードは、ほとんどのケースでは、とくに使用する必要は ありません。例えば、メインドメインの場合、そのアカウントにエイリアスを作成することで同様 の操作が行えます。また、ローカルドメインのアカウントに宛てられたメッセージを外部のアドレス にリルートする場合、フォワーダを利用できます。

一方、特定のアカウントに向けられたメッセージを別個に処理したい場合、アカウントレベルのレ コード(エイリアス) が必要です。例えば、ドメインのアカウントのうち、いずれかのアカウントに 向けられたメッセージはメインドメイン(または別のシステム) の特定のアカウントにルートされる ようにし、それ以外のアカウント宛のメッセージはすべて別のメールホストや統合アカウントにルー トしたい、といったケースもあります。

下は、上記のケースの例です。
Mail:<sales@client1.com> = sales-client1
Mail:client1.com = new.client1.com

上の場合、ドメインclient1.com のアカウントsales に向けられたメッセージは、現在のサー バーのメインドメインのアカウントsales-client1 に送られます。一方、sales 以外のアカウン トに向けられたメッセージはすべて、システムnew.client1.com に送信されます。

アカウントレベルのレコードの左側の部分が電子メールアドレスの場合、アステリスクは正規のアカ ウント名のローカル部(つまり@ の前の部分) でのみ使用できます。

左側の電子メールアドレスの部分でワイルドカード(アステリスク) を使うことにより、CommuniGate Pro のいずれか一つのドメインの中で数のドメイン(仮想ドメイン) をサポートできます。この場合、 一意の「アドレススペース(アクセスを付加した電子メールアドレス)」がそれぞれドメイン(例えば 下記のclient5.com) を表します。

下は、上記の場合の例です。
<*@client5.com> = cl5-*
<*@client7.com> = cl7-*

この場合、アドレスsales@client5.com 宛のメッセージは、メインドメインのアカウントcl5- sales に送信されます。info@client5.com 宛のメッセージは、メインドメインのアカウントcl5- info に送られます。また、sales@client7.com 宛のメッセージは、メインドメインのアカウン トcl7-sales に送信されます(左側と右側のアステリスクは相互に対応)。

上のルーティングは、ドメインのアカウントは1 つか2 つしか必要ないが、ドメインは多数ほしいと いうときに利用できます。つまり、CommuniGate Pro の正規のドメインを多数作成する必要はありません。

ローカル部のみのルーティングレコード

アカウントレベルのレコードでは、左側のアドレスのドメイン部にワイルドカード(*) を定義する ことができます。このレコードは、処理(ルーティング) 対象のアドレスのうち、ローカルドメイン (CommuniGate Pro サーバーまたはCommuniGate Pro クラスタ上に作成されたドメイン) が含まれて いるアドレスに適用されます。右側にはアドレス( ローカル部) を指定し、そのアドレスのドメイン としては左側のアドレスのドメイン(ローカルドメイン) が使われます。

例:
<abuse@*> = postmaster
上のレコードでは、アドレスabuse@domainX.dom がpostmaster@domainX.dom にリルートされます。 domainX.dom は仮の名前で、CommuniGate Pro システム上に作成されたドメインすべてを表します。

右側にドメイン部を指定した場合、そのドメインにアドレスがルートされます。

例:
<abuse@*> = postmaster@somedomain.com
上の場合、まずアドレスabuse@domainX.dom がpostmaster%somedomain.com@domainX.dom にリルート されます(domainX.dom はCommuniGate Pro システム上に作成されたドメインすべて)。その後、ア ドレスpostmaster%somedomain.com@domainX.dom がアドレスpostmaster@somedomain.com にリルート されます。

また、左側のアドレスのロカール部にワイルドカードを指定することもできます(通常のアカウント レベルのレコードと同じです)。ワイルドカードに一致した文字列は、右側のアドレスで使用されま す。

例:
<+*@*> = 011*
上のレコードの場合、アドレス+490088899@domainX.dom はアドレス 011490088899@domainX.dom にリルートされます(domainX.dom はCommuniGate Pro システム上に 作成されたドメインすべて)。

特殊アドレス

電子メールメッセージのアドレスのドメイン部がNULL であるか、またはドメイン部が空白でローカ ル部がNULL の場合、そのメッセージは「ブラックホール」モジュール(内部の仮想のモジュール) に送られます。

「ブラックホール」に送られたメッセージには「配信済み」というマークが付けられ、以後は処理は 行われません。したがって、「ブラックホール」アドレス、つまりローカル部またはドメインが NULL のアドレスを利用することで、そのアドレスに送信されたメッセージをすべて廃棄することが できます。また、アドレスMAILER-DAEMON はすべて自動的にNULL にリルートされます。

下は例です。
bad.company.com = null
<junk> = null

上記の行をルーティングテーブルに定義しておいた場合、ドメインbad.company.com に向け られたメールはすべて廃棄されます。また、junk ( メインドメインのアドレス) 宛のメール もすべて廃棄されます。

アドレスのドメイン部がERROR の場合、またはドメイン部が空白でローカル部がERROR の場合、そのアドレスは拒否され、したがって配信処理は行われません。また、「ブラックリストアドレス (Blacklisted Address)」エラーが出力されます。

下は、例です。
bad.company.com = error
<junk> = error

上の行をルーティングテーブルに記述しておいた場合、ドメインbad.company.com に向けられた メール、また、junk ( メインドメインのアドレス) に向けられたメールはすべて拒否されます。

アドレスのドメイン部がBlackListed の場合、または、ドメイン部が空白でローカル部が BlackListed の場合、そのアドレスは拒否され、したがって配信処理は行われません。また、「ブ ラックリストアドレス(Blacklisted Address)」エラーが出力されます。詳しくは、SMTP モジュールの説明を参照してください。

ドメイン部が空白で、かつローカル部がspamtrap の場合、ルーティングは行われません。この種 のアドレスはすべて、ERROR (エラー) アドレスとして処理されます。ただし、SMTP モジュールで は、別の方法で処理されます。この処理については、詳しくはを保護のセクションを参照してくださ い。

ドメイン部が接尾辞.here で終わる場合、この.here は自動的に削除され、残りの部分が CommuniGate Pro のローカルドメインの名前として使われます。この接尾辞を使うことで、ルーティ ングループを回避できます。

下は、例です。
<(1-4d)@*> = incomplete
With these records entered, dialing a 1-,2-, or 3-digit numbers will return the "Address Incomplete" error code to the client, forcing it to wait for additional input from the user.

If the domain name part ends with the symbols .here, this suffix is removed, and the remaining part of the domain name is used as the name of a local CommuniGate Pro Domain. This suffix allows you to avoid routing loops in certain situations.

Example:
dept1.xyz.com = dept1.xyz.com.here
dept2.xyz.com = dept2.xyz.com.here
*.xyz.com = *.abc.com

上の場合、ドメインxyz.com の各サブドメインに宛てられたメールはすべて、ドメイン abc.com の各サブドメインにリルートされます。一方、dept1.xyz.com とdept2.xyz.com の2 つ のサブドメインに宛てられたメールは、CommuniGate Pro のローカルドメインである dept1.xyz.com とdept2.xyz.com に送られます。

リモートシステムを介した明示的ルーティング

ルーティングレコードのスキャンの際、ドメイン部に接尾辞.via が付加されているレコードがある かどうかチェックされます。あった場合、接尾辞.via が削除され、残りのドメイン名がターゲット のホスト名として使用されます。また、アドレスのローカル部がアドレスとして使われ、そのアドレ スがターゲットのホストに渡されます。ここでアドレスは、処理がシグナル処理のときにはSIPモ ジュールに、処理がメール転送/ アクセスのときにはSMTPモジュールにルートされます。

例1:
サーバーのメインドメインがcompany.com だったとします。
ここで、ドメインsales.company.com 宛のメールは別のサーバーsales.company.com にリ レーします。一方、company.com のそれ以外のサブドメインに宛てられたメールはすべてメ インドメインへのメールとして処理(例えば、アドレスがuser@subdomain.company.com の メールをアドレスがuser@company.com のメールとして処理) したかったとします。
この場合、次のレコードを定義することで、上記の処理が可能です。
sales.company.com = sales.company.com.via ; リモートホストに明示的にリレー
*.company.com = company.com ; それ以外のサブドメインへのメールはcompany.com にリルート

上記のルーティングは、次のようにIP アドレスを使って定義することもできます。 :
sales.company.com = [192.0.0.1] ; IP アドレスに明示的にリレー
*.company.com = company.com ; それ以外のサブドメインへのメールはcompany.com
にリルート

注意: 接尾辞.via があるときには、アドレスのドメイン部が削除され、残りのアドレス(ローカル 部) だけがホストにリレーされます。例えば、ドメイン部がsales.stalker.com の場合、アドレス <user@sales.stalker.com> はアドレス<user> としてホストsales.stalker.com にリレーされます。サー バーによっては、ドメインのないアドレスを受け付けないものもあり、その場合、問題が生じます。 この問題は、接尾辞.via を付加しないという方法で回避できます(次の例を参照)。

例2:
client1.com, client2, client3.com の各ドメイン宛てのメールをすべてhost.comに送信したいとします。
この場合、次のようなレコードを定義します。
client1.com = client1.com@host.com.via
client2.com = client2.com@host.com.via
client3.com = client3.com@host.com.via

上のレコードはまた、次のように定義することもできます。
client1.com = client1.com@relay
client2.com = client2.com@relay
client3.com = client3.com@relay
relay = host.com.via

注意: 上記で、host.com.via の代わりにhost.com と指定することもできます(他にhost.com を定義したレコードがあるときは除きます)。ただし、host.com と指定した場合、 user@client1.com 宛てのメールは、user%client1.com@host.com というアドレスでhost.com に送られます。一方、接尾辞.via を使ったときには、アドレスはリレーモジュールにルートされる と同時に、リレーモジュールによってアドレスのローカル部だけがリモートホスト(host.com) に送 信されます。

接尾辞.via がないときのアドレスの処理
user @ client1.hostルータにより次のように変換 user%client1.host @ relay
user%client1.host @ relayルータにより次のように変換 user%client1.host @ host.com
user%client1.host @ host.comルータの処理なし host.comの定義なし
user%client1.host @ host.comルータの処理あり SIP/SMTPホストhost.com user%client1.host@host.comとして送信
 
接尾辞.via があるときのアドレスの処理
user @ client1.hostルータにより次のように変換 user%client1.host @ relay
user%client1.host @ relayルータにより次のように変換 user%client1.host @ host.com.via
user%client1.host @ host.com.viaルータの処理あり ホストhost.com user@client1.hostして送信

レコードのアドレスのドメイン部に接尾辞.via がある場合、その.via が削除され、その後、ドメ イン名の右端の部分がチェックされます。この右端の部分が数値の場合、その数値の前にあるポート 番号区切り記号(.) がコロン(:) に変更されます(下記を参照)。

host.domain.26.via --> host.domain:26 上のようにドメイン名にコロンがあるときには、SIP モジュールとSMTP モジュールにより次のよう な処理が実行されます。

また、ルータによってアドレスのドメイン部が接尾辞.relay で終わっているかどうかがチェック されます。この接尾辞があれば、削除され、残りのドメイン名がターゲットのホスト名として使われ ます( この処理は、ポート番号区切り記号がコロンに変更された後に行われます)。その後、このド メイン名(ポート番号区切り記号とポート番号の削除後のドメイン名) とローカル部が@ 記号で結 合されます。

例1:
サーバーのメインドメインがcompany.com だったとします。
ここで、ドメインxxxx.department.company.com (xxxx は、sales やmarketing などの任 意の名称) 宛てのメールはそれぞれDNS レコードを介して別個のサーバーに送り、一方、 company.com のそれ以外のサブドメイン宛てのメールはすべて、メインドメインのアドレス へのメールとして処理(つまりアドレスuser@subdomain.company.com をアドレス user@company.com として処理) したかったとします。
このルーティングは、次のようなレコードを定義することによって可能です。
*.sales.company.com = *.sales.company.com.relay ; 明示的に外部にリレー
*.company.com = company.com ; その他のサブドメイン宛てのメールをリルート

Routing to Real-Time Applications

Many Signals (especially phone calls) should be handled with the "stock" or custom Real-Time Applications. To Route a Signal to an Application you need to specify the Application name and, separated with the hash (#) symbol, the name of the Account that will be used to run the application:

The following record routes Signals sent to the someName@someDomain address to the application myProgram started on behalf of the user@domain Account:
<someName@someDomain> = myProgram#user@domain

You can specify the application parameters by adding them after the application name, enclosed into the { and } brackets and separated with the comma (,) symbol.

The following record routes Signals sent to the someName@someDomain address to the application myProgram started on behalf of the user@domain Account. The program is started with 2 parameters - "mixer" and "fast":
<someName@someDomain> = myProgram{mixer,fast}#user@domain

The wildcards in the right part of a Router record are substituted before any processing begins, so you can use the wildcard value as the application parameter.

The following record routes Signals sent to the +(20d)@someDomain addresses to the application myProgram started on behalf of the user@domain Account. The program is started with a parameter. The parameter is the catenation of the string num= and the wildcard value - the phone number without the leading + symbol:
<+(20d)@someDomain> = myProgram{num=*}#user@domain

電話番号のルーティング

アドレスのドメイン部がtelnum (電話番号) の場合、そのアドレスのロカール部はE.164 電話番号 として処理されます。

ルータによる処理では、まず次の処理が実行され、その結果をもとにルーティングテーブルの処理や 必要なルーティング処理が実行されます。

電話番号が上記のいずれの処理でもリルートされない場合、その電話番号は通常のアドレスとして処 理されます。

Phone Number ENUM Domains

ENUM ドメインは、上記のオプションで作成できます。作成するには、空白のフィールドにENUM ドメインの名前を入力し、[Update] ボタンをクリックします。削除したい場合、フィールドの名前 を削除し、[Update] ボタンをクリックします。ENUM ドメインは、定義してある順番で使用されま す。

PSTN と電話番号のルーティングについては、詳しくはPSTNのセクションを参照してください。


ルーティングテーブルのIP アドレス

ルーティングテーブルにはIP アドレスを定義することもできます。ルーティングテーブルのレコード に対するスキャンがすべて終わると、ルータにより、読み込まれたドメイン名がIP アドレスでないか どうかがチェックされます。ドメイン名がIP アドレスであり、そのIP アドレスが角括弧([ と]) で 囲まれていなかったときには、自動的に角括弧が付加されます。例えば、user@10.34.45.67 は、 user@[10.34.45.67] に変換されます。したがって、ルーティングテーブルにIP アドレスを指定す る場合、角カッコで囲む必要はありません。

また、ルーティングテーブルにIP アドレスが指定されていた場合、そのIP アドレスが、いずれかの セカンダリドメインの専用IP アドレスであるかどうかがチェックされます。専用IP アドレスだった ときには、そのIP アドレスは、そのドメインの名前に置き換えられます。一方、IP アドレスがメイ ンドメインのIP アドレスだった場合、ドメイン部に空白の文字列が挿入され、その後、アドレスの ローカル部の解析が実行されます。この処理が完了すると、次の処理が開始されます。

ローカルドメインにIP アドレスが割り当てられていない場合、ドメイン名[10.34.45.67] は10.34.45.67.default_port.viaとして処理されます。アドレスは、SIP モジュールまたはSMTP モジュールに送られた後、モジュールでドメイン部が取り出され、そのドメイン部がリレー先のホス ト名として使用されます。


各モジュールを介したルーティング

ルーティングテーブルがスキャンされ、アドレスに該当するレコードがなかった場合、または、その アドレスが特殊アドレスもしくはローカルドメインのIP アドレスのどちらでもなかった場合、ルータ により、各通信モジュールが呼び出されます。また、各モジュールにアドレスが渡されると同時にルー ティング処理要求が送られます。

各モジュールでは、渡されたアドレスがチェックされ、その結果に基づいて次のような処理が行われます。

いずれかのモジュールでアドレスが修正された場合(上記の2 番目のケース)、ルータにより、そのア ドレス(処理後のアドレス) が再度チェックされ、上記の処理が繰り返されます。

いずれかのモジュールでアドレスが受け入れられた場合(上記の最後のケース)、ルータがメッセージ エンキューアコンポーネントから呼び出され、ルータにより、そのモジュールのキューにメッセージ が格納され、その後、配信されます。

If the Router is called from the シグナル component, and a module has accepted the address, the Signal Request is sent to this module for processing.

各モジュールに対しては、ルータから呼び出しが2 回、実行されます。最初の呼び出しでは、各モ ジュールに対して「明白」なアドレス(モジュール専用のアドレス) を処理するように指示が出され ます。つまり、この場合、モジュールでは、そのモジュールに対して直接向けられたアドレスが処理 されます。例えば、SMTP モジュールの場合、アドレスのうち、そのドメイン名が.smtp で終わるア ドレスが処理されます。また、LIST モジュールでは、既存のメーリングリストのアドレスが処理され ることになります。

最初の呼び出しで、いずれのモジュールでもアドレスが無視または拒否された場合、ルータから各モ ジュールに対して2 回目の呼び出しが実行され、ここで「最終処理」が求められます。つまり、例え ば、Local Delivery モジュールでは、各ローカルドメインに向けられたアドレスが処理されます。また、 SMTP モジュールの場合、その名前にピリオドが1 つ以上含まれているドメインのアドレスが処理さ れます。

上のように、特定の呼び出し順を用いず、各モジュールに対して「公平」に2 段階の呼び出しを実行 するという方法を使うことで、各モジュールで電子メールアドレスが的確に処理されるようになりま す。一方、特定の呼び出し順による1 段階の処理では、処理が的確に行われないことがあります。例 えば、アドレスがlistname@domainname ( ローカルドメインのアカウントのアドレスの形式) の 場合、まず、Local Delivery モジュールを呼び出し、その後、LIST モジュールを呼び出したときには、 このアドレスはLocal Delivery モジュールで拒否され、したがってLIST モジュールで処理されなくな ります。また、アドレスuser@accountName.local は、本来、Local Delivery モジュールで処理さ れなければならないのに、SMTP モジュールで扱われることになります。

上記の処理については、詳しくは各モジュールの説明を参照してください。


外部ヘルパーによるルーティング

ルーティングレコードのスキャン後、ルータによりドメイン名として文字列external が定義され ているかどうかががチェックされます。見つかった場合、その文字列(external) が削除された後、ローカル部が外部プログラム(外部ヘルパー) に渡されます。

外部認証プログラムでは、渡されたアドレスを何らかの方法でルーティング処理を行います。処理 後、変更後のアドレスまたはエラーコードを返します。

外部プログラムから変更後のアドレスが返った場合、ルータでは、そのアドレスを使って後続の処理 が実行されます。

例1:
011 で始まるローカルドメインのアドレスがあり(シグナルの送信先のアドレス)、そのアド レスを外部ヘルパープログラムを使ってルーティングを行いたかったとします。
この処理は、次のレコードを使って可能です。
NoRelay:Signal:<011*@*> = tele-*@external ; 外部プログラムを使ってルーティングを実行

上のレコードを定義した場合、アドレス0115556666@local.domain.dom (シグナルの送信先の アドレス、local.domain.dom は任意のローカルドメイン) はtele-5556666@external にリルート され、要求が外部ヘルパープログラムに送信されます。要求の内容は、アドレスtele-5556666 の ルーティング処理です( この処理が外部プログラムで実行されます)。


ENUM のルーティング

CommuniGate Pro のルータは、DNS ベースの電話番号ルーティングをサポートしています。このルー ティング処理は通常、E.164 番号に対して使用します。E.164 番号とは、+記号、国番号、地域コー ド、ローカル番号で構成される電話番号をいいます。

ドメイン名に接尾辞.enum がある場合、ルータにより次のような処理が行われます。

ルータが再起動し、見つかったマッピング文字列が新規のデスティネーションアドレスとして処理されます。

DNS 検索で"unknown host name (ホスト名不明) " エラーが返った場合、接尾辞.enum が接尾辞 .noenum に置き換えられます。その後、ルータが再起動し、変更後のアドレス(接尾辞.noenum のア ドレス) が処理されます。

例:
レコードが次のような内容だったとします。:  
<+(d)@*> = +*@telnum ; direct +number to e164 "telnum" domain
telnum = e164.arpa.enum ; direct +number to e164.arpa
e164.arpa.noenum = pstn
<+44*@pstn> = gatewaycaller{+44*}#pbx
pstn = main.office.dom

アドレスの例と処理:+14153837164@some.local.domain

  • まず、上記の最初のレコードによって上のアドレスが+14153837164@telnum に変換されます。
  • 2 番目のレコードによって、上のアドレスが+14153837164@e164.arpa.enum に変換されます。
  • ルータにより、DNS NAPTR レコード4.6.1.7.3.8.3.5.1.4.1.e164.arpa が検索されます。
  • 結果レコードとしてsip:pbx@communigate.com が見つかり、接頭辞sip: が削除されます。そ の後、ルータが再起動し、アドレスpbx@communigate.com が処理されます。

アドレスの例と処理:+14155551212@some.local.domain

  • まず、最初のレコードによって上のアドレスが+14155551212@telnum に変換されます。
  • 2 番目のレコードによって、上のアドレスが+14155551212@e164.arpa.enum に変換されます。
  • DNS NAPTR レコード2.1.2.1.5.5.5.5.1.4.1.e164.arpa が検索されます。
  • このドメイン名のNAPTR レコードが存在しないため、アドレスが +14155551212@e164.arpa.noenum に変換されます。ルータが再起動し、アドレスが再度処理さ れます。
  • 3 番目のレコードにより、アドレスが+14155551212@pstn に変換されます。ルータが再起動し、 アドレスが再度処理されます。
  • 4 番目のレコードにより、国コードが+44 であるコールがすべてローカルPBX アプリケーション (gatewaycaller) にルートされます。ただし、このレコードではアドレス+14155551212@pstn は処理されません。
  • 5 番目のレコードにより、アドレスが+14155551212@main.office.dom に変換されます。これ で、シグナルがmain.office.dom サーバーにリレーされることになります。

デフォルトレコード

CommuniGate Pro サーバーをインストールすると、次のレコードがデフォルトでルーティングテーブ ルに定義されます。

<root> = postmaster
このレコードがある場合、ユーザー"root" 宛のメールがすべてポストマスターアカウントに リルートされます。Unix システムでは、多くの場合、あらかじめロギングユーティリティの レポートがすべて、ユーザー"root" に送信されるように設定されています。このレコードは とくに、こういったシステムで有用です。
localhost =
多くのシステムでは、ドメイン名"localhost" は、そのコンピュータのローカルIP アドレス のシノニムとして設定されています。また、メールプログラムによっては、"localhost" がド メイン名として使われることがあります。このレコードが定義されている場合、ドメイン "localhost" のアドレスがサーバーのメインドメインのアドレスにリルートされます。した がって、上記のようなシステムやメールプログラムで、シノニムやドメイン名をメインドメ イン名に置き換えたいときに有用です。
mailhost =
メールプログラムの中には、"mailhost" 名がローカルメールサーバーのドメイン名として使 われるものもあります。このレコードがある場合、"mailhost" 名がサーバーのメインドメイ ンのアカウント名に置き換えられます。
<blacklist-admin*@blacklisted> = postmaster
このレコードがある場合、ブラックリストホスト(ブラックリストに登録されているホス ト) が「ホワイトホール」処理(ブラックリストからホストを除外) が行われます。
<7(2d)@*> = pbx
このレコードにより、任意のローカルドメインの7nn アドレス宛てのシグナル(コール) が すべて、そのドメインのpbx アカウントに送信されます。このレコードは、ストックPBX Center(アプリケーション) を使用するときに必要です。このレコードがない場合、アプリ ケーションの機能の一部が動作しないことがあります。
<+(8-20d)@*> = +*@telnum
このレコードがある場合、任意のローカルドメインの+nnnn...nn アドレス宛てのシグナル ( コール) がすべて、仮想ドメインであるtelnum に送信されます。
Signal:telnum = pstn
このレコードにより、仮想ドメインtelnum 宛てのシグナル(コール) がすべて仮想ドメイ ンpstn に送信されます。
Signal:<*@pstn> = gatewaycaller{*}#pbx
このレコードにより、仮想ドメインpstn 宛てのシグナル(コール) がすべて gatewaycaller アプリケーションにリダイレクトされます。この場合、メインドメインの アカウントpbx の代わりに、このアプリケーションが起動されます。電話番号( ドメイン pstn のアドレスのローカル部) が、このアプリケーションのパラメータとして渡されます。
Signal:<911@*> = emergency@localhost
このレコードにより、任意のローカルドメインの911 アドレス宛てのシグナル(コール) が すべてemergency アプリケーションにリダイレクトされます。この場合、メインドメイン のアカウントpbx の代わりに、このアプリケーションが起動されます。
Signal:<112@*> = emergency@pbx
このレコードにより、任意のローカルドメインの112 アドレス宛てのシグナル(コール) が すべてemergency アプリケーションにリダイレクトされます。この場合、メインドメインのアカウントpbx の代わりに、このアプリケーションが起動されます。
Signal:<(7d)@*> = localAreaCall{*}#pbx@localhost
このレコードにより、各ローカルドメインの7 桁番号宛てのシグナル( コール) がすべて localAreaCode アプリケーションにリダイレクトされます。この場合、メインドメインの アカウントpbx の代わりに、このアプリケーションが起動されます。電話番号(アドレスの ローカル部) が、このアプリケーションのパラメータとして渡されます。

上記のデフォルトレコードはいずれも、必要に応じて修正と削除が可能です。


非適格ドメイン名の使用

メールサーバーに上位ドメインが複数ある場合(例えば、server1.myorg.org、 server2.myorg.org、server3.myorg.org など) 場合、ユーザーによっては、非適格ドメイン 名(user@server1、user@server2、user@server3 など) を使うほうが便利というユーザーもいます。こ のような場合、また、とくにメールサーバー(myorg.org) の「上位レベル」のドメインの数が少な いときには、ルーティングテーブルにレコードを定義して、非適格ドメイン名の電子メールアクセス を使用できるように設定できます。レコードは、次のようになります。

server1 = server1.myorg.org
server2 = server2.myorg.org
server3 = server3.myorg.org

ただし、メールサーバー(myorg.org) の「上位レベル」のサーバー( ドメイン) の数がかなり多い ときには、その全部のレコードをルーティングテーブルに定義するのは困難なこともあります。そう いった場合、[Add myorg.org to Non-Qualified Domain Names] オプションを有効にします。このオ プションが有効のときには、電子メールアドレスのドメイン部にピリオドが含まれていた場合、この オプションに指定されているメールサーバーの名前(myorg.org) が自動的に電子メールアクセス のドメイン部に追加されます(ピリオドも自動的に追加されます)。したがって、ルーティングテー ブルにレコードを定義する必要はなくなります。つまり、user@someserver は自動的に user@someserver.myorg.org に変換され、このアドレスを使って送信先のアドレスにルートされ るようになります。

注意:なお、電子メールアドレスに非適格ドメイン名を使用するのはできるだけ避けるようにしま す。上のオプションは、環境や条件により、ユーザーがどうしても、正規の適格ドメイン名の電子メールアドレスを使用できない場合に限って有効にするようにします。


全ドメインエイリアス

全ドメインエイリアス
ローカル名再ルート先

上記のパネルを使って、全ドメインエイリアス、つまり、ローカルの全ドメインで有効なエイリアス を設定できます。CommuniGate Pro サーバーでメッセージが検出され、その送信先がいずれかのロー カルドメインだった場合、このパネルの設定がチェックされます。チェックで、そのメッセージのア ドレスのローカル部が、このパネルのいずれかの[ Local Address] フィールドに入力されているロー カル部と同じだった場合、そのメッセージは[Reroute To] フィールドに指定されているアドレスに リルートされます。

例えば、[All-Domain Aliases] パネルで[abuse] と[postmaster@maindomain.dom] を入力し ておいた場合(上記を参照)、abuse@domain.dom (domain.dom は、CommuniGate Pro のドメイ ンのうちのいずれか) に送られたメッセージはすべて、postmaster@maindomain.com にリルー トされます。

注意:[All-Domain Aliases] パネルでは、場合によってはルーティングループが生成されるので注意 が必要です。例えば、いずれかのドメインのポストマスターに宛てられたメールをすべて、 CommuniGate Pro のメインドメインのポストマスターにリルートするつもりで、[All-Domain Aliases] パネルの左側と右側のフィールドにそれぞれ、次のように入力したとします。

postmaster -> anyname@postmaster.local
または、[
Direct Mailbox Addressing] オプションを有効に設定しているときには、次のように入力し ます。
postmaster -> mailboxName#postmaster

フィールドではワイルドカード(*) を使用できます。

例えば、会社に10 の部門( ドメイン) があり、それぞれに部門の専用番号(部門の内線番号) を作 成したい場合、次のように入力します。

全ドメインエイリアス
ローカル名再ルート先

ここで、各ドメインのアカウントのエイリアス(電話番号) が200-299 の範囲であるとします。こ の場合、いずれかの部門のユーザーは、2xx という番号を使って同じ部門( ドメイン) のユーザー に電話をかけることができます。また、その部門のユーザーがドメインdomain1.com のユーザーに電 話をかけるときには、接頭辞91 を使います(具体的には、912xx という番号を使います)。さらに、 その部門のユーザーがドメインdomain2.com のユーザーに電話をかけたい場合には接頭辞92 を使い ます(具体的には、922xx という番号を使います)。


クラスタワイドルーティングテーブル

ダイナミッククラスタでは、クラスタワイドのルーティングテーブルが使用されます。このルーティ ングテーブルを開きたい場合、WebAdmin インターフェイスで、クラスタのメンバーの[Router] ペー ジを開きます。ページにルーティングテーブルのリンクがありますので、このリンクをクリックする とクラスタワイドのルーティングテーブルが表示されます。このテーブルのレコードに変更を加える と、変更は、そのクラスタの全メンバーで有効になります。

クラスタワイドのルーティングテーブルは、サーバーのルーティングテーブルの拡張として扱われます。つまり、サーバーのルーティングテーブルに該当するレコードがなかった場合、クラスタワイド のルーティングテーブルのレコードがチェックされます。


CommuniGate® Pro Guide. Copyright © 1998-2007, Stalker Software, Inc.