Sun logo      上一個      目錄      索引      下一個     

Sun ONE Messaging Server 6.0 管理員指南

第 7 章
使用直接 LDAP 進行位址轉譯和路由

在版次 6.0 之前的版次中,Messaging Server 通常從由儲存在 LDAP 伺服器中的資訊編譯而來的資料庫中存取所有使用者、網域和群組資料。LDAP 伺服器中的目錄資訊更新時,資料庫資訊會透過名為 dirsync 的程式同步更新。Sun™ ONE Messaging Server MTA 現在可直接存取 LDAP 目錄。本章描述在 MTA 中使用直接 LDAP 資料存取的資料流程。本章包含以下各節:


直接 LDAP 演算法與實施

以下各節描述直接 LDAP 處理作業。

確定網域位置

位址轉譯和路由程序首先會從 user@domain 形式的位址開始檢查「domain」是否為本地。

重寫規則機制

MTA 重寫規則機制中新增了一項功能,可用於檢查給定字串是否為需要在本地進行處理的網域。這項新功能由 $V 或 $Z 圖元字元啟動。這些新的圖元字元在語法結構上類似於現有的 $N、$M、$Q 以及 $C 圖元字元,也就是說,它們後面都跟有型樣字串。如果是 $N、$M、$Q 以及 $C,型樣要符合來源通道或目標通道。如果是 $V 和 $Z,型樣要為一個網域,並且系統會檢查該網域是否為本地。$V 會導致用於非本地網域的規則失敗,而 $Z 會導致用於本地網域的規則失敗。

這些圖元字元的處理按照以下程序進行:

  1. 使用目前網域作為引數呼叫 dmap_locate_domain。如果呼叫成功,則該網域為本地。請注意,呼叫的實際結果無關緊要,我們只需要關心該網域對於我們是否已知。
  2. 如果基本 DN 確定成功,則擷取由 LDAP_DOMAIN_ATTR_ROUTING_HOSTS MTA 選項指定的屬性 (預設為 mailRoutingHosts)。如果該屬性存在,便會列出能夠處理該網域中使用者的一組主機。此清單會與 local.hostname configutil 參數指定的主機以及 local.imta.hostnamealiases configutil 參數指定的主機清單進行比較。這些選項可以分別由 LDAP_LOCAL_HOST 和 LDAP_HOST_ALIAS_LIST MTA 選項置換。如果存在相符項目或網域中不存在該屬性,則該網域為本地。如果不存在相符項目,則該網域為非本地。
  3. 由於 mailRoutingHosts 屬性取決於 ROUTE_TO_ROUTING_HOST MTA 選項的設定,因此網域的處理被視為非本地。如果該選項設定為 0 (預設),則位址只會被作為非本地進行處理,而 MTA 重寫規則被用於確定路由。如果該選項設定為 1,則由 LDAP_DOMAIN_ATTR_ROUTING_HOSTS MTA 選項列出的第一個值組成的來源路徑會置於位址之前。

  4. 如果基本 DN 確定失敗,請移除網域左側的一個元件並移至步驟 1。如果沒有剩餘任何元件,請繼續執行步驟 4。
  5. 這種向上回溯網域樹的結果是,如果 domain.com 被識別為本地,則 domain.com 的任何子網域都將被識別為本地。您有時可能不希望發生這種情況,因此我們提供 MTA 選項 DOMAIN_UPLEVEL 來控制這種運作方式。具體來說,DOMAIN_UPLEVEL 的位元 0 (值 = 1) (如果清除) 可停用使用已移除網域元件進行重試。DOMAIN_UPLEVEL 的預設值為 0。

  6. 現在需要執行虛名網域檢查。執行方法是,使用 DOMAIN_MATCH_URL MTA 選項指定的 LDAP URL 來執行 LDAP 搜尋。該選項的值應設定為:

確定網域位置的網域對映

另請注意,哪些特定的步驟是由 domainMap_get_namespace 或 dmap_locate_domain 呼叫所執行的。這些步驟是綱目級別特定的。如果是 Sun ONE LDAP Schema v.1,步驟為:

  1. 將網域轉換成網域樹中的基本 DN。執行方法是,將網域轉換成一系列 dc 元件,然後加入網域根字尾。預設字尾取自 service.dcroot configutil 參數。預設字尾為 o=internet。因此,a.b.c.d 形式的網域通常會被轉換成 dc=a,dc=b,dc=c,dc=d,o=internet。透過設定 LDAP_DOMAIN_ROOT MTA 選項,可以置換 service.dcroot configutil 參數。
  2. 查找包含步驟 1 中的基本 DN 以及物件類別 inetDomain 或 inetDomainAlias 的項目。透過設定 LDAP_DOMAIN_FILTER_SCHEMA1 MTA 選項 (預設為 (|(objectclass=inetDomain)(objectclass=inetdomainalias))),可以置換用於此目的的搜尋過濾器。
  3. 如果找不到任何項目,則以失敗告終。
  4. 如果找到的項目之物件類別為 inetDomain,則傳回該網域項目之 inetDomainBaseDn 屬性的值。網域對映 API 會檢查 inetDomainBaseDn 屬性是否存在。如果存在,則使用該屬性;如果不存在,則將該項目假定為網域別名。MTA 選項 LDAP_DOMAIN_ATTR_BASEDN 可用於置換 inetDomainBaseDN 的使用。
  5. 如果找到的項目之物件類別為 inetDomainAlias,請查找由 aliasedObjectName 屬性參考的項目。這一新項目必須具有 inetDomainBaseDN 屬性的物件類別。替代 aliasedObjectName 屬性的使用可由 MTA 選項 LDAP_DOMAIN_ATTR_ALIAS 來指定。
  6. 如果別名項目查找成功,則為新項目傳回 inetDomainBaseDn 屬性的值。

dmap_locate_domain 呼叫還支援 Sun ONE LDAP Schema v.2。在 Sun ONE LDAP Schema v.2 中,所採取的動作更為簡單:在目錄中搜尋包含物件類別 sunManagedOrganization 的項目,其中網域顯示為 sunPreferredDomain 或 associatedDomain 屬性的值。如果需要,可分別使用 MTA 選項 LDAP_ATTR_DOMAIN1_SCHEMA2 和 LDAP_ATTR_DOMAIN2_SCHEMA2 置換用於此目的的 sunPreferredDomain 和 associatedDomain 屬性的使用。此搜尋在 service.dcroot configutil 參數所指定的根下進行。透過設定 LDAP_DOMAIN_ROOT MTA 選項,可以置換 service.dcroot configutil 參數。

網域位置資訊的快取

由於網域重寫作業執行的頻率和目錄查詢 (尤其是虛名網域檢查) 的耗用,有關網域的消極指示和積極指示都需要快取。這項作業透過記憶體中開放式鏈接的動態延伸雜湊表來實施。快取記憶體的最大容量由 DOMAIN_MATCH_CACHE_SIZE MTA 選項設定 (預設 100000),快取記憶體中項目的逾時由 DOMAIN_MATCH_CACHE_TIMEOUT MTA 選項設定 (預設 600 秒)。

錯誤處理

必須仔細處理此程序期間發生的暫時性伺服器故障,因為當這些故障發生時,我們不可能知曉給定的網域是否為本地。在這種情況下,基本上可能有兩種結果:

  1. 傳回一個暫時性 (4xx) 錯誤至用戶端,告知用戶端稍後再試該位址。
  2. 接受該位址,但使其在重新處理通道中形成佇列以便稍後可以在本地重試該位址。

任何一個選項都不能適用於所有情況。例如,在與遠端 SMTP 中繼器對話時結果 1 適用。但在處理來自本地使用者的 SMTP 提交作業時結果 2 適用。

雖然在理論上可以使用具有同一型樣的多個規則來處理暫時性故障,但重複此類查詢所耗用的時間 (即使使用適當的快取記憶體) 實在難以接受。由於這些原因,網域重寫作業的這種簡單的成功/失敗至下一規則匹配模型是不夠的。在網域查找發生故障的情況下,應使用由 MTA 選項 DOMAIN_FAILURE 指定的特殊範本。當 $V 作業失敗時,該範本會取代正在處理的目前重寫規則範本的剩餘項目。

除了 $V 和 $Z 之外,重寫規則功能中還新增了其他數個新的圖元字元:

網域檢查重寫規則的型樣

需要在其他重寫規則有機會運作之前執行此網域檢查。在規則的左側使用特殊的 $* 可確保這種排序。$* 型樣在任何其他規則之前接受檢查。

綜合全部

如果要考量目前為止所述的全部機制,在 imta.cnf 中我們需要新的重寫規則,即:

$*        $E$F$U%$H$V$H@localhost

並且在 option.dat 檔案中 DOMAIN_FAILURE MTA 選項的值需為:

reprocess-daemon$Mtcp_local$1M$1~-error$4000000?Temporary lookup failure

在此重寫規則中,localhost 為與本地通道相關的主機名稱。此處所示的 DOMAIN_FAILURE 選項的值為預設值,因此,在一般情況下不必顯示在 option.dat 中。

此處的排序尤其微妙。MTA 會在重建位址之後新增路由之前檢查 $V。這可讓 MTA 在發生暫時性查找故障的情況下變更路由。每當插入點發生變更時會套用擱置通道匹配檢查,因此第二個 $H 之後的 @ 會呼叫該檢查。如果檢查成功,則套用範本的剩餘項目並結束重寫處理。如果檢查失敗,則重寫失敗且重寫作業繼續執行下一個可套用的重寫規則。如果因暫時性故障而不能執行檢查,範本處理會繼續執行由 DOMAIN_FAILURE MTA 選項指定的值。此範本的值首先將路由主機設定為 reprocess-daemon。然後,此範本檢查 MTA 是否正在處理某種重新處理通道或 tcp_local。如果 MTA 正在處理此類通道,則該規則繼續,使路由主機變為非法並指定一個暫時性故障作為結果。如果 MTA 未在處理此類通道,該規則會被截斷並成功終止,因此將位址重寫至重新處理通道。

本地位址的別名延伸

當某個位址被確定為與本地通道關聯後,系統將自動對其進行別名延伸。別名延伸程序會檢查大量資訊來源,包括:

  1. 別名檔案 (已編譯配置的一部分)。
  2. 別名資料庫。
  3. 別名 URL。

所檢查的確切別名來源以及檢查的次序取決於 option.dat 檔案中 ALIAS_MAGIC MTA 選項的設定。對於直接 LDAP,請將此選項設定為 8764。這意味著首先檢查由 ALIAS_URL0 MTA 選項指定的 URL,然後檢查由 ALIAS_URL1 MTA 選項指定的 URL,再檢查由 ALIAS_URL2 MTA 選項指定的 URL,最後檢查別名檔案。此設定在作用中時,不檢查別名資料庫。

使用 LDAP URL 檢查別名

對 LDAP 中別名的檢查透過指定兩個特殊的 LDAP URL 作為別名 URL 來實施。第一個別名 URL 處理一般使用者和群組,隨後的別名 URL 處理虛名網域。指定第一個 URL 為 ALIAS_URL0:

ALIAS_URL0=ldap:///$V?*?sub?$R

$V 圖元字元

圖元字元延伸發生在 URL 查找之前。ALIAS_URL0 的值中使用的兩個圖元字元分別為 $V 和 $R。

$V 圖元字元可將位址的網域部分轉換成基本 DN。這類似於 $V 重寫規則圖元字元所執行的初始步驟 (先前已在「重寫規則機制」一節中描述)。$V 處理作業包括以下步驟:

  1. 透過呼叫 dmap_locate_domain/dmap_get_base_dn 取得目前網域的基本 DN。
  2. 透過呼叫 dmap_get_canonical_name 取得與目前網域相關的標準網域。在 Sun ONE LDAP Schema v.1 中,如果網域項目具有 inetCanonicalDomainName 屬性,則標準網域名稱由該屬性提供。如果沒有該屬性,標準名稱則以簡易方式從實際網域項目的 DN 建構而成。當目前網域為別名時,標準名稱與目前網域會有所不同。用於儲存標準名稱的名稱屬性可由 option.dat 檔案中的 LDAP_DOMAIN_ATTR_CANONICAL MTA 選項來置換。
  3. 在 Sun ONE LDAP Schema v.2 中,標準名稱即為 SunPreferredDomain 屬性的值。

  4. 如果基本 DN 存在,將其替換為代替 $V 的 URL。
  5. 現在確定適用於此項目的所有託管網域。執行方法是,比較標準網域 (如果清除 DOMAIN_UPLEVEL 的位元 2 [值 = 4]) 或目前網域 (如果設定 DOMAIN_UPLEVEL 的位元 2 [值 = 4]) 與 service.defaultdomain configutil 參數。如果不相符,則該項目為託管網域的成員。透過設定 option.dat 檔案中的 LDAP_DEFAULT_DOMAIN MTA 選項,可以置換 service.defaultdomain configutil 參數。
  6. 如果基本 DN 確定失敗,請移除網域左側的一個元件並移至步驟 1。如果沒有剩餘任何元件,則替換失敗。

$V 還接受可選的數值引數。如果該引數設定為 1 (例如,$1V),則忽略解析網域樹中的網域時發生的故障,並傳回使用者樹的基本目錄。

如果嘗試擷取網域基本 DN 成功,MTA 還會擷取數個日後將會需要的有用的網域屬性。此作業透過呼叫 domainMap_get_value 來完成。所擷取的屬性名稱由 option.dat 檔案中的以下 MTA 選項設定:

從 URL 呼叫對映

在有些特殊情況下,需要以其他方式執行從網域至基本 DN 的對映。為適應此類設定,URL 解析程序提供了呼叫 MTA 對映的功能。該功能透過一個圖元字元序列來執行,其一般形式為:

$|/mapping-name/mapping-argument|

雙引號 (") 可啟動和終止呼叫。緊接 $ 之後的字元為對映名稱與引數之間的分隔符號;所選擇的字元應與對映名稱或引數中使用的預期字元值不發生衝突。

$R 圖元字元

$R 圖元字元可為 URL 提供適當的過濾器。其目的是產生一個過濾器,用於搜尋可能包含特定使用者或群組之電子郵件位址的所有屬性。要搜尋的屬性清單來自 configutil 參數 local.imta.mailaliases。如果未設定此參數,則會檢查 local.imta.schematag configutil 參數,並根據其值選擇一組適當的預設屬性,如下所示:

sims401mail, rfc822mailalias

nms41mail,mailAlternateAddress

ims50mail,mailAlternateAddress,mailEquivalentAddress

local.imta.schematag 的值可以是一個以逗號分隔的清單。如果支援多個綱目,則可使用屬性的組合清單 (重複屬性要排除)。LDAP_SCHEMATAG MTA 選項可用於置換 local.imta.schematag 專用於 MTA 的設定。

此外,過濾器不僅搜尋最初提供的位址,還搜尋具有同一本地部分但網域實際在網域樹中找到的位址 (在「$V 圖元字元」一節的步驟 2 中儲存)。網域樹查找的反覆性意味著這兩個位址可以不同。這項額外的檢查由 option.dat 檔案中 DOMAIN_UPLEVEL MTA 選項的位元 1 (值 = 2) 來控制。設定此位元會啟用額外的位址檢查。DOMAIN_UPLEVEL 的預設值為 0。

例如,假定網域 siroe.com 顯示在網域樹中。假定強制使用 Sun ONE LDAP Schema v.1,查找位址

u@host1.siroe.com

由 $R 的延伸和 ims50 schematag 所產生的過濾器如下所示:

(|(mail=u@siroe.com)
     (mail=u@host1.siroe.com)
     (mailAlternateAddress=u@siroe.com)
     (mailAlternateAddress=u@host1.siroe.com)
     (mailEquivalentAddress=u@siroe.com)
     (mailEquivalentAddress=u@host1.siroe.com))

另一方面,如果 DOMAIN_UPLEVEL 設定為 1 而非 3,則過濾器如下所示:

(|(mail=u@host1.siroe.com)
     (mailAlternateAddress=u@host1.siroe.com)
     (mailEquivalentAddress=u@host1.siroe.com))

ALLOW_UNQUOTED_ADDRS_VIOLATE_RFC2798 MTA 選項

有些 MTA 對於位址加引號和標準化極為寬鬆。尤其是,它們允許使用 a..b@siroe.com 之類的非法位址。更糟的是,在目錄中搜尋該位址之前,它們無法加入必要的引號,使該位址轉換成合法位址 "a..b"@siroe.com。

option.dat 檔案中的 ALLOW_UNQUOTED_ADDRS_VIOLATE_RFC2798 MTA 選項可適應這種違反標準的特殊情況。如果設定為 1,該選項會新增額外的過濾器項目,以搜尋加引號的位址中在語法結構上無效的未加引號形式。例如,搜尋 "a..b"@siroe.com 位址可以產生以下形式的過濾器:

(|(mail=”a..b”@siroe.com)
     (mail=a..b@siroe.com)
     (mailAlternateAddress=”a..b”@siroe.com)
     (mailAlternateAddress=a..b@siroe.com)
     (mailEquivalentAddress=”a..b”@siroe.com)
     (mailEquivalentAddress=a..b@siroe.com))

該選項並不解決因使用非法位址而導致的問題。相關電子郵件和目錄標準依位址的本地部分中允許使用的內容而定。當各個郵件傳送元件都以語法結構上非法的位址形式呈現時,這些元件可以不同的方式運作。它們可以為此類位址加上引號,使其合法;可以通過此類位址且不採用任何變更;可以拒絕此類位址,或者執行完全難以預料的作業。因此,如果為一般使用者提供此類非法位址,他們可能會發現,在其他供應商提供的郵件傳送系統上,該位址不起作用。

確定要取回的屬性

如果 URL 為要傳回的屬性清單指定 *,則可使用 MTA 能夠使用的屬性清單來取代星號。

處理 LDAP 錯誤

在此處,結果 URL 可用於執行 LDAP 搜尋。如果發生某種 LDAP 錯誤,處理作業會終止,並顯示暫時性故障的指示 (SMTP 中的 4xx 錯誤)。如果 LDAP 作業成功但無法產生結果,系統會檢查從 LDAP_DOMAIN_ATTR_CATCHALL_ADDRESS MTA 選項擷取的網域之 catchall 位址屬性。如果已設定該屬性,其值會取代目前位址。

如果沒有設定 catchall 位址屬性,系統會檢查從 LDAP_DOMAIN_ATTR_SMARTHOST MTA 選項擷取的網域之 smarthost 屬性。如果已設定該屬性,則建立

@smarthost:user@domain

形式的位址,而別名處理作業會成功終止並顯示此結果。此外,取自 LDAP_DOMAIN_ATTR_CONVERSION_TAG MTA 選項的網域之轉換標記 (如果有) 將會附加至該位址,以在轉寄給智慧主機之前完成轉換。如果該網域沒有 catchall 位址或智慧主機,此別名 URL 的處理作業將以失敗告終。

對 LDAP 結果的正常性檢查

LDAP 搜尋傳回結果後,系統將檢查該結果,以驗證其中是否只有一個項目。如果有多個項目,系統會檢查每個項目是否具有用於使用者或群組的正確物件類別、非刪除狀態以及用於使用者的 UID。未通過該檢查的項目會被忽略。如果多個項目的清單透過此檢查縮減為一個項目,處理作業將繼續。如果沒有,則傳回錯誤,指明目錄重複或模糊。

支援虛名網域

ALIAS_URL0 檢查適用於普通使用者或託管網域中的使用者。如果檢查失敗,還會執行虛名網域檢查。此檢查透過以下別名 URL 完成:

ALIAS_URL1=ldap:///$B?*?sub?(&(msgVanityDomain=$D)$R)

支援 Catchall 位址

最後,需要在 mailAlternateAddress 屬性中對 @host 形式的 catchall 位址執行檢查。在託管網域和虛名網域中均允許使用這種萬用字元形式,因此其正確的別名 URL 為:

ALIAS_URL2=ldap:///$1V?*?sub?(mailAlternateAddress=@$D)

處理 LDAP 結果

LDAP 別名結果處理作業依次序分成許多階段完成。以下各節會描述這些階段。

物件類別檢查

如果別名搜尋成功,系統將檢查項目的物件類別,以確定它包含用於使用者或群組的一組適當的物件類別。用於使用者和群組的所需物件類別之可能的集合通常由作用中的 schematag 來確定。即由 local.imta.schematag 設定來確定。

表格 7-1 顯示由各種 schematag 值所確定的使用者和群組物件類別。

表格 7-1  各種 schematag 值所確定的物件類別

schematag

使用者物件類別

群組物件類別

sims40

inetMailRouting+inetmailuser

inetMailRouting+inetmailgroup

nms41

mailRecipient + nsMessagingServerUser

mailGroup

ims50

inetLocalMailRecipient+inetmailuser

inetLocalMailRecipient+inetmailgroup

如同其餘綱目標記處理一樣,本表中的資訊是程序內定的。但是,在 option.dat 檔案中還有兩個 MTA 選項,即 LDAP_USER_OBJECT_CLASSES 和 LDAP_GROUP_OBJECT_CLASSES,設定這兩個選項可分別為使用者和群組指定不同的物件類別集合。

例如,綱目標記設定 ims50,nms41 等效於以下選項設定:

LDAP_USER_OBJECT_CLASSES=inetLocalMailRecipient+inetmailuser, mailRecipient+nsMessagingServerUser

LDAP_GROUP_OBJECT_CLASSES=inetLocalMailRecipient+inetmailgroup,mailGroup

如果 LDAP 結果不具有適用於使用者或群組的一組正確的物件類別,則會被忽略。MTA 還會確定它是否正在處理使用者或群組,並儲存該資訊。以後會多次用到這項儲存的資訊。

請注意,此處所述的物件類別設定還可用於建構實際 LDAP 搜尋過濾器,以用於檢查項目是否具有用於使用者或群組的正確物件類別。此過濾器可透過 $K 圖元字元來存取。它還被內部儲存在 MTA 的配置中,以供通道程式使用,並會在使用指令 imsimta cnbuild -option 時作為 LDAP_UG_FILTER 選項寫入 MTA 選項檔案 option.dat 中。該選項僅被寫入此檔案。MTA 永遠不會從此選項檔案中讀取它。

項目狀態檢查

接著會檢查項目的狀態。狀態屬性有兩個,一個用於一般項目,另一個專用於郵件服務。

表格 7-2 顯示 schematag 項目中根據生效的 schematag 要進行檢查的一般與郵件特定的使用者或群組屬性

表格 7-2  要檢查的屬性

schematag

類型

一般

郵件特定

sims40

使用者

inetsubscriberstatus

mailuserstatus

sims40

群組

無

inetmailgroupstatus

nms41

使用者

無

mailuserstatus

nms41

群組

無

無

Messaging Server 5.0

使用者

inetuserstatus

mailuserstatus

Messaging Server 5.0

群組

無

inetmailgroupstatus

如有必要,可使用 option.dat 檔案中的 LDAP_USER_STATUS 和 LDAP_GROUP_STATUS MTA 選項分別為使用者和群組選取替代一般狀態屬性。郵件特定的使用者和群組狀態屬性由 LDAP_USER_MAIL_STATUS 和 LDAP_GROUP_MAIL_STATUS MTA 選項來控制。

此處起作用的另一個因素是網域自身的狀態 (LDAP_DOMAIN_ATTR_STATUS 和 LDAP_DOMAIN_ATTR_MAIL_STATUS)。總的來說有四個狀態屬性。它們按以下次序進行組合:

  1. 網域狀態
  2. 網域郵件狀態
  3. 使用者或群組狀態
  4. 郵件使用者或群組狀態

第一項指定「active」以外的其他狀態,它的優先度最高。其他允許的狀態值為「inactive」、「deleted」、「removed」、「disabled」、「hold」以及「overquota」。「Hold」、「disabled」以及「removed」狀態僅可指定給郵件網域、郵件使用者或郵件群組。「Overquota」狀態僅可作為郵件網域狀態或郵件使用者狀態指定。

如果特定的狀態屬性不存在,所有狀態都預設為「active」。未知狀態值被解譯為「inactive」。

當這四個狀態組合時,使用者或群組可能有以下狀態:「active」、「inactive」、「deleted」、「removed」、「disabled」、「hold」以及「overquota」。作用中狀態會使別名處理作業繼續。非作用中或超配額狀態會導致位址立即被拒絕,並產生 4xx (暫時性) 錯誤。已刪除、已移除以及已停用狀態會導致位址立即被拒絕,並產生 5xx (永久性) 錯誤。就狀態處理而言,暫停狀態會被視為作用中,但它設定內部旗標,因此以後考量遞送選項時,其中的所有選項都會由包含單一「hold」項目的選項清單來置換。

UID 檢查

下一個步驟為考量項目的 UID。UID 用於多種用途,它必須為所有使用者項目的一部分,並且可以包括在群組項目中。沒有 UID 的使用者項目會被忽略,並且此別名 URL 的處理會以失敗告終。託管網域中項目的 UID 可由真實 UID、分隔字元以及網域組成。MTA 只需要真實 UID,因此,如果使用取自 option.dat 檔案中的 LDAP_DOMAIN_ATTR_UID_SEPARATOR MTA 選項的網域分隔字元的剩餘部分存在,則會被移除。

在使用 uid 之外的屬性儲存 UID 這種不太可能發生的情況下,可使用 LDAP_UID MTA 選項強制使用其他屬性。

郵件捕獲

接著,檢查用於指定一個或多個郵件捕獲位址的 LDAP 屬性。用於此目的的屬性必須透過 LDAP_CAPTURE MTA 選項來指定。此選項沒有預設。此屬性的值會被作為位址來處理,特殊的「捕獲」通知會產生並被作為附件傳送至這些包含目前郵件的位址。此外,在捕獲位址隨後將顯示為訊息封 from: 位址這種可能發生的情況下,該位址可用於植入位址反向快取記憶體。

植入反向快取記憶體

接著考量主要位址和附加至使用者項目的所有別名。此資訊用於植入位址反向快取記憶體。它在目前位址轉譯程序中不起作用。首先,考量主要位址、個人名稱、收件者限制、收件者截止以及來源區塊限制。主要位址通常儲存在「mail」屬性中,其他屬性可以透過適當設定 LDAP_PRIMARY_ADDRESS MTA 選項來指定。(當然,主要位址反向成其自身。)所有其他屬性都沒有預設屬性。如果您要使用它們,必須透過 LDAP_PERSONAL_NAME、LDAP_RECIPIENTLIMIT、LDAP_RECIPIENTCUTOFF 以及 LDAP_SOURCEBLOCKLIMIT MTA 選項進行指定。此處還考量相應的網域級收件者限制、收件者截止以及來源區塊限制屬性。使用者級設定可完全置換任何網域級設定。

接著,考量所有次要位址並為每個次要位址產生快取記憶體項目。次要位址有兩種:即接受位址反向的次要位址和不接受位址反向的次要位址。兩者均需要加以考量,以便正確植入位址反向快取記憶體,因為需要檢查各種情況下的郵件捕獲請求。

接受反向的次要位址通常儲存在 mailAlternateAddress 屬性中。透過設定 LDAP_ALIAS_ADDRESSES MTA 選項,可以指定其他屬性。不接受反向的次要位址通常儲存在 mailEquivalentAddress 屬性中。透過設定 LDAP_EQUIVALENCE_ADDRESSES MTA 選項,可以指定其他屬性。

郵件主機和路由位址

現在要考量 mailhost 和 mailRoutingAddress 屬性。考量的實際屬性可分別由 LDAP_MAILHOST 和 LDAP_ROUTING_ADDRESS MTA 選項來置換。這些屬性協同工作,以確定此時是執行該位址還是將其轉寄至另一系統。

第一個步驟為確定 mailhost 對於此項目是否有意義。對作用於項目的遞送選項執行預先檢查,以查看該項目是否為郵件主機特定的。如果不是,則省略 mailhost 檢查。請參閱遞送選項處理的描述,尤其是 # 旗標,以瞭解如何執行本檢查。

對於使用者項目,mailhost 屬性必須標識本地系統,以便於執行。mailhost 屬性會與 local.hostname configutil 參數的值進行比較,並與 local.imta.hostnamealiases configutil 參數所指定的值清單進行對照。如果其中任何一個相符,即認為 mailhost 屬性標識本地主機。

相符成功意味著可以在本地執行別名,並且別名處理會繼續。相符不成功則意味著需要將郵件轉寄至郵件主機以執行。新位址形式

@mailhost:user@domain

會建構出來,並成為別名延伸作業的結果。

遺漏的 mailhost 屬性的處理會依該項目是使用者還是群組而有所不同。對於使用者,郵件主機十分重要。因此,如果 mailhost 屬性不存在,則新的位址形式

@smarthost:user@domain

會使用 LDAP_DOMAIN_ATTR_SMARTHOST MTA 選項所確定的網域之智慧主機建構出來。如果該網域不存在智慧主機,則報告錯誤。

另一方面,群組不需要郵件主機。因此遺漏的郵件主機會被解譯為該群組可在任何位置延伸。因此,別名處理會繼續。

mailRoutingAddress 屬性增加了一個最終的難題。_如果它存在,別名處理會終止,結果為 mailRoutingAddress。但是,如果郵件主機存在,它會作為來源路徑加入 mailRoutingAddress 中。

其他屬性支援

接著,考量 mailMsgMaxBlocks 屬性。首先它會透過 LDAP_DOMAIN_ATTR_BLOCKLIMIT MTA 選項傳回的網域區塊限制最小化。如果已知目前郵件大小超過限制,別名處理會終止,並顯示表明超出大小的錯誤。如果大小未知或未超過限制,該限制仍然儲存,稍後檢查郵件本身時,將重新檢查該限制。mailMsgMaxBlocks 的使用可由 LDAP_BLOCKLIMIT MTA 選項來置換。

接著會存取並儲存大量屬性。最終這些屬性將被寫入佇列檔案項目中,供 ims_master 通道程式使用,然後該程式將使用它們來更新儲存的使用者資訊快取記憶體。如果找不到個別使用者的這些屬性,可使用網域級屬性設定預設。

如果 LDAP 項目適用於群組而非使用者,或 LDAP 項目來自別名快取記憶體而非 LDAP 目錄,則跳過本步驟。後一準則的邏輯是,沒有必要頻繁更新該資訊,使用別名快取記憶體可為何時應進行更新提供合理的準則。擷取的這些屬性的名稱都可以透過各種 MTA 選項來設定。

表格 7-3 顯示可設定擷取的磁碟配額與郵件配額屬性的 MTA 選項。

表格 7-3  可設定擷取的磁碟配額與郵件配額屬性的 MTA 選項

MTA 選項

屬性

LDAP_DISK_QUOTA

mailQuota

LDAP_DOMAIN_ATTR_DISK_QUOTA

mailQuota

LDAP_DOMAIN_ATTR_MESSAGE_QUOTA

mailMsgQuota

LDAP_MESSAGE_QUOTA

mailMsgQuota

接著,儲存大量屬性,以供日後與圖元字元替換一併使用。

表格 7-4 顯示 MTA 選項、預設屬性以及圖元字元。

表格 7-4  MTA 選項、預設屬性以及圖元字元

MTA 選項

預設屬性

圖元字元

LDAP_PROGRAM_INFO

mailProgramDeliveryInfo

$P

LDAP_DELIVERY_FILE

mailDeliveryFileURL

$F

LDAP_SPARE_1

無預設

$1E $1G $E

LDAP_SPARE_2

無預設

$2E $2G $G

LDAP_SPARE_3

無預設

$3E $3G

LDAP_SPARE_4

無預設

$4E $4G

LDAP_SPARE_5

無預設

$5E $5G

其中包括了其他屬性的備用位置,以便您使用它們來建立自訂位址延伸工具。

接著,所有與 mailConversionTag 屬性相關的值會新增至轉換標記的目前集合中。該屬性的名稱可使用 LDAP_CONVERSION_TAG MTA 選項來變更。如果有任何值與網域的 mailDomainConversionTag 屬性相關,也會被附加。

遞送選項處理

接著,檢查 mailDeliveryOption 屬性。該屬性的名稱可使用 LDAP_DELIVERY_OPTION MTA 選項來變更。這是一個多值選項,其值可確定別名轉譯程序所產生的位址。此外,允許的值對於使用者和群組不同。共用的允許值為 program、forward 和 hold。僅針對使用者的值為 mailbox、native、unix 和 autoreply。僅針對群組的值為 members、members_offline 和 file。

mailDeliveryOption 屬性至適當位址的轉換由 DELIVERY_OPTIONS MTA 選項來控制。該選項不僅指定每個允許的 mailDeliveryOption 值會產生哪些位址,還指定允許的 mailDeliveryOption 值有哪些,以及每個值是否適用於使用者、群組或兩者。

該選項的值由 deliveryoption=template 對清單組成,各對之間以逗號分隔,每對都具有一個或多個可選的單一字元字首。

DELIVERY_OPTIONS 選項的預設值為:

DELIVERY_OPTIONS=*mailbox=$M%$\\$2I$_+$2S@ims-ms-daemon,
     &members=*,
     *native=$M@native-daemon,
     /hold=@hold-daemon:$A,
     *unix=$M@native-daemon,
     &file=+$F@native-daemon,
     &@members_offline=*,
     program=$M%$P@pipe-daemon,
     #forward=**,
     *^!autoreply=$M+$D@bitbucket

每個遞送選項都對應於可能的 mailDeliveryOption 屬性值,相應的範本可使用 URL 處理所使用的同一圖元字元替換綱目指定結果位址。

表格 7-5 顯示用於 DELIVERY_OPTIONS 選項的單一字元字首。

表格 7-5  用於 DELIVERY_OPTIONS MTA 選項中各選項的單一字元字首。

字元字首

描述

*

遞送選項適用於使用者。

&

遞送選項適用於群組。

$

設定旗標,表示該使用者或群組的延伸將延遲。

^

設定旗標,表示應檢查休假開始和結束時間,以查看此遞送選項是否真正生效。

#

設定旗標,表示此遞送選項的延伸無需在項目的指定郵件主機上進行。

/

設定旗標,可使此遞送選項產生的所有位址得以保留。包含這些收件者位址的郵件檔案將具有 .HELD 副檔名。

!

設定旗標,表示應該由 MTA 在內部處理自動回覆作業。僅對自動回覆遞送選項使用此字首時有意義。此選項的值應將郵件導向至 bitbucket 通道。

如果 * 和 & 均不存在,則遞送選項既適用於使用者,又適用於群組。

在遞送選項中使用的其他圖元字元

已新增數個其他圖元字元以支援 MTA 之 URL 範本工具的新用法。這些圖元字元包括:

表格 7-6 顯示在遞送選項中使用的其他圖元字元及其描述。

表格 7-6  在遞送選項中使用的其他圖元字元  

圖元字元

描述

$\\

強制後續文字採用小寫。

$^

強制後續文字採用大寫。

$_

不對後續文字執行大小寫轉換。

$nA

插入位址的第 n 個字元。第一個字元為字元 0。如果省略 n,則將替換整個位址。這是為了用於建構自動回覆目錄路徑。

$D

插入位址的網域部分。

$nE

插入第 n 個備用屬性的值。如果省略 n,則使用第一個屬性。

$F

插入遞送檔案的名稱 (mailDeliveryFileURL 屬性)。

$nG

插入第 n 個備用屬性的值。如果省略 n,則使用第二個屬性。

$nH

從 0 數起,插入原始位址網域的第 n 個元件。如果省略 n,預設為 0。

$nI

插入與別名相關的託管網域。此圖元字元接受整數參數 n,其語義在表格 7-7 中描述。

$nJ

從 0 數起,插入託管網域的第 n 個部分。n 預設為 0。

$K

插入與使用者或群組的物件類別相符的 LDAP 過濾器。請參閱 LDAP_UG_FILTER MTA 僅輸出選項的描述。

$L

插入位址的本地部分。

$M

插入與目前別名相關的 UID。

$P

插入程式名稱 (mailProgramDeliveryInfo 屬性)。

$nS

插入與目前位址相關的子位址。此圖元字元接受整數參數 n,其語義在表格 7-7 中描述。

$nU

插入目前位址中未加引號形式的電子信箱部分中的第 n 個字元。第一個字元為字元 0。如果省略 n,則將替換整個未加引號的電子信箱。

$nX

插入郵件主機的第 n 個元件。如果省略 n,則插入整個郵件主機。

表格 7-7 顯示整數參數如何修改 $nI 和 $nS 圖元字元的運作方式。

表格 7-7  控制 $nI 和 $nS 圖元字元運作方式修改的整數

整數

運作方式描述

0

如果無可用值,則失敗 (預設)。

1

如果有一個值可用,則插入該值。否則不插入任何內容。

2

如果有一個值可用,則插入該值。否則不插入任何內容,並刪除前面的字元 (ims-ms 通道需要這種特殊的運作方式)。

3

如果有一個值可用,則插入該值。否則不插入任何字元並忽略後續字元。

除了圖元字元以外,表格 7-8 還顯示兩個特殊範本字串。

表格 7-8  特殊範本字串

特殊範本字串

描述

*

執行群組延伸。此值對於使用者項目無效。

**

延伸由 LDAP_FORWARDING_ADDRESS MTA 選項指定的屬性。預設為 mailForwardingAddress。

例如,如果使用者的 mailDeliveryOption 的值設定為 mailbox,透過群組延伸,我們可以產生一個新的位址,該位址由被刪除的 UID、百分號後接託管網域 (如果適用)、加號後接子位址 (如果已指定) 以及 @ims-ms-daemon 組成。

遞送選項預設

如果此處作用中的遞送選項清單為空,則為使用者啟動清單上的第一個選項 (通常為電子信箱),為群組啟動清單上的第二個選項 (通常為成員)。

開始和結束日期檢查

在讀取遞送選項清單之後檢查開始和結束日期。有兩個屬性,其名稱分別由 LDAP_START_DATE (預設 vacationStartDate) 和 LDAP_END_DATE (預設 vacationEndDate) MTA 選項控制。如果一個或多個作用中的遞送選項指定了 ^ 字首字元,則對照目前日期檢查這些選項的值。如果目前日期超出了這些選項指定的範圍,則從作用中的集合中移除具有 ^ 字首的遞送選項。

選擇加入、存在性以及自動記錄屬性

LDAP_OPTIN MTA 選項可用於指定包含垃圾郵件過濾器選擇加入值清單的 LDAP 屬性。如果此選項已指定並且該屬性存在,則會附加至目前垃圾郵件過濾器選擇加入清單。LDAP_DOMAIN_ATTR_OPTIN MTA 選項所設定的網域級屬性設定的所有值也會附加至該清單。

LDAP_PRESENCE MTA 選項可用於指定能夠被解析以傳回使用者存在性資訊的 URL。如果此選項已指定並且該屬性存在,其值會被儲存,以與篩選存在性測試一併使用。如果使用者項目不存在值,則使用 LDAP_DOMAIN_ATTR_PRESENCE MTA 選項設定的網域級屬性作為此 URL 來源。

LDAP_AUTOSECRETARY MTA 選項可用於指定控制自動記錄資訊儲存位置的 URL。如果此選項已指定並且該屬性存在,其值會被儲存,以與 Messaging Server 自動記錄功能一併使用。如果使用者項目不存在值,則使用 LDAP_DOMAIN_ATTR_AUTOSECRETARY MTA 選項設定的網域級屬性作為此 URL 來源。

篩選過濾器處理

接著,檢查套用於此項目的篩選過濾器的 mailSieveRuleSource 屬性。如果該屬性存在,此時會被剖析並儲存。此屬性的值有兩種可能的形式,即包含完整篩選程序檔的單一值和每個值都包含一段篩選程序檔的多個值。後一種形式由 Web 過濾器建構介面產生。可以使用特殊程式碼排序這些值,並將它們正確地綁定在一起。

mailSieveRuleSource 屬性的使用更可以使用 LDAP_FILTER MTA 選項來置換。

延遲處理控制

接著,檢查 mailDeferProcessing 屬性。該屬性可透過 LDAP_REPROCESS MTA 選項來變更。如果該屬性存在且被設定為 no,處理作業通常會繼續。但如果該屬性設定為 yes 且目前來源通道並非重新處理通道,此項目的延伸就會中斷,而原始 user@domain 位址只會在重新處理通道中形成佇列。如果該屬性不存在,系統會檢查與遞送選項處理作業相關的延遲處理字元字首的設定。(請參閱遞送選項處理一節,以取得範例。)如果設定該屬性,處理作業會延遲。如果未設定該屬性,針對使用者的預設為 no。針對群組的預設由 MTA 選項 DEFER_GROUP_PROCESSING 控制,預設為 1 (yes)。使用者項目的別名處理作業到此結束。

群組延伸屬性

有大量附加屬性與群組延伸相關,並且必須在此處進行處理。這些屬性的名稱都可以透過各種 MTA 選項來配置。

表格 7-9 列出預設屬性名稱、可設定屬性名稱的 MTA 選項以及 MTA 處理屬性的方式。本表中元素的排序顯示處理各種群組屬性的次序。本排序對於正確運作十分重要。

表格 7-9  群組延伸屬性  

預設屬性

可設定屬性名稱的 MTA 選項

屬性處理方式

mgrpMsgRejectAction

LDAP_REJECT_ACTION

單一值屬性,可控制任何後續存取檢查失敗後所發生的動作。僅定義一個值:TOMODERATOR,如果設定,則指示 MTA 將所有存取故障重新導向至 mgrpModerator 屬性所指定的仲裁者。預設 (以及該屬性的任何其他值) 會導致錯誤被報告且郵件被拒絕。

mailRejectText

LDAP_REJECT_TEXT

儲存該屬性第一個值中所儲存的文字之第一行。如果以下任何認證屬性導致郵件被拒絕,則傳回此文字。這意味著此文字可顯示在 SMTP 回應中,因此必須將值限制為 US-ASCII,以符合目前的郵件傳送標準。

mgrpBroadcasterPolicy

LDAP_AUTH_POLICY

指定存取清單時所需的認證級別。可能的值為 SMTP_AUTH_REQUIRED 或 AUTH_REQ (兩者均意味著必須使用 SMTP AUTH 指令來識別寄件者以寄送至清單) PASSWORD_REQUIRED、PASSWD_REQUIRED 或 PASSWD_REQ (這些都意味著由 mgrpAuthPassword 屬性指定的清單密碼必須顯示在郵件的 Approved: 標頭欄位中) 以及 NO_REQUIREMENTS (意味著無特殊的需求套用)。如果為此呼叫 SMTP AUTH,還表示所有後續認證檢查將根據由 SASL 層提供的電子郵件位址而非 MAIL FROM 位址來執行。

mgrpAllowedDomain

LDAP_AUTH_DOMAIN

允許提交郵件至此清單的網域。可以有多個值。

mgrpDisallowedDomain

LDAP_CANT_DOMAIN

不允許提交郵件至此清單的網域。可以有多個值。

mgrpAllowedBroadcaster

LDAP_AUTH_URL

標識允許傳送郵件至此群組的郵件位址的 URL。可以有多個值。每個 URL 都會延伸成位址清單,而且每個位址會對照位址的目前訊息封來進行檢查。相符意味著允許該郵件。

mgrpDisallowedBroadcaster

LDAP_CANT_URL

標識不允許傳送郵件至此群組的郵件位址的 URL。可以有多個值。每個 URL 會延伸成位址清單,而且每個位址會對照位址的目前訊息封來進行檢查。相符意味著不允許該郵件。

mgrpMsgMaxSize

LDAP_ATTR_MAXIMUM_MESSAGE_SIZE

可被傳送至群組的最大郵件大小 (以位元組為單位)。該屬性已被淘汰,但仍受支援,以確保向後相容性;應使用新的 mailMsgMaxBlocks 屬性。

mgrpAuthPassword

LDAP_AUTH_PASSWORD

指定需要寄送至清單的密碼。該屬性的存在會強制執行重新處理傳送。郵件在重新處理通道上形成佇列時,密碼取自標頭,並置於訊息封中。而在重新處理時,密碼取自訊息封,並對照該屬性進行檢查。此外,僅實際使用的密碼會從標頭欄位中移除。

mgrpModerator

LDAP_MODERATOR_URL

由該屬性給出的 URL 將被延伸成一系列位址。此位址清單的轉譯取決於 LDAP_REJECT_ACTION MTA 選項的設定。如果 LDAP_REJECT_ACTION 設定為 TOMODERATOR,該屬性會指定在任何存取檢查失敗時郵件將被傳送至的仲裁者位址。如果 LDAP_REJECT_ACTION 遺漏或有其他值,則位址清單會與位址的訊息封進行比較。如果存在相符項目,則繼續處理。如果不存在相符項目,郵件會再次傳送至該屬性指定的所有位址。該屬性延伸的實施方法是使該屬性的值成為群組的 URL 清單。任何 RFC822 位址清單或與群組相關的 DN 清單都會被清除,群組的遞送選項會設定為 members。最後,本表中列出的後續群組屬性會被忽略。

mgrpDeliverTo

LDAP_GROUP_URL1

URL 清單,在延伸時會提供郵件收件人清單成員位址的清單。

memberURL

LDAP_GROUP_URL2

另一個 URL 清單,在延伸時會提供郵件收件人清單成員位址的另一個清單。

uniqueMember

LDAP_GROUP_DN

群組成員 DN 的清單。DN 可以指定整個子樹。唯一成員 DN 透過內嵌在 LDAP URL 中來延伸。要使用的確切 URL 由 GROUP_DN_TEMPLATE MTA 選項指定。此選項的預設值為:ldap:///$A?mail?sub?(mail=*)

$A 指定 uniqueMember DN 的插入點。

mgrpRFC822MailMember

LDAP_GROUP_RFC822

此清單成員的郵件位址。

rfc822MailMember

LDAP_GROUP_RFC822

rfc822MailMember 被支援,以確保向後相容性。在給定的任何群組中都可使用 rfc822MailMember 或 mgrpRFC822MailMember,但不可同時使用。

mgrpErrorsTo

LDAP_ERRORS_TO

設定訊息封創建者 (MAIL FROM) 位址為該屬性指定的任何內容。

mgrpAddHeader

LDAP_ADD_HEADER

調整在屬性中指定的標頭為修整 ADD 選項的標頭。

mgrpRemoveHeader

LDAP_REMOVE_HEADER

調整指定的標頭為修整 MAXLINES=-1 選項的標頭。

mgrpMsgPrefixText

LDAP_PREFIX_TEXT

如果有指定的文字,將其加至郵件文字的開頭。

mgrpMsgSuffixText

LDAP_SUFFIX_TEXT

如果有指定的文字,將其加至郵件文字的結尾。

在群組延伸作為 SMTP EXPN 指令的一部分這種特殊情況下,會檢查最後一個屬性:mgmanMemberVisibility 或可延伸屬性。LDAP_EXPANDABLE MTA 選項可用於選取要檢查的不同屬性。可能的值為:anyone (表示任何人都可以延伸該群組)、all 或 true (表示在允許延伸之前使用者需要透過 SASL 成功認證) 以及 none (表示不允許延伸)。無法識別的值會被解譯為 none。如果該屬性不存在,EXPANDABLE_DEFAULT MTA 選項控制是否允許延伸。

別名項目的快取方式與網域項目類似。控制別名快取記憶體的 MTA 選項為 ALIAS_ENTRY_CACHE_SIZE (預設為 1000 個項目) 和 ALIAS_ENTRY_CACHE_TIMEOUT (預設為 600 秒)。給定別名的整個 LDAP 傳回值會保留在快取記憶體中。

別名項目的負數快取由 ALIAS_ENTRY_CACHE_NEGATIVE MTA 選項來控制。非零值會啟用遇到故障的別名快取。零值則會停用它。依預設,停用別名項目的負數快取。其原理是,無效位址的重複規格在實際中不太可能經常發生。此外,負數快取可能會干擾新增至目錄的新使用者的及時識別。但是,站點應該考量在大量使用虛名網域的情況下重新啟用別名的負數快取。在 ALIAS_URL0 中指定的 URL 所執行的搜尋不大可能會成功。


位址反向

使用直接 LDAP 的位址反向從 USE_REVERSE_DATABASE 的值為 4 (停用任何反向資料庫) 開始。然後,在先前論述的路由工具上建立。尤其是在舊版中,它用以下形式的反向 URL 規格開頭:

REVERSE_URL=ldap:///$V?mail?sub?$Q

$V 圖元字元已在別名 URL 環境中描述。但 $Q 圖元字元,雖然在功能上與別名 URL 中使用的 $R 圖元字元十分類似,但它專門用在位址反向中。與 $R 不同,$Q 會產生一個過濾器,用於搜尋包含位址反向備選位址的屬性。要搜尋的屬性清單來自 MTA 選項 LDAP_MAIL_REVERSES。如果未設定此選項,則會檢查 local.imta.schematag configutil 參數,並根據其值選擇一組適當的預設屬性。

表格 7-10 顯示 local.imta.schematag 的值和選擇的預設屬性。

表格 7-10  local.imta.schematag 的值和屬性

綱目標記值

屬性

sims40

mail,rfc822mailalias

nms41

mail,mailAlternateAddress

ims50

mail,mailAlternateAddress

但是,不再適合使用 $Q。為使郵件捕獲和其他工具正常運作,已增強位址反向功能,除了關注存在相符項目這個事實之外,還關注相符的屬性。這意味著應使用 $R 而非 $Q 來指定過濾器。此外,已新增 $N 圖元字元,它會傳回與位址反向相關的屬性清單。選項值結果為:

REVERSE_URL=ldap:///$V?$N?sub?$R

local.imta.schematag 通常可以是一個以逗號分隔的清單。如果支援多個綱目,則可使用屬性的組合清單 (重複屬性要排除)。

此外,過濾器不僅搜尋最初提供的位址,還搜尋具有同一本地部分但網域實際在網域樹中找到的位址 (在步驟 2 中儲存)。網域樹查找的反覆性意味著這兩個位址可以不同。

例如,假定網域 siroe.com 顯示在網域樹中,並且 MTA 查看位址:

u@host1.siroe.com

由 $R 的延伸和 ims50 schematag 所產生的過濾器將如下所示:

(|(|(mail=u@siroe.com)(mail=u@host1.siroe.com))
      (|(mailAlternateAddress=u@siroe.com)
       (mailAlternateAddress=u@host1.siroe.com)))

請注意,反向 URL 明確地指定包含標準化位址的屬性。通常為 mail 屬性。

建構 URL 之後,會執行 LDAP 搜尋。如果搜尋成功,則傳回的第一個屬性值會取代原始位址。如果搜尋失敗或發生錯誤,則保留原始位址不變。

由於執行位址反向作業的頻率,尤其是可以顯示在郵件標頭中的給定位址數量以及相關目錄查詢的耗用,正面結果和負面結果均需要快取。這項作業透過記憶體中開放式鏈接的動態延伸雜湊表來實施。快取記憶體的最大容量由 REVERSE_ADDRESS_CACHE_SIZE MTA 選項來設定 (預設 100000),而快取記憶體中項目的逾時由 REVERSE_ADDRESS_CACHE_TIMEOUT MTA 選項來設定 (預設 600 秒)。快取記憶體實際上儲存位址本身,而非 LDAP URL 和 LDAP 結果。


非同步 LDAP 作業

非同步查找無需在記憶體中儲存整個大型 LDAP 結果,從而避免在某些情況下導致效能問題。MTA 能夠執行由 MTA 非同步完成的各類查找。

非同步 LDAP 查找的使用由 MTA 選項 LDAP_USE_ASYNC 來控制。該選項是位元編碼的值。每個位元 (如果設定) 都會啟用非同步 LDAP 查找以及 MTA 中 LDAP 的特定用法。

表格 7-11 顯示 option.dat 檔案中 LDAP_USE_ASYNC MTA 選項的位元和值設定。

表格 7-11  LDAP_USE_ASYNC MTA 選項的設定  

位元

值

LDAP 的特定用法

0

1

LDAP_GROUP_URL1 (mgrpDeliverTo) URL

1

2

LDAP_GROUP_URL2 (memberURL) URL

2

4

LDAP_GROUP_DN (UniqueMember) DN

3

8

auth_list、moderator_list、sasl_auth_list 以及 sasl_moderator_list 非定位清單參數 URL

4

16

cant_list、sasl_cant_list 非定位清單參數 URL

5

32

originator_reply 非定位清單參數 URL

6

64

deferred_list、direct_list、hold_list、nohold_list 非定位清單參數 URL

7

128

username_auth_list、username_moderator_list、username_cant_list 非定位清單參數 URL

8

256

別名檔案清單 URL

9

512

別名資料庫清單 URL

10

1024

LDAP_CANT_URL (mgrpDisallowedBroadcaster) 外層 URL

11

2048

LDAP_CANT_URL 內層 URL

12

4096

LDAP_AUTH_URL (mgrpAllowedBroadcaster) 外層 URL

13

8192

LDAP_AUTH_URL 內層 URL

14

16384

LDAP_MODERATOR_URL (mgrpModerator) URL

LDAP_USE_ASYNC MTA 選項的預設值為 0,這意味著依預設停用非同步 LDAP 查找。


設定摘要

為啟用直接 LDAP,需要設定以下 MTA 選項:

ALIAS_MAGIC=8764
ALIAS_URL0=ldap:///$V?*?sub?$R
USE_REVERSE_DATABASE=4
USE_DOMAIN_DATABASE=0
REVERSE_URL=ldap:///$V?mail?sub?$Q

如果要支援虛名網域,必須設定以下附加選項:

DOMAIN_MATCH_URL=ldap:///$B?msgVanityDomain?sub?(msgVanityDomain=$D)
ALIAS_URL1=ldap:///$B?*?sub?(&(msgVanityDomain=$D)$R)
ALIAS_URL2=ldap:///$1V?*?sub?(mailAlternateAddress=@$D)

請注意,最後一個選項還會處理託管網域以及虛名網域中萬用字元形式的本地部分之大小寫。如果需要支援萬用字元形式的本地部分,但不需要支援虛名網域,則應使用以下選項:

ALIAS_URL1=ldap:///$V?*?sub?&(mailAlternateAddress=@$D)

需要從 MTA 配置檔案 (imta.cnf) 內的 ims-ms 通道定義中移除 filter ssrd:$A 子句。



上一個      目錄      索引      下一個     


Copyright 2003 Sun Microsystems, Inc.。版權所有。