前言
POSTFIX是一個性能卓越的MTA,擁有非常高的穩定性及安全性。在一台普通的機器上擁有足夠帶寬的前提下每天可以處理超過四百萬封郵件。作為一個MTA,POSTFIX被設計為代替Sendmail的一個軟件。關於POSTFIX的更多信息可以參見其官方網站:http://www.postfix.org。
POSTFIX一般情況下與CYRUS-IMAP相配合,由於CYRUS-IMAP及相關的附加模塊配置起來非常復雜,所以POSTFIX+CYRUS-IMAP並不一定適合於初學者使用!
由於此手冊未經實際驗證,所以請不要轉載以免誤導最終用戶!
本手冊只在www.Linuxaid.com.cn發表,大家有關於此手冊的任何問題請至LinuxAid.com.cn技術支持論壇的《郵件服務器》版面討論,LinuxAid的技術支持工程師會根據討論的結果繼續完善此手冊。
一、編譯源碼
1、基本概念
POSTFIX只是一個MTA,也就是一個SMTP服務器。它本身只提供SMTP服務,如果你需要POP3或IMAP服務,則需要通過安裝類似於CYRUS這樣的IMAP服務器與其配合從而實現一個完整的系統。
由於POSTFIX只是一個MTA,它只負責郵件的轉發以及本地的分發,用戶管理工作由MDA負責,所以在理解上要注意。
POSTFIX的SMTP驗證需要通過SASL庫才可以實現,SASL庫則通過一個稱為PWCHECK的服務向POSTFIX提供驗證的渠道。
PWCHECK會在/var/pwcheck中創建一個UNIX SOCKET文件,供客戶端進行訪問。
除了CYRUS-IMAP外,所有需要通過SASL進行驗證的客戶端軟件(POSTFIX,等)都需要在SASL庫的SASL目錄下創建其進程所對應的配置文件,如POSTFIX的文件名為smtpd.conf。並在其中指定驗證方式。
POSTFIX通過LMTP或PIPE與CYRUS-IMAP溝通,將發往本地的郵件直接通過LMTP或PIPE轉給CYRUS-IMAP處理。
POSTFIX可以與mysql結合將別名(Alias)存放於數據庫中。
缺省情況下POSTFIX和CYRUS-IMAP都使用系統賬號作為缺省的用戶數據庫。如果要使用數據庫做為用戶賬號數據庫則需要對源碼進行修改,我們這裡不進行介紹。
POSTFIX與CYRUS-IMAP結合並使用系統賬號作為郵件賬號只適用於不超過兩千個賬號的系統,當使用數據庫(MySQL)作為用戶賬號存儲媒介時只適用於不超過十萬個郵件賬號的系統。
基本概念大約就是這麼多,希望大家都可以理解POSTFIX和CYRUS-IMAP這一對組合到底可以做些什麼,以及有什麼限制。
2、先期准備
我們假設系統所有的東西都將安裝在:/usr/local/servers中,之所以要安裝在這個目錄裡面而不使用缺省的安裝路徑,是為了方便大家在想要刪除POSTFIX及其相關的支持文件時,可以直接通過rm對應的目錄即可刪除,而不需要手工去查找哪些文件需要刪除(這特別適用於新入門的用戶)。
相關的路徑信息:
POSTFIX源碼目錄:/usr/local/servers/packages/postfix
POSTFIX安裝目錄:/usr/local/servers/postfix
CYRUS-IMAP源碼目錄:/usr/local/servers/packages/cyrus
CYRUS-IMAP安裝目錄:/usr/local/servers/cyrus
CYRUS-SASL源碼目錄:/usr/local/servers/packages/sasl
CYRUS-SASL安裝目錄:/usr/local/servers/library/sasl
在安裝前我們需要先准備好所需要的目錄,按照以下的步驟進行(#號後面的是注釋,執行時不要輸入):
useradd postfix #為POSTFIX添加一個系統賬號
useradd cyrus -g mail #為cyrus添加一個系統賬號,並將其所屬的組設置為mail
passwd cyrus #設置cyrus的密碼,注意此密碼將用於管理用戶賬號。
usermod daemon -g group #將daemon系統賬號所屬的組設置為mail,因為POSTFIX在做為DAEMON支持時需要用到這個用戶
mkdir /var/pwcheck #為PWCHECK,用戶身份驗證服務創建目錄
chown cyrus.mail /var/pwcheck #將這個目錄的所有者設置為cyrus和mail組
3、為支持SMTP驗證准備好庫文件
POSTFIX的SMTP驗證需要SASL庫的支持,為此我們需要在安裝POSTFIX源碼前先行安裝SASL庫文件,步驟如下:
mkdir /usr/local/servers/packages/sasl
cd /usr/local/servers/packages/sasl
wget FTP://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-1.5.24.tar.gz
tar zxf cyrus-sasl-1.5.24.tar.gz
cd cyrus-sasl-1.5.24
./configure --prefix=/usr/local/servers/library/sasl --enable-plain=yes --enable-login=yes --enable-cram=no --enable-digest=no --with-pwcheck=/var/pwcheck
make
make install
ln -s /usr/local/servers/library/sasl /usr/lib/sasl
修改/etc/ld.so.conf,添加:
/usr/local/servers/library/sasl/lib
/usr/local/servers/library/sasl/lib/sasl
存盤退出,運行:
ldconfig
運行:
/usr/local/servers/library/sasl/sbin/saslpasswd -c admin
輸入兩次密碼,這個程序會在/etc生成一個sasldb文件。對於當前版本的SASL,這個文件是必須的(雖然它在PWCHECK驗證方式下沒有任何作用)。
chmod o+r /etc/sasldb #讓所有用戶都可以訪問,否則POSTFIX在驗證的時候怎麼樣都通不過:)。
echo "pwcheck_method: pwcheck" > /usr/lib/sasl/smtpd.conf #創建SMTP驗證文件
至此SASL庫已經成功安裝。
4、安裝POSTFIX源碼
安裝前我們需要先下載域名,可以從POSTFIX的網站上找到相關的鏈接,這裡我們使用國內的鏡像:
ftp://postfix.cn99.com/pub/postfix/index.Html
從這個地址可以下載到最新版本的POSTFIX,我們這裡使用
ftp://postfix.cn99.com/pub/postfix/official/postfix-20010228-pl06.tar.gz
按照以下的步驟創建我們的安裝目錄:
mkdir /usr/local/servers/packages/postfix -p
cd /usr/local/servers/packages/postfix
wget ftp://postfix.cn99.com/pub/postfix/official/postfix-20010228-pl06.tar.gz
tar zxf postfix-20010228-pl06.tar.gz
cd postfix-20010228-pl06
到這裡我們已經成功的把源碼解開了,並使用CD命令進入了POSTFIX的源碼目錄。接下來需要根據我們的需要進行配置。
make -f Makefile.init makefiles 'CCARGS-DUSE_SASL_AUTH -I/usr/local/servers/library/sasl/include' 'AUXLIBS=-L/usr/local/servers/library/sasl/lib -lsasl'
make
sh INSTALL.sh
按照以下的提示輸入相關的路徑([]號中的是缺省值,]號後的是輸入值)
install_root: [/] /
tempdir: [/usr/local/servers/packages/postfix/postfix-20010228-pl06] /tmp
config_Directory: [/etc/postfix] /etc/postfix
daemon_directory: [/usr/libexec/postfix] /usr/local/servers/postfix/libexec
command_directory: [/usr/sbin] /usr/local/servers/postfix/sbin
queue_directory: [/var/spool/postfix] /var/spool/postfix
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid: [no]
manpages: [/usr/local/man] /usr/local/servers/postfix/man
完成以後POSTFIX的安裝程序會自動把POSTFIX安裝至所提供的目錄。
5、安裝CYRUS-IMAP源碼
從以下地址得到CYRUS-IMAP的源碼:
ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.0.16.tar.gz
按照以下的步驟創建安裝目錄:
mkdir /usr/local/servers/packages/cyrus -p
cd /usr/local/servers/packages/cyrus
wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.0.16.tar.gz
tar zxf cyrus-imapd-2.0.16.tar.gz
cd cyrus-imapd-2.0.16
然後使用以下命令配置源碼:
./configure --prefix=/usr/local/servers/cyrus --with-cyrus-prefix=/usr/local/servers/cyrus --with-sasl=/usr/local/servers/library/sasl
make
make install
完成之後Cyrus會安裝在/usr/local/servers/cyrus中。
接下來我們要創建CYRUS運行時所必須的幾個目錄:
mkdir /var/imap/sieve -p
mkdir /var/spool/imap
chown cyrus.mail /var/imap -R
chown cyrus.mail /var/spool/imap -R
二、系統配置
配置工作主要有兩部分,一是配置SMTP服務器也就是POSTFIX,二是配置IMAP服務器也就是CYRUS-IMAP。我們一步一步來,先配置CYRUS-IMAP。
1、配置CYRUS-IMAP服務器
CYRUS-IMAP服務器的配置文件主要有兩個cyrus.conf和imapd.conf
創建/etc/cyrus.conf,內容如下:
START {
mboxlist cmd="ctl_mboxlist -r"
deliver cmd="ctl_deliver -r"
}
SERVICES {
1、配置CYRUS-IMAP服務器
CYRUS-IMAP服務器的配置文件主要有兩個cyrus.conf和imapd.conf
創建/etc/cyrus.conf,內容如下:
START {
mboxlist cmd="ctl_mboxlist -r"
deliver cmd="ctl_deliver -r"
}
SERVICES {