ldap+qmail+postaci安裝, 用戶管理
參考文獻: 1. 建一個大容量的webmail系統(作者:謝順華) 目前唯一能找到的中文qmail+ldap資料 http://www.linuxforum.net/doc/webmail.html 2. Postaci Webmail 基于php的webmail系統, 支持pop3, imap, 使用數據庫做緩存. 相對于imp和sqwebmail來說, 配置相當容易, 而且界面很好. (http://www.trlinux.com/) 3. Simple ldap user admin tool For Qmail的php版用戶管理, 可以設置用戶資料, 別名, maillist, 公司組織... http://sourceforge.net/projects/alldap/ 4. Softerra LDAP Browser win32的ldap查看修改工具 http://www.ldapbrowser.com 5. Life With qmail-ldap http://www.lifewithqmail.org/ldap/ 6. Life With qmail http://www.lifewithqmail.org/
說明: 考慮到qmail使用系統用戶在管理上不大方便. 而使用mysql作為用戶又會和mysql用戶沖突, 而且mysql的局限性很大, 沒有ldap的open和自由擴展特性. 使用ldap后, 利用php的ldap函數就可以實現用戶管理, 用戶可方便的自行編程解決用戶管理. 因為不是虛擬主機, 所以選用了配置簡單, 好用的Postaci和Simple ldap user admin tool. 適合單一團體/公司使用.
安裝:
1. openldap請參考文獻1的步驟1.在/etc/openldap目錄下是openldap的設置, 除了要按參考1中增加qmail的qmailUser類型外, 還要注意修改slapd.conf文件, 關鍵內容如下:
#你的公司名, 最好用站點名 suffix"dc=test, dc=com" #管理員名稱, 類似于系統管理員. 很長, 但是很重要. rootdn"cn=Manager, dc=test, dc=com" #管理員密碼(這里用的是明文密碼) rootpwsecret 加入基本數據: ldapadd -D "cn=Manager,dc=test, dc=com" -W
dn: dc=test, dc=com objectclass: dcObject objectclass: organization o: test Company dc: test
dn: cn=Manager, dc=test, dc=com objectclass: organizationalRole cn: Manager
2. qmail需要加for ldap的補丁, 并且配置pop3, imap, sendmail.請參考文獻1中的步驟2. 其中注意以下事項:
ldap要求qmail使用Maildir格式, 所以, 要修改/var/qmail/rc如下:
exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start "`cat /var/qmail/control/defaultdelivery`" splogger qmail
在/var/qmail/control/defaultdelivery中內容如下:
./Maildir/
/var/qmail/control/ldapuid和ldapgid是ldap用戶資料中的qmailUid/qmailGid的缺省值, 設置后ldap中可不必設置. 注意此處uid和gid必是存放mail目錄的uid/gid, 一般是/mail, 屬性是750, 不可對其它人可寫, 否則出錯. 考慮到要在php中執行管理用戶的操作, 所以這個uid/gid和apache的相同, 可以在apache/conf/httpd.conf中修改. 注意虛擬主機時可能會有安全問題.
用tail -n 30 /var/log/maillog可以查看發送mail的過程記錄, 錯誤會被記錄在內, qmail出錯時會自動回信給發件人, 不加-n 30只會看到自動回信的正確信息!
RedHat7中使用xinetd, 不同于老版的inetd, 配置文件放在/etc/xinetd.d/下, 修改如下:
pop3文件:
#default: off # description: The POP3 service allows remote users to access their mail \ #using an POP3 client such as Netscape Communicator, mutt, \ #or fetchmail. service pop3 { socket_type = stream protocol= tcp wait= no user= root server= /var/qmail/bin/qmail-popup server_args = test.com /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d Maildir only_from = 0.0.0.0 log_type= FILE /var/log/maillog disable = no log_type= FILE /var/log/xinetd.log log_on_success= HOST log_on_failure= HOST RECORD }
smtp文件: # default: off # description: The POP3 service allows remote users to access their mail \ #using an POP3 client such as Netscape Communicator, mutt, \ #or fetchmail. service smtp { socket_type = stream protocol= tcp wait= no user= qmaild server= /var/qmail/bin/tcp-env server_args = -R /var/qmail/bin/qmail-smtpd log_type= FILE /var/log/maillog env = NODNSCHECK="" log_on_success= HOST log_on_failure= HOST RECORD only_from = 0.0.0.0 disable = no } 如果有其它pop3, smtp的服務應該設定其disable項為yes, 以免沖突.
/var/qmail/control/下的控制文件可以參考文獻1的步驟5,一般需要以下文件: ldapbasedn,ldaplogin,ldappassword,ldapuid,ldapgid,ldapserver
3. 安裝php版ldap用戶管理工具.(參考文獻3) 主要配置都在common.inc文件里面, 如果你的php系統沒有對.inc文件處理, 會暴露出系統配置, 建議修改成 common.inc.php, 然后分別修改index.php和format.php的第二行. common.inc.php主要修改如下: 也可以參考postaci的安裝文件:
//剛開始的時候可能問題很多, 建議設置成1, 以便觀察錯誤在哪里. $debug = 0; //這里有些地方可能適合虛擬主機情況, 這里沒用到, 待研究
$root_dn = "dc=test, dc=com"; $exchanges_dn = "".$root_dn; $people_dn = "".$root_dn; $lists_dn = "".$root_dn;
//這里要注意和步驟1中設置一致 $ldap_host = "localhost"; $bind_dn = "cn=Manager, dc=test, dc=com"; $pw = "secret"; $mainTitle = "LDAP user admin";
//這里要和步驟2中設置一致 $qmailuid = 501; $qmailgid = 501; $messageStoreDir = "/mail";
$mailQuota = "10000000000S,100000C"; $generalUser = "steeven";
/* not sure on the relevance of this... */ $mailHost = "test.com";
//你的公司部門, 可增減, 自己漢化吧 :) $org_units = array( "Routed", "Switched", "Colocation", "Networks", "Metro", "Recruitment", "Commercial", "Finance", "IT", "Marketing" );
$acc_status = array( "active", "nopop", "disabled" ); $default_email = "test.com"; $logoImg = "../poweredby.png"; $ver = "0.03";
這個老外寫的管理工具很好用, 可以設置轉發mail, 無限mail別名; 按地域劃分公司組織, 下面又分部門, 每個部門又可以指定郵件, 發給部門的郵件可以指定哪些人來接受. 也可以自定義一些maillist, 管理參加人員. 充分體現了ldap的靈活性. 難怪notes, windows都向ldap靠攏 :)
如果qmail沒有設置成自動創建用戶目錄, 可以在add.php第188行增加如下代碼: if (!is_dir($messageStoreDir."/".$uid[0])){ mkdir($messageStoreDir."/".$uid[0],0770); } if (!is_dir($messageStoreDir."/".$uid[0]."/".$uid)){ mkdir($messageStoreDir."/".$uid[0]."/".$uid,0770); }
在add.php中增加用戶時的LoginId似乎也有點問題, 可直接采用firstName: function create_username() { var first_str = document.user_details.elements[2].value; document.user_details.elements[11].value = first_str.toLowerCase(); }
利用參考文獻4中的LdapBrowser可以看到對LDAP的相關修改, 或者手動修改.
4. 安裝Postaci, webmail(參考文獻2). 這是一個基于php的webmail, 具有比較完善的功能, 而且支持imap, pop3. 需要mysql支持. 用戶可以自行漢化, 文件在lang目錄下. 解壓后修改includes目錄下global.inc文件(有安全顧慮, 參考步驟3), 里面有配置說明. Following doc/INSTALL to install
安裝完成后添加適當用戶, 然后就可以通過becky, outlook, foxmail....等收發郵件. 用瀏覽器打開postaci的安裝目錄就可以通過web收發mail了.
|