Sun Java System Messaging Server 6.3 管理指南

23.7 配置對 POP、IMAP 和 HTTP 服務的用戶端存取權

本節包含以下小節:

Messaging Server 支援逐個服務地針對其 IMAP、POP 和 HTTP 服務進行複雜存取控制,使您可以對哪些用戶端可以存取您的伺服器進行廣泛且精細的控制。

如果您要為大型企業或網際網路服務供應者管理郵件傳送服務,這些功能可協助您將垃圾電子郵件發送者和 DNS 仿冒者排除在系統之外,從而提高網路的一般安全性。如需有關具體控制垃圾郵件的資訊,另請參閱第 18 章, 郵件篩選和存取控制


備註 –

如果透過 IP 位址控制存取對您的企業而言並不重要,則無需建立本節所述的任何篩選器。如果您需要的只是最小的存取控制,請參閱23.7.3.2 允許大多數,以取得有關設定說明。


23.7.1 用戶端存取篩選器如何運作

Messaging Server 存取控制工具是一個程式,它偵聽時所在的連接埠與其所服務的 TCP 常駐程式的連接埠相同;它使用存取篩選器來驗證用戶端身份,並在用戶端通過篩選程序的情況下授予用戶端對該常駐程式的存取權。

做為其處理過程的組成部分,Messaging Server TCP 用戶端存取控制系統執行 (必要時) 以下通訊端端點位址分析:

系統會將此資訊與稱為篩選器的存取控制陳述式進行比較,以決定是授予存取還是拒絕存取。對於每項服務,都各有一組允許篩選器和拒絕篩選器來控制存取。允許篩選器明確授予存取權;拒絕篩選器明確禁止存取。

當用戶端請求存取某服務時,存取控制系統會將該用戶端的位址或名稱資訊與該服務的每個篩選器依次比較,其會使用以下準則︰

此處描述的篩選器語法非常靈活,足以讓您以簡單易懂的方式實作許多不同類型的存取控制策略。雖然幾乎單獨使用允許篩選器或拒絕篩選器就能實作大多數策略,但您可以使用允許篩選器和拒絕篩選器的任意組合。

以下幾節對篩選器語法進行了詳細描述並提供了使用範例。23.7.4 為服務建立存取篩選器小節提供建立存取篩選器的程序。

23.7.2 篩選器語法

篩選器敘述包含服務資訊和用戶端資訊。服務資訊可包括服務名稱、主機名稱和主機位址。用戶端資訊可包括主機名稱、主機位址和使用者名稱。伺服器和用戶端資訊均可包括萬用字元名稱或式樣。

最簡單的篩選器形式為:

service: hostSpec

其中,service 是服務的名稱 (例如 smtppopimaphttp),而 hostSpec 是主機名稱、IP 位址或萬用字元名稱或表示用戶端請求存取的式樣。處理篩選器時,如果搜尋存取的用戶端符合 client,則允許或拒絕 (取決於此篩選器的類型) 存取 service 指定的服務。以下是一些範例:

imap: roberts.newyork.siroe.com
pop: ALL
http: ALL

如果這些是允許篩選器,則第一個篩選器將授予主機 roberts.newyork.siroe.com 對 IMAP 服務的存取,第二個篩選器和第三個篩選器將分別授予所有用戶端對 POP 和 HTTP 服務的存取。如果它們是拒絕篩選器,則將拒絕那些用戶端存取這些服務。(如需有關如 ALL 之類萬用字元名稱的說明,請參閱23.7.2.1 萬用字元名稱。)

篩選器中的伺服器或用戶端資訊可能比這裡要複雜一些,在那種情況下較一般的篩選器形式為:

serviceSpec: clientSpec

其中,serviceSpec 可以是 serviceservice@hostSpec,而 clientSpec 可以是 hostSpecuser@hostSpecuser 是與搜尋存取的用戶端主機關聯的使用者名稱 (或萬用字元名稱)。以下是兩個範例:

pop@mailServer1.siroe.com: ALL
imap: srashad@xyz.europe.siroe.com

如果這些是拒絕篩選器,則第一個篩選器將拒絕所有用戶端存取主機 mailServer1.siroe.com 上的 SMTP 服務。第二個篩選器將拒絕主機 xyz.europe.siroe.com 上的使用者 srashad 存取 IMAP 服務。(如需有關何時使用這些延伸的伺服器和用戶端規格之更多資訊,請參閱23.7.2.4 伺服器主機規格23.7.2.5 用戶端使用者名稱規格

最後,最一般的篩選器形式如下:

serviceList: clientList

其中,serviceList 由一個或多個 serviceSpec 項目組成,而 clientList 由一個或多個 clientSpec 項目組成。serviceListclientList 中的單個項目由空格和/或逗號分隔。

在這種情況下,處理篩選器時,如果搜尋存取的用戶端符合 clientList 中任一 clientSpec 項目,則允許或拒絕 (取決於此篩選器的類型) 存取 serviceList 中指定的所有服務。以下是一個範例:

pop, imap, http: .europe.siroe.com .newyork.siroe.com

如果這是允許篩選器,它將授予網域 europe.siroe.comnewyork.siroe.com 中的所有用戶端對 POP、IMAP 和 HTTP 服務的存取。如需有關使用前導小數點號或其他式樣指定網域或子網路的資訊,請參閱23.7.2.2 萬用字元式樣

您還可以使用以下語法:

「+」或「-」serviceList: *$next_rule

+ (允許篩選器) 表示要將常駐程式清單服務授予用戶端清單。

- (拒絕篩選器) 表示要拒絕用戶端清單存取這些服務。

* (萬用字元篩選器) 允許所有用戶端使用這些服務。

$ 分隔這些規則。

以下範例可在所有用戶端上啟用多種服務。

+imap,pop,http:*

以下範例顯示多個規則,但每個規則被簡化為只具有一個服務名稱並且用戶端清單使用萬用字元。(這是在 LDIF 檔案中指定存取控制時最常用的方法。)

+imap:ALL$+pop:ALL$+http:ALL

如何對某使用者禁止所有服務的範例如下:

-imap:*$-pop:*$-http:*

23.7.2.1 萬用字元名稱

您可以使用以下萬用字元名稱來表示服務名稱、主機名稱或位址或使用者名稱:

表 23–3 服務篩選器的萬用字元名稱

萬用字元名稱 

詳細說明 

ALL、*

通用萬用字元。符合所有名稱。 

LOCAL

符合任何本地主機 (名稱中不包含點字元的主機)。但是,如果您的安裝僅使用標準名稱,則即使本地主機名稱中也會包含點,因此不符合此萬用字元。 

UNKNOWN

符合名稱未知的所有使用者,或是名稱或位址未知的所有主機。 

請謹慎使用此萬用字元名稱: 

主機名稱可能會由於暫時的 DNS 伺服器問題而不可用,在這種情況下,使用 UNKNOWN 的所有篩選器會比對所有用戶端主機。

當軟體無法識別與其通訊的網路類型時,網路位址不可用,在這種情況下,使用 UNKNOWN 的所有篩選器會比對該網路上的所有用戶端主機。

KNOWN

比對名稱已知的所有使用者,或是名稱位址已知的所有主機。

請謹慎使用此萬用字元名稱: 

主機名稱可能會由於暫時的 DNS 伺服器問題而不可用,在這種情況下,使用 KNOWN 的所有篩選器與所有用戶端主機均不相符。

當軟體無法識別與其通訊的網路類型時,網路位址不可用,在這種情況下,使用 KNOWN 的所有篩選器與該網路上的所有用戶端主機均不相符。

DNSSPOOFER

符合 DNS 名稱與 IP 位址不相符的所有主機。 

23.7.2.2 萬用字元式樣

您可以在服務或用戶端位址中使用以下式樣:

23.7.2.3 EXCEPT 運算子

存取控制系統支援單一運算子。當 serviceListclientList 中具有多個項目時,您可以使用 EXCEPT 運算子建立比對名稱或式樣的異常。例如,表示式:

list1 EXCEPT list2

表示比對與 list1 相符的所有項目,除非它還與 list2 相符。

以下是一個範例:

ALL: ALL EXCEPT isserver.siroe.com

如果這是拒絕篩選器,它會拒絕所有主機電腦上的所有用戶端存取所有服務,但主機電腦 isserver.siroe.com 上的用戶端除外。

EXCEPT 陳述式可以嵌套。表示式:

list1 EXCEPT list2 EXCEPT list3

相當於:

list1 EXCEPT (list2 EXCEPT list3)

23.7.2.4 伺服器主機規格

您可以透過在 serviceSpec 項目中包含伺服器主機名稱或位址資訊,來進一步識別篩選器中被請求的特定服務。在這種情況下,項目形式為:

service@hostSpec

當您的 Messaging Server 主機機器針對多個網際網路位址以不同的網際網路主機名稱進行設定時,您可能要使用此功能。如果您是服務供應者,則可使用此功能在單一伺服器實例上以不同的存取控制規則託管多個網域。

23.7.2.5 用戶端使用者名稱規格

對於支援 RFC 1413 中所述之 identd 服務的用戶端主機電腦而言,您可以透過在篩選器的 clientSpec 項目中包含用戶端的使用者名稱來進一步識別請求服務的特定用戶端。在這種情況下,項目形式為:

user@hostSpec

其中,user 是由用戶端的 identd 服務 (或萬用字元名稱) 傳回的使用者名稱。

在篩選器中指定用戶端使用者名稱非常有用,但請記住以下警告:

使用者名稱查詢功能在某些情況下可協助您防範來自用戶端主機上未經授權的使用者的侵入。例如,在某些 TCP/IP 實作中,侵入者可能會使用 rsh (遠端 shell 服務) 冒充信任的用戶端主機。如果用戶端主機支援 ident 服務,可以使用使用者名稱查詢來偵測此類攻擊。

23.7.3 篩選器範例

本節中的範例顯示控制存取的多種方法。在研究這些範例時,請記住允許篩選器在拒絕篩選器之前處理,找到符合項目時搜尋終止,如果根本找不到符合項目則授予存取權。

此處列出的範例使用主機和網域名稱,而不是 IP 位址。請記住,您可以在篩選器中納入位址和網路遮罩資訊,這可以在名稱服務失敗的情況下提高可靠性。

23.7.3.1 拒絕大多數

在這種情況下,依預設拒絕存取。只有明確授權的主機才被允許存取。

預設策略 (無存取權) 透過單一、普通的拒絕檔案實作:

ALL: ALL

此篩選器拒絕所有未被允許篩選器明確授予存取權的用戶端存取所有服務。而允許篩選器可能類似於:

ALL: LOCAL @netgroup1

ALL: .siroe.com EXCEPT externalserver.siroe.com

第一個規則允許本地網域中的所有主機 (即,主機名稱中不帶小數點號的所有主機) 和群組 netgroup1 的成員進行存取。第二個規則使用前導小數點號萬用字元式樣來允許 siroe.com 網域中的所有主機進行存取,但主機 externalserver.siroe.com 除外。

23.7.3.2 允許大多數

在這種情況下,依預設授予存取權。只有明確指定的主機才被拒絕存取。

在此預設策略 (授予存取權) 中,不需要使用允許篩選器。不想要的用戶端在拒絕篩選器中明確列出,如下所示:

ALL: externalserver.siroe1.com, .siroe.asia.com
ALL EXCEPT pop: contractor.siroe1.com, .siroe.com

第一個篩選器拒絕特定主機和特定網域存取所有服務。第二個篩選器僅允許特定主機和特定網域存取 POP。

23.7.3.3 拒絕存取仿冒的網域

您可以在篩選器中使用 DNSSPOOFER 萬用字元名稱來偵測主機名稱仿冒。當您指定 DNSSPOOFER 時,存取控制系統會執行正向或反向 DNS 查詢,以驗證該用戶端提供的主機名稱是否符合其實際 IP 位址。以下是拒絕篩選器的一個範例:

ALL: DNSSPOOFER

此篩選器拒絕所有 IP 位址與 DNS 主機名稱不相符的遠端主機存取所有服務。

23.7.3.4 控制存取虛擬網域

如果您的郵件傳送安裝使用虛擬網域,其中單一伺服器實例與多個 IP 位址和網域名稱相關聯,您可以透過允許篩選器和拒絕篩選器的組合來控制存取每個虛擬網域。例如,您可以使用如下所示的允許篩選器:

ALL@msgServer.siroe1.com: @.siroe1.com
ALL@msgServer.siroe2.com: @.siroe2.com
...

與如下所示的拒絕篩選器進行組合:

ALL: ALL

每個允許篩選器僅允許 domain N 中的主機連線至 IP 位址回應 msgServer.siroeN.com 的服務。所有其他連線均被拒絕。

23.7.3.5 控制 IMAP 存取同時允許存取 Webmail

若要讓使用者存取 Webmail,但不能存取 IMAP,請建立如下的篩選器:


+imap:access_server_host, access_server_host

這會允許 IMAP 來自存取伺服器主機。您可以使用 service.imap.domainallowed 在 IMAP 伺服器層級設定篩選器,或使用 LDAP 屬性在網域/使用者層級設定篩選器。

23.7.4 為服務建立存取篩選器

您可以為 IMAP、POP 或 HTTP 服務建立允許篩選器和拒絕篩選器。還可以為 SMTP 服務建立這些篩選器,但是由於它們僅適用於經認證的 SMTP 階段作業,因此價值不大。請參閱第 18 章, 郵件篩選和存取控制

Procedure建立篩選器

  1. 指令行。您也可以在指令行中指定存取篩選器和拒絕篩選器,如下所示:

    為服務建立或編輯存取篩選器:


    configutil -o service.service.domainallowed -v filter
    

    其中,servicepopimaphttp,而 filter 遵循23.7.2 篩選器語法中說明的語法規則。

    為服務建立或編輯拒絕篩選器:


    configutil -o service.service.domainnotallowed -v filter
    

    其中,servicepopimaphttp,而 filter 遵循23.7.2 篩選器語法中說明的語法規則。如需各種範例,請參閱23.7.3 篩選器範例

23.7.5 為 HTTP 代理認證建立存取篩選器

任何儲存管理員均可向任何服務進行代理認證。(如需有關儲存管理員的更多資訊,請參閱20.4 指定管理員使用儲存的權限。) 如果用戶端主機經由代理伺服器認證存取篩選器授予存取權限,則認證至服務。

代理認證允許入口網站之類的其他服務認證使用者,並將認證憑證傳送至 HTTP 登入服務。例如,假定入口網站提供數種服務,其中一種是 Messenger Express 基於 Web 的電子郵件。透過 HTTP 代理認證功能,一般使用者僅需要向入口網站服務認證一次,無需再次認證即可存取他們的電子郵件。入口網站必須配置登入伺服器,以做為用戶端和服務之間的介面。為協助配置 Messenger Express 認證的登入伺服器,Sun Java System 為 Messenger Express 提供了認證 SDK。

本節描述如何建立允許篩選器以允許根據 IP 位址進行 HTTP 代理認證。本節不描述如何設定登入伺服器或如何使用 Messenger Express 認證 SDK。如需有關為 Messenger Express 設定登入伺服器以及使用認證 SDK 的更多資訊,請與您的 Sun Java System 代表連絡。

Procedure為 HTTP 代理認證建立存取篩選器

  1. 指令行。在指令行中為 HTTP 服務代理認證指定存取篩選器,如下所示:


    configutil -o service.service.proxydomainallowed -v filter
    

    其中,filter 遵循23.7.2 篩選器語法中說明的語法規則。