歡迎您光臨本站 註冊首頁

vpopmail 管理員手冊

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

vpopmail 管理員手冊

vpopmail 管理員手冊

原作者:Ken Jones
原文鏈接:http://inter7.com/vpopmail/vpopmail.html
英文版權所有:http://inter7.com



譯者:黃麗紅
聯繫地址:kinki@freebsdchina.org
中文版權所有:freebsdchina.org (如要轉載請保留版權聲明)

快速安裝指南
快速安裝vpopmail
解開vpopmail 分發包
添加vchkpw 組
添加vpopmail 用戶,並指定為vchkpw組
./configure
make
make install-strip

現在可以添加虛擬郵件域和虛擬郵件域用戶。使用vadddomain 和 vadduser.。還須要修改你的pop 伺服器的啟動參數以使用vchkpw 程序來認證用戶。

.設置所有的郵件用戶成為虛擬郵件域的用戶
我們推薦所有的郵件域都設置為虛擬郵件域。
配置選項
常用選項
(1)--enable-roaming-users=n|y Enable or dissable open relay after pop authentication.Default is no
配置這個選項為Yes意味著客戶端的IP地址是添加到一個IP地址列表中,用於允許用戶在他們的pop認證通過以後利用smtp轉發信件。伺服器端有一個cron job :clearopensmtp,會從這個IP 地址列表中清除認證超過3個小時的IP地址。這個選項需要你以tcpserver的方式運行smtp,並且提供-x /etc/tcp.smtp.cdb 參數(或者其它你放置tcp.smtp.cdb文件的路徑)。

(2)--enable-hardquota=#|n Set and Enable hard quota or n for no quota
為每個pop用戶設置磁碟配額的最大值(硬)。默認值為50M。當用戶的磁碟配額的最大值達到以後,所有新的發給用戶的郵件將會被退回,並附上一條信息。這條信息可以被自定義定製。假如你想關掉磁碟配額設置,可以設置這個值為:NOQUOTA,例如 --enable-hardquota=NOQUOTA

(3)--enable-default-domain=name Default domain name, default is null
我們推薦把所有的郵件以虛擬郵件域的方式運行。你可以設置其中一個為預設。如果你只有一個域,那麼把它設置為預設。預設設置的郵件域的用戶可以直接用用戶名進行認證,即不需要使用用戶名%虛擬郵件域的格式。

(4)--enable-ip-alias-domains=y|n enable virutal domain lookup via reverse ip address lookup for virtual domains.
每個域預設都使用基於虛擬郵件域的用戶名。也就是說:用戶必須提供包含所屬的域的名稱的用戶名,例如:用戶名 %虛擬郵件域。這也可以通過設置--enable-default-domain option來覆蓋這個規則。
Vpopmail也支持基於IP地址的虛擬郵件域。假如這個選項打開后,而用戶沒有提供%,那麼就會觸發一個對用戶連接的伺服器的IP地址的反向查詢。如果伺服器的IP地址能解析到一個域名,那麼vpopmail使用那個域名做為郵件域。例如:
IP地址 w.x.y.z反向解析到test.com。用戶設置他們的pop伺服器的IP地址為w.x.y.z 並開始連接。vpopmail接收到這個連接,檢查連接的伺服器端的IP地址。做一個IP地址的反向查詢從而獲得test.com這個域名。用戶發送joe作為他們的pop用戶名,vpopmail使用test.com作為域名。
你可以混合使用基於名稱和基於IP地址的形式的虛擬主機。

(5)--enable-relay-clear-minutes=360 expire time for roaming users after pop authentication.
如果設置了--enable-roamin-users=y 選項,那麼這個選項就設置了clearopensmtp應該保留用戶的IP地址在列表中多長時間。默認值是3小時。


Mysql選項

(1)--enable-mysql=n|y use mysql, default is no
啟用mysql認證方式。
注意:確認編輯vmysql.h以及設置mysql 伺服器名稱或者IP地址,mysql用戶和mysql用戶密碼。這個mysql用戶必須有創建vpopmail資料庫和在此資料庫里生成表的許可權。

(2)--enable-sqlincdir= Directory where sql include files are.
設置mysql include文件的目錄位置。默認值是設置為/usr/local/mysql。

(3)--enable-sqllibdir=/usr/lib/mysql Directory where sql libs are.
設置mysql libmysqlclient.a文件所在的目錄。默認的會在/usr/lib/mysql中查找。

(4)--enable-sqllibs=mysqlclient libraries for sql linking.
設置連接的庫。默認會是libmysqlclient.a

(5)--enable-large-site=n|y Default is no, tune for large numbers of users per domain
默認的,vpopmail放置所有的域信息在一個vpopmail表中。這是維護很多郵件站點的最有效的方法。假如你在運行一個有大量用戶的站點,你也許會想設置這個選項為YES。假如設置為YES,vpopmail會為每個虛擬域生成一個表。主要的不同在於域名不存儲在資料庫中,因為表名包含了域名。對有500,000+用戶的站點來說,這種設置可以節省非常有價值的硬碟空間。然而,對於有大量的郵件虛擬域的站點來說,這會導致mysql系統性能的降低。

Vpasswd/cdb 選項
(1)--enable-ucspi-dir=dir Directory where the compiled ucspi package is.
設置uspi-tcp包所在目錄。默認設置為../ucspi-tcp-0.84。vpopmail使用在目錄中的headers以及兩個.a文件。

Logging選項
(1)--enable-logging=e|y|n Turn on (y) or off (n) logging to syslog or (e) only log errors
設置日誌紀錄的等級。默認只記錄pop認證錯誤。可以通過設置此選項為no,以關閉所有日誌記錄。也可以通過設置此選項為YES記錄所有的pop認證。

(2)--enable-log-name=vpopmail set syslog name.
覆蓋默認的vpopmail系統日誌名稱。

User/group 選項
(1)--enable-vpopuser=vpopmail user vchkpw was installed as.
假如基於某個原因你希望用一個不同的用戶安裝這個軟體,那麼使用這個選項。

(2)--enable-vpopgroup=vchkpw group vchkpw was installed as.
假如基於某個原因你希望用一個不同的組安裝這個軟體,那麼使用這個選項。

(3)--enable-admin-email=email-address e-mail of system administrator.
覆蓋默認的管理員郵件地址。

Directory and file location 選項
(1)--enable-tcpserver-file=/etc/tcp.smtp File where tcpserver -x relay information is stored.
設置你的tcp. smtp文件名。默認的設置程序在/etc中查找,然後再在/etc/tcprules.d目錄查找。

(2)--enable-qmaildir=dir directory where qmail is installed.
假如在其它的目錄中安裝了qmail,而不是在/var/qmail,那麼使用這個選項。

(3)--enable-tcprules-prog=/usr/local/bin/tcprules where is your tcprules program.
假如在其它的目錄中安裝了tcprules程序,而不是在/usr/local/bin,那麼使用這個選項。

(4)--enable-apop-file=/etc/apop-secrets directory where apop secrerts are stored.
覆蓋默認的apop-secrets文件的位置。

其它選項
(1)--enable-apop=y|n Enable or disable apop authentication.
通過設置這個選項為NO來禁用apop。默認為YES(pop and apop)。

(2)--enable-passwd=y|n Enable or disable /etc/passwd (or shadow) authentication.
覆蓋默認的自動設置。默認的配置程序自動檢測你的系統是否使用passwd 和 shadow passwords。通過設置這個選項為NO,你將禁止所有的/etc/passwd 認證。


Qmail 和 虛擬郵件域

qmail的郵件域有本地的和虛擬的兩種分別。本地的郵件域是使用/etc/passwd 作為驗證文件。而虛擬郵件域則以qmail的控制文檔「virtualdomains」為依據。vpopmail使用qmail用戶/認證文檔和虛擬域文檔。其中用戶/認證會合併到一個user/cdb資料庫內。user/cdb是一個hash資料庫,用以加快匹配項的查詢。如果一個項匹配到,那麼qmail的發送程序將會投遞郵件到在文件中定義的目錄中去,並且使用預定義好的uid和gid進行投遞操作的身份。Vpopmail使用這個方法來使qmail 投遞程序使用單一的vpopmail用戶和vchkpw組來投遞所有的虛擬域的郵件。同時也使用它來直接投遞郵件到/vpopmail/domains/虛擬郵件域目錄中。

一旦qmail-local程序從users/assign獲得信息,他會執行在目錄中的標準的.qmail文件。一般來說,.qmail-文件可以用於轉發,別名或者調用程序,例如ezmlm。如果沒有匹配的項目,則qmail-local會查找一個.qmail-default文件。這是qmail-locals發送機制的最後一步。這個程序使用兩個參數,第一個並不使用(只是為了向後兼容)。第二個參數是指定了如果一個虛擬域的用戶找不到的情況下,那麼該郵件默認發送到的地址。原則上,第二個參數可以是郵件應該投遞到的目錄,或者一個用於轉發過去的郵件地址,或者字元串 「郵箱不存在」,和郵件一起退回給發送方。

一旦vdelivermail起來后,它就會使用核心的vpopmail api 來檢查一個虛擬域用戶。如果用戶退出了,郵件將被投遞到他的目錄。如果vpopmail有hard quotas(默認是50M的磁碟配額),然後,用戶的maildir/new郵件文件和Maildir/cur目錄都會被計算。如果用戶的磁碟配額使用完,郵件會被配回給發送方,並附上一個可以自定義的消息。如果新的郵件只有1K位元組或者更小,那麼不管配額是否使用完,仍會被投遞而不受磁碟配額的限制。所以系統管理程序一直能夠給用戶發送消息。

轉化現有用戶帳戶
轉化程序可以把郵件賬戶從一種格式轉化成另一種格式。轉化程序可以在/etc/passwd,vpasswd文件、mysql(小規模)和mysql(大規模)之間轉化。
現在大多數的vpopmail用戶也許比較感興趣怎樣轉化現有的域到mysql格式的域。轉化整個機器的用戶到mysql格式,使用以下命令:vconvert -c -s 。這將會檢查~vpopmail/domains目錄下的所有域,並讀取每一個vpasswd 文件並且載入獲得的內容到mysql的vpopmail . vpopmail表中。而vpasswd文件基於安全的原因保持不改變。Vconvert也可以同時處理多個一個或多個域。這個可以通過運行一下命令: vconvert c s domain1 domain2 ...來實現。

要轉化所有用戶(除root 和系統帳戶)為mysql域格式的用戶,可以運行一下命令:vconvert -e -s domain。這將會讀取所有的/etc/passwd賬號並用他們的密碼生成mysql中的項。原來的密碼既可以在/etc/passwd或者/etc/shadow。這些密碼需要和vchkpw 認證程序一起工作。

Security and pop server under tcpserver
加入所有的pop郵件帳戶都在虛擬域中,你通過使用tcpserver -u and -g options來指定使用vpopmail/vchkpw用戶和組來運行pop伺服器,以增加你的pop伺服器的安全性。

命令集
Quota』s
Bouncing mail
Directory structure
Overall vpopmail directory structure
Vpopmail 擁有自己的主目錄。在這個目錄下有下列內容:

bin -包含所有二進位程序
lib -包含libvpopmail . a文件
include -包含C 程序的頭文件
users -為了向後兼容那些在域內既有/etc/passwd也有vpopmail的用戶的域
domains -保存所有的虛擬郵件域的目錄

Virtual domain user directory structure
vpopmail使用一種基於一個「. dir-control」的狀態文件的適應性的目錄結構,而這個狀態文件是自動由vpopmail的api程序「vadduser」和「vdeluser」進行管理的。對於100或者更少用戶的站點,所有的用戶目錄都存儲在虛擬域目錄中。對於多於100用戶的站點,這個適應性的目錄結構特性就開始發揮作用。基本的思路是分拆用戶的Maildir目錄到多個目錄和子目錄中,以保證在單一的目錄中永遠不會多於100個用戶目錄。
假如你將要存儲大量的用戶目錄,請確認你設置了你的文件系統有一個比常規的文件系統更高的inodes。
Vpopmail會根據需要自動創建這些目錄和子目錄,而且通常每個目錄最多設置100個用戶。當一個目錄達到了100個用戶,它將會創建另外的目錄或者子目錄,同時存儲新的用戶到那新創建的目錄中去。

在源文件目錄的contrib子目錄中有一個重新組織目錄的程序。

Internationalization

有兩種信息會插入到郵件中。兩種信息都是針對需要退回的郵件。第一種是沒有這個用戶而第二種是用戶空間使用已經超過設定的配額。站點管理員可以通過在虛擬郵件域目錄里創建一個. over-quota.msg 和 . no-user.msg文件來自定義這些信息,如果在虛擬郵件域目錄中沒有找到一個. over-quota.msg或者 . no-user.msg文件,那麼程序將會在主要的虛擬郵件域目錄中查找他們。假如在那裡沒有找到他們,那麼默認的信息會被包含到退回的郵件內。

dot-qmail processing
所有的虛擬郵件域在~vpopmail/domains下擁有自己的目錄。Qmail的 user/assign文件有每一個域的入口,並且把qmail-local投遞程序指向這個目錄。因此,所有的普通的 . qmail文件在每個虛擬域內工作。 .qmail文件只需要用戶名來工作,譬如,對於.qmail文件運行,. qmail-joe 對應用戶joe.Ezmlm使用,所以它可以運行在vpopmail下。

如果沒有用戶匹配到一個.qmail 文件,那麼 .qmail-default文件將被使用。這個文件包含vdelivermail程序。這個程序讀資料庫中的認證信息(mysql 或者 vpasswd.cdb)然後把郵件投遞到這個用戶的目錄。vdelibermal程序的最後一個參數可以是一個vpopmail /vchkpw擁有的郵件目錄,所以所有的默認的郵件接收都在那裡結束。或者,這個參數也可以是一個郵件地址,那麼所有的默認的郵件將會轉發到這個地址。最後,vdelivermail的這個最後面的參數可以是郵箱不存在的信息,這將會把所有沒有找到匹配用戶的郵件退會給發送者。

qmailadmin
qmailadmin提供一個web界面來管理vpopmail郵件域。從版本0.26開始,qmailadmin使用vpopmail的api。這意味著它可以管理mysql或者vpasswd.cdb認證。它允許增加pop用戶,管理轉發和別名,ezmlm郵件列表和自動回復。

sqwebmail
sqwebmail是一個web界面的郵件客戶端。它直接讀寫用戶的郵件目錄。它可以和vpopmail vpasswd文件配合工作。我們有一個0.24版本的修訂版 在 http://www.inter7.com/vpopmail上,它使用的是vpopmail的api。同時,它也支持設置用戶的密碼和允許用戶轉發他們的郵件。希望這些改變會集成到標準的發行版本中。

courier-imap
courier-imap是一個支持Maildirs 格式的IMAP伺服器。它的最近的發行版本支持vpopmail的vpasswd文件。我們將會集成vpopmail的api到主要的發行版本中去。

mysql authentication

cdb authentication


vpopmail API
從版本3.4.10開始,vpopmail建立了一個libvpopmail.a庫,在~vpopmail/lib/下。連接這個庫到你的應用程序將提供到下面的C函數的方法。相關的 header文件在~vpopmail/include下。

int vadddomain(char *domain)

domain=the new virtual domain
# 新的虛擬郵件域;

int vdeldomain(char *domain)

domain=virtual domain to delete
#刪除的虛擬郵件域;

int vadduser(char *user,char *domain ,char *password , int apop)
user=new user name
#新建的用戶名;
domain=virtual domain
#新建用戶的虛擬郵件域
password=clear text password
#明文密碼
apop=0 for pop and 1 for apop
#數字0 指定pop , 1 指定apop
int vdeluser(char *user, char *domain)

user=user to delete
#刪除的用戶
domain=virtual domain
#刪除用戶的虛擬郵件域

int vpasswd(char *user, char *domain, char *password)
user=user to change password for
#需要修改密碼的用戶名
domain=virtual domain
#修改密碼用戶所在的虛擬郵件域
password=clear text password
#明文密碼

int vsetuserquota(char *user, char *domain, char *quota)
user=user name to change quota for
#修改用戶磁碟配額的用戶名
domain=virtual domain
#需要修改磁碟配額的用戶所在虛擬郵件域
char=quota in bytes. M/m and K/k abbrieviations apply. 5M 5m and 500000 all equal 5 million bytes hard quota

#位元組為單位的磁碟配額,5M 5m 以及500000全部等同於5百萬位元組的硬配額
vpopmail authentication API

int vauth_addomain(char *domain)
domain=domain name to add to authentication system
#添加到認證系統的域名

int vauth_deldomain(char *domain)
domain=domain name to delete from authentication system
#從認證系統刪除的域名

int vauth_adduser(char *user, char *domain, char *crypted_password, char *dir, int apop)
user=user to add from authentication system
#增加到認證系統的用戶
domain=domain name
#域名
crypted_password=encrypted password
#加密密碼
dir=full path to directory where users Maildir is stored
#Maildir存儲的全路徑
apop=0 for POP and 1 for APOP
#數字0指定POP ,1 指定 APOP
int vauth_deluser(char *user, char *domain)
user=user to delete from authentication system
#從認證系統刪除的用戶名
domain=domain name
#域名

int vauth_password(char *user, char *domain, char *crypted_password)
user=user to change password in authentication system
#在認證系統中更改密碼的用戶
domain=domain name
#域名
crypted_password=the encrypted password
#加密密碼

int vauth_setquota(char *user, char *domain, char *quota)
user=user to set quota for in authentication system
#在認證系統中設置配額的用戶
domain=domain name
#域名
quota=空間配額,位元組,或者使用 M/m K/k 衡量。5M=5m=5000000

struct *passwd vauth_getpw(char *user, char *domain)
user=user name to retrieve password entry from authentication system
#需要從認證系統中重新獲得密碼的用戶名
domain=domain name
#域名

int vauth_setpw(struct *passwd, char *domain)
passwd=pointer to a passwd structure to store in authentication system .
#指向一個密碼結構來存儲在認證系統
domain=domain name for this passwd structure
#這個密碼結構的域名

struct *vauth_user(char *user, char *domain, char *password, char *apop)
user=user name to authenticate
#認證的用戶名
domain=domain name
#域名
password=clear text password
#明文密碼
apop=not used in version 3.4.10
#apop不在3.4.10版本中使用

struct *vauth_getall(char *domain, int first, int sort_it)
domain=domain name to retrieve password structure from authentication system
#需要從認證系統中重新獲得密碼結構的域名
first=1 to get first record, 0 = get next record
#數字1指定提取第一個紀錄,0指定提取下一個記錄

sort_it=1 to have the user list sorted alphabetically . This has no effect on vpasswd/cdb
method, since all users are added alphabetically. With mysql it adds an order by pw_name to
the query.
#數字1指定按照字母順序排列用戶列表。由於所有的用戶是按照字母順序添加的,所以,這個對vpasswd/cdb無效。
而mysql增加的順序由pw_name決定。
《解決方案》

vpopmail 管理員手冊

呵呵,有人翻譯了,加精留給大家看吧。
《解決方案》

vpopmail 管理員手冊

不錯,建議加精阿,可以讓更多的人來參考阿!!
《解決方案》

vpopmail 管理員手冊

不錯
《解決方案》

vpopmail 管理員手冊

辛苦了,確實是好東東! :)
《解決方案》

樓主,沒有個電子文檔嗎?
我想要,:wink:
《解決方案》

的確是個好東西!

[火星人 ] vpopmail 管理員手冊已經有571次圍觀

http://coctec.com/docs/service/show-post-25862.html