2014年12月14日 星期日

CentOS 6.5 -LDAP 整合驗證 Postfix + Dovecot

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

 

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

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

 

 

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



 

設定 PAM 整合 LDAP 登入

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

pam
pam-devel
pam_ldap
nss-pam-ldapd

 

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

✔ Use LDAP
✔ Use MD5 Passwords
✔ Use Shadow Passwords
✔ Use LDAP Authentication
2014-12-14_064010

 

 

setp.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

 

setp.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

 

 

 

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

passwd: ldap files
shadow: ldap files
group: files

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

 

setp.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 權限。

 

 

setp.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 之後已經很完善了,也有範例的設定檔

setp.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

 

setp.2 確認 auth-system.conf.ext 採用 pam 驗證無誤
passdb { 
driver = pam
}

userdb {
driver = passwd
}

 

setp.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

 

setp.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

 

 

setp.4 restart dovecot

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

 

Orignal From: CentOS 6.5 -LDAP 整合驗證 Postfix + Dovecot

沒有留言:

張貼留言