Sun Java System Messaging Server 6.3 管理指南

18.3.6 限制指定 IP 位址至 MTA 的連線

若要限制特定 IP 位址可連線至 MTA 的頻率,請參閱第 19 章, 使用 MeterMaid 執行內送連線的節流。根據特定 IP 位址限制連線對於防止拒絕服務攻擊中使用的過度連線非常有用。過去是以 Port Access 對映表格的 conn_throttle.so 共用程式庫執行此功能。目前未規劃 conn_throttle.so 的任何新增強功能,而 MeterMaid 是更有效的替代方案。

conn_throttle.soPORT_ACCESS 對映表中使用的共用程式庫,可限制特定 IP 位址,以免其過於頻繁連線 MTA。所有配置選項均被指定為連線 throttle 共用程式庫的參數,如下所示:

$[msg-svr-base/lib/conn_throttle.so, throttle, IP-address,max-rate ]

IP-address 是遠端系統的小數點十進制位址。max-rate 是為此 IP 位址強制實作的每分鐘連線的最大頻率。

常式名稱 throttle_p 可能會取代 throttle,用於判定常式的版本。如果進行過多次數的連線,則 throttle_p 將拒絕連線。如果最大頻率是 100,並且在上一分鐘內已有 250 次連線嘗試,則系統不但會在該分鐘內的前 100 次連線後封鎖遠端站點,而且還會在下一分鐘內繼續封鎖這些站點。換言之,每分鐘過後,系統將從嘗試連線的總數中減去最大頻率數,之後只要連線總數大於最大頻率,便會再次封鎖遠端系統。

如果指定的 IP 位址未超出每分鐘的最大連線頻率,則共用程式庫呼叫將失敗。

如果超出頻率,則呼叫將成功,但不會傳回任何內容。這可以通過 $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 是每分鐘連線的臨界值。

$N421$ Connection$ not$ accepted$ at$ this$ time 拒絕存取,並傳回 421 SMTP 代碼 (暫時無法完成) 和訊息「未接受此次連線」。

$E 立即結束對映程序。它將使用此項目的輸出字串作為對映程序的最終結果。