構建基於qmail的反病毒反垃圾郵件系統

第一部分:前 言

一. 版權信息

本文檔的版權屬於作者姜培軍[peijun.jiang]所有。轉摘時請附帶本信息,並且保證本文檔的完整性!

關於作者:
作 者:Peijun.Jiang 『姜培軍』
郵件地址:peijun.jiang act tom.com
出沒地方:www.chinaunix.net www.cnfug.org www.anti-spam.org.cn
開源UNIX系統愛好者,工組於一家合資軟件開發企業任系統管理員職務,負責Mail、Firewall、FTP、WEB等服務的維護工作。

二.更新記錄

2003年05月14日 初次成稿
2003年06月05日 對安裝設置參數進行合理調整
2003年09月08日 增加了Mail From補丁,加入了批量添加用戶賬號和Wmail
2003年12月01日 加入簡單的DNS設置
2004年01月12日 加入病毒過濾和垃圾郵件過濾

第二部分:安裝前的準備

一.所需軟件

• ucspi-tcp-0.88.tar.gz http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
• cmd5checkpw-0.22.tar.gz http://members.elysium.pl/brush/cmd5checkp...kpw-0.22.tar.gz
• qmail-1.03.tar.gz http://cr.yp.to/software/qmail-1.03.tar.gz
• qmail-smtpd-auth-0.30.tar.gz http://members.elysium.pl/brush/qmail-smtp...uth-0.30.tar.gz
• qmail-1.03.patch http://www.ckdhr.com/ckd/qmail-103.patch
• vpopmail-5.3.16.tar.gz http://www.inter7.com/devel/vpopmail-5.3.16.tar.gz
• autorespond.tar.gz http://www.netmeridian.com/e-huss/autorespond.tar.gz
• ezmlm-0.53.tar.gz http://cr.yp.to/software/ezmlm-0.53.tar.gz
• sqwebmail-3.5.0-CN.tar.gz http://www.cooco.net/files/sqwebmail-3.5.0-CN.tar.gz
• Qmail-smtpd.c http://www.cooco.net/files/qmail-smtpd.c
• Qmail-smtpd.path http://www.cooco.net/files/qmail-smtpd.patch
• mysql-3.23.53.tar.gz http://www.mysql.org/Downloads/MySQL-3.23/...-3.23.53.tar.gz
• wmail-1.00rc1.20030811-quota.tar.gz http://www.cooco.net/files/wmail-1.00rc1.2...11-quota.tar.gz
• qmailadmin-1.0.6.tar.gz http://www.inter7.com/qmailadmin/qmailadmi...in-1.0.6.tar.gz
• 漢化文件 http://www.cooco.net/files/en-us

二.注意事項

• 所有程序下載後放在/down目錄下
• 在安裝FreeBSD時請把/home和/var儘量分的大一些,因爲/home目錄是作爲所有用戶的郵件存放目錄,/var是日誌存放目錄
• 本文檔所有操作都是在root權限下進行的,所以操作時請儘量仔細,不要由於誤操作帶來不必要的麻煩

第三部分:DNS設定

• 我們使用的是我們母公司的DNS服務器,所以我沒有做自己的DNS服務器,只是把相關的A記錄和MX記錄解析到我相關的IP地址上。使用nslooks –q=mx mail.localhost.com命令可以查看到已經綁定到我們公司的IP地址上。

• 注:mail.localhost.com爲我們公司域名,以下相同。

你可以按照以下方法設置自己的DNS服務器:

DNS使用FreeBSD 4.7自帶的8.3.3版本,所有的配置文件默認在/etc/namedb目錄下。我的DNS服務器IP地址爲192.168.80.53,Mail服務器的IP地址爲192.168.80.80。解析一個域名localhost.com作爲我的郵件服務的域名。

一.打開named的啓動開關

#cd /etc
#ee rc.conf //加入一下參數
named_enable="YES"

二. 使用make-localhost來生成反解文件localhost.rev

#cd /etc/namedb
#sh /etc/namedb/make-localhost

三. 設置主配置文件

#mv named.conf named.conf.old
#touch named.conf
#ee named.conf //添加一下內容

options {
directory "/etc/namedb";
datasize 40M;
forward only;
forwarders {
61.134.1.4; //此IP爲我的ISP的DNS地址
};
};

zone "." {
type hint;
file "named.root";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
};
zone "localhost.com"
type master;
file "/etc/namedb/hosts/localhost.com.hosts";
};
zone "80.168.192.in-addr.arpa" {
type master;
file "/etc/namedb/rev/192.168.80.rev";
};

四. 在/etc/namedb目錄下建立hosts目錄,來存放正解配置文件

#mkdir /etc/namedb/hosts
#cp /etc/namedb/localhost.rev /etc/namedb/hosts/locolhost.com.hosts //使用現成的配置文件進行修改一下就行了
#ee /etc/namedb/hosts/localhost.com.hosts //內容如下

$TTL 3600
@ IN SOA dns.localhost.com. root.dns.localhost.com.(
20031231 //Serial號碼
3600 //DNS刷新時間
900 //重試間隔時間
3600000 //到期時間
3600 ) //Minimum
IN NS dns.cnunix.com.cn.
IN MX 10 mail
dns IN A 192.168.80.53
www IN A 192.168.80.80
mail IN A 192.168.80.80
@ IN A 192.168.80.80

五. 在/etc/namedb目錄下建立reb目錄,來存放反解配置文件

#mkdir /etc/namedb/reb
#cp /etc/namedb/localhost.rev /etc/namedb/reb/192.168.80.rev
#ee /etc/namedb/reb/192.168.80.rev //內容如下

$TTL 3600
@ IN SOA dns.localhost.com. root.dns.localhost.com. (
20031231
3600
900
3600000
3600 )
IN NS dns.localhost.com.
53 IN PTR dns.localhost.com.
80 IN PTR www.localhost.com.
80 IN PTR mail.localhost.com.
80 IN PTR localhost.com.

六. 更新根服務器

#cd /etc/namedb
#fetch ftp://ftp.rs.internic.net/domain/named.root

七.修改/etc/resolv.conf

#nameserver 192.168.80.53

八.DNS服務器的日常維護命令

#ndc start //如果提示new pid is NamedID,說明已經成功啓動
#ndc stop //停止named服務
#ndc restart //重新啓動named服務

九. 測試named解析

#nslookups

>www.cnunix.com.cn
>mail.cnunix.com.cn
>dns.cnunix.com.cn

如果能解析到192.168.80.53說明正常了

>sohu.com
>sina.com.cn

如果能解析到域名相應的IP地址上,說明dns對外面的域名解析也正常。

第四部分:基本服務安裝過程

一.安裝webmin
webmin是一個讓你很方便的遠程管理服務器的程序,所有管理工作都是基於Web方式進行的,支持中文等多個國家的語言。我主要使用他進行我的Mysql數據庫和qmail郵件的隊列的管理,我一直使用,很方便也很實用。

#cd /down
#tar zxvf webmin-1.070.tar.gz
#mv webmin-1.070 /usr/local/webmin
#cd /usr/local/webmin
#./setup.sh

根據提示輸入安裝路徑、web訪問端口、設置管理用戶和密碼等,也可以使用默認設置一路回車。

二.Mysql的安裝與設置

1.安裝mysql

本文檔的數據庫是基於二進制包的方式安裝的,作者以前也曾經使用過ports方式的安裝方法,所以本文兩種安裝方法都提供給大家,以供大家選擇。不過作者建議使用二進制包的方式安裝,這樣在安裝mysql的過程中可以根據自己的需要定製參數。

1.1、使用ports安裝

#cd /usr/ports/database/mysql323-server
#make install
#cd work/mysql-3.23.52
#scripts/mysql_install_db
#cp support-files/my-medium.cnf /etc/my.cnf
#/usr/local/bin/safe_mysqld & //啓動mysql服務

1.2、使用二進制代碼安裝

A.建組和用戶

#pw groupadd mysql
#pw useradd mysql –g mysql –s /nonexitent

B.進行編譯

#cd /down
#tar zxvf mysql-3.23.53.tar.gz
#cd mysql-3.23.53
#./configure --prefix=/usr/local/mysql
#make
#make install

2.設置Mysql

2.1、運行腳本、添加目錄

#scripts/mysql_install_db
#mkdir /usr/local/mysql/var

2.2、更改文件和目錄權限

#chown -R root /usr/local/mysql
#chown –R mysql /usr/local/mysql/var
#chgrp –R mysql /usr/local/mysql

2.3、複製mysql的配置文件到/etc目錄下

#cp ./support-files/my-medium.cnf /etc/my.cnf

2.4、添加啓動腳本

#echo "/usr/local/mysql/bin/safe_mysqld --user=mysql –-skip-networking &" >> /etc/rc.local
備註:--skip-networking參數是限制只有本機可以連接mysql,增加mysql的安全性。

2.5、啓動mysql服務

#/usr/local/mysql/bin/sase_mysqld --user=mysql --skip-networking &

2.6、更改root的密碼
#/usr/local/mysql/bin/mysqladmin -u root password '123456'

2.7、拷貝mysql的lib文件和incdule文件到系統目錄下

#cp /usr/local/mysql/lib/mysql/* /usr/lib
#cp /usr/local/mysql/incdule/mysql/* /usr/incdule

備註:拷貝mysql的lib文件和頭文件到系統的目錄下是爲了防止無法找到mysql的lib目錄和incdule目錄而產生的錯誤。

2.8、添加vpopmail操作mysql的用戶

#/usr/local/mysql/bin/mysql -u root -p123456
mysql>create database vpopmail;
mysql>grant all on vpopmail.* to vpopmail@localhost identified by "123456";

三.安裝TCPSERVER
這個程序包是類似於inetd的命令行方式的構造客戶/服務器應用的工具程序,它設計的目的就是用以完全取代inetd而獲得更好的性能和安全性。Tcpserver提供對並行進程數量的限制以防止內存和CPU資源被耗盡,Tcpserver還提供TCP訪問控制,類似於tcp-wrappers/tcpd的hosts.deny和hosts.allow方式,但是速度要快很多。

1、安裝

#cd /down
#tar zxvf ucspi-tcp-0.88.tar.gz
#cd ucspi-tcp-0.88
#make setup check

2、生成cdb文件

#cd /etc
#touch tcp.smtp
#ee tcp.smtp //加入一下內容
127.0.0.1:allow,RELAYCLIENT=""
#/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp


四.安裝cmd5checkpw

cmd5checkpw和checkpassword完全兼容,cmd5checkpw只是增加了對CRAM-MD5的認證模式的支持,目前的最新版本是0.22,需要注意的是以前的版本有安全漏洞,一定要使用最新的版本。

#cd /down
#mkdir /usr/man
#mkdir /usr/man/man8
#tar zxvf cmd5checkpw-0.22.tar.gz
#cd cmd5chedkpw-0.22
#make
#make install
如果你不需要對/etc/passwd中的用戶開放mail,則不需要安裝checkpassword,因爲我不需要,所以我沒有安裝。如果你要使用,可以參考一下方法:

#cd /down
#tar zxvf checkpassword-0.90.tar.gz
#cd checkpassword-0.90
#make setup check

五.安裝Qmail

qmail是一個基於UNIX操作系統的郵件傳輸代理[Mail Transfer Agent,MTA],它採用標準的簡單郵件傳輸協議[Simple Mail Transfer Protocol,SMTP]與Internet上的其他郵件傳輸代理[MTA]進行交換信息。qmail目前的版本是1.03,於1998年發佈。目前qmail仍然在開發中,下一個版本2.0還沒有確定具體的發佈時間。前幾天又推出了1.04版本,該版本增加了一些qmail常用的一些補丁,有興趣的朋友可以試一下這個版本。

1.創建qmail目錄、組和用戶

1.1、創建目錄:

#mkdir /var/qmail
#mkdir /var/qmail/alias

1.2、添加qmail運行的組用戶:

#pw groupadd nofiles
#pw groupadd qmail
#pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
#pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
#pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
#pw useradd qmails -g qmail -d /var/qmail -s /nonexistent


2、安裝編譯Qmail

2.1、補丁程序介紹

A:qmail-103.patch
這個補丁程序主要是爲了解決某些DNS響應不完全遵循RFC標準,返回大於512Byte的DNS應答包時可能產生的問題,這
種情況發生在發送郵件到一個有數量龐大的MX記錄的大型郵件服務器上時,這個時候檢查qmail的日誌會發現以下出錯信息:
deferral:CNAME_lookup_failed_temporarily._(#4.4.3)/

B:qmail-smtpd.c
該補丁是更正smtp認證問題的程序。

C: qmail-smtpd.patch
該補丁是解決mail from和auth user name不一致也能發信的補丁,感謝網友gadfly提供!

D:qmail-1.03.patch
該補丁是使qmail支持SMTP認證的補丁。

2.2、打patch並編譯安裝qmail

#cd /down
#tar zxvf qmail-1.03.tar.gz

#patch –d ./qmail-1.03 < qmail-103.patch

#tar zxvf qmail-smtpd-auth-0.30.tar.gz
#cd qmail-smtpd-auth-0.30
#cp README.auth base64.c base64.h ../qmail-1.03
#patch –d ../qmail-1.03 < auth.patch

#cd ..
#cp qmail-smtpd.c ./qmail-1.03
#patch –d ./qmail-1.03 < qmail-smtpd.patch

#cd ./qmail-1.03
#make setup check
#config-fast localhost.com

3、設置投遞方式

#cp /var/qmail/boot/home /var/qmail/rc
#ee /var/qmail/rc //修改rc爲以下內容

exec env - PATH="/var/qmail/bin:$PATH" /
qmail-start ./Maildir/ splogger qmail

4、添加不能接收郵件的系統帳戶的別名

#touch /var/qmail/alias/.qmail-root
#touch /var/qmail/alias/.qmail-postmaster
#touch /var/qmail/alias/.qmail-mailer-daemon

#echo postmaster > /var/qmail/control/bouncefrom //設置投遞失敗返回郵件的發送者爲postmaster

5、停止sendmail服務

#ee /etc/rc.conf

sendmail_enable="NO"
sendmail_flags="-bd"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"

#chmod 0 /usr/sbin/sendmail
#mv /usr/sbin/sendmail /usr/sbin/sendmail.old

連接qmail的sendmail外殼文件到系統的sendmail目錄
#ln –s /var/qmail/bin/sendmail /usr/sbin/sendmail
#ln –s /var/qmail/bin/sendmail /usr/lib/sendmail

六.vpopmail介紹、安裝及配置

1、介紹

vpopmail是qmail的一個非常重要的擴展軟件包,它是由Inter7公司[http://www.inter.com]開發的,主要針對qmail本身支持虛擬郵件域,但是配置和用戶管理非常複雜和麻煩而設計的。它的特點是實現了qmail所有的用戶帳號只使用操作系統的一個用戶帳號,所有的的vpopmail相關的進程都以一個GID/UID來運行,讓郵件系統的帳戶和操作系統的用戶分離,提高了郵件系統的安全性。它支持基於域名和IP地址的虛擬郵件域,每個虛擬郵件域之間互相獨立,通過使用平衡樹填充的技術,vpopmail可支持2300萬個虛擬郵件域,每個虛擬郵件域可支持2300萬個郵件帳戶。Vpopmail還支持LDAP、Oracle、Sybase、Mysql、PostgreSQL等用戶認證信息存儲方式,使得建立和維護百萬級用戶的大型郵件系統很方便的實現。

2、實現虛擬域的原理

qmail對郵件域有本地(local)和虛擬(virtual)的概念。本地域是實現匹配/etc/passwd系統帳號,而虛擬域則匹配在qmail的配置文件virtualdomains中的各個域。Vpopmail利用qmail的users/assign和virtualdomains文件。

users/assign文件被編譯成users/cdb的格式,它利用一個哈系數據庫來加快查找速度,若任意一個模式得到匹配,qmail就使用文件中定義的uid和gid傳送該郵件到文件中定義的目錄。Vpopmail利用該方法實現使qmail以單一的vpopmail/vchkpw身份來傳輸用戶所有的虛擬域的郵件,從而實現了將郵件傳輸到~vpopmail/domains/<virtualdomain>目錄下的不同用戶。

對於qmail來說,qmail-local程序一旦從users/assign得到相關的信息,則其運行標準的.qmail文件操作。一般來說,.qmail-<user>文件被用來完成郵件的轉發、別名、或者調用其他程序如ezmlm等。若沒有找到匹配,則qmail-local查找.qmail-default文件,這是qmail-local郵件投遞機制中的最後一步,qmail利用該文件激活vedlivermail程序,該程序以兩個參數被調用,第一個當前沒有作用,主要使用來向後兼容的,第二個參數使用來在一個虛擬域用戶沒有被找到時缺省投遞,一般來說,缺省投遞可以時將郵件投遞到某個目錄或者某個郵件地址返回沒有此用戶的返回信件。

3、安裝

3.1、建立目錄

#mkdir /home/vpopmail
#mkdir /home/vpopmail/etc

3.2、建立組及用戶

#pw groupadd vchkpw
#pw useradd vpopmail –g vchkpw

3.3、安裝vpopmail

#cd /down
#tar zxvf vpopmail-5.3.16.tar.gz
#cd vpopmail-5.3.16

#ee vmysql.h //修改以下內容

#define MYSQL_UPDATE_SERVER "localhost" //mysql服務器名
#define MYSQL_UPDATE_USER "vpopmail" //訪問Mysql數據庫的用戶名
#define MYSQL_UPDATE_PASSWD "123456" //訪問Mysql數據庫的vpopmail用戶的密碼
#define MYSQL_READ_SERVER "localhost" //mysql服務器名
#define MYSQL_READ_USER "vpopmail" //用戶名
#define MYSQL_READ_PASSWD "123456" //密碼

或者使用Mysql的root用戶與密碼也可以!

3.4、創建tcp.smtp文件

或者使用/etc/tcp.smtp文件也可以。

#ee /home/vpopmail/etc/tcp.smtp

127.0.0.1:allow,RELAYCLIENT=""

3.5、編譯安裝

#./configure
--prefix=/home/vpopmail //指定安裝路徑
--enable-mysql=y //是否應用Mysql數據庫
--enable-incdir=/usr/local/include/mysql //Mysql數據庫include文件所在目錄
--enable-libdir=/usr/local/lib/mysql //Mysql數據庫lib文件所在目錄
--enable-default-domain=localhost.com //定義虛擬域名
--enable-passwd=n //是否使用系統密碼驗證方式
--enable-defaultquota=52428800 //定義缺省郵箱大小,10485760爲10MB,20971520爲20MB,52428800s爲50MB
--enable-tcprules-prog=/usr/local/bin/tcprules //指定tcprules目錄
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp //指定tcprules應用規則文件
--enable-vpopuser=vpopmail //vpopmail的用戶
--enable-vpopgroup=vchkpw //vpopmail的組
--enable-ip-alias-domains=n //在虛擬域中允許通過反向IP地址查找虛擬域名
--enable-roaming-users=n //是否支持外地用戶的SMTP的RELAY
--enable-sqwebmail-pass=y //sqwebmail的密碼支持

#make
#make install-strip

#chmod +s /home/vpopmail/bin/vchkpw

七.pop3和smtp的啓動腳本

1、創建pop3啓動腳本

#mkdir /etc/qmail
#cd /etc/qmail
#touch pop.sh
#chmod 755 pop.sh

#ee pop.sh //添加一下內容

#!/bin/sh
/usr/local/bin/tcpserver -c 100 -v –l localhost.com -H -U -R 0 pop3 / /var/qmail/bin/qmail-popup localhost.com /home/vpopmail/bin/vchkpw / /var/qmail/bin/qmail-pop3d Maildir &

2、創建smtp啓動腳本

#touch smtp.sh
#chmod 755 smtp.sh

#ee smtp.sh 添加一下內容:

#!/bin/sh
LOG_AUTH=1
export LOG_AUTH
QMAILUID=`id -u qmaild`
QMAILGID=`id -g qmaild`
/usr/local/bin/tcpserver -H -R -l localhost.com -t 1 -c 100 -v -p –x /etc/tcp.smtp.cdb / -u $QMAILUID -g $QMAILGID 0 smtp /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw / /usr/bin/true /bin/cmd5checkpw /usr/bin/true &

注意:如果使用的patch是0.31,在qmail-smtpd後面加入localhost.com,就可以解決auth的問題了

3、qmail啓動腳本

#mkdir start.sh
#chmod 755 start.sh

#ee start.sh //加入一下內容:
#!/bin/sh
csh -cf '/var/qmail/rc &'
/etc/qmail/pop.sh
/etc/qmail/smtp.sh
#echo "/etc/qmail/start.sh">> /etc/rc.local //設置系統啓動時自動啓動qmail及相關腳本

4、重新啓動系統

#reboot

5、檢查是否能夠添加虛擬域

#cd /home/vpopmail/bin
#./vadddomain localhost.com

如果添加失敗一定要刪除虛擬域,然後查看mysql數據庫是否有vpopmail表,如果沒有請檢查mysql用戶vpopmail是否擁有對數據庫擁有全部權限(或者修改vpopmail源文件的vmysql.h使用root用戶訪問數據庫),然後重新安裝vpopmail程序。

#./vdeldomain localhost.com

八.重新編譯mysql數據庫

1、修改mysql數據庫

在修改之前記得使用vdeldomain命令刪除你添加過的所有的郵件域。

#/usr/local/mysql/bin/mysql –u root –p123456

use vpopmail;
drop table vpopmail;
create table vpopmail (
pw_id int(5) unsigned NOT NULL auto_increment,
pw_name varchar(32) NOT NULL default '',
pw_domain varchar(64) NOT NULL default '',
pw_passwd varchar(40) NOT NULL default '',
pw_uid int(11) default NULL,
pw_gid int(11) default NULL,
pw_gecos varchar(64) default NULL,
pw_dir varchar(160) default NULL,
pw_shell varchar(20) default NULL,
pw_clear_passwd varchar(16) default NULL,
PRIMARY KEY (pw_id),
KEY pw_name (pw_name,pw_domain)
) TYPE=MyISAM;
quit

2、重新添加虛擬域和用戶

#cd /home/vpopmail/bin
#./vadddomain localhost.com
輸入postmaster密碼,這是以後使用qmailadmin管理虛擬域localhost.com的密碼

#./vadduser test
輸入密碼test

3、測試qmail

使用客戶端Foxmail或者Outlook測試郵件賬戶[email protected], 用戶名test(或者[email protected],因爲localhost.com作爲默認域名,所以不用輸入test後面的@localhost.com),密碼test,選擇smtp需要認證,測試該賬戶能不能進行收發郵件。如果你完全按照以上的方法操作,並且沒有任何錯誤的話,我想你一定沒有問題的。祝你好運^_^。

至此,一個帶smtp認證、mail from校驗、支持多虛擬域的基本的郵件系統已經設置完成。如果你想加入更多的功能,請接着往下做,我會一步一步的帶你完成。
第五部分:安裝qmailadmin

一.安裝apache

1、安裝

#cd /down
#tar zxvf apache_1.3.26.tar.gz
#cd apache_1.3.26
#./configure --prefix=/usr/local/apache --with-mysql=/usr/local/bin --enable-shared=max
#make
#make install

2、啓動

#/usr/local/apache/bin/apachectl start
#echo “/usr/local/apache/bin/apachectl start” >> /etc/rc.local //設置Apache隨系統一起啓動

二.安裝qmailadmin

1、安裝設置ezmlm

1.1、安裝

#cd /down
#tar zxvf ezmlm-0.53.tar.gz
#cd ezmlm-0.53
#make
#make man
#make setup

1.2、ezmlm加入mysql支持的方法

A: 創建ezmlm數據庫

#/usr/local/mysql/bin/mysql -u root –p
mysql>create database ezmlm;

B: 設置ezmlm加入mysql支持

#tar -zxvf ezmlm-0.53.tar.gz
#tar -zxvf ezmlm-idx-0.40.tar.gz
#mv ezmlm-idx-0.40/* ezmlm-0.53/
#cd ezmlm-0.53
#patch < idx.patch
#cd sub_mysql

#ee sub_mysql/conf_sqlcc
-I/usr/local/mysql/include/mysql
#ee sub_mysql/conf_sqld
-L/usr/local/mysql/lib/mysql -lmysqlclient -lnsl -lm –lz

#cd ..
#make mysql
#make clean
#make man
#make ch_GB
#make setup

以上只是提供一個網友的設置ezmle加入mysql支持的方法,由於我得郵件列表不算太大,所以我就沒有嘗試安裝,而僅僅只是安裝了ezmle。如果你需要mysql支持,你可以嘗試一下!

2、安裝autorespond

#cd /down
#tar zxvf autorespond.tar.gz
#cd /autorespond
#gcc -Wall -o autorespond autorespond.c
#cp autorespond /usr/local/bin/autorespond

3、安裝qmailadmin

qmailadmin是一個web方式的vpopmail管理軟件,使用它你可以很方便的添加/刪除用戶、更改用戶密碼、設置郵件轉發和自動回覆以及管理郵件列表等等功能,只要你使用它,你一定會愛上它的,因爲它確實能給你的管理工作帶來方便。
#cd /down
#tar zxvf qmailadmin-1.0.6.tar.gz
#cd qmailadmin-1.0.6
#./configure
#make
#make install-strip

4、漢化qmailadmin的管理頁面

#cd /down
#cp en-us /usr/local/share/qmailadmin/html/en

5、測試qmailamdin

http://mail.localhost.com/cgi-bin/qmailadmin

輸入域:localhost.com
輸入postmaster的密碼,也就是你添加虛擬域localhost.com時輸入的密碼

第六部分:安裝webmail

一.Sqwebmail的安裝與設置

1、安裝sqwebmail

#cd /down
#tar zxvf sqwebmail-3.5.0-cn.tar.gz
#cd sqwebmail-3.5.0

#./configure --without-authpam --with-db=db --enable-webpass=yes --without-authpwd /
--without-authshadow --without-authmysql --with-authldap --with-authuserdb --with-authpwd /
--with-authvchkpw --without-authdaemon

#make configure-check
#make
#make install-strip
#make install-configure

2、特殊設置

如果你需要同時使用系統用戶和虛擬用戶兩種驗證方式,需要進行一下設置:

#echo “authvchkpw authshadow” > /usr/local/share/sqwebmail/authmodulelist

經過上面的設置以後,你的系統用戶採用shadow驗證,虛擬域採用vchkpw驗證,禁止其他驗證方式。

3、測試sqwebmail

http://mail.localhost.com/cgi-bin/sqwebmail

使用用戶test,密碼test,登陸進出以後就可以測試收發郵件了!

4、修改Apache

#cd /usr/local/apache/htdocs
#touch index.html

#ee index.html //輸入一下內容:
<html>
<head>
<title>MAIL SYSTEM</title>
<meta http-equiv="Content-Type" content="test/html;charset=gb2312">
<meta http-equiv="refresh" content="0;url=http://mail.localhost.com/cgi-bin/sqwebmail">
</head>
<body bgcolor="#FFFFFF" test="#000000">
</html>

經過以上修改以後,你就可以通過:

http://mail.localhost.com

直接來訪問sqwebmail了,這樣就方便多啦:)

二.安裝Wmail

1、安裝Wmail

#cd /down
#tar zxvf wmail-1.00rc1.20030811-quota.tar.gz
#cd wmail-1.00rc1.20030724
#./install

默認安裝到/home/wmail目錄下。你也可以通過修改wmail的原代碼目錄中的install文件來修改安裝的目錄和定製編譯參數。

2、配置Wmail

修改/home/wmail/html/zh-cn的index.html和invalid.html相關項爲以下內容:
<input type="hidden" name="down" value="localhost.com">

3、修改Apache

編輯apache的httpd.conf文件,在最後加入以下內容:

NameVirtualHost 192.168.80.80

<VirtualHost 192.168.80.80:80>
SetEnv SQWEBMAIL_TEMPLATEDIR /home/wmail/html
ScriptAlias "/cgi-bin/" "/home/wmail/www/cgi-bin/"
<Directory "/home/wmail/www">
AllowOverride All
Options +Includes
</Directory>
ServerAdmin [email protected]
DocumentRoot /home/wmail/www
ServerName mail2.localhost.com
</VirtualHost>

4、測試Wmail

http://mail2.localhost.com

使用用戶test,密碼test,登陸進出以後就可以測試收發郵件了!

三.Sqwebmail和Wmail共存的設置

經過以上對Wmail的設置以後,你會發現sqwebmail和qmailadmin使用它們的URL無法登陸啦,這是因爲設置了虛擬主機的問題引起的,使sqwebmail和qmailadmin無法找到CGI路徑的原因。所以還需要對sqwebmail和qmailadmin的訪問地址進行虛擬主機設置,只要在Apache的配置文件httpd.conf中的最後面加入以下內容就OK.

<VirtualHost 192.168.0.2:80>
ScriptAlias "/cgi-bin/" "/usr/local/apache/cgi-bin"
<Directory "/usr/local/apache/htdocs">
AllowOverride All
Options +Includes
</Directory>
ServerAdmin [email protected]
DocumentRoot /usr/local/apache/htdocs
ServerName mail.localhost.com
</VirtualHost>

經過這樣設置以後,各個訪問的URL如下:

Sqwebmail: http://mail.localhost.com
QmailAdmin: http://mail.localhost.com/cgi-bin/qmailadmin
Wmail: http://mail2.localhost.com

第七部分:使用shell批量添加用戶

一. 第一種方法
1.在/home目錄下建立文件adduser.sh

#touch adduser.sh
#chmod 755 adduser.sh

2、編輯adduser.sh

#ee adduser.sh //加入一下內容:

#!/usr/bin
while read line
do
echo $line
/home/vpopmail/bin/vadduser $line $line
done < user

3、建立文件賬戶列表文件

#touch user
#ee user //格式如下

peijun.jiang
user
user1
user2
......

4、執行adduser.sh

#./adduser.sh

這樣user文件中的用戶就添加到默認域中了,用戶名和密碼相同。

備註:該方法是由網友 紅袖天香 提供!

二. 第二種方法
1、建立batchuseradd.sh文件

#cd /home
#touch batchuseradd.sh
#chmod 755 batchuseradd.sh

#ee batchuseradd.sh //內容如下:

#!/bin/sh
#batchadduser.sh: batch add mail user.
#install step.
#chmod u+x batchadduser
#./batchadduser.sh domain datafile
if [ $# -lt 2 ]
then
echo "usage: $0 domain datafile"
exit 1
fi
domain=$1
datafile=$2
addcmd=/home/vpopmail/bin/vadduser
while read username passwd
do
$addcmd $username@$domain $passwd
done < $datafile

2、建立datafile文件

#touchu datafile

#ee datafile //格式如下:

user1 passwd1
user2 passwd2
user3 passwd3
..... ......

#chmod u+x datafile

3、使用方法

#./batchuseradd localhost.com datafile

備註:該方法是由網友 gadfly 提供!

第八部分:病毒掃描和垃圾郵件過濾設置

本文所使用的是一個專門爲qmail設計的郵件掃描程序,他可以實現一下功能:
1.可以同時和多個其他商業的病毒掃描器集成在一起掃描郵件中的病毒
2.可以過濾含有特定字符或者特徵的郵件,比如含有特定的字符串和內容,或者來自特定奪得發送者,以及含有特定後綴文件名的文件等等。
它的工作原理是在郵件在壓入郵件隊列以後對郵件進行掃描,qmail-scanner要替換的是qmail-queue程序,從原理上來說處理效率應該不錯。

一. 安裝Clamav
1.下載Clamav
# cd /down/
# fetch http://download.sourceforge.net/clamav/cla...mav-0.65.tar.gz
# tar zxvf clamav-0.65.tar.gz

2.添加所需的組和用戶
# pw groupadd clamav
# pw useradd clamav -g clamav -d /nonexistent -c "Clam Antivirus" -s /sbin/nologin

3.安裝Clamav
# cd clamav-0.65
# ./configure
# make install

4.測試Clamav
# clamscan --recursive --log=/tmp/clamscan.log ./ //掃描當前目錄,測試clamscn是否運行

5.升級Clamav
# freshclam --verbose //升級clamscan病毒庫

6.創建freshclam日誌記錄文件
# touch /var/log/freshclam.log
# chmod 644 /var/log/freshclam.log
# chown clamav:clamav /var/log/freshclam.log

7.創建Clamav自動啓動腳本
#touch /usr/local/etc/rc.d/clamav.sh //內容如下
#!/bin/sh
#
# Startup / shutdown script for Clam Antivirus

case "$1" in
start)
/usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log
echo -n ' freshclam'
;;

stop)
/usr/bin/killall freshclam > /dev/null 2>&1 /
&& echo -n ' freshclam'
;;

*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac

# chmod 744 /usr/local/etc/rc.d/clamav.sh

更改/usr/local/etc/clamav.conf文件,去掉下面選項前面的#:
#Example 前面加上#
LogFile /tmp/clamd.log 去掉前面的#
LogFileMaxSize 2M 去掉前面的#
LogTime 去掉前面的#
PidFile /var/run/clamd.pid 去掉前面的#
DataDirectory /var/lib/clamav 去掉前面的#,並且修改路徑爲/usr/local/share/clamav

7.添加自動升級腳本
# crontab –e
0 8 * * * /usr/local/bin/freshclam --quiet -l /var/log/freshclam.log

8.添加自動掃描/home目錄
# corntab –e
0 6 * * * root /usr/local/bin/clamscan --recursive
--infected
--exclude /usr/local/share/clamav/viruses.db
--exclude /usr/local/share/clamav/viruses.db2
--log=/var/log/clamscan.log
/home

二. SpamAssassin

1.安裝Perl模塊
使用webmin或者perl –MCPAN –e shell
Time::HiRes
file::Spec
Getopt::Long
Pod::Parser
HTML::Tagset
HTML::Parser
MIME::Base64
MIME::QuotedPrint
Net::Cmd
Net::Ping
Net::DNS
Digest::SHA1
file::Copy
Digest::Nilsimsa
URI::Escape

2.安裝SpamAssassin
# cd /down
# fetch http://spamassassin.taint.org/released/Mai...sin-2.61.tar.gz
# tar -zxvf Mail-SpamAssassin-2.61.tar.gz
# cd Mail-SpamAssassin-2.61
# perl Makefile.PL
# make
# make install

3.測試SpamAssassin
# spamassassin -t < sample-spam.txt > spam.out
# cat /spam.out

X-Spam-Status: Yes, hits=14.7 required=5.0
tests=ALL_CAPS_HEADER,CALL_FREE,DATE_IN_PAST_24_48,
DRASTIC_REDUCED,FROM_HAS_MIXED_NUMS,HOME_EMPLOYMENT,
INVALID_DATE,INVALID_MSGID,LINES_OF_YELLING,
MSGID_HAS_NO_AT,NO_REAL_NAME,ONCE_IN_LIFETIME,REMOVE_SUBJ,
SMTPD_IN_RCVD,SPAM_PHRASE_21_34,UNDISC_RECIPS
version=2.61
X-Spam-Flag: YES
X-Spam-Level: **************
X-Spam-Checker-Version: SpamAssassin 2.61 (1.115.2.20-2002-10-15-exp)

# spamassassin -t < sample-nonspam.txt > nonspam.out

X-Spam-Status: No, hits=0.9 required=5.0
tests=GAPPY_TEXT,LINES_OF_YELLING,PGP_SIGNATURE,
SPAM_PHRASE_02_03,TO_BE_REMOVED_REPLY
version=2.61
X-Spam-Level
:
3.創建SpamAssassin啓動腳本
# touch /usr/local/etc/rc.d/spamd.sh //內容如下
#!/bin/sh
#
# Startup / shutdown script for SpamAssassin daemon

case "$1" in
start)
/usr/bin/spamd -a -d -v -u vpopmail -F 0 && echo -n 'spamd'
;;

stop)
spamdpid=`ps -ax | grep spamd | grep -v grep | grep -v sh | awk '{ print $1 }'`
if [ "$spamdpid" != "" ]; then
kill $spamdpid > /dev/null 2>&1
echo -n " spamd"
fi
;;

*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac

exit 0
# chmod 744 /usr/local/etc/rc.d/spamd.sh
# /usr/local/etc/rc.d/spamd.sh start

三. Maildrop
# cd /usr/ports/mail/maildrop
# make
# make install
# cd /usr/ports/archivers/zip
# make install

http://telia.dl.sourceforge.net/sourceforg...ef-1.2.3.tar.gz
TNEF是一個從"application/ms-tnef". 類型中找出MIME附件的程序.這僅僅是微軟系統中的一種附件
# ./configure
# make
# make install

四. Qmail-scan
1. qmail-queue補丁程序
# cd /down
# fetch http://www.qmail.org/qmailqueue-patch
# patch –d ./qmail-1.03 < qmailqueue-patch
# killall qmail-send
# make setup check
# csh –cf ‘/var/qmail/rc &’

2. 安裝qmail-scanner
# cd /down
# fetch http://telia.dl.sourceforge.net/sourceforg...canner-1.20.tgz
# tar -zxvf qmail-scanner-1.20.tgz
# cd qmail-scanner-1.20
# pw groupadd qscand
# pw useradd qscand –c “Qmail-Scanner Account” –g qsand –s /bin/false
# ./configure –help
# ./configure --admin "user" --domain "test.com" --scanner clamscan,verbose_spamassassin --lang en_GB –install
# chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
# chown -R qmailq:qmail /var/spool/qmailscan/
# chown qmailq:qmail /var/qmail/bin/qmail-scanner-queue.pl
# /var/qmail/bin/qmail-scanner-queue.pl -r //查看qmailscan當前包含的特徵
# /var/qmail/bin/qmail-scanner-queue.pl –g //保存qmailscan定義特徵的修改,使他生效。
# chmod 4511 /usr/bin/suidperl
如果提示:can’t do setuid,那就就是suidperl沒有設置set位,或者沒有安裝perlsetuid。

3.設置qmail使用qmail-scan
在smtp啓動腳本中添加:
PATH=$PATH:/usr/local/bin:/var/qmail/bin
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export PATH QMAILQUEUE
然後重新啓動smtp服務

4.測試安裝
# cd /usr/local/qmail-scanner/qmail-scanner-1.20
# ./contrib/test_installation.sh -doit
這個腳本會設定的管理員郵件地址發送3個郵件,第一個郵件是一般的正常郵件,第二個郵件中會包含eicar.com測試病毒,第三個郵件同樣包含eicar.com測試病毒,不過所附帶的文件名不是eicar.com。

如果qmail-scanner安裝正確,管理員就應該可以收到關於後面的兩個郵件的警告郵件。
如果系統出錯,可以查看/var/spool/qmailscan/qmail-queue.log日誌文件。
qmail-scanner的特徵過濾在/var/spool/qmailscan/quarantine-atachments.txt

五. SpamAssassin的使用
建立SpamAssassin的學習系統
#sa-learn --rebuild -D -p user_prefs
sa-learn --dump all可以查看自學習的數據信息

spamassassin的過濾模板在/etc/mail/spamassassin/local.cf,修改爲:

required_hits 5.0
rewrite_subject 1
subject_tag ********SPAM********
report_safe 1
defang_mime 0
rewrite_subject 0
report_header 1
use_terse_report 1
use_bayes 1
auto_learn 1
skip_rbl_checks 1
use_razor2 0
use_dcc 0
use_pyzor 0

score SUBJ_FULL_OF_8BITS 0.0
score BASE64_ENC_TEXT 0.0
score BAYES_99 0.1
score BAYES_90 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score FROM_ILLEGAL_CHARS 0.5
score HEAD_ILLEGAL_CHARS 0.5
score MIME_BASE64_TEXT 0.5
ok_locales en zh

六. 使用Maildrop調用SpamAssassin
在/home/vpopmail/domains/localhost.com/建立mailfilter文件
# touch mailfilter
# chown vpopmail:vchkpw mailfilter
# chmod 700 mailfilter
mailfilter內容如下:

VPOP="| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox"
VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST`

if ( $SIZE < 262144 )
{
exception {
xfilter "/usr/bin/spamc -f -u $EXT@$HOST"
}
}

if (/^X-Spam-Flag: YES/)
{
# try filtering it using user-defined rules
exception {
include $VHOME/Maildir/.mailfilter
}
# then try delivering it to a Spam folder
exception {
# to "$VPOP"
to "$VHOME/Maildir/.Spam/"
}
# ah well, I guess they'll just have to live with disappointment
exception {
to "$VPOP"
}
}
else
{
exception {
include $VHOME/Maildir/.mailfilter
}
exception {
to "$VPOP"
}
}

修改.qmail-default內容如下:
maildrop mailfilter

第九部分:附 錄

1.Qmail的主要配置文件
qmail的配置文件是由多個文件組成的,不是集中在一個文件中,每個文件控制相應部分的功能和屬性,一個可執行程序可能有多個配置文件控制,所有的配置文件共同決定了qmail運行的實現和模式。這些配置文件都在qmail的control目錄中,本文的配置文件位於/var/qmail/control目錄中

1.1、badmailfrom

這個配置文件是控制郵件系統拒絕接收的郵件地址和郵件域,主要是爲了防止垃圾郵件。如果一個郵件地址或者郵件域被列入到這個文件中,系統就會拒絕接收這個郵件地址發來的郵件,或者拒絕郵件域下所有郵件地址發來的郵件。不過這個配置文件只是一般的垃圾郵件防範手段,對於比較全面的垃圾郵件過濾技術還要靠第三方軟件來實現。該文件的格式如下:

[email protected] //拒絕這個地址發來的郵件
[email protected]
@33.com //拒絕這個郵件域下的所有帳號發來的郵件
@44.com

1.2、boucefrom

bouceform是定義當郵件投遞失敗時系統返回給發送者一個包含失敗信息的郵件時的發送者。如果不存在這個文件,默認的發送者是MAILER-DAEMON。比如本文的

echo postmaster > /var/qmail/control/bouncefrom

就是定義投遞者爲postmaster,這樣所有投遞失敗的返回郵件的發送者就成了postmaster。

1.3、concurrencylocal

這個文件定義了qmail可以同時投遞的本地郵件的個數。這個參數的缺省值是10,也就是說系統允許同時有10個郵件在本地投遞。concurrencylocal這個參數的最大值是由編譯時的conf-spawn參數來決定的,缺省值是120,最大值是255。

1.4、concurrencyremote

這個參數定義了qmail可以同時投遞的遠端郵件的個數,這個參數的缺省值是20。這個參數的最大值也是由conf-spawn來決定的。

1.5、defaultdomain

它主要用於郵件用戶在投遞給同一郵件服務器的郵件用戶時的郵件投遞處理,比如郵件服務器cnunix.com.cn用戶user發送郵件給另一個郵件用戶user1@cnunix,這實qmail-inject會將defaultdomain中定義的郵件域名加入到這個郵件的目標地址中,qmail會自動認爲這個郵件的目標地址是[email protected],並按照這個地址進行投遞。當這個文件不存在的時候,qmail會從配置文件me中讀取這個參數。如果系統變量DEFAULTDOMAIN已經設置,defaultdomain定義的參數將被忽略。

1.6、defaulthost

它和defaultdomain類似,當郵件系統接收到沒有目標主機名的郵件時,這個設置文件定義了系統往這個郵件中加入的目標主機名名稱。在缺省情況下,qmail-inject會將defaulthost中定義的名稱加入到沒有定義投遞郵件地址的郵件的目標主機名中,如果defaulthost不存在,加入的目標主機名將時字符串“defaulthost”,defaulthost主要用於郵件用戶在投遞給同一郵件服務器的郵件進行投遞處理。如果系統變量QMAILDEFAULTHOST已經設置,defaulthost定義的參數將被忽略。

1.7、databyes

它定義了qmail-smtpd所允許接收的郵件的最大字節數。這個參數的缺省值爲0,表示對接收郵件的字節數沒有限制。如果要限制最大的接收爲10M,操作如下:

echo 10485760 > /var/qmail/control/databytes

這是任何大於10M的郵件都會被拒絕。這個參數最好設置上,以避免惡意的對你服務器發送大量的超大郵件,產生郵件服務器負荷過大,甚至系統崩潰的危險。

1.8、doublebouncehost

這個配置文件定義了出現“雙重反彈”的時候,系統轉發的郵件的主機名稱。“雙重反彈”就是當系統因爲投遞失敗將郵件返回給發送者時,發送者又將此郵件返回,這個時候qmail將會把這個郵件轉發到另一個郵件地址,一般這個地址就是管理員的地址。doublebouncehost就是定義這個轉發的郵件地址的主機名部分,而這個郵件地址的用戶名部分是由doublebouceto來定義的,因此這兩個配置文件一般都是結合起來使用的。當doublebouncehost不存在的時候,系統將會從配置文件me中讀取這個參數。

1.9、doublebounceto

這個參說是結合blebouncehost來使用的,當這個參數不存在的時候,系統缺省值是postmaster用戶。

1.10、helohost

這個配置文件定義了當程序qmail-remote和遠程郵件系統建立連接時所使用的主機名。如果這個配置文件不存在,系統將會從配置文件me中讀取這個參數值,如果me不存在,qmail-remote將不能正常運行工作。

1.11、locals

這個配置文件是定義本地郵件域的,在qmail-send處理郵件投遞時,將會使用locals定義的值和郵件的目標地址進行比較,如果相同,系統就會將這個郵件投遞到本地交給qmail-lspawn來處理。如果一個郵件的目標主機名在locals找不到,系統將會把這個郵件投遞到遠端郵件服務器系統,即使這個郵件的目標地址可能是本地郵件系統的。如果locals不存在,系統將會從配置文件me中讀取這個參數,如果me不存在,qmail-send將不能正常運行。

1.12、me

這個配置文件是qmail系統十分重要的一個文件,如果這個文件不存在,qmail系統將無法運行。me是用來定義本地郵件服務器的主機名的,上面已經介紹到了,有多個配置文件是和me有關聯的,如果那些配置文件不存在系統默認會從me中讀取參數值的。me這個配置文件一般都是在qmail系統安裝時使用configure-fast來創建的,在上面qmail系統安裝的時候已經使用過了這個參數。

1.13、queuelifetime

這個配置文件是定義一個郵件在郵件隊列中存活的時間,缺省值爲7天(604800s),這個期限掉了以後qmail-send將會進行最後一次的投遞嘗試,如果投遞失敗,該郵件將會從郵件隊列中刪除。

1.14、rcphosts

這個配置文件也是qmail一個十分重要的文件,這個文件是定義系統允許轉發郵件的郵件域,如果這個文件不存在或者爲空,你的系統將會接收Internet上所有的域的郵件轉發,即你的系統是Open relay。配置文件rcpthosts最多可以支持50個主機名和域名,如果超個這個數字,就需要保存到他的擴充配置文件morercphosts中,然後使用qmail的命令程序qmail-newmrh(在本系統中,該文件在/var/qmail/bin目錄下)來生成二進制的morercpthosts.cdb文件,這樣qmail-smtpd纔可以從這個二進制文件中讀取信息。

1.15、virtualdomains

這也是qmail的一個非常重要的配置文件,它定義了qmail的虛擬郵件域,qmail結合vpopmail的虛擬域管理功能可以定義多個虛擬郵件域。

1.16、smtproutes

這個配置文件是定義qmail郵件系統的靜態SMTP路由表信息的,他的格式應該是:

HOST: targetHOST //HOST可以是主機名或者域名。這行所表示的是意思是將所有目標是HOST的郵件轉發到targetHOST郵件服務器中,這個是最常規的表示方式。

下面給一些例子和一些特殊的表示方法:

cnunix.com.cn:cnunix.com //這行表示的意思是將所有發往cnunix.com.cn的郵件全部轉發到cnunix.com這個郵件服務器。qmail不會在cnunix.com.cn郵件服務器中投遞時查詢DNS中的MX記錄,直接投遞到cnunix.com郵件服務器中,加快了投遞的速度。

.cnunix.net: //這行表示強迫qmail對DNS的MX記錄進行查詢,因爲沒有定義轉發的主機名,qmail將在DNS中查詢任何以.cnunix.net結尾的郵件服務器

:mail.cnunix.com.cn:2525 //這行定義表示所有發往該機器的所有郵件都將會轉發到mail.cnunix.com.cn這個郵件服務器,並且轉發到對方的2525端口,這個方式一般都是做郵件網關時用的到的。

注意:smtproutes如果設置不正確或者DNS的變動會產生郵件的循環投遞。

1.17、timeoutconnect

這個配置文件定義了qmail-remote在和遠端SMTP服務器在SMTP連接斷開以前接受一個新的連接等待的最大時間(單位爲秒s),默認值爲一分鐘(60s)。如果你的網絡連接速率比較低,就需要相應的調整這個參數到一個適合的值。

1.18、timeoutremote

這個配置文件定義了qmail-remote等待遠端的SMTP服務器相應時等待的最大時間,默認值爲20分鐘(1200s),如果到達這個最大值沒有相應,qmail才和對方斷開連接並且把失敗的記錄寫到qmail的日誌中。

1.19、smtpgreeting

這個配置文件定義了用戶在登錄SMTP服務時顯示的系統歡迎信息。修改這個信息可以掩蓋一些你的系統的本身的信息,可以相對的迷惑一下登錄者:)

2. vpopmail參數附錄
一般選項:

2.1、--enable-roaming-users=n|y

當pop3認證通過後,是否打開對該用戶的郵件轉發(mail relay),缺省是關閉的。若設置該選項爲y,當某個用戶通過了pop3認證,則將其IP地址加入許可通過該郵件服務器進行relay的列表中。一個名爲clearopensmtp的cronjob程序可以用來實現在這一段時間以後從允許轉發郵件地址列表中將該IP地址清除。這個選項要求以-x /etc/tcp.smtp.cdb選項來使用tcpserver運行smtp服務器。

2.2、--enable-hardquota=size|n

size爲具體的數字。設置或打開磁盤限額功能,NOQUOTA缺省爲50M,這裏=後面的數字單位爲字節,如果要限制磁盤限額爲10M就需要使用下面這個配置參數:

--enable-hardquota=10000000

若磁盤限額超出,將拒絕接受該用戶的新郵件,並返回一封拒絕信息郵件,其中的信息可以定製。

2.3、--enable-default-domain=name

該選項爲設定缺省域名,推薦將所有的域都設置爲虛擬域,並選中一個作爲缺省域。對於缺省域的用戶,其通過接受郵件時,只需要在用戶名中設置其郵件用戶名即可,對於其他非缺省域的用戶,則需要將用戶名設置爲<user>@<virtualdomain>的格式才能通過pop3接受信件。

2.4、--enable-ip-alias-domains=y|n

允許通過反向解析來查看虛擬域。缺省情況下,每個域使用基於虛擬域的名字,也就是用戶必須在pop3用戶名中提供相應的域信息,也就是<user>@<virtualdomain>.當然也可以使用enable-default-domain配置選項來覆蓋該要求。Vpopmail同樣支持基於IP地址的虛擬域,若該選項打開則用戶不需要在pop3用戶名中提供@<virtualdomain>,vpopmail自動對該用戶連接的服務器IP地址進行反向解析,若解析得到一個域名,則vpopmail使用該名字作爲域,例如:IP:x.x.x.x對應域名test.com,用戶設置pop3服務器的IP地址進行反向DNS查詢,得到test.com域名,用戶使用test作爲用戶名,vpopmail使用test.com。

2.5、--enable-relay-clear-minutes=360

允許漫遊用戶通過郵件服務器的轉發郵件的時間段。 若--enable-roamin-users=y,則該選項設置clearopensmtp應該保持該IP在允許列 表中的時間,缺省是3小時。

Mysql options:

2.6、--enable-mysql=n|y

使用mysql,缺省是no.允許通過將賬號存放在mysql數據庫中來認證用戶。

  注意:在配置和編譯以前需要修改文件vmysql.h,正確的設置mysql服務器的Name/Ip, mysql用戶和mysql用戶密碼。該用戶必需要擁有創建數據庫和在其中創建表格的權限。

2.7、--enable-sqlincdir=

sql頭文件的目錄,缺省爲/usr/local/mysql.

2.8、--enable-sqllibdir=/usr/lib/mysql

庫文件libmysqlclient.a的目錄,缺省爲/usr/lib/mysql

2.9、--enable-sqllibs=mysqlclient

mysql庫名,缺省爲libmysqlclient.a.

2.10、--enable-large-site=n|y

缺省值爲no,使用該選項是爲了適應大量用戶的情況。缺省的vpopmail將所有的域信息存放在同一個table-vpopmail中,這對於一般情況下具有很好的效率。但是對於大量用戶的系統,則需要將該選項設置爲yes。這時候,vpoomail將爲每個域創建一個table。最主要的區別是域名不存放在數據庫中,因爲表格包含了域名。對於大於500,000+的用戶,這可以節省大量的磁盤空間。但是對於有大量虛擬域的系統可能會影響mysql的性能。

Vpasswd/cdb options

2.11、--enable-ucspi-dir=dir

編譯好ucspi-tcp包的目錄位置,使用該目錄來設定ucspi-tcp軟件包的路徑,缺省爲../ucspi-tcp-0.84。vpopmail需要使用該目錄中的頭文件和兩個.a文件。

Logging options

2.12、--enable-logging=e|y|n

打開(y)或關閉(n)使用syslog進行log,或e僅僅log錯誤信息。設置log級別,缺省僅僅記錄pop認證錯誤信息。

2.13、--enable-log-name=vpopmail

設置log名
User/group options

2.14、--enable-vpopuser=vpopmail

若使用其他的用戶來安裝該軟件包,則在該選項中指定組名。

2.15、--enable-vpopgroup=vchkpw

若使用其他的組來安裝該軟件包,則在該選項中指定組名。

2.16、--enable-admin-email=email-address

系統管理員的電子郵件地址。
Directory and file location options

2.17、--enable-tcpserver-file=/etc/tcp.smtp tcpserver –x

使用的郵件轉發配置文件的存放目錄,缺省爲/etc

2.18、--enable-qmaildir=dir

qmail的安裝目錄指定,缺省爲/var/qmail。

2.19、--enable-tcprules-prog=/usr/local/bin/tcprules

tcprules程序的安裝位置,缺省爲/usr/local/bin

2.20、--enable-apop-file=/etc/apop-secrets

apop密鑰存放目錄
Other options

2.21、--enable-apop=y|n

允許或禁止apop認證,缺省是yes

2.22、--enable-passwd=y|n

允許或禁止/etc/passwd(或shadow)認證。覆蓋自動配置,缺省的配置程序將自動檢測系統是使用passwd或shadow密碼,通過設置該選項爲no,可以禁止所有的/etc/passwd賬號認證。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章