ldap+qmail+postaci安裝和使用者管理(轉)

subid發表於2007-08-15
ldap+qmail+postaci安裝和使用者管理(轉)[@more@]ldap+qmail+postaci安裝,使用者管理

參考文獻:
1.(作者:謝順華)。目前唯一能找到的中文qmail+ldap資料

2.
基於php的webmail系統, 支援pop3, imap, 使用資料庫做快取. 相對於imp和sqwebmail來說, 配置相當容易, 而且介面很好.

3.
For Qmail的php版使用者管理, 可以設定使用者資料, 別名, maillist, 公司組織...

4.
win32的ldap檢視修改工具

5.

6.


說明:
考慮到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"
#管理員密碼(這裡用的是明文密碼)
rootpw secret
#加入基本資料:
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了.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10796304/viewspace-959949/,如需轉載,請註明出處,否則將追究法律責任。

相關文章