マッピングテーブルに非常に多くのエントリを使用するサイトでは、マッピングテーブルを組織化し、特定の参照に対して一般的なテキストデータベースを呼び出す一般的なワイルドカードエントリを利用するとよいでしょう。特定の参照に対し、2 〜 3 件のマッピングテーブルエントリから一般的なテキストデータベースを呼び出すほうが、数多くのエントリを直接マッピングテーブルで処理するよりもはるかに効率的です。
その一例として、だれがインターネットの電子メールを送信または受信できるのかをユーザーごとに制御するサイトがあります。そのような制御は、ORIG_SEND_ACCESS などのアクセスマッピングテーブルを使って簡単に適用できます。この場合、一般的なテキストデータベースに特定の情報 (たとえば特定のアドレスなど) をまとめて保存し、マッピングテーブルのエントリで呼び出すように設定すれば、効率と性能がかなり向上します。
たとえば、次に示す ORIG_SEND_ACCESS マッピングテーブルの場合を考えてみます。
ORIG_SEND_ACCESS
! ユーザーはインターネットへの接続を許可されている
!
*|adam@siroe.com|tcp_local|* $Y
*|betty@siroe.com|tcp_local|* $Y
! ...など...
!
! ユーザーはインターネットへの接続を許可されていない
!
*|norman@siroe.com|tcp_local|* $NInternet$ access$ not$ permitted
*|opal@siroe.com|tcp_local|* $NInternet$ access$ not$ permitted
! ...など...
!
! ユーザーはインターネットからの受信を許可されている
!
tcp_*|*|*|adam@siroe.com $Y
tcp_*|*|*|betty@siroe.com $Y
! ...など...
!
! ユーザーはインターネットからの受信を許可されていない
!
tcp_*|*|*|norman@siroe.com $NInternet$ e-mail$ not$ accepted
tcp_*|*|*|opal@siroe.com $NInternet$ e-mail$ not$ accepted
! ...など...
|
このように、ユーザーごとに個々のエントリを記述したマッピングテーブルを使用するのではなく、より効率的な設定 (何百、何千件ものユーザーを効率的に処理できる設定) を次の例で示します。この例では、一般的なデータベースのソーステキストファイルのサンプルおよび ORIG_SEND_ACCESS マッピングテーブルのサンプルを示します。設定情報については、「10.9.1 MTA テキストデータベース」を参照してください。
データベースエントリ
SEND|adam@domain.com $Y
SEND|betty@domain.com $Y
! ...など...
SEND|norman@domain.com $NInternet$ access$ not$ permitted
SEND|opal@domain.com $NInternet$ access$ not$ permitted
! ...など...
RECV|adam@domain.com $Y
RECV|betty@domain.com $Y
! ...など...
RECV|norman@domain.com $NInternet$ e-mail$ not$ accepted
RECV|opal@domain.com $NInternet$ e-mail$ not$ accepted
マッピングテーブル
ORIG_SEND_ACCESS
! インターネットに送信する場合はチェックする
!
*|*|*|tcp_local $C${SEND|$1}$E
!
! インターネットから受信する場合はチェックする
!
tcp_*|*|*|* $C${RECV|$3}$E
|
この例では、一般的なデータベースの左側に記述した文字列「SEND|」および「RECV|」を使用 (マッピングテーブルで生成される一般的なデータベースプローブ) することにより、2 種類のプローブを区別しています。一般的なテキストデータベースプローブを「$C」および「$E」フラグで囲むのは、マッピングテーブルから一般的なテキストデータベース呼び出しに特有の方法です。
この例では、単純なマッピングテーブルプローブが一般的なテキストデータベースのエントリを参照するケースを示しています。より複雑なプローブのマッピングテーブルでも一般的なテキストデータベースの使用による効果を得ることができます。