CentOS 6.5 -LDAP PAM 整合驗證 Postfix + Dovecot

2014-12-14 CentOS, Postfix

最近在計畫將公司的 Mail Server 換掉並重新規劃,繼上一篇 Postfix SMTP + Dovecot 加密 SSL / TLS 之後,這篇的目的要將 Mail Server 帳號整合於 LDAP。

 

此次的範例用到的服務有 Postfix + Dovecot + OpenLDAP,之後還會增加 Webmail 進來,以及 LAB AD 的驗證。

由於小弟用的是 CentOS 6.5 版的設定或許跟一些網友不同,請自行斟酌

 

 

LDAP 整合的概念是利用 PAM 與 LDAP 溝通取得帳號後再與其他服務進行整合

 

設定 PAM 整合 LDAP 登入

step.1 首先你必須先安裝以下套件才能進行整合

pam
pam-devel
pam_ldap
nss-pam-ldapd

 

step.2 再來進行 LDAP 設定透通,可以使用 authconfig-tui 來輕鬆建立

✔ Use LDAP
✔ Use MD5 Passwords
✔ Use Shadow Passwords
✔ Use LDAP Authentication

2014-12-14_064010

 

 

step.3 輸入你的 LDAP Url & Base DN,並點選 OK

之後你會看到 service nslcd start [OK]

nslcd 即是 nss-pam-ldapd 的服務

2014-12-14_064835

 

如果你不想用 authconfig-tui 的方式進行設定,也可以手動編輯 pam_ldap.conf

shell# vim /etc/pam_ldap.conf


uri ldap://192.168.100.55
base o=xxx
pam_password md5
scope sub      \\ 搜尋 o=xxx 以下的子區域
pam_filter objectclass=posixAccount  \\ search條件,可以減少搜尋的 Loading

 

step.4 確認 pam 的系統驗證有包含 ldap

auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_ldap.so use_first_pass
auth        required      pam_deny.so
 
account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     required      pam_permit.so
 
password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok
password    required      pam_deny.so
 
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

 

 

 

step.5 編輯 nsswitch.conf,修改系統認證優先順序

passwd: ldap files
shadow: ldap files
group: files

※如果 LDAP 也有建立 group 也可加上 ldap

 

step.6 reboot 重開機並使用 LDAP 帳號登入測試。範例使用 eric 這個帳號進行登入

第一次登入因為沒有建立家目錄,所以會提示 No directory 並且起始為 / 根目錄

No directory /home/domain/eric
Logging in with home = "/". 
-bash-2.05b$

在這邊會看到我 LDAP 的家目錄為 /home/domain/eric 而不是 /home/eric,是為了方便管理,不將 domain 使用者與本機使用者混在一起使用。

※一般使用者建議權限都使用 /sbin/nologin,僅有測試或管理者才給予 bash login 權限。

 

 

step.6 幫使用者建立信箱及家目錄

shell# cd /home
shell# mkdir -p domain/eric
shell# chmod 700 domain/eric
shell# mkdir mailspool
shell# rm -rf /var/spool/mail
shell# ln -s /var/spool/mail /home/mailspool
shell# touch mailspool/eric
shell# chown eric.mail mailspool/eric

由於習慣將 home 的目錄切比較大,所以將有成長空間的 /var/spool/mail ln 到 /home/mailspool

 

 

Postfix SMTP 整合 LDAP

檢查 Postfix 是否支援 LDAP 驗證

shell# postconf -m | grep ldap

ldap

 

 

由於 Postfix 的驗證走的是 SASL,SASL 用的就是 PAM 所以 Postfix 不需要進行調整,但還是必須要測試一下。

shell# testsaslauthd -s smtp -u eric -p password
0: OK "Success.

OK Success 代表驗證 LDAP 沒問題。

 

 

Dovecot 整合 LDAP

要讓 Dovecot 支援 LDAP,其實在 2.0.9 之後已經很完善了,也有範例的設定檔

step.1 設定 dovecot 的驗證檔

auth-system.conf.ext 是驗證 pam 用

auth-ldap.conf.ext 是搜尋 ldap 帳號用

shell# vim /etc/dovecot/conf.d/10-auth.conf

!include auth-system.conf.ext
!include auth-ldap.conf.ext
取消註解 auth-ldap.conf.ext

 

step.2 確認 auth-system.conf.ext 採用 pam 驗證無誤

passdb {
  driver = pam
}

userdb {
  driver = passwd
}

 

step.3 確認 auth-ldap.conf.ext

shell# vim /etc/dovecot/conf.d/auth-ldap.conf.ext

passdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf
}

userdb {
  driver = ldap
  args = /etc/dovecot/dovecot-ldap.conf
}

可以看到這邊也 include 了 dovecot-ldap.conf

 

step.4 dovecot-ldap.conf 這隻設定檔必須自行建立,這是讓 dovecot 登入 LDAP 使用的

shell# vim /etc/dovecot/dovecot-ldap.conf

hosts = 192.168.100.55:636
dn = uid=tpldap,ou=server,o=xxx
dnpass = tppassword
base = o=xxx



試試設定檔能否查到 LDAP 的資料
shell# ldapsearch -x -f /etc/dovecot/dovecot-ldap.conf

 

 

step.5 restart dovecot

使用 MUA 測試登入成功,搞定收工!!

 

2 Replies to “CentOS 6.5 -LDAP PAM 整合驗證 Postfix + Dovecot”

  1. […] CentOS 6.5 -LDAP PAM 整合驗證 Postfix + Dovecot […]

  2. haohao表示:

    你好,我想請問下有關於LDAP與POSTFIX整合的部分,請問您這樣的做法對於每個新的LDAP user都需要手動新增家目錄及其maildir嗎?

    謝謝

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱