Sun Java System Messaging Server 6 2005Q4 管理ガイド

アクセス制御マッピングテーブルのフラグ

表 17–2 に、SEND_ACCESSORIG_SEND_ACCESSMAIL_ACCESSORIG_MAIL_ACCESS、および FROM_ACCESS マッピングテーブルに関連するアクセスマッピングフラグを示します。PORT_ACCESS マッピングテーブルでは、少し異なるフラグがサポートされています (表 17–3 を参照)。

引数を伴うフラグの場合、引数がテーブルに表示される読み取り順に並んでいる必要があります。例:

ORIG_SEND_ACCESS

  tcp_local|*|tcp_local|*     $N$D30|Relaying$ not$ allowed

この場合、遅延期間の後ろに拒否文字列が来るのが正しい順序です。フラグ自体は、どのような順序で指定してもかまいません。したがって、次のエントリはいずれも同じ結果になります。


30|Relaying$ not$ allowed$D$N
$N30|Relaying$ not$ allowed$D
30|$N$DRelaying$ not$ allowed
表 17–2 アクセスマッピングフラグ

フラグ 

説明 

$A

SASL が使用されている場合に設定されます。「特殊なフラグの確認」を参照してください。

$B

ビットバケットにメッセージをリダイレクトします。 

$D

配信遅延の確認が要求された場合に設定されます (FROM_ACCESS では指定できない)。「特殊なフラグの確認」を参照してください。

$F

配信失敗の確認が要求された場合に設定されます (FROM_ACCESS では指定できない)。「特殊なフラグの確認」を参照してください。

$H

.HELD ファイルとしてメッセージを保留します。

$S

配信成功の確認が要求された場合に設定されます (FROM_ACCESS では指定できない)。「特殊なフラグの確認」を参照してください。

$T

TLS が使用されている場合に設定されます。「特殊なフラグの確認」を参照してください。

$U 

ORIG_SEND_ACCESSSEND_ACCESSORIG_MAIL_ACCESS、および MAIL_ACCESS で使用された場合、マッピング開始時から 1 つの整数引数をとり、MM_DEBUG の値をそれに応じて設定します。また、このフラグが設定されていると、チャネルレベルのデバッグも有効になります。その結果、ソース IP アドレス、元のアドレス、受取人アドレスなどに基づいてデバッグを有効化できるようになります。

$Y

アクセスを許可します。 

$V

すべての受取人について強制破棄が実行されるようにします。 

$Z

すべての受取人について強制破棄が実行されるようにします。 

フラグと引数、引数の読み取り順序 + (このリストはアルファベット順にしないこと)

$Uinteger

マッピング開始時から 1 つの整数引数をとり、MM_DEBUG をそれに応じて設定します。また、このフラグが設定されていると、チャネルレベルのデバッグも有効になります。その結果、ソース IP アドレス、元のアドレス、受取人アドレスなどに基づいてデバッグを有効化できるようになります。 

$Jaddress

* 元のエンベロープの From: アドレスを指定の address に置換します。

$Kaddress

* ++ 元の Sender: アドレスを指定の address に置換します。

$Iuser|identifier

特定のユーザーのグループ ID を調べます。 

$<string

+++ プローブが一致する場合、string を syslog (UNIX、user.notice 機能と重大度) またはイベントログ (NT) に送ります。

$>string

+++ アクセスが拒否された場合、string を syslog (UNIX、user.notice 機能と重大度) またはイベント ログ (NT) に送ります。

$Ddelay

応答を delay (100 分 の 1 秒単位) だけ遅らせます。正の値の場合、トランザクションでの各コマンド時にこの遅延が適用され、負の値の場合、アドレスの引渡し時 (FROM_ACCESS テーブルの SMTP MAIL FROM: コマンド、その他のテーブルの SMTP RCPT TO: コマンド) にのみこの遅延が適用されます。

$Ttag

tag を前に付けます。

$Aheader

メッセージにヘッダー行 header を追加します。

$Gconversion_tag

ORIG_SEND_ACCESSSEND_ACCESSORIG_MAIL_ACCESS、および MAIL_ACCESS で使用された場合、マッピングの結果の値を読み込んで、現在の受取人に適用される変換タグの集合として処理します。FROM_ACCESS とともに使用された場合、変換タグはすべての受取人に適用されます。マッピングから読み取られる一連の引数の中で、$G$A (ヘッダーアドレス) のあとに配置されます。「メール変換タグ」を参照してください。

$Sx,y,z

* マッピングの結果から、追加および別々の引数がマッピング結果から読み取られるようにします。この引数は、カンマで区切られた 1 個 〜 3 個の整数値から構成されます。最初の値は、トランザクション用の新しい最小の blocklimit を設定します。2 番目の値は新しい最小の recipientlimit を設定し、3 番目の値は新しい最小の recipientcutoff を設定します。いずれかの取得引数が読み込まれると、マッピングの結果から引数が読み込まれます。「絶対的なメッセージサイズ制限を指定する」を参照してください。

$Xerror-code

メッセージを拒否した場合に、指定した error-code を含む拡張 SMTP エラーコードを発行します。

$,spamadjust_arg

アクセスマッピングテーブルから Sieve spamadjust 処理を実行可能にします。引数は、spamadjust 引数と同じ形式をとります。また、上のマッピングの一部は受取人単位で適用されます。実行されるすべての spamadjust 処理はすべての受取人に適用されます。

$Nstring

アクセスを拒否し、オプションのエラーテキスト string を送ります。

$Fstring

$N string と同じです。アクセスを拒否し、オプションのエラーテキスト string を送ります。

* FROM_ACCESS テーブルでのみ使用できます。

+ 引数を伴うフラグを複数個使用する場合は、引数を縦棒文字「|」で区切り、この表に示されている順序で配置します。

++ $K フラグを FROM_ACCESS マッピングテーブルで有効にするには、ソースチャネルに authrewrite キーワードが含まれていなければなりません。

+++ 問題のある差出人によるサービス拒否攻撃を防ぐには $D フラグを使用するとよいでしょう。特に、$> エントリまたはアクセスを拒否する $< エントリで $D フラグを使用します。

SEND_ACCESS テーブルと ORIG_SEND_ACCESS テーブル

SEND_ACCESS マッピングテーブルと ORIG_SEND_ACCESS マッピングテーブルを使用して、だれがメールを送信または受信できるのか、あるいは送受信できるのかを制御することができます。アクセスチェックは、メッセージのエンベロープ From: アドレスおよびエンベロープ To: アドレス、メッセージがどのチャネルから入ってきたか、どのチャネルから出ていくのかという情報に基づいて行われます。

SEND_ACCESS または ORIG_SEND_ACCESS のマッピングテーブルが存在する場合、MTA を通過するメッセージの各受取人を調べるために、MTA は次のフォーマットの文字列が記述されているテーブルをスキャンします。縦棒文字「|」の用法に注意してください。

src-channel|from-address|dst-channel|to-address

src-channel はメッセージをキューに入れるチャネル、from-address はメッセージの作成者アドレス、dst-channel はキューに入れられたメッセージの宛先となるチャネル、to-address はメッセージの宛先アドレスです。これらの 4 つのフィールド内でアスタリスクを使用すると、そのフィールドの情報 (チャネルやアドレスなど) が任意のデータと一致するようになります。

この場合のアドレスは、エンベロープ From: アドレスとエンベロープ To: アドレスを指しています。SEND_ACCESS の場合は、書き換えやエイリアス展開などの処理が行われてから、エンベロープの To: アドレスが調べられます。ORIG_SEND_ACCESS の場合は、書き換え後、エイリアス展開の前に、メッセージ作成者により指定されたエンベロープ To: アドレスが調べられます。

検索文字列のパターン (テーブルの左側にあるエントリ) が一致すると、そのマッピングの結果出力が調べられます。出力に「$Y」または「$y」フラグが含まれている場合は、その特定の To: アドレスに対しメッセージをキューに入れることが許可されます。出力に「$N」、「$n」、「$F」、または「$f」フラグが含まれている場合は、その特定のアドレスに対しメッセージをキューに入れることが拒否されます。拒否された場合は、オプションの拒否通知テキストをマッピング出力に与えることができます。その文字列は、MTA が発行する拒否通知エラーメッセージに含まれることになります。「$N」、「$n」、「$F」、または「$f」以外に文字列が出力されない場合は、デフォルトの拒否通知テキストが使用されます。その他のフラグの説明については、「アクセス制御マッピングテーブルのフラグ」を参照してください。

MTA オプション ACCESS_ORCPT を 1 に設定すると、SEND_ACCESSORIG_SEND_ACCESSMAIL_ACCESS、および ORIG_MAIL_ACCESS マッピングテーブルに渡されるプローブ値に縦棒で区切られたフィールドが付加されます。このフィールドには、元の受取人 (ORCPT) アドレスが入ります。メッセージに ORCPT アドレスが含まれない場合は、変更されていない元の RCPT TO: アドレスが代わりに使用されます。デフォルトは 0 であり、プローブ値で終わります。

src-channel|from-address|dst-channel|to-address|ORCPT_address

次の例は、mail や Pine などの UNIX ユーザーエージェントから送られてきたメール、ローカル l チャネルからの入力、および TCP/IP などのチャネルからメッセージをインターネットに出力するケースを示すものです。ポストマスター以外のローカルユーザーは、インターネットからメールを受信できても送信は許可されていないと仮定します。そのような制御を行う 1 つの手段として、次の例に示す SEND_ACCESS マッピングテーブルの使用があります。このマッピングテーブルの例では、ローカルのホスト名が sesta.com であると想定しています。チャネル名「tcp_*」では、ワイルドカードを使って任意の TCP/IP チャネル名 (たとえば tcp_loal) と一致するようにしています。


例 17–1 SEND_ACCESS マッピングテーブル


SEND_ACCESS

   *|postmaster@sesta.com|*|*    $Y
   *|*|*|postmaster@sesta.com    $Y
   l|*@sesta.com|tcp_*|*         $NInternet$ postings$ are$ not$ permitted

            

拒否通知メッセージでは、メッセージ内の空白文字の引用符としてドル記号が使われています。ドル記号を使用しないと、拒否通知メッセージが「Internet postings are not permitted」とならずに「Internet」だけで終わってしまいます。この例では、「ローカル」のポスティングに関するほかのソース (PC ベースのメールシステムであるのか、POP または IMAP クライアントであるのかなど) は無視されていることに注意してください。


注 –

MTA による拒否通知エラーテキストが、メッセージの差出人であるユーザーに対して実際に提示されるかどうかは、メッセージの送信を試行するクライアントにより異なります。着信 SMTP メッセージを拒否するために SEND_ACCESS を使用した場合、オプションの拒否通知テキストを含む SMTP 拒否通知コードを MTA が発行することはほとんどありません。その情報に基づいてバウンスメッセージを構築し、元の差出人に戻すかどうかは、送信 SMTP クライアントによって決まります。


MAIL_ACCESS マッピングテーブルと ORIG_MAIL_ACCESS マッピングテーブル

MAIL_ACCESS マッピングテーブルは、SEND_ACCESS マッピングテーブルと PORT_ACCESS マッピングテーブルのスーパーセットです。つまり、SEND_ACCESS のチャネルとアドレス、および PORT_ACCESS の IP アドレスとポート番号の情報を組み合わせたものです。同様に、ORIG_MAIL_ACCESS マッピングテーブルは、 ORIG_SEND_ACCESS マッピングテーブルと PORT_ACCESS マッピングテーブルのスーパーセットです。MAIL_ACCESS のプローブ文字列フォーマットは次のとおりです。

port-access-probe-info|app-info|submit-type|send_access-probe-info

同様に、ORIG_MAIL_ACCESS のプローブ文字列フォーマットは次のとおりです。

port-access-probe-info|app-info|submit-type|orig_send_access-probe-info

ここで、port-access-probe-info は、SMTP 着信メッセージの場合は PORT_ACCESS マッピングテーブルプローブに通常含まれているすべての情報から構成され、それ以外の場合は空白になります。app-info には、HELO/EHLO SMTP コマンドで要求されるシステム名が含まれます。この名前は文字列の最後に表示されて、文字列 (通常は「SMTP」) のほかの部分とはスラッシュで区切られています。要求されるシステム名は、ある種のワームやウィルスのブロックに役立つ場合があります。submit-type は、メッセージが Messaging Server にどのように送信されたかに応じて、MAIL、SEND、SAML、または SOML のいずれかになります。通常、この値は、メッセージとして送信されたことを表す MAIL です。SEND、SAML、または SOML は、ブロードキャスト要求 (またはブロードキャストとメッセージを組み合わせた要求) が SMTP サーバーに送信された場合の値です。MAIL_ACCESS マッピングの send-access-probe-info は、SEND_ACCESS マッピングテーブルプローブに通常含まれているすべての情報から成ります。同様に、ORIG_MAIL_ACCESS マッピングの orig-access-probe-info は、ORIG_SEND_ACCESS マッピングテーブルプローブに通常含まれているすべての情報から成ります。

MTA オプション ACCESS_ORCPT を 1 に設定すると、SEND_ACCESSORIG_SEND_ACCESSMAIL_ACCESS、および ORIG_MAIL_ACCESS マッピングテーブルに渡されるプローブ値に縦棒で区切られたフィールドが付加されます。このフィールドには、元の受取人 (ORCPT) アドレスが入ります。メッセージに ORCPT アドレスが含まれない場合は、変更されていない元の RCPT TO: アドレスが代わりに使用されます。デフォルトは 0 であり、プローブ値で終わります。次に例を示します。


port-access-probe-info|app-info|submit-type|send_access-probe-info|ORCPT_address

着信 TCP/IP 接続情報が、チャネルおよびアドレスの情報と同じマッピングテーブルにあると、特定の IP アドレスからのメッセージにどのエンベロープの From: アドレスを表示させるのかなど、何らかの制御を課す場合に便利です。電子メールの偽造を規制したり、ユーザーに対し POP および IMAP クライアントの From: アドレス設定を正しく行なったりするように奨励する効果もあります。たとえば、IP アドレス 1.2.3.1 および 1.2.3.2 から送信されたメッセージに対してのみエンベロープ From: アドレスに vip@siroe.com を表示し、1.2.0.0 サブネット内のシステムから送信されるメッセージにはエンベロープ From: アドレスに siroe.com を表示するようなサイトでは、次の例に示す MAIL_ACCESS マッピングテーブルを使用します。


例 17–2 MAIL_ACCESS マッピングテーブル


MAIL_ACCESS
 
! vip の 2 つのシステムのエントリ
!
  TCP|*|25|1.2.3.1|*|SMTP|MAIL|tcp_*|vip@siroe.com|*|*  $Y
  TCP|*|25|1.2.3.2|*|SMTP|MAIL|tcp_*|vip@siroe.com|*|*  $Y
!
! ほかのシステムのアドレスから vip の From: アドレスを使用することを
! 許可しない
!
  TCP|*|25|*|*|SMTP|MAIL|tcp_*|vip@siroe.com|*|*  \
      $N500$ Not$ authorized$ to$ use$ this$ From:$ address
!
! siroe.com の From: アドレスを持つサブネット内からの送信を
! 許可する
!
  TCP|*|25|1.2.*.*|*|SMTP|MAIL|tcp_*|*@siroe.com|*|*  $Y
!
! 通知を許可する
!
  TCP|*|25|1.2.*.*|*|SMTP|MAIL|tcp_*||*|*  $Y
!
! non-siroe.com アドレスを持つサブネット内からの送信を
! ブロックする
!
  TCP|*|25|1.2.*.*|*|SMTP|MAIL|tcp_*|*|*|*  \
     $NOnly$ siroe.com$ From:$ addresses$ authorized

FROM_ACCESS マッピングテーブル

FROM_ACCESS マッピングテーブルは、だれがメールを送信できるのか、まただれが From: アドレスを認証アドレスに書き換えることができるのか、またはその両方を制御するのに使用します。

FROM_ACCESS マッピングテーブルへの入力プローブ文字列は、MAIL_ACCESS マッピングテーブルのものと似ています。違いは、宛先チャネルとアドレスがないこと、場合によっては認証済み差出人情報があることです。したがって、FROM_ACCESS マッピングテーブルが存在する場合は、メッセージが送信されるたびに Messaging Server によって次のフォーマットで文字列が記述されているテーブルの検索が行われます。縦棒文字「|」の用法に注意してください。


port-access-probe-info|app-info|submit-type|src-channel|from-address|auth-from

ここで、port-access-probe-info は、SMTP 着信メッセージの場合は PORT_ACCESS マッピングテーブルプローブに通常含まれているすべての情報から構成され、それ以外の場合は空白になります。app-info には、HELO/EHLO SMTP コマンドで要求されるシステム名が含まれます。この名前は文字列の最後に表示されて、文字列 (通常は「SMTP」) のほかの部分とはスラッシュで区切られています。要求されるシステム名は、ある種のワームやウィルスのブロックに役立つ場合があります。submit-type は、メッセージが MTA にどのように送信されたかに応じて、MAIL、SEND、SAML、または SOML のいずれかになります。通常、この値は、メッセージとして送信されたことを表す MAIL です。SEND、SAML、または SOML は、ブロードキャスト要求 (またはブロードキャストとメッセージを組み合わせた要求) が SMTP サーバーに送信された場合の値です。src-channel はメッセージを発する (メッセージをキューに入れる) チャネル、from-address はメッセージの作成者アドレスです。auth-from は認証済み作成者アドレスですが、その情報がない場合は空白になります。

プローブ文字列のパターン (テーブルの左側にあるエントリ) が一致した場合は、そのマッピングの結果出力が調べられます。出力に「$Y」または「$y」フラグが含まれている場合は、その特定の To: アドレスに対しメッセージをキューに入れることが許可されます。出力に「$N」、「$n」、「$F」、または「$f」フラグが含まれている場合は、その特定のアドレスに対しメッセージをキューに入れることが拒否されます。拒否された場合は、オプションの拒否通知テキストをマッピング出力に与えることができます。この文字列は、Messaging Server が発行する拒否通知エラーメッセージに含まれることになります。「$N」、「$n」、「$F」、または「$f」以外に文字列が出力されない場合は、デフォルトの拒否通知テキストが使用されます。その他のフラグの説明については、「アクセス制御マッピングテーブルのフラグ」を参照してください。

FROM_ACCESS は、作成者の情報に基づいてメッセージの送信を許可するかどうかを決定できるだけでなく、エンベロープの From: アドレスを $J フラグで許可したり、authrewrite チャネルキーワードの効果を $K フラグで変更 (受理したメッセージに Sender: ヘッダーアドレスを追加) できます。たとえば、次のマッピングテーブルを使用し、エンベロープの From: アドレスを最初のものから認証アドレスに置き換えることができます。


例 17–3 FROM_ACCESS マッピングテーブル


FROM_ACCESS

  *|SMTP|*|tcp_auth|*|       $Y
  *|SMTP|*|tcp_auth|*|*      $Y$J$3
            

特定のソースチャネルの authrewrite をゼロ以外の値に設定する効果を変更するために FROM_ACCESS マッピングテーブルを使用する場合、認証アドレスが文字どおりである限り FROM_ACCESS を使用する必要はありません。

たとえば、tcp_local チャネルに authrewrite 2 を設定する場合は、authrewrite だけでこの効果 (文字どおりの認証済みアドレス) を得るのに十分なため、次の FROM_ACCESS マッピングテーブルは不要です。


FROM_ACCESS

   *|SMTP|*|tcp_auth|*|     $Y
   *|SMTP|*|tcp_auth|*|*    $Y$K$3
         

ただし、FROM_ACCESS の本来の目的は、次の例に示すように、より複雑で微妙な変更を行うことにあります。着信メッセージに Sender: ヘッダー行を追加 (SMTP AUTH 認証済み送信者アドレスを表示) する場合は、authrewrite キーワードだけでも十分です。ただし、SMTP AUTH 認証済み送信者アドレスがエンベロープの From: アドレスと異なる場合にのみ、着信メッセージに Sender: ヘッダー行を強制的に追加するとします (つまり、アドレスが一致した場合には、Sender: ヘッダー行を追加しない)。さらに、エンベロープの From: にオプションのサブアドレス情報が含まれているというだけでは、SMTP AUTH およびエンベロープの From: アドレスが異なるとみなさないとします。


FROM_ACCESS
 
! 認証済みのアドレスが使用できない場合、何もしない
  *|SMTP|*|tcp_auth|*|              $Y
! 認証済みのアドレスがエンベロープの From: に一致する場合は、何もしない
  *|SMTP|*|tcp_auth|*|$2*           $Y
! 認証済みのアドレスが From: sans 
! サブアドレスに一致する場合は、何もしない
   *|SMTP|*|tcp_auth|*+*@*|$2*@$4*    $Y
! ただし、認証済みアドレスは存在しているが
! 一致しない場合は、
! Sender: ヘッダー
  *|SMTP|*|tcp_auth|*|*              $Y$K$3
         

PORT_ACCESS マッピングテーブル

ディスパッチャは、IP アドレスおよびポート番号に基づいて、着信接続を許可するかどうかを選択できます。ディスパッチャは、起動時に PORT_ACCESS という名前のマッピングテーブルを探します。このファイルが見つかると、ディスパッチャは接続情報を次のようにフォーマットします。

TCP|server-address|server-port|client-address|client-port

ディスパッチャは、すべての PORT_ACCESS マッピングエントリを照合します。マッピングの結果に「$N」または「$F」が含まれている場合には、接続を即座に終了します。それ以外の場合は、接続を許可します。「$N」または「$F」の後ろに拒否通知メッセージが続くことがあります。メッセージがある場合には、接続を断つ前にそのメッセージが送り返されます。メッセージが送り返される前に、その文字列には CRLF ターミネータが追加されることに注意してください。


注 –

MMP は PORT_ACCESS マッピングテーブルを使用しません。MMP を使用している場合、特定の IP アドレスからの SMTP 接続を拒否するには、TCPAccess オプションを使用する必要があります。「MMP を使ったメールアクセスを設定するには」を参照してください。マッピングテーブルを使って SMTP 接続を制御する場合は、INTERNAL_IP マッピングテーブルを使用します (「外部サイトの SMTP リレーを許可する」を参照)。


$< フラグにオプションの文字列が続いており、マッピングプローブが一致しなかった場合は、Messaging Server が文字列を syslog (UNIX) またはイベントログ (NT) に送ります。$> フラグにオプションの文字列が続いており、アクセスが拒否された場合は、Messaging Server が文字列を syslog (UNIX) またはイベントログ (NT) に送ります。LOG_CONNECTION MTA オプションのビット 1 が設定されており、かつ「$N」フラグが設定されて接続が拒否されている場合は、「$T」フラグを指定することにより “T” エントリが接続ログに書き込まれるようになります。LOG_CONNECTION MTA オプションのビット 4 が設定されている場合は、サイト提供のテキストを PORT_ACCESS エントリに提供し、「C」接続ログエントリに含めることが可能です。そのようなテキストを指定するには、エントリの右側に縦棒「|」を 2 つと適切なテキストを挿入します。表 17–3 に、使用可能なフラグを表示します。

表 17–3 PORT_ACCESS マッピングフラグ

フラグ 

説明 

$Y 

アクセスを許可します。 

フラグと引数 (引数の読み取り順序 +) 

$< 文字列 

プローブが一致する場合、文字列を syslog (UNIX) またはイベントログ (NT) に送ります。 

$> 文字列 

アクセスが拒否された場合、文字列を syslog (UNIX) またはイベントログ (NT) に送ります。 

$N 文字列 

アクセスを拒否し、オプションのエラーテキスト文字列を送ります。 

$F 文字列 

「$N 文字列」と同じです。アクセスを拒否し、オプションのエラーテキスト文字列を送ります。 

$T テキスト 

LOG_CONNECTION MTA オプションのビット 1 (値 2) が設定されており、かつ「$N」フラグが設定されて接続が拒否されている場合は、「$T」により「T」エントリが接続ログに書き込まれます。「T」ログエントリにはマッピング結果文字列全体 ($N とその文字列) が含まれることになります。

+ 引数を伴うフラグを複数個使用する場合は、引数を縦棒文字「|」で区切り、この表に示されている順序で配置します。 

たとえば、次のマッピングは、単一のネットワークからポート 25 (標準の SMTP ポート) への SMTP 接続だけを許可します。説明テキストは送らずに特定のホストを拒否します。


PORT_ACCESS

  TCP|*|25|192.123.10.70|*  $N500
  TCP|*|25|192.123.10.*|*   $Y
  TCP|*|25|*|*              $N500$ Bzzzt$ thank$ you$ for$ playing.

         

PORT_ACCESS マッピングテーブルを変更した場合、その変更内容を適用するためにディスパッチャを再起動する必要があります。コンパイルした MTA 設定ファイルを使用している場合は、変更内容を適用するために、先に設定ファイルをコンパイルしなおしてください。

PORT_ACCESS マッピングテーブルは、特に IP ベースの拒否通知を処理するためのものです。電子メールアドレスレベルでの一般的な制御には、SEND_ACCESS または MAIL_ACCESS マッピングテーブルが適しています。

MTA への指定 IP アドレス接続を制限するには

PORT_ACCESS マッピングテーブルの conn_throttle.so 共有ライブラリを使用すると、特定の IP アドレスが MTA に接続する頻度を制限することができます。特定の IP アドレスによる接続の制限は、サービス拒否攻撃による過剰な接続を防ぐ場合などに便利です。

conn_throttle.soPORT_ACCESS マッピングテーブルで使用される共有ライブラリで、特定の IP アドレスからの過度の MTA 接続を制限するために使用されます。次に示すように、設定オプションはすべて接続スロットル共有ライブラリに対するパラメータとして指定されます。

$[msg_svr_base/lib/conn_throttle.so, throttle,IP-address ,max-rate]

IP-address は、ピリオドで区切られた数字によるリモートシステムのアドレスです。max-rate は、この IP アドレスに対して許可される 1 分当たりの最大接続数です。

throttle の代わりに throttle_p をルーチン名として使用すると、ペナルティーが適用されます。throttle_p を使用すると、過去に過度の接続があった場合、接続が拒否されます。たとえば、最大接続数が 100 で、過去 1 分間に 250 の接続が試みられた場合、リモートサイトはその 1 分間における最初の 100 個の接続のあとブロックされるだけでなく、次の 1 分間もブロックされます。つまり、1 分が経過するごとに、その 1 分間に試行された接続数と 1 分当たりの許容最大接続数とが比較され、試行接続数が許容最大接続数より大きいと判断された場合、そのリモートシステムはブロックされます。

指定した IP アドレスの接続が 1 分当たりの最大接続数を超えなかった場合、共有ライブラリの呼び出しに失敗します。

1 分当たりの最大接続数を超過した場合は、共有ライブラリの呼び出しに成功しますが、値が返されることはありません。これは $C/$E の組み合わせで行われます。次に、その例を示します。

PORT_ACCESS 
  TCP|*|25|*|* \
$C$[msg_svr_base/lib/conn_throttle.so,throttle,$1,10] \
$N421$ Connection$ not$ accepted$ at$ this$ time$E

説明:

$C により、次のテーブルエントリからマッピングプロセスが続行されます。このエントリの出力文字列が、マッピングプロセスの新しい入力文字列として使用されます。

$[msg_svr_base/lib/conn_throttle.so,throttle,$1,10] はライブラリの呼び出しで、throttle はライブラリルーチン、$1 はサーバーの IP アドレス、10 は 1 分当たりの接続数のしきい値です。

$N421$ Connection$ not$ accepted$ at$ this$ time により、アクセスが拒否され、421 SMTP コード (一時的な接続拒否) とともに、「現在接続は受け付けられません」という旨のメッセージが返されます。

$E により、マッピングプロセスが即時に終了します。このエントリからの出力文字列がマッピングプロセスの最終結果として使用されます。