會用 Mail2000 的大單位通常會把帳號做分組,從 LDAP 的角度看就是用 Organization Unit (ou) 分類。有些人可能身兼數職要角,所以有一堆 alias 的帳號,如果 RADIUS 從較上層的 Base DN 往下掃,同一個 uid 也許會掃到兩筆以上的結果,從 debug mode 來看可能有以下訊息:
rlm_ldap: got ambiguous search result (X results)
Login incorrect (rlm_ldap: User not found)
而得出 Access-Reject 的結果。
因此,為了排除帳號的歧義問題,對 LDAP 的 filter 須增加條件來過濾。目前看起來排除 alias 之後留下來的帳號,會有 objMail2000 與 pilotPerson 兩種 objectclass。Filter 的寫法如下:
/etc/raddb/modules/ldap:
filter = "(&(objectclass=objMail2000)(uid=%{%{Stripped-User-Name}:-%{User-Name}}))"
照目前網際漫遊的慣例,大都用 E-Mail 位址當作帳號,所以可拿 objectclass=objMail2000 當條件,應該能確保找到唯一的 uid…
目前正使用mail200與ldap配合freeradius2建置網路漫遊作業,但freeradius2與ldap一直無法整合,可否請你提供設定範本,謝謝你