天天看點

超級無敵qmail安裝大法,詳盡之極

-----------------------------------------------------------------------------------------------------

一。Linux qmail安裝指南

此文所實作的郵件系統功能清單:

·SMTP伺服器:SMTP-AUTH認證(Plain,Login,CRAM-MD5)TLS(SSL)支援

·POP3伺服器:CRAM-MD5APOP和SSL支援

·IMAP伺服器:TLS(SSL)支援

·郵件病毒清除

·郵件附件限制

·中文垃圾郵件過濾(最高90%)

·自動回複

·郵件清單

·Web管理

·使用者注冊

·通過Web顯示統計資訊

·WebMail

·MRTG 

二。檢查DNS設定

*****************************************************************************************************

//DNS的配置檔案//

$ttl 38400

@ IN SOA dns.tyler110.com. admin.tyler110.com. (

1120991227

10800

3600

604800

38400 )

@ IN NS dns.tyler110.com.

@ IN MX 5 mail.tyler110.com.

dns IN A 192.168.77.248

www IN A 192.168.77.248

ftp IN A 192.168.77.248

mail IN A 192.168.77.248

**************************************************************************************************

在開始之前確定正确設定了DNS MX記錄.例如使用"tyler110.com"作為郵件域對MX記錄進行測試

在Linux下

host -t mx domain.com

domain.com. mail is handled by 10 mail.domain.com.

host -t a mail.domain.com

mail.domain.com. has address 192.168.77.248 

************************************對外的MailServer要做如下測試**************************

在Windows下

C:/>nslookup

Default Server: ns.domain.com

Address: 192.168.77.248

>set type=mx

>domain.com

domain.com MX preference = 10, mail exchanger = mail.domain.com

mail.domain.com internet address = 192.168.77.248

>exit 

***************************如果你的郵件伺服器是用做公司内部郵件服務不對外提供服務此處可略過。************************

2.3 确認系統環境

确認下面的軟體是否已經安裝:

rpm -q httpd php php-mysql mysql mysql-server mysql-devel gdbm gdbm-devel openssl openssl-devel stunnel krb5-devel

2.4 設定防火牆

安裝完系統後修改/etc/httpd/conf/httpd.conf使web服務正常啟用為mysql添加root使用者的密碼。如果設定了防火牆要打開如下端口

Outbound ports (tcp)

25 - SMTP

110 - POP 

143 - IMAP

783 - Spamassassin

993 - IMAPS

Inbound Ports (tcp)

22-SSH 

80 - HTTP

110 - POP services

443 - HTTPS

*****************************************************安裝MySQL***************************************************

添加MySQL使用者

useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql 

tar -xzf mysql-4.0.25.tar.gz

cd mysql-4.0.25

./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql --with-mysqld-user=mysql --with-charset=gb2312 --with-extra-charsets=all --with-unix-socket-path=/var/lib/mysql/mysql.sock

make

make install

cp support-files/my-huge.cnf /etc/my.cnf (視記憶體大小選擇合适的檔案)

cp support-files/mysql.server /etc/init.d/mysqld

cd /etc/init.d/

chmod 777 mysqld

cd /etc/rc.d/rc3.d/

ln -s ../init.d/mysqld S99mysqld

/usr/local/mysql/bin/mysql_install_db

chmod -R 755 /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

service mysqld start

添加連結(進行資料庫操作直接輸入指令就可以,不用進入/usr/local/mysql/bin/了

ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

ln -s /usr/local/mysql/bin/mysql /usr/bin

設定mysql root密碼

mysqladmin -u root password edpmis

ln -s /usr/local/mysql/lib/mysql /usr/lib/

ln -s /usr/local/mysql/include/mysql /usr/include/

cp /usr/local/mysql/lib/mysql/libmysqlclient.so.12 /usr/lib/

這樣在編譯類似PHPVpopmail等軟體時可以不用指定mysql的庫檔案

mysql的頭檔案和庫檔案分别在/usr/include/mysql和/usr/lib/mysql。

***********************************************************************************************************************

解除安裝已有的郵件系統,确認沒有SMTP/POP/IMAP服務在運作:

/etc/init.d/sendmail stop

netstat -na | grep 25

netstat -na | grep 110

netstat -na | grep 143

service sendmail stop

删除已有的SMTP/POP/IMAP軟體:

rpm -e --nodeps sendmail

些篇文檔所使用的軟體清冊如下

qmail – 本文的主角世界上使用最廣的郵件系統之一。此處使用的是netqmail-1.05的更新檔集和shupp.org的Toaster 7.0運作腳本

ucspi-tcp - ucspi-tcp軟體包由一組工具組成。它們用來簡單的建立客戶機伺服器tcp背景程式

daemontools - 是inetd和winetd的代替品,用它來監聽qmail-send,qmail-smtpd,qmail-pop3d

Vpopmail - 一個以qmail為基礎的虛拟域管理包,其允許在一個IP位址添加多個虛拟域 

iGenus ***兄的作品PHP編寫的Webmail

iGenus_Admin 通過WEB添加域和帳号

Courier-imap 此郵件系統的IMAP子產品

ezmlm – 一個快速強大的郵件清單程式可以通過qmailadmin對其進行配置

autorespond – 自動回複程式,可以很好的與qmailadmin配合使用

qmailadmin – 通過WEB管理vpopmail域的極好工具

vqadmin – 通過WEB添加域

SpamAssassin – 垃圾郵件防止中文垃圾郵件清理就靠它了

Clamav  一個免費的防毒軟體此郵件系統的殺毒子產品

MailDrop – 郵件過濾工具比較難以使用但是值得學會它

qmail-scanner – 一個掃描郵件隊列的插件其調用Clamav和SpamAssassin進行清除郵件病毒和垃圾郵件的動作

qmailanalog – 分析難以了解的qmail日志并每晚給出報告

isoqlog - 一個qmail日志分析工具,可以分析和統計qmail的運作日志并生成漂亮的HTML格式的報表

MRTG - 多路由器通信螢幕(MRTG)是在網絡鍊路上監控通信負載的一件工具 

那麼下面讓我們開始安裝必須的軟體

#建立/home/pkg/目錄

mkdir /home/pkg

cd home

####此安裝指南中所使用的軟體最好放在 /home/pkg/

*****************************************************************************************************************

#解壓縮netqmail-1.05.tar.gz

chmod 755 -R pkg

cd pkg

tar -xzf netqmail-1.05.tar.gz

cd netqmail-1.05

./collate.sh

*********注意./collate.sh這一步不要忘***********

***********************************************************安裝qmai******************************************************

1.安裝daemontools

daemontools是一個收集管理UNIX程序的工具.用它來監聽qmail-send,qmail-smtpd,qmail-pop3d.

#安裝

cd /home/pkg

tar -zxvf daemontools-0.76.tar.gz

cd admin/daemontools-0.76

patch -Np1 < /home/pkg/netqmail-1.05/other-patches/daemontools-0.76.errno.patch

package/install 

# 驗證daemontools已經正常運作

sleep 5 //正常情況下沒有任何顯示

ps ax | grep svscan 

提示

——————————————————————————————————————————————————————

25243 ? S 0:00 /bin/sh /command/svscanboot

25245 ? S 0:00 svscan /service

25249 pts/1 S 0:00 grep svscan

———————————————————————————————————————————————————————

2.安裝ucspi-tcp 

ucspi-tcp軟體包由一組工具組成。它們用來簡單的建立客戶機伺服器tcp背景程式。TcpServer是一個比inetd安全性更好的選擇。

它内建有基于規則的連接配接控制能完善地在達到預定義的最大系統負載時将連接配接推遲這點比 inetd好。Tcpserver也被推薦與qmail一同使用

因為它們是同一個作者編的程式。

tar zxvf ucspi-tcp-0.88.tar.gz

cd ucspi-tcp-0.88

patch -p1 < ../ucspi-tcp-0.88.errno.patch 

make setup check 

ps ax | grep tcpserver

3.安裝qmail 

************************************************************************************

這個toaster更新檔是下面這幾個更新檔的組合:

smtp auth SMTP認證

spf 發信人DNS檢查

qmail-queue 如果要使用病毒掃描引擎則需要這個更新檔

maildir++ patch 

support oversize dns packets (not necessary if you use dnscache) 

chkuser 檢查本地vpopmail使用者表信頭的文法這個更新檔需要在安裝vpopmail後被安裝。

spam throttle 

qregex 比對badmailfrom和badmailto檔案裡的規則

big concurrency (set the spawn limit above 255) 

**************************************************************************************

#建立所需要的使用者

mkdir /var/qmail

groupadd nofiles

useradd alias -g nofiles -d /var/qmail/alias -s /sbin/nologin

useradd qmaild -g nofiles -d /var/qmail -s /sbin/nologin

useradd qmaill -g nofiles -d /var/qmail -s /sbin/nologin

useradd qmailp -g nofiles -d /var/qmail -s /sbin/nologin

groupadd qmail

useradd qmailq -g qmail -d /var/qmail -s /sbin/nologin

useradd qmailr -g qmail -d /var/qmail -s /sbin/nologin

useradd qmails -g qmail -d /var/qmail -s /sbin/nologin

#順便添加vpopmail使用者

groupadd vchkpw -g 89

useradd vpopmail -u 89 -g vchkpw

#準備安裝qmail

tar -xzf toaster-scripts-0.7.tar.gz

cd netqmail-1.05/netqmail-1.05/

***************************************************************************************************************************

# 搜尋函數straynewline中的451改為553 

vi qmail-smtpd.c

# 當你的伺服器收到無效格式的郵件時會發送:"I am not going to accept that message at the moment,you can try again later",

#對方伺服器收到後幾秒鐘後又會發送同樣的郵件給你造成多次的重複。改為553後你的伺服器将直接發送

"I am not going to accept that message,don't try sending it again.",告訴對方的伺服器不要再發這封無效的信件。

void die_alarm() { out("451 逾時. (#4.4.2)/r/n"); flush(); _exit(1); }

void die_nomem() { out("421 記憶體溢出. (#4.3.0)/r/n"); flush(); _exit(1); }

void die_control() { out("421 無法讀取控制檔案. (#4.3.0)/r/n"); flush(); _exit(1); }

void die_ipme() { out("421 無法判斷發信IP位址. (#4.3.0)/r/n"); flush(); _exit(1); }

void straynewline() { out("553 如有疑問請發郵件到: [email protected]/r/n"); flush(); _exit(1); }

void err_bmf() { out("553 對不起您的郵件位址在我的黑名單裡. (#5.7.1)/r/n"); }

void err_nogateway() { out("553 對不起您所發送的郵件不在伺服器允許的範圍内. (#5.7.1)/r/n"); }

void err_unimpl() { out("502 指令執行失敗. (#5.5.1)/r/n"); }

void err_syntax() { out("555 文法錯誤. (#5.5.4)/r/n"); }

out("214 WelCome To: http://www.domail.com/r/n");

out("354 繼續./r/n"); 

if (databytes) if (!bytestooverflow) { out("552 對不起郵件大小超出伺服器允許接受的範圍. (#5.3.4)/r/n"); return; }

# RedHat/Fedora使用者可能需要為TLS更新檔連結一個include檔案

# 輸入如下指令

ln -s /usr/kerberos/include/com_err.h /usr/include/

# 删除sendmail的連結

rm -rf /usr/sbin/sendmail

#qmail編譯安裝

make setup check

************************注qmail的更新檔在vpopmail安裝之後再打。******************************

# 用你自己的主機名代替下面的mail.tyler110.com

./config-fast mail.acasiasia.com

#設定管理者的郵箱位址。

#發往root/postmaster/mailer-daemon位址的郵件将會由定義的管理者郵箱接收。将如下的“[email protected]"替換成你的管理者郵箱。

cd /var/qmail/alias

echo "[email protected]" > .qmail-postmaster

echo "[email protected]" > .qmail-mailer-daemon

echo "[email protected]" > .qmail-root

chmod 644 /var/qmail/alias/.qmail*

#開啟SPF設定 

echo ./Maildir/ >/var/qmail/control/defaultdelivery

echo 3 > /var/qmail/control/spfbehavior

#添加qmail的幫助手冊

echo MANPATH /var/qmail/man >> /etc/man.config

****************為qmail服務建立監控目錄和日志檔案:*****************

mkdir -p /var/qmail/supervise/qmail-send/log

mkdir -p /var/qmail/supervise/qmail-smtpd/log

mkdir -p /var/qmail/supervise/qmail-pop3d/log

mkdir -p /var/qmail/supervise/qmail-pop3ds/log

cp /home/pkg/toaster-scripts-0.7/send.run /var/qmail/supervise/qmail-send/run

cp /home/pkg/toaster-scripts-0.7/send.log.run /var/qmail/supervise/qmail-send/log/run

cp /home/pkg/toaster-scripts-0.7/smtpd.run /var/qmail/supervise/qmail-smtpd/run

cp /home/pkg/toaster-scripts-0.7/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run

cp /home/pkg/toaster-scripts-0.7/pop3d.run /var/qmail/supervise/qmail-pop3d/run

cp /home/pkg/toaster-scripts-0.7/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run

cp /home/pkg/toaster-scripts-0.7/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run

cp /home/pkg/toaster-scripts-0.7/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run

echo 20 > /var/qmail/control/concurrencyincoming

chmod 644 /var/qmail/control/concurrencyincoming

chmod 755 /var/qmail/supervise/qmail-send/run

chmod 755 /var/qmail/supervise/qmail-send/log/run

chmod 755 /var/qmail/supervise/qmail-smtpd/run

chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

chmod 755 /var/qmail/supervise/qmail-pop3d/run

chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

chmod 755 /var/qmail/supervise/qmail-pop3ds/run

chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run

mkdir -p /var/log/qmail/smtpd

mkdir -p /var/log/qmail/pop3d

mkdir -p /var/log/qmail/pop3ds

chown -R qmaill /var/log/qmail

*********************************************啟動腳本***********************************************

cp toaster-scripts-0.7/rc /var/qmail/rc

chmod 755 /var/qmail/rc

cp toaster-scripts-0.7/qmailctl /var/qmail/bin/

chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/bin

ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

rm -rf /usr/lib/sendmail

ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

********************************** 用daemontools來啟動qmail-send和qmail-smtpd****************************

ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service 

#指令:

# 啟動停止重新開機檢視隊列等

qmailctl start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help

# 檢查服務

netstat -an | grep 25

ps -ef | grep qmail

ps -efl | grep "service errors" | grep -v grep 

******************************************************日志********************************************************

/var/log/maillog

/var/log/qmail/current

/var/log/qmail/pop3d/current

/var/log/qmail/pop3ds/current

/var/log/qmail/smtpd/current

***************我建議重新回顧一下剛才我們所做的步驟以熟悉對qmail的安裝. 下面我們将開始vpopmail的安裝.*************

************************************************安裝vpopmail************************************************

#vpopmail是一個以qmail為基礎的虛拟域管理包其允許在一個IP位址添加多個虛拟域并且可以不需要使用系統帳号做郵件帳号。

#建立目錄:

mkdir -p /home/vpopmail/etc

*********************************** 設定預設域紅色部份改成你要設定的域。********************************************

echo "acasiasia.com" > /home/vpopmail/etc/defaultdomain 

**********************************************設定smtp規則關閉open relays*******************************************

echo '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtp

cd /home/vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

***********************設定MySQL資訊第一個vpopmail是帳号edpmis為密碼第二個vpopmail是資料庫*********************

echo "localhost|0|vpopmail|edpmis|vpopmail" > /home/vpopmail/etc/vpopmail.mysql

chmod 640 /home/vpopmail/etc/vpopmail.mysql

chown -R vpopmail.vchkpw /home/vpopmail/etc

***********************************************在MySQL裡添加vpopmail的帳号********************************************

mysql -uroot -pedpmis

CREATE DATABASE vpopmail;

GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY 'edpmis';

FLUSH PRIVILEGES;

QUIT

**********************************************************************************************************************

+++++開始安裝VPOPMAIL++++++

cd /home/pkg/

tar zxvf vpopmail-5.4.10.tar.gz

cd vpopmail-5.4.10

*********** 帶資料庫支援*************

./configure --enable-incdir=/usr/include/mysql --enable-libdir=/usr/lib/mysql --disable-roaming-users --enable-logging=p --disable-passwd --enable-clear-passwd --disable-domain-quotas --enable-auth-module=mysql --enable-auth-logging --enable-sql-logging --disable-valias --disable-mysql-limits --enable-learn-passwords

make install-strip

#管理:

echo 'export PATH=$PATH:/home/vpopmail/bin' >> /etc/profile

source /etc/profile

**************************添加域紅色部份前面是域名後面是管理者(postmaster)密碼*************************************

vadddomain tyler110.com edpmis

********************************************添加使用者紅色部份為注解不用輸入*****************************************

vadduser -q 10485760S [email protected] 123456

vmoduser -c 熊開想 [email protected]

************************************************** 設定郵箱容量達到90%的警告資訊*************************************

vi /home/vpopmail/domains/.quotawarn.msg 

From: 郵箱管理者

Reply-To: [email protected]

To: 郵箱使用者

Subject: 郵箱空間警告

Mime-Version: 1.0

Content-Type: text/html; charset=gb2312

Content-Transfer-Encoding: base64 

您的郵箱空間已經達到90%.如果想繼續使用請删除一些信件.

如果需要幫助,請聯系郵箱管理者:

Email : [email protected]

*********************************************** 設定郵箱已滿的警告資訊************************************************

echo "郵件被拒絕,使用者的郵箱空間已滿." > /home/vpopmail/domains/.over-quota.msg

#啟動腳本:

cp /home/pkg/toaster-scripts-0.7/vpopmailctl /var/qmail/bin

ln -s /var/qmail/bin/vpopmailctl /usr/bin

chmod 755 /var/qmail/bin/vpopmailctl

**************************************************現在打上qmail的更新檔***************************************************

cd /home/pkg/netqmail-1.05/netqmail-1.05

ln -s /usr/kerberos/include/com_err.h /usr/include/ 

ln -s /usr/kerberos/include/profile.h /usr/include/ 

ln -s /usr/kerberos/include/krb5.h /usr/include/ 

bunzip2 -c /home/pkg/qmail-toaster-0.7.2.patch.bz2 | patch -p0

make clean

qmailctl stop

chown -R vpopmail:vchkpw /var/qmail/spam

*****************************************************建立SSL Key**************************************************

make cert

#按提示輸入公司資訊

[root@mail netqmail-1.05]# make cert

Generating a 1024 bit RSA private key

.............++++++

...............++++++

writing new private key to '/var/qmail/control/servercert.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:GD

Locality Name (eg, city) [Newbury]:SZ

Organization Name (eg, company) [My Company Ltd]:Domain

Organizational Unit Name (eg, section) []:Domain

Common Name (eg, your name or your server's hostname) []:domain.com

Email Address []:[email protected]

make tmprsadh

#注:這裡可能要多等一會

chown -R vpopmail:qmail /var/qmail/control/clientcert.pem /var/qmail/control/servercert.pem

# 用"crontab -e"在crontab裡增加下面這條每天晚上更新temp keys ????????????????????

01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1 

#起動qmail

qmailctl start

# 用daemontools來啟動qmail-pop3d和qmail-pop3ds

ln -s /var/qmail/supervise/qmail-pop3d /service

ln -s /var/qmail/supervise/qmail-pop3ds /service 

#指令:啟動停止重新開機檢視隊列等

vpopmailctl start|stop|restart|stat|pause|cont|help

netstat -an | grep 110

ps -efl | grep "service errors" | grep -v grep

安裝選項參考:

vpopmail 5.4.10

Current settings

-------------------------------------------------------------------------------------------------------------

vpopmail directory = /home/vpopmail

uid = 89

gid = 89

roaming users = OFF --disable-roaming-users (default)

password learning = ON --disable-learn-passwords (default)

md5 passwords = ON --enable-md5-passwords (default)

file locking = ON --enable-file-locking (default)

vdelivermail fsync = OFF --disable-file-sync (default)

make seekable = ON --enable-make-seekable (default)

clear passwd = ON --enable-clear-passwd (default)

user dir hashing = ON --enable-users-big-dir (default)

address extensions = OFF --disable-qmail-ext (default)

ip alias = OFF --disable-ip-alias-domains (default)

domain quotas = OFF --disable-domainquotas (default)

auth module = mysql --enable-auth-module=mysql

mysql replication = OFF --disable-mysql-replication (default)

sql logging = ON --enable-sql-logging

mysql limits = OFF --disable-mysql-limits (default)

MySQL valias = OFF --disable-valias (default)

auth inc = -I/usr/include/mysql

auth lib = -L/usr/lib/mysql -lmysqlclient -lz -lm

system passwords = OFF --disable-passwd (default)

pop syslog = show failed attempts with clear text password

--enable-logging=p

auth logging = ON --enable-auth-logging (default)

all domains in one SQL table = --enable-many-domains (default)

--------------------------------------------------------------

***************************************************POP3和SMTP測試**********************************************************

用outlook測試qmail的smtp和pop3是否正常注意由于vpopmail支援虛拟域名是以在outlook中設定郵件帳号時使用者名後要加上域名

[email protected]。smtp是帶認證的在outlook中也要作相應設定。建議先測試正常後再進行下一步安裝。如果qmail出現問題

可檢視mysql中的vpopmail資料庫/var/log下的mysqld和maillog日志記錄這樣容易很快找出問題。

***************************************安裝iGenus(可選)TOP******************************************************** 

iGENUS 不是一套獨立的郵件系統隻是一個 Webmail 接口需要配合 qmail+vpopmail+Mysql 使用。iGENUS 是由 PHP 寫成采用直接對 

qmail 的 Maildir 進行讀寫操作因而比 IMAP/POP 方式更快一點。

參考http://www.igenus.org

tar zxvf igenus_2.0.2_20040901_release.tgz -C /var/www/ 

cd /var/www/

rm -rf html/

mv igenus html

************************************建temp檔案夾*********************************************************

mkdir /tmp/temp 

chmod -R 0755 /tmp/temp

chown -R vpopmail:vchkpw /tmp/temp

mkdir /home/netdisk

chmod -R 0755 /home/netdisk 

chown -R vpopmail:vchkpw /home/netdisk

chmod -R 0755 /var/www/html/

chown -R vpopmail:vchkpw /var/www/html/

***************************************修改httpd.conf****************************************************

vi /etc/httpd/conf/httpd.conf

User vpopmail 

Group vchkpw

DocumentRoot "/var/www/html/"

AddDefaultCharset GB2312 //使預設頁面為中文

/etc/rc.d/init.d/httpd restart //重新開機apache使修改生效

**********************************************修改config_inc.php檔案**************************************

cd /var/www/html/config 

vi config_inc.php 

$CFG_BASEPATH = "/var/www/html/"; //改成你安裝的目錄

$CFG_MYSQL_HOST = 'localhost'; 

$CFG_MYSQL_USER = 'vpopmail'; //vpopmail通路mysql的帳号

$CFG_MYSQL_PASS = 'xukixu'; //vpopmail通路mysql的密碼

$CFG_MYSQL_DB = 'vpopmail'; //資料庫

$CFG_TEMP = "/tmp/temp"; //删除$CFG_BASEPATH并修改路徑

************************************重新編制Mysql資料庫表格*************************************

1.删除之前建立的域名

vdeldomain tyler110.com

#編輯資料庫

use vpopmail;

drop table lastauth;

drop table vpopmail;

quit;

2.編輯/var/www/html/docs/iGENUS.sql

vi /var/www/html/docs/iGENUS.sql

# phpMyAdmin SQL Dump

# version 2.5.3

# http://www.phpmyadmin.net

# Host: localhost

# Generation Time: Jun 04, 2004 at 11:26 AM

# Server version: 3.23.55

# PHP Version: 4.3.0

# Database : `vpopmail`

# --------------------------------------------------------

#

# Table structure for table `address`

use vpopmail; //加入這一行

CREATE TABLE `address` (

`id` int(11) unsigned NOT NULL auto_increment,

`pw_id` int(5) NOT NULL default '0',

`name` varchar(64) NOT NULL default '',

`email` varchar(128) NOT NULL default '',

UNIQUE KEY `id` (`id`),

KEY `pw_id` (`pw_id`)

) TYPE=MyISAM PACK_KEYS=1 ;

# -----------------------------------------------------

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(48) default NULL,

`pw_dir` varchar(255) default NULL,

`pw_shell` varchar(20) default NULL,

`pw_clear_passwd` varchar(16) default NULL, //加入這一行

`createtime` timestamp(14) NOT NULL,

PRIMARY KEY (`pw_id`),

KEY `pw_name` (`pw_name`,`pw_domain`)

#運作如下指令導入資料表

mysql -uroot -pedpmis </var/www/html/docs/iGENUS.sql

***********************************設定igenus 定義允許上傳下載下傳的郵件的大小************************************

#編輯/etc/php.ini

vi /etc/php.ini

max_execution_time=60

memory_limit=20M

post_max_size = 10M

file_uploads=on

upload_max_filesize=10M

register_globals=On

session.bug_compat_42=0

session.bug_compat_warn=0

sendmail_path = /var/qmail/bin/qmail-inject

********************************************************************************************************

#編輯/etc/http/conf/httpd.conf 

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

DirectoryIndex index.php index.html

NameVirtualHost *:80

ServerName mail.tyler110.com

DocumentRoot /var/www/html

chmod 777 /var/lib/php/session/ -R

*************************************************************************************************************

#重新開機apache:

service httpd restart

#如果需要用vadddomain和vadduser添加新域名和新使用者。

最後打開浏覽器輸入http://mail.tyler110.com/就可以通路網站了。

第七節安裝iGenus_Admin(可選)

一個基于Web的vpopmail域和帳号管理工具。

tar -xzvf igenus_admin_0.1.tgz -C /var/www/html/ 

#設定

***********************************************************************************************************

vi /var/www/html/admin/includes/config_inc.php 

/*-

* iGENUS webmail 

* Copyright (c) 1999-2002 by iGENUS Org. 

* All rights reserved. 

* Author: Wu Qiong 

* $Id: config_inc.php,v 1.11 2004/03/23 13:59:12 wuqiong Exp $ 

*/ 

if(!defined("INCLUDE_CONFIG_OK")) { 

define("INCLUDE_CONFIG_OK","TRUE"); 

/* gid flags defind by vpopmail.h */ 

// define('NO_PASSWD_CHNG',0x01); 

define('NO_POP', 0x02); 

define('NO_WEBMAIL', 0x04); 

// define('NO_IMAP', 0x08); 

// define('BOUNCE_MAIL', 0x10); 

// define('NO_RELAY', 0x20); 

// define('NO_DIALUP', 0x40); 

// define('V_USER0', 0x080); 

// define('V_USER1', 0x100); 

// define('V_USER2', 0x200); 

// define('V_USER3', 0x400); 

define('NO_SMTP', 0x800); 

// define('QA_ADMIN', 0x1000); 

$CFG_VPOPMAIL_HOST = "localhost"; 

$CFG_VPOPMAIL_USER = "vpopmail"; //改為你的帳号 

$CFG_VPOPMAIL_PASS = "xukixu"; //改為你的密碼

$CFG_VPOPMAIL_DB = "vpopmail"; 

$CFG_VPOPMAIL_TABLE = "vpopmail"; 

$CFG_ADMIN_TABLE = "admin"; 

$CFG_LAGESITE = true; 

$CFG_NUMOFPAGE = 20; 

$CFG_MAILBOX['inbox'] = "."; 

$CFG_MAILBOX['outbox'] = ".Outbox"; 

$CFG_MAILBOX['draft'] = ".Draft"; 

$CFG_MAILBOX['trash'] = ".Trash"; 

$CFG_VPOPMAIL_PATH = "/home/vpopmail"; //改為你的vpopmail安裝目錄 

// $CFG_VPOPMAIL_PATH = "/home2/vpopmail"; 

$CFG_SYSADMIN_NAME = "Admin"; 

$CFG_SYSADMIN_PASSWD= '$1$GvmONIco$0SwBB.mEoP3KJ5Zda7ioV0'; 

$CFG_SYSADMIN_PASSWD_FILE = $CFG_VPOPMAIL_PATH . "/etc/syspasswd.dat"; 

$CFG_TIMEOUT = 600; 

$CFG_IGENUS_ADM = "iGENUS郵件系統管理"; 

$CFG_TEMPLATE_PATH = "template/"; 

?>

#儲存退出

touch /etc/syspasswd.dat

chown -R vpopmail.vchkpw /var/www/html 

chmod -R 755 /var/www/html

#登入設定頁面

http://tyler110.com/admin/sys/

使用者:Admin密碼Admin來登入.注意A要大寫..這個管理帳号密碼登入後可以改的

登入後,首先點"更新資料庫"你就會看見你的域名.然後點"編輯"把"登入權限該域管理者Postmaster有權登入進行使用者管理"這一項打勾,确認後,就可以用

http://tyler110.com/admin/

來登入管理了。

-------------------------------------------第八節安裝courier-imapTOP------------------------------------------------------

Courier-IMAP支援IMAP/SIMAP通路

courier-imap 從 4版本開始把 courier-authlib 獨立出來了需要先安裝 courier-authlib. 具體步驟

tar -xjvf courier-authlib-0.55.tar.bz2

cd courier-authlib-0.55

./configure --prefix=/usr/local --exec-prefix=/usr/local --with-authvchkpw --without-authldap --without-authmysql --disable-root-check --with-ssl --with-authchange pwdir=/usr/local/libexec/authlib --with-redhat

make install-configure

#修改設定檔案:/usr/local/etc/authlib/authdaemonrc,去掉不需要的認證模式隻留vchkpw方式然後認證程序改成2個

#完成後啟動它:

/usr/local/sbin/authdaemond start 

#需要把這個腳本放到/etc/init.d, 然後在/etc/rc3.d 或/etc/rc5.d做一個符号連接配接以便系統啟動時自動運作。

#啟動後在記憶體中可以看到2個authlib程序

ps -aef |grep authlib

root 20108 20107 0 Jan28 ? 00:00:00 /usr/local/libexec/courier-authlib/authdaemond

root 20109 20108 0 Jan28 ? 00:00:00 /usr/local/libexec/courier-authlib/authdaemond

#這裡可以想辦法把運作身份改成vpopmail畢竟用root運作如果出現問題影響範圍會大很多。

#測試是否正常:

運作/usr/local/sbin/authtest紅字為輸入内容後面的1121221應該是pop3密碼,後面部分應該是指令結果)

authtest [email protected] 1121221

Authenticated: [email protected] (uid 509, gid 509)

Home Directory: /var/vpopmail/domains/domain.com/xukixu

Maildir: (none)

Quota: (none)

Encrypted Password: $1$LJjMeeeeqqeqF9VWUywtLV/O5ciqeg.

Cleartext Password: xukixu

Options: disablewebmail=0,disablepop3=0,disableimap=0

#出現上面的提示就是說authlib運作正常

#下面來安裝courier-imap

*************************************************************************************************************************

tar -xjf courier-imap-4.0.2.tar.bz2

cd courier-imap-4.0.2

# 作為vpopmail使用者進行安裝

chown -R vpopmail:vchkpw ../courier-imap-4.0.2

su vpopmail

./configure --with-redhat

# 注:Redhat使用者需要使用"--with-redhat"選項

*********************************************************************************************************************

exit

cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imap

chmod 755 /etc/rc.d/init.d/courier-imap

chkconfig --add courier-imap 

***************************************************************************************************************

#配置:

# 修改檔案/usr/lib/courier-imap/etc/authdaemonrc如果沒有則連結/usr/local/etc/authlib/authdaemonrc

authmodulelist="authvchkpw" 

# 修改檔案/usr/lib/courier-imap/etc/imapd 

IMAPDSTART=YES 

# 修改檔案/usr/lib/courier-imap/etc/imapd-ssl 

IMAPDSSLSTART=YES 

# 修改檔案/usr/lib/courier-imap/etc/imapd.cnf 

CN=tyler110.com

[email protected]

# 修改檔案/usr/lib/courier-imap/etc/pop3d.cnf 

[email protected]

**************************************************************************************************************

#啟動:

/etc/rc.d/init.d/courier-imap start 

#使用outlook測試一下IMAP是否正常

********************************************安裝SquirrelMail(可選)*********************************************

SquirrelMail 是一個PHP編寫的IMAP用戶端在安裝SquirrelMail之前要確定你的IMAP正常運作。

**************************************************************

tar -xzvf squirrelmail-1.4.4.tar.bz

cd squirrelmail-1.4.4

cd plugins

tar -xzf ../../quota_usage-1.3-1.2.7.tar.gz

cp quota_usage/config.php.sample quota_usage/config.php

cd ../

./configure

# 你将要設定如下選項

#選擇“2. Server Settings”=>“A. Update IMAP Settings”=>“8. Server software”改成“courier”回到主菜單

選擇“4.General Options”=>“1. Data Directoryand”改成“/var/www/data/”再退回主菜單選擇“8. Plugins”=>添加你希望用到的插件。

回到主菜單選擇“10. Languages”将“ Default Language”改成“zh_CN”“Default Charset”改成“GB2312”。儲存退出。

************************************************************************************************************************

mv data /var/www/

chown -R vpopmail.vchkpw /var/www/data 

mv squirrelmail-1.4.4 /var/www/html/squirrelmail 

**************************************************************************************************************************

#登入http://tyler110.com/squirrelmail 驗證是否安裝成功。

******************************************安裝SqwebMail(可選)**************************************************

Sqwebmail同SquirrelMail一樣,也是一個基于IMAP用戶端的webmail,在安裝它之前,同樣要確定IMAP服務運作正常.

安裝sqwebmail後,如果希望在webmail上直接修改密碼,則需要安裝如下兩個RPM包: 

cd /home/pkg 

rpm -Uvh expect-5.42.1-1.i386.rpm tcl-8.4.7-2.i386.rpm

#下面開始安裝sqwebmail

tar -xjvf sqwebmail-5.0.1.tar.bz2 

cd sqwebmail-5.0.1

./configure --enable-webpass=vpopmail --enable-softtimeout=300 --enable-autopurge=10 --enable-maxpurge=30 --enable-mimecharset=gb2312 --with-maxargsize=5000000 --with-maxformargsize=5000000 --with-maxmsgsize=5000000 --without-ispell --without-authshadow --without-authmysql --without-authldap --without-authuserdb --without-authpwd --without-authpam --with-authvchkpw --without-authdaemon --enable-unicode --enable-hardtimeout=14400 --enable-softtimeout=3600 --enable-webpass=yes  

make configure-check 

umask 220 

make 

make check 

make install-strip 

#完成後啟動腳本在/usr/local/sqwebmail/libexec/sqwebmaild.rc,要把它放到/etc/init.d,并且讓他啟動時運作

/usr/lib/sqwebmail/libexec/sqwebmaild.rc start 

su -c "/usr/lib/sqwebmail/share/sqwebmail/cleancache.pl"  

cp /usr/lib/sqwebmail/libexec/sqwebmaild.rc /etc/init.d/sqwebmaild 

chmod 755 /etc/init.d/sqwebmaild  

ln -s /etc/init.d/sqwebmaild /etc/rc.d/rc3.d/S89sqwebmaild 

ln -s /etc/init.d/sqwebmaild /etc/rc.d/rc5.d/S89sqwebmaild  

用"crontab -e"在crontab裡增加下面這條定時清除cache

crontab -e

*/30 * * * *su -c "/usr/lib/sqwebmail/share/sqwebmail/cleancache.pl"

#登入http://tyler110.com/cgi-bin/sqwebmail 驗證是否安裝成功。

********************************************************安裝Wmail(可選)****************************************************

Wmail其實就是sqwebmail隻不過作者進行了一下漢化和修改了HTML模闆而已

我在這裡就不多說了自己搞定吧

**********************************************安裝Autorespond&EzmlmTOP**********************************************

autorespond是一個自動回複工具可以很好的與qmailadmin配合使用

#安裝:

tar -xvzf autorespond-2.0.5.tar.gz

cd autorespond-2.0.5

*******************************************************安裝Ezmlm ************************************************

exmlm是一個快速強大的郵件清單程式可以通過qmailadmin對其進行配置

************************************************************************************************

tar -xvzf ezmlm-0.53.tar.gz

tar -xvzf ezmlm-idx-0.42.tar.gz

cp -rf ezmlm-idx-0.42/* ezmlm-0.53/

cd ezmlm-0.53

patch < idx.patch

chmod u+x makelang

make man 

#################漢字GB2312支援

make ch_GB

make setup 

************************************************安裝qmailadmin************************************************

qmailadmin除了不能添加删除虛拟域外,幾乎可以完成所有的虛拟域管理

tar -xvzf qmailadmin-1.2.3.tar.gz

cd qmailadmin-1.2.3 

./configure --enable-htmldir=/var/www/html --enable-cgibindir=/var/www/cgi-bin --enable-vpopuser=vpopmail --enable-autoresponder-bin=/usr/bin --disable-ezmlm-mysql --enable-maxusersperpage=20 --enable-maxaliasesperpage=20 --enable-modify-quota --enable-domain-autofill

cd /usr/local/share/qmailadmin/lang

mv en en.bak

cp zh-cn en

qmailadmin 1.2.3

---------------------------------------

cgi-bin dir = /var/www/cgi-bin

html dir = /var/www/html

p_w_picpath dir = /var/www/html/p_w_picpaths/qmailadmin

p_w_picpath URL = /p_w_picpaths/qmailadmin

template dir = /usr/local/share/qmailadmin

qmail dir = /var/qmail

vpopmail dir = /home/vpopmail

autorespond dir = /usr/bin

ezmlm dir = /var/qmail/bin/ezmlm

ezmlm idx = yes

mysql for ezmlm = no

help = no

modify quota = yes

domain autofill = yes

modify spam check = no 

******************************************************************************************************

************************************************安裝Vqregister(可選)************************************************

vqregister是vqsignup的更新版本提供qmail郵箱注冊功能。

#解壓縮

tar zxvf vqregister-2.6.tar.gz

#進入vqregister-2.6安裝目錄

cd vqregister-2.6 

#修改安裝配置檔案Makefile

vi Makefile

#找到這幾行

DEFS = -I$(VDIR)/include -I/usr/local/mysql/include 

LIBS = -L$(VDIR)/lib -lvpopmail -lcrypt -L/usr/local/mysql/lib/mysql -lmysqlclient

INSTALL_DIR = /usr/local/apache/cgi-bin/vqregister

#将它們改成實際路徑這裡是

DEFS = -I$(VDIR)/include -I/usr/include/mysql 

LIBS = -L$(VDIR)/lib -lvpopmail -lcrypt -L/usr/lib/mysql -lmysqlclient

INSTALL_DIR = /var/www/cgi-bin/vqregister

#編譯安裝

make all install clean

#安裝完成後需要編輯vqregister的配置檔案

cd /var/www/cgi-bin/vqregister

vi vqregister.conf 

#修改下面幾項

# 設定管理資訊

AdminEmail [email protected]

# 設定郵箱使用的域名

AllowDomain tyler110.com

#RegisterUser vQregister

# 設定資料庫選項

DB_Name vpopmail

DB_User vpopmail

DB_Password xukixumysql

#其它項目可根據注釋修改不改也行直接儲存即可。

#可以根據需要修改vqregister.email此檔案為使用者注冊後發送給使用者的郵件。

#/var/www/cgi-bin/vqregister/html中的檔案為vqregister的網頁模闆可根據需要漢化和修改。

#測試vqregister

#在浏覽器位址欄輸入http://tyler110.com.com/cgi-bin/vqregister/vqregister.cgi 按要求添入注冊資訊送出後顯示注冊成功資訊證明你的vqregister安裝成功如果出現錯誤請按提示檢查注冊資訊或檢查vqregister.conf檔案。

安裝vQadmin

vqadmin是一個基于web 的控制通道. 它允許系統管理者可以執行root使用者才能進行的操作.

tar -zxf vqadmin-2.3.6.tar.gz 

cd vqadmin-2.3.6

vi db_owner.c 

static const char *host="localhost";

static const char *user="vpopmail";

static const char *passwd="edpmis"; /* NULL for no password */

static const char *db="vpopmail";

./configure 

#現在我們需要将下面幾行添加到httpd.conf檔案中:

deny from all

Options ExecCGI

AllowOverride AuthConfig

Order deny,allow

#儲存檔案并退出.

cd /var/www/cgi-bin/vqadmin

chown nobody .htaccess

chmod 600 .htaccess

# 建立一個管理帳号及密碼

htpasswd -bc /etc/httpd/conf/vqadmin.passwd admin(帳号) adminpass(密碼)

chown vpopmail.vchkpw /etc/httpd/conf/vqadmin.passwd

chmod 644 /etc/httpd/conf/vqadmin.passwd

chown -R vpopmail.vchkpw /var/www/cgi-bin

#編輯.htaccess

vi .htaccess

AuthType Basic

AuthUserFile /etc/httpd/conf/vqadmin.passwd

AuthName vQadmin

require valid-user

satisfy any

#重新開機Apache

在你的浏覽器上測試一下安裝結果:

http://www.tyler110.com/cgi-bin/vqadmin/vqadmin.cgi

***************************************** 安裝SpamAssassin *****************************************

Spam是一個讓人讨厭的字眼. 大部分的人都不喜歡它. 如果你想保護自己免受spam, 你就需要安裝SpamAssassin.

因我在安裝系統的時候已經選擇好了SpamAssassin。現在我們将其更新到最新版

rpm -Uvh spamassassin-3.0.2-2.1.el3.rf.i386.rpm

還需要安裝另外一個軟體包

rpm -Uvh perl-Razor-Agent-2.40-2.i386.rpm

修改起動腳本使spamassassin支援vpopmail

#修改如下一行

vi /etc/init.d/spamassassin

SPAMDOPTIONS="-d -c -m5 -H -x -u spamd -v"

vi /etc/sysconfig/spamassassin

下圖是我在安裝SpamAssassin時所列出的perl子產品,SpamAssassin所要用到的一些Perl子產品是

perl-Time-HiRes

perl-Digest-SHA1

perl-HTML-Parser

perl-DB_File

perl-HTML-Tagset

perl-Razor-Agent

perl-DBI

perl-Net-DNS

perl-URI

這些子產品請安裝上。

#spamassassin的過濾模闆在/etc/mail/spamassassin/local.cf,修改為

vi /etc/mail/spamassassin/local.cf

required_score 5.0

rewrite_header Subject ********SPAM********

report_safe 1

use_bayes 1

skip_rbl_checks 0

ok_languages zh en

ok_locales en ko

score HEAD_ILLEGAL_CHARS 0

score SUBJ_ILLEGAL_CHARS 0

score DATE_IN_PAST_03_06 0

score UPPERCASE_25_50 0

score UPPERCASE_50_75 0

score UPPERCASE_75_100 0

score X_MSMAIL_PRIORITY_HIGH 0

score X_PRIORITY_HIGH 0

score TO_TXT 100

score RATWARE_HASH_2 100

score RATWARE_HASH_2_V2 100

score BAYES_99 0.1

score BAYES_80 0.1

score BAYES_60 0.1

score FROM_ILLEGAL_CHARS 0.1

score MIME_BASE64_TEXT 0.1

score NO_RDNS_DOTCOM_HELO 0.1

score CHINA_HEADER 0.1

score NO_REAL_NAME 0.2

score HTML_MESSAGE 0.2

score MIME_HTML_ONLY 0.2

score MIME_HTML_ONLY_MULTI 0.2

score FORGED_MUA_OUTLOOK 0.2

score FORGED_HOTMAIL_RCVD 0.2

score FORGED_OUTLOOK_TAGS 0.2

score MAILTO_TO_SPAM_ADDR 0.2

#黑白名單

whitelist_from *@domain.com

# ---------------------------------------------------------------------------

# 使用中國反垃圾郵件聯盟的CBL/CDL

# URL: http://www.anti-spam.org.cn/

header RCVD_IN_CBL eval:check_rbl('cbl', 'cbl.anti-spam.org.cn.')

describe RCVD_IN_CBL Received via a relay in cbl.anti-spam.org.cn

tflags RCVD_IN_CBL net

header RCVD_IN_CDL eval:check_rbl('cdl-notfirsthop', 'cdl.anti-spam.org.cn.')

describe RCVD_IN_CDL CDL: dialup sender did non-local SMTP

tflags RCVD_IN_CDL net

#SCORE

score RCVD_IN_CBL 4.0

score RCVD_IN_CDL 3.0

#運作ntsysv,将spamassassin設定的為開機運作

#使用CCERT 中文垃圾郵件過濾規則集Chinese_rules.cf

wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

#啟動SpamAssassin

service spamassassin start

#定期自動更新中文反垃圾郵件規則

crontab –e

#加入

0 0 1 * * wget -N -P /usr/share/spamassassin http://www.ccert.edu.cn/spam/sa/Chi....d/spamassassin restart;/etc/init.d/spamassassin restart;

#建立SpamAssassin的學習系統

sa-learn --sync -D -p user_prefs 

#檢視自學習的資料資訊

sa-learn --dump all 

#檢視調試資訊

spamassassin --lint –D

*****************************************************安裝Clamav TOP*****************************************************

#添加所需的組和使用者

groupadd clamav

useradd -g clamav -s /bin/false clamav

#安裝軟體

tar -xzvf clamav-0.83.tar.gz

cd clamav-0.83

./configure --disable-zlib-vcheck

make check

#測試Clamav 

clamscan --recursive --log=/tmp/clamscan.log ./ //掃描目前目錄測試clamscn是否運作

cat /tmp/clamscan.log

#更改/usr/local/etc/freshclam.conf檔案去掉下面選項前面的

vi /usr/local/etc/freshclam.conf

#Example //前面加上"#" 

UpdateLogFile /var/log/freshclam.log //去掉前面的#

LogSyslog //去掉前面的#

PidFile /var/run/freshclam.pid //去掉前面的#

更改/usr/local/etc/clamd.conf檔案去掉下面選項前面的

vi /usr/local/etc/clamd.conf

#Example //前面加上# 

LogFile /var/log/clamav/clamd.log //去掉前面的# 

LogFileMaxSize 2M //去掉前面的

LogTime //去掉前面的

PidFile /var/run/clamd.pid //去掉前面的 

ScanMail //去掉前面的#

touch /var/log/freshclam.log 

chmod 644 /var/log/freshclam.log 

chown clamav:clamav /var/log/freshclam.log 

mkdir /var/lib/clamav

chown clamav:clamav /var/lib/clamav

#更新clamscan病毒庫

freshclam --verbose

#把freshclam加入crontab 定時更新病毒庫,自動掃描/home目錄

0 1 * * * freshclam --quiet -l /var/log/freshclam.log

0 6 * * * /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

#建立freshclam日志記錄檔案

mkdir -p /var/log/clamav

touch /var/log/clamav/clamd.log

chown clamav.clamav -R /var/log/clamav/

chmod 644 -R /var/log/clamav/

#建立clamav啟動腳本

===================================================================================================

vi /etc/rc.d/init.d/clamav

#!/bin/sh

# Startup / shutdown script for Clam Antivirus

case "$1" in

start)

/usr/local/sbin/clamd && echo -n 'Clamd started'

/usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log

echo -n ' freshclam started'

;;

stop)

/usr/bin/killall clamd > /dev/null 2>&1 && echo -n 'Clamd stoped'

/usr/bin/killall freshclam > /dev/null 2>&1 && echo -n ' freshclam Stoped'

*)

echo ""

echo "Usage: `basename $0` { start | stop }"

exit 64

esac

=====================================================================================================

#使其能夠執行

chmod 755 /etc/init.d/clamav

#随開機起動

ln -s /etc/init.d/clamav /etc/rc.d/rc3.d/S88clamav

ln -s /etc/init.d/clamav /etc/rc.d/rc5.d/S88clamav

*****************************************************安裝MailDrop 和TNEF reader *****************************************************

TNEF是一個從"application/ms-tnef". 類型中找出MIME附件的程式.這僅僅是微軟系統中的一種附件.TNEF程式允許将封裝成TNEF的附件提取出來. 安裝TNEF并不是必須的, 但我強烈推薦安裝它!

# 安裝 maildrop

tar -xjvf maildrop-1.8.0.tar.bz2

cd maildrop-1.8.0

make install-man

# 安裝 the tnef

tar -xzvf tnef-1.2.3.1.tar.gz

cd tnef-1.2.3.1

#使用Maildrop調用SpamAssassin 

#在/home/vpopmail/domains/localhost.com(你建立的域)/ 建立mailfilter檔案

touch mailfilter 

chown vpopmail:vchkpw mailfilter 

chmod 700 mailfilter 

vi mailfilter

#mailfilter内容如下

VHOME=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST` 

VSPAM=`/home/vpopmail/bin/vuserinfo -d $EXT@$HOST` 

`test -d $VHOME/Maildir/`

if( $RETURNCODE != 0 )

{

echo "Sorry , but the user $EXT@$HOST dos not exist"

EXITCODE=77

}

if ( $SIZE < 262144 ) 

exception { 

xfilter "/usr/bin/spamc -f -u $EXT@$HOST" 

if (/^X-Spam-Flag: YES/) 

to "$VSPAM/Maildir/.Trash/." 

EXITCODE=0 

else 

to "$VHOME/Maildir/."

#修改.qmail-default内容如下

vi .qmail-default

| preline /usr/local/bin/maildrop mailfilter

第十九節安裝qmail-scanner&qms-analog TOP

為了能夠掃描郵件伺服器中進出的郵件, 我們需要安裝 qmail-scanner. 如果你之前沒有安裝perl-suidperl,我們還需要安裝它

rpm -Uvh perl-suidperl-5.8.5-12.1.1.i386.rpm

#解開qmail-scanner...

tar zxvf qmail-scanner-1.25.tgz

#解壓qms-analog...

tar zxvf qms-analog-0.4.2.tar.gz

cd qms-analog-0.4.2

make all

#下一步我們拷貝所需要的qms-analog檔案到qmail-scanner安裝目錄

cp qmail-scanner-1.25-st-qms-20050219.patch /home/pkg/qmail-scanner-1.25

#現在讓我們打上qms-analog更新檔

cd /home/pkg/qmail-scanner-1.25

patch -p1 < qmail-scanner-1.25-st-qms-20050219.patch

#繼續安裝qmail-scanner,添加所需的組和使用者

groupadd qscand

useradd -g qscand -s /bin/false qscand

#我們通過qms-config-script腳本來安裝qmail-scanner編輯qms-config-script

vi qms-config

#修改下面紅色部份以達到我們的需求

./configure --domain domain.com /

--admin postmaster /

--local-domains "domain.com" /

--add-dscr-hdrs yes /

--dscr-hdrs-text "X-Antivirus-MYDOMAIN" /

--ignore-eol-check yes /

--sa-quarantine 0 /

--sa-delete 0 /

--sa-reject no /

--sa-subject ":SPAM:" /

--sa-alt yes /

--sa-debug no /

--notify admin /

--redundant yes /

--qms-monitor no /

--lang en_GB /

--debug no /

--unzip yes /

--scanners clamscan,verbose_spamassassin /

"$INSTALL"

#注意: "--admin" 和 "--domain" 參數組成了帳号"user"@"domain name". 警告消息将通過qmail-scanner 發往這個郵件帳号, 是以必須确認這是一個管理級别的帳号. 另外,所有域的警告資訊都會發給這個帳号, 是以一定要小心.

#儲存并退出。

#現在我們測試qmail-scanner安裝

chmod 755 qms-config

./qms-config

#在第一步時, 按y 允許qmail-scanner提前configure. 第二步時, 按y,建立 qmail-queue-scanner.pl 檔案.

#測試如果沒有錯誤 ,就可以進行下一步安裝

./qms-config install

#看看/var/qmail/bin/qmail-scanner-queue.pl是否存在

chown qscand:qscand /var/qmail/bin/qmail-scanner-queue.pl

chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl

#然後用一個普通使用者登陸執行/var/qmail/bin/qmail-scanner-queue.pl -z

#如果沒有Can't do setuid出現安裝OK

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -z

#檢視qmailscan目前包含的特征

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -r

#儲存qmailscan定義特征的修改使他生效。

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -g

chown -R qscand:qscand /var/spool/qmailscan

vi /var/qmail/supervise/qmail-smtpd/run

#在你的qmail啟動腳本修改紅色部份

qmailDUID=`id -u vpopmail`

NOFILESGID=`id -g vpopmail`

PATH=$PATH:/usr/local/bin:/var/qmail/bin

qmailQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export qmailQUEUE

MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`

exec /usr/local/bin/softlimit -m 40000000 /

/usr/local/bin/tcpserver -v -H -R -l 0 /

-x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" /

-u "$qmailDUID" -g "$NOFILESGID" 0 smtp /

/var/qmail/bin/qmail-smtpd /

/home/vpopmail/bin/vchkpw /bin/true 2>&1

#後重新啟動smtp服務

qmailctl stat

#這裡有測試程式

cd /home/pkg/qmail-scanner-1.25/contrib/

chmod 755 test_installation.sh

./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-p_w_uploads.txt

#主要的排錯監測日志

/var/spool/qmailscan/quarantine.log

/var/spool/qmailscan/qmail-queue.log

/var/spool/qmailscan/qms-events.log

/var/log/clamav/clamd.log

第二十節安裝qmailAnalog & qlogtoolsTOP

qmailanalog針對qmail的日志進行一些最基本的分析并将結果發送到你指定的位置。在我的方案中設定qmailanalog每天晚上運作并将結果發送給管理者。在使用qmailanalog時我們還将會用到qlogtools軟體包。

qlogtools提供一系列分析qmail日志的工具這些工具将檔案中誨澀難懂的日志轉換成便於我們閱讀和能夠了解的報告。當安裝完成qmailstats和Qlogtools後我将會建立一個腳本讓它每天晚上運作并将報告發送到管理者郵箱。這個腳本也可用到我們先前安裝的qms-analog,qms-analog将會提供qmail-scanner運作狀态報告。

#先安裝qmailanalog

tar zxvf qmailanalog-0.70.tar.gz

cd qmailanalog-0.70

patch < /home/pkg/qmailanalog-0.70.errno.patch

make && make setup check

#安裝qlogtools

tar zxvf qlogtools-3.1.tar.gz

cd qlogtools-3.1

patch < /home/pkg/qlogtools_errno.patch

./installer

#現在我們要建立一個腳本并将它添加到cron,讓其每天晚上運作并産生報告。

#下面是一個可靠的腳本它将會收集qmailanalog輸出的資訊并産生報告。

cp /home/pkg/qms-analog-0.4.2/qmailstats /var/qmail/bin/

#紅色部份改成你的域名。

vi /var/qmail/bin/qmailstats

# qmailanalog invocation script

PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:/bin:/usr/bin:/usr/local/bin

qmailSTATS="/tmp/q.$$"

EMAILMSG="/tmp/qms.$$"

umask 077

cat /var/log/qmail/* /var/log/qmail/pop3d/* /var/log/qmail/pop3ds/* /var/log/qmail/smtpd/* | tai64n2tai | awk '{$1=substr($1,1,index($1,".")+6);print}' | matchup > $qmailSTATS 5>/dev/null

DATE=`date +'%D'`

echo "To: [email protected]" > $EMAILMSG

echo "From: [email protected]" >> $EMAILMSG

echo "Subject: Nightly qmail Stats Report for $DATE" >> $EMAILMSG

echo "" >> $EMAILMSG

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG

zoverall < $qmailSTATS >> $EMAILMSG

zfailures < $qmailSTATS >> $EMAILMSG

zdeferrals < $qmailSTATS >> $EMAILMSG

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~ L a s t 2 4 H o u r s ~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG

cat /var/spool/qmailscan/qms-events.log | qms-analog 24 >> $EMAILMSG

echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A l l R e c o r d s ~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG

cat /var/spool/qmailscan/qms-events.log | qms-analog 0 >> $EMAILMSG

cat $EMAILMSG | qmail-inject

rm -f $qmailSTATS

rm -f $EMAILMSG

#設定此腳本可執行

chmod 750 /var/qmail/bin/qmailstats

#現在讓我們運作腳本

/var/qmail/bin/qmailstats

#确認你的管理者郵箱你将會收到一份非常詳盡的報告。

#如果測試運作正常那就加入cron讓其每天早上3點運作。

0 3 * * * /var/qmail/bin/qmailstats 1>/dev/null 2>/dev/null

第二十一節安裝isoqlogTOP

isoqlog是一個qmail日志分析工具它是用perl寫的可以分析和統計qmail的運作日志并生成漂亮的HTML格式的報表如果伺服器上已經安裝WEB服務管理者就可以通過浏覽器來檢視這些報表。相對于qmailanalog,isoqlog分析的項目稍微少一些。

isoqlog可以生成多個郵件域的報表對于每個郵件域isoqlog可以統計出每天、每月、每年的郵件流量以及位元組數還生成相應的統計柱狀圖對于每天的報表isoqlog可以根據郵件投遞的數量以及位元組數的多少來對郵件使用者進行排列。

#安裝isoqlog

tar zxvf isoqlog-2.1.1.tar.gz

cd isoqlog-2.1.1

cd isoqlog

mkdir /var/www/html/isoqlog

cp -pr ./htmltemp/p_w_picpaths ./htmltemp/library /var/www/html/isoqlog

#配置isoqlog

cd /usr/local/etc

mv isoqlog.conf-dist isoqlog.conf

vi isoqlog.conf

#将下面紅色部份改成你的安裝目錄和主機名稱。

#isoqlog Configuration file

logtype = "qmail-multilog" #log type qmai-multilog, qmail-syslog, sendmail, postfix

logstore = "/var/log/qmail" #

domainsfile = "/usr/local/etc/isoqlog.domains" #

outputdir = "/var/www/html/isoqlog" #html outpur directory

htmldir = "/usr/local/share/isoqlog/htmltemp"

langfile = "/usr/local/share/isoqlog/lang/english"

hostname = "mail.domain.com"

maxsender = 100

maxreceiver = 100

maxtotal = 100

maxbyte = 100

#下一步是告訴isoqlog哪些虛拟域需要産生統計報表我希望我的mail伺服器能夠報告每個域的狀态是以隻需要簡單的建立了個連結即可

ln -s /var/qmail/control/rcpthosts isoqlog.domains

#現在isoqlog應該能夠正常運作了運作如下指令測試一下效果

/usr/local/bin/isoqlog

#通過如下頁面檢視輸出結果

http://domain.com/isoqlog

#你可以點選各個虛拟域名稱顯示其報表。

#我們希望isoqlog能夠即時提供報表将如下内容加入crontab

58 * * * * /usr/local/bin/isoqlog 1>/dev/null 2>/dev/null

#每個小時的第58分鐘運作一次

第二十二節安裝MRTGTOP

多路由器通信螢幕(MRTG)是在網絡鍊路上監控通信負載的一件工具。 MRTG 産生包含圖表的HTML網頁,它可以将系統中的通信情況實時的顯示在頁面上。我們可以在我們的系統上使用它來監控電子郵件和spam情況。

rpm -Uvh mrtg-2.10.15-1.i386.rpm

#通過安裝inter7的qmailmrtg ,我們将在我們的系統上安裝MRTG

# 編譯 qmailmrtg

tar -xzf qmailmrtg7-4.0.tar.gz

cd qmailmrtg7-4.0

mkdir /var/www/html/qmailmrtg

cp qmail.mrtg.cfg index.html /var/www/html/qmailmrtg

cd /var/www/html/qmailmrtg/

#修改 qmail.mrtg.cfg 和 index.html檔案, 将所有出現FQDN 的地方都改成你的完整域名(例如: test.com). 如果你的HTTP MRTG目錄并不是預設的 (例如: 你并沒有把 /var/www/html/作為你的web根目錄), 則必須在/var/www/html/qmailmrtg/qmail.mrtg.cfg 檔案中修改WorkDir變量為正确的路徑. 如果你不需要記錄某項服務, 你可以在所不需要記錄的服務每一行的前面加一個# 來注釋掉它,并删除index.html中對應的服務項目。

#你可以修改 pop3和smtp所在的行, 設定MaxBytes參數來重寫tcpserver中-cX所在行.

#你還可以修改concurrency來重寫concurrencyremote或concurrencylocal 的值. 如果這些檔案在/var/qmail/control 目錄下并不存在,則qmail預設的值為20.

#下面是我們的最後一步,将下面一段添加到crontab中, 以使我們能每五分鐘更新一次MRTG資料. 運作如下指令:

#添加下面一段 (使MRTG每五分鐘運作一次) 然後退出crontab:

*/5 * * * * /usr/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg 2>&1 > /dev/null

#現在運作MRTG三次來安裝它. 你将會收到3次警告消息. 之後,你将不會再收到警告了.

env LANG=C /usr/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg

#現在應該安裝好了. 為了能顯示些資訊,我們等待15分鐘的日志記錄. 你可以通過下面的位址來檢查圖形監控情況:

http://your.host.name/qmailmrtg/

檢視它們的圖形監控情況!

第二十三節測試TOP

測試igenus

http://domain.com/

測試qmailadmin

http://domain.com/cgi-bin/qmailadmin

測試vQadmin

http://domain.com/cgi-bin/vqadmin/vqadmin.cgi

測試SMTP認證

[root@mail pkg]# telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 domain.com ESMTP

ehlo domain.com

250-domain.com

250-STARTTLS

250-PIPELINING

250-8BITMIME

250-SIZE 0

250 AUTH LOGIN PLAIN CRAM-MD5

starttls

220 ready for tls

quit

Connection closed by foreign host.

[root@mail pkg]#

測試POP3

[root@mail pkg]# telnet localhost 110

+OK <[email protected]>

user [email protected]

+OK

pass xukixu

測試IMAP

[root@mail pkg]# telnet localhost 143

* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information.

a001 login [email protected] xukixu

a001 OK LOGIN Ok.

a001 login out

a001 NO Error in IMAP command received by server.

a001 logout

* BYE Courier-IMAP server shutting down

a001 OK LOGOUT completed

第二十四節系統維護TOP

郵件系統相關日志

第二十五節FAQ(網上收集TOP

設定qmail使用者郵箱的容量

cd /home/vpopmail/bin

./vsetuserqutoa domain.com 10500000s --domain.com這個域都設成10m的

./vsetuserqutoa [email protected] 10500000s ---隻把[email protected]這個使用者單獨設定為10m。

qmail限制附件的大小

在/var/qmail/control/databytes 檔案中設定附件的大小可以實作對qmail附件大小的限制一般安裝完成後這個檔案是沒有的你可以自己建立。smtp方式是以qmail的databytes作限制的建立databytes并設定郵件最大為4m :

echo 4000000 >/var/qmail/control/databytes

限制單域的郵箱數量

vi /home/vpopmail/domains/domain.com/.qmailadmin-limits

maxpopaccounts 200

default_quota 52428800s

chmod 700 /home/vpopmail/domains/domain.com/.qmailadmin-limits

chwod vpopmail:vchkpw /home/vpopmail/domains/domain.com/.qmailadmin-limits

這樣就把郵箱總數限制在200個每個郵箱為50M了

用qmail封mailfrom

vi/var/qmail/control/badmailfrom

這個控制檔案實作拒收郵件功能的每一個位址要單獨一行。而且不用重起qmail就能生效。例如

[email protected] -----限制一個特定的使用者

@sina.com -----限制整個域中的郵件

批量添加使用者

例1

建立一檔案 batchadduser.sh将以下内容拷入檔案中儲存運作chmod u+x batchadduser.sh使其可執行。

#!/bin/bash

#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

user檔案内容的格式

username1 passwd

username2 passwd2

............

運作batchadduser.sh user即可批量添加使用者。

例2

我把使用者名放到一個文本檔案中一個名字一行密碼和它的帳号一緻使用者自己再去改密碼。

while read line

echo $line

./vadduser $line $line

done < user

有選擇地清理不需要的Mail Queue

1、處理隊列中的郵件

如想在隊列中的郵件馬上傳遞可以

kill -HUP qmail-send

要删除隊列中的郵件

1) 停止qmail

2) mv /var/qmail/queue/lock /var/qmail/;find /var/qmail/queue/ -type f -exec rm {} /; ;mv /var/qmail/lock /var/qmail/queue/

3) 重新開機qmail.

隊列中的郵件包含在以下目錄中 /var/qmail/queue/{info,mess,remote,local}/hash/#number

2、在郵件隊列中快速删除從一個地方發過來但又不存在的郵件設bad.jite.com是這個域。可以鍵入以下指令

echo # > ~alias/.qmail-baddomain-default

echo bad.jite.com:alias-baddomain>> /var/qmail/control/virtualdomains

echo bad.jite.com:127.0.0.1 >> /var/qmail/control/smtproutes

然後運作/var/qmail/bin/qmail-tcpok給qmail-send 一個HUP信号

3、删除隊列中的大量廣告資訊

先停止qmail.

1) 停止qmail, qmail-smtpd

2) 在以下預設目錄下 /var/qmail/queue/mess

find /var/qmail/queue/mess -type f -exec grep "^Subject:dss" {} /; -print -exec rm {} /;

3) 運作queue-fix清除相關檔案,

4) 重新開機qmail.

使用sh備份qmailmysql資料到指定的ftp位址的方法

備份vpopmail的domains目錄、qmail的control目錄和mysql的var資料存放目錄使用crontab定時進行操作。下面是腳本檔案具體的目錄視自己的系統更改:

mkdir /var/qmailbakup

cd /var/qmailbakup

touch qmailbakup.sh

chmod 755 qmailbakup .sh

vi qmailbakup.sh

DATE=`date +%Y-%m-%d-%H`

cd /var/qmailbakup/

tar cvzf domains.$DATE.tar.gz /home/vpopmail/domains

tar cvzf control.$DATE.tar.gz /var/qmail/control

tar cvzf mysql.$DATE.tar.gz /usr/local/mysql/var

ftp -n 192.168.0.21 << ! //你的ftp伺服器的位址

user qmail qmailbakup //ftp使用者名和密碼注意要有put權限

binary

put domains.$DATE.tar.gz

put control.$DATE.tar.gz

put mysql.$DATE.tar.gz

bye

!

rm -f domains.$DATE.tar.gz control.$DATE.tar.gz mysql.$DATE.tar.gz //删除本機産生的檔案如果你想在本伺服器也儲存一份備份去掉該項即可。

使用crontab定時執行

vi /etc/crontab

00 20 * * 0-6 /var/qmailbakup/qmailbakup.sh

這樣每天晚上800執行改備份程式。

給新浪發信的解決辦法

1) echo "我的郵件伺服器的真實域名(A記錄)" > /var/qmail/control/helohost

2) 撥打新浪郵件售後服務電話

臨時限制一個使用者的pop3

vmoduser -p email_addr or domain ( for the entire domain )

修改預設的域名

A:

要更改haohao.com為預設域。

方法

更改~qmail/control/

defaultdomain

me

plusdomains

逐一更改啟動pop3和 smtp的啟動腳本

修改email.3sk.com為haohaoo.com

在最上邊添加export VPOPMAIL_DOMAIN=haohaoo.com

将一個系統的qmail使用者完整地轉移到另一個系統

a.cdb配置的?那麼請把/home/vpopmail/domains這個檔案夾備份好就可以了。使用者和密碼檔案還有使用者信件都在這個目錄下。

還應該備份/var/qmail/control下的相關配置檔案。

b.如果是以MYSQL資料庫方式來存儲使用者認證資訊的

隻需要備份

~vpopmail/domain下的所有郵件

/var/qmail/control的配置檔案

MYSQL資料庫目錄下的vpopmail庫目錄。一般是/var/lib/mysqlRPM、/usr/local/mysql/data、/usr/local/mysql/var下面。

把一郵件域的名字比如a.com更改為b.com如何實作

以下幾個步驟

1、cd /home/vpopmail/domains

mv a.com b.com

2、把vpopmail資料庫的vpopmail表導出把所有a.com改為b.com然後删除vpopmail表再導入.

3、把把vpopmail資料庫的dir_control表的a.com改為b.com

4、在/home/qmail/control 目錄下把 virtualdomains和rcpthosts下的的a.com改為b.com.

5、在/home/qmail/users目錄下把assign檔案的a.com改為b.com

6、需要運作qmail-newu重新生成cdb。assign隻是配置檔案cdb才是實際的資料檔案。

加快 qmail 投遞郵件速度

A: /var/qmail/control下面是qmail的控制檔案這兩個檔案

Concurrentcylocal default: 10 最大學地同時傳送數

Concurrencyremote default: 20 最大遠端同時傳送數

更改域的預設管理賬号

A: vmoduser有個-a參數可以賦予使用者管理權限。

如果想全面禁用postmaster的特殊權限話就隻能改源代碼了。

qmail下的主要配置檔案/var/qmail/control目錄下

檔案名 預設值 使用者用途

badmailfrom none qmail-smtpd 黑名單位址

bouncefrom MAILER-DAEMON qmail-send 退回郵件

bouncehost me qmail-send 退回郵件

concurrencylocal 10 qmail-send 本地同時投遞郵件的數目

concurrencyremote 20 qmail-send 同時投遞至遠端主機的數目

defaultdomain me qmail-inject 預設域名

defaulthost me qmail-inject 預設主機名

databytes 0 qmail-smtpd 郵件的最大容量 (0=無限制)

doublebouncehost me qmail-send

doublebounceto postmaster qmail-send

envnoathost me qmail-send 沒有"@"的預設域名

helohost me qmail-remote 主機名

idhost me qmail-inject Message-ID的主機名

localiphost me qmail-smtpd 本地IP的替代名

locals me qmail-send 傳遞至本地的域名

me 系統正式域名 various

morercpthosts none qmail-smtpd 第二個rcpthosts

percenthack none qmail-send 使用 "%"格式的域名

plusdomain me qmail-inject

qmqpservers none qmail-qmqpc QMQP伺服器的IP位址

queuelifetime 604800 qmail-send 在隊列中郵件儲存的時間秒

rcpthosts none qmail-smtpd 接收郵件的域名

smtpgreeting me qmail-smtpd

smtproutes none qmail-remote

timeoutconnect 60 qmail-remote SMTP連接配接逾時時間

timeoutremote 1200 qmail-remote 等待遠端主機的時間

timeoutsmtpd 1200 qmail-smtpd SMTP客戶連接配接逾時的時間

virtualdomains none qmail-send 虛拟域名

qmail限制附件大小

我的配置經驗==》qmail限制附件大小

1.在/var/qmail/control/databytes 中設定附件大小這個檔案要手動建立直接輸入數字就行預設機關為bytes,如10485760為10M

2.Webmail中發送附件預設隻支援500K左右,如想支援5M附件修改如下檔案

post_max_filesize=5M //320行

upload_max_filesize=5M //405行

session.bug_compat_42=0 //加入到641行

vi /etc/httpd/conf.d/php.conf

LimitRequestBody 5242880 //修改14行的值為5M

WebMail上傳附件大小限制 (解決上傳檔案不能大于512KB的問題)

更改/etc/httpd/conf.d/php.conf:

LimitRequestBody 524288中的524288正好跟512KB相等将其更改為10485760,設定允許最大上傳的附件為10MB。

|/usr/local/bin/autorespond 10000 5

|表示調用一個程式來處理該郵件這裡是調用autorespond來處理10000表示允許處理信 

件的總時間5表示在這段時間内的最大郵件

限制你的郵件清單被濫用 

你需要在郵件清單檔案頭加入一個過濾程式。一種選擇是使用qmail的更新檔程式 qlist 你可以在官方站點qmail.org找到它。它會使用 pgp 來标記你的郵件資訊一個包含pgp辨別的過濾的郵件清單大緻如下

|if grep "^-----BEGIN PGP MESSAGE-----$"; then exit 0; else exit 100; fi 

|if grep "^-----END PGP MESSAGE-----$"; then exit 0; else exit 100; fi 

|if pgp -f; then exit 0; else exit 100; fi 

+list 

&address 

...

隻有郵件清單允許的使用者假定是别名才擁有pgp的密鑰。或者為需要的使用者指定一個密鑰檔案。 另外一種過濾器通過檢查郵件判斷是否來自本地使用者或者來自最近的qmail-smtpd程序。如果是本地使用者就允許通過遠端站點的就退回該信件。它的形式如下

|if grep Received: | tail +1l | grep network; then echo 

"This is a moderated list"; exit 100; fi 

如果不是本地系統的使用者你可以配置設定一個别名(記得chmod 700 ~alias)使它能投遞到郵件清單。運作

|grep -v '^Delivered-To:' | forward LISTNAME

必須删除 Delivered-To: 這行否則将它放棄這個别名

如果你不想讓一份無法投遞的郵件在隊列裡呆太久 

你可以在 queue/info 目錄裡運作

touch -d '1 week ago'

來結束它的隊列生命周期。這樣如果再次投敵不成功這份郵件就會被退回

裝完qmail後用本地的信箱或外面的信箱發信過來都顯示錯誤: 

delivery 12: failure: Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/沒有建立使用者的Maildir目錄.請記住建立maildir目錄的組和使用者權限必須正确

maillog裡面出現 

"Unable_to_open_./Maildir:_is_a_directory._(#4.2.1)/"在修改rc裡的./Mailbox 改成 ./Maildir/時出錯

oh:_.qmail_has_file_delivery_but_has_x_bit_set._(#4.7.0)/ 

.qmail檔案多了個x标志位, 運作chmod a-x .qmail

"Unable_to_open_./Maildir:_is_a_directory._(#4.2.1)/"使用者的.qmail所在地方不對此檔案必須存在于使用者的HOME裡面

tcpserver執行qmail-smtpd 時預設的為40個程序 

要想修改更多的話例200個 tcpserver -c 200 

tcpserver -v -u uid -g gid 0 smtp /var/qmail/bin/qmail-smtpd / 

2>&1 | /var/qmail/bin/splogger smtpd 3 & 

&不要省略

如何清除90天前的郵件

find /home/vpopmail/domains/ -ctime +90 -type f -path '*Maildir/cur*' | xargs -i --verbose rm '{}' 2>&1

qmail拒收某個IP或網段的郵件 

編輯你的tcp.smtp檔案加入 

對方的IP:deny 

或者: 

某個網段.:deny 

例2.82.34.:deny 

來禁止2.82.34的整個網段的通路。 

然後使用tcprules重新生成tcp.smtp.cdb檔案。

qmail自動删除發給系統上不存在的郵件帳号的信而且不産生系統退信

echo'|/var/vpopmail/bin/vdelivermail' 'delete'> /var/vpopmail/domains/yourdomain.com/.qmail-default

這會把發給不存在的使用者的信直接删除掉.

清除qmail的郵件隊列 

安裝qmail-remove 

qmail-remove -r

這步會把所有隊列内容移動到/var/qmail/queue/yanked目錄下。 

接下來可以決定如何處理該目錄的内容了垃圾郵件

有沒有簡單的方法可以阻止某些使用者發郵件到外部位址 (或内部伺服器)? 

A: 可以.注意NO_RELAY标志,它可以對任何使用者起作用: 

vmoduser -r email@domain

有沒有方法可以拒絕整個域的POP連接配接,而不單是某個郵件位址?

A: 當然.vmodeuser可以幫你解決問題: 

vmoduser -p domain.com

qmail控制檔案的作用 

qmail-inject 

qmail-inject接受本地郵件消息後檢測郵件頭是否符合RFC822标準并傳送給qmail-queue排進隊列 

defaultdomain 用來向那些沒有使用正确的[email protected]格式的郵件中增加郵件位址的預設情況下如果主機位址中沒有結束符"."qmail-inject将給主機名後添加defaultdomain的内容如果該檔案不存在将使用me檔案中的值代替.例如defaultdomain值為yourdomain.com本地産生了一封發送給xxxx@xxxx的郵件那麼qmail-inject将用yourdomain.com來補全這個字尾變成[email protected]

defaulthost 用來定義主機名用來向位址中不含主機名的郵件補足郵件位址的。類似于defaultdomain。例如defaulthost值為yourdomain.com那麼發送給 xxxx的消息将被qmail-inject用defaulthost的值來補足為[email protected],以便于qmail-send快速分辨是否屬于本地位址。 

idhost 用來指定郵件中Message-ID:頭字段的主機名例如idhost值為yourdomain.com那麼郵件頭中如下 

Message-ID:<[email protected]> 

如果idhost值為xxxx.yourdomain.com 那麼郵件頭中如下 

Message-ID:<[email protected]> 

plusdomain 

用來将其值添加在任何一個以一個+号結尾的位址 

qmail-qmqpc qmail-qmqpc是快速郵件排隊協定(QMQP)使用的程式QMQP是一個QMAIL專用協定用在工作站級QMAIL伺服器向中心伺服器發送隊列。 

qmqpservers 用來指定qmail-qmqpc使用的上級伺服器 

通常該功能應用很少我認為qmail-qmqpc用法就是代替qmail-queue來直接傳給上級伺服器。 

qmail-remote 

qmail-remote通過SMTP協定向遠端主機傳送郵件。 

helohost 該檔案用來指定qmail-remote程式與遠端郵件主機SMTP會話中的主機名。 

smtproutes 用來指定到固定目的的靜态SMTP路線。 

例子smtproutes内容如下 

xxxx.yourdomain.com:mail8.xxxx.jp 

:fw.xxxx.yourdomain.com:8088 

第一行的存在會将發給xxxx.yourdomain.com的郵件重定向到mail8.xxxx.jp主機 

第二行的存在會将任何不符合之前行條件的郵件重定向到fw.xxxx.yourdomain.com的8088端口讓郵件安全的穿越防火牆 

qmmail-remote将按照smtproutes中的行序來進行處理 

timeoutconnect 用來指定qmail-remote嘗試同一個遠端郵件主機建立一個SMTP會話的時間。預設值狀态下如果超出60秒沒有得到遠端郵件主機的回應那麼将斷開連接配接。 

timeoutremote 用來指定qmail-remote在一個SMTP連接配接已經建立後遠端郵件主機的每一個回應的時間數。預設值為1200秒。 

qmail-send 

qmail-send用來檢測隊列中每一個郵件的狀态并調用相應的程式進行處理。例如一個目的為本地的郵件将會被qmail-send調用qmail-lspawn處理。 

bouncefrom | bouncehost 預設情況下退回給原始發送方的郵件的發件人位址為MAILER-DAEMON@HOSTNAME如果你想修改MAILER-DAEMON這段那麼就修改bouncefrom檔案吧。如果想修改MAILER-DAEMON@HOSTNAME中HOSTNAME這段那麼就修改bouncehost檔案。例如bouncefrom内容為SERVER-MANAGER | bouncehost檔案内容為mail8.xxxx.jp那麼一封因為郵件位址不存在而被退回的通知郵件的發件人将是 [email protected]

concurrencylocal 用來決定qmail可以同時運作的本地投遞程序的數目預設值是10标準安裝的qmail最大可設值是120。安裝的時候可以通過修改conf-spawn來将其變為255以下任何數目。 

concurrencyremote 用來決定qmail可以同時運作的遠端投遞程序的數目預設值是20就是說qmail可以在同一時間内同時發送20封郵件标準安裝的qmail最大可設值是120。安裝的時候可以通過修改conf-spawn來将其變為255以下任何數目。 

doublebouncehost | doublebounceto 這兩個控制檔案類似于bouncefrom和bouncehost的關系也是doublebouncehost指定主機名doublebounceto指定使用者名。 

他們的功能是為一個被退回兩次的郵件制定一條出路。例如doublebouncehost内容為xxxx.yourdomain.com | doublebounceto内容為xxxx那麼一個被退回2次的郵件将被發送給[email protected]

沒有這兩個檔案的時候那麼發送給postmaster@me檔案中的域名 

envnoathost 

qmail-send用來給沒有主機名的郵件收件人制定一個主機名的通常這個檔案并沒有必要qmail-send總是使用me檔案中的域名。 

locals 

用來為qmail指明位于本地的郵件位址。qmail-send利用此檔案來判斷收件人位址是否是一個本地位址。 

例如locals檔案中寫有xxxx.yourdomain.com 

那麼qmail-send檢測到隊列中有發送給@xxxx.yourdomain.com的郵件的時候就會調用qmail-lspawn來進行本地投送。 

me 如果沒有me檔案那麼你的qmail将拒絕執行。me檔案用來指定本地郵件伺服器的主機名。以上列出的許多控制檔案在沒有被建立的時候qmail都會用me中的值來代替。 

percenthack 在UUCP協定中帶有%并在該檔案中列出的位址将會被轉換為一個标準的DNS格式主機名。 

queuelifetime 用來指定一個郵件在隊列中的最大存活時間預設是604800秒當一個郵件達到這個時間線後qmail将最後一次嘗試發送這封郵件如果依然失敗會将其從隊列中删除。 

virtualdomains 

讓qmail接受本地郵件以外還接受該檔案中指定的域或者郵件位址就是常說的虛拟域支援。 

qmail-smtpd 

qmail-smtpd接受遠端主機的郵件并轉交給隊列處理程式qmail-queue來處理。 

badmailfrom 用來指定不喜歡的發件人的郵件位址或者是域名 

例如badmailfrom中寫有 

[email protected]

@hotmail.com 

如果[email protected]給該郵件主機送信時将得到code 553,告知其是一個不受歡迎的發件人。而所有來自hotmail.com的發件人也将得到同樣的code 553。 

databytes 用來指定該郵件伺服器可以接受郵件的最大位元組數。 

例如databytes指定為8000000 

那麼如果有人給該主機發送的郵件位元組數超過了這個商業上預設的最大容忍限度将得到code 552告知其郵件大小超出了該郵件主機所能容忍的限度。恐怖的是預設狀态下這個檔案并沒有如果有人用你伺服器上的兩個不存在的位址作為FROM/TO發一個100M的郵件 

localiphost 

用來為使用ip來标示目的主機的郵件消息指定本地主機名的例如xxxx.yourdomain.com的ip位址為198.17.1.2 | localiphost内容為xxxx.yourdomain.com那麼一封發送給xxxx@[198.17.1.2]的郵件的位址會被轉換為[email protected]

rcpthosts | morercpthosts 

這兩個檔案用來指定qmail可以接收的除本地主機名外的其他域名他們的作用是相同的不過因為rcpthosts中的域名不能超過50行是以才出現了morercpthosts檔案 

timeoutsmtpd 用來指定qmail-smtpd等待遠端SMTP主機發送資料的時間線。預設的情況下如果連接配接建立後1200秒内沒有接受到遠端SMTP主機的任何資訊那麼将關閉這個連接配接。 

smtpgreeting 用來指定SMTP連接配接的歡迎标志 

例如smtpgreeting值為 welcome connect to out open relay mail server - ad.xxxx.yourdomain.com那麼建立一個smtp連接配接的時候将會看到如下資訊 

Trying 198.17.x.x... 

Connected to ad.xxxx.yourdomain.com. 

Escape characteris ^]. 

220 welcome connect to out open relay mail server - ad.xxxx.yourdomain.com ESMTP

delivery 1: deferral: Uh-oh:_home_directory_is_writable._(#4.7.0)/ 

It's actually pretty clear: qmail refuses to deliver mail to that account 

because its home directory is world-writable, because that's a security risk. 

Remove the world-writable permissions on the user's home directory

qmail中的幾個error的産生的原因和解決方法 

wd | 14 十二月, 2004 10:18

1 deferral: Unable_to_chdir_to_maildir._(#4.2.1)

這個是qmail找不到使用者的收信目錄所緻。如果你是用vpopmail的虛拟域名來管理的那看看你的control/locals檔案裡面不能有虛拟域名隻能有實際域名這個實際域名的意思應該是使用系統使用者作為使用者的域而不是使用vpopmail的虛拟使用者的域。是以呢如果不是用vpopmail那麼可能是系統使用者的目錄權限設定不正确。

如果發生這個錯誤首先保證你沒有對user/assign做過手動修改添加域名都是使用vpopmail的vadddomin指令來添加的沒有修改過~vopmail/domins目錄以及其下面目錄的權限和屬主然後修改了locals檔案之後重新開機應該就沒有問題了。

2 deferral: Uh-oh:_.qmail_has_prog_delivery_but_has_x_bit_set._(#4.7.0)

這個是因為你的.qmail檔案設定了x屬性把.qmail檔案的x去掉就ok了。這個.qmail檔案就在你的domins/xxx.com下面包括比如.qmail-default之類的檔案修改一下權限去掉x就ok了。

3 454 oops, unable to write pipe and I can't auth (#4.3.0)

這個錯誤是在你打了smtp auth的更新檔之後卻發現不能正常auth輸入了正确的使用者名密碼還是提示不正确。可以通過下面的指令來測試。 

[root@caph qmail-smtpd]# telnet localhost 25 

Trying 127.0.0.1... 

Connected to localhost. 

Escape character is '^]'. 

220 xxx.com ESMTP 

ehlo 

250-xxx.com 

250-PIPELINING 

250-8BITMIME 

250-SIZE 104857600 

250 AUTH LOGIN PLAIN CRAM-MD5 //顯示這個通常表示你已經打好了更新檔不過這個是可以通過修改qmail-smtp.c檔案來定制的。 

auth login 

334 VXNlcm5hbWU6 

awefaq23rasdf 

334 UGFzc3dvcmQ6 

awefwaef 

454 oops, unable to write pipe and I can't auth (#4.3.0) 

quit 

221 xxx.com 

出現了這種問題是因為smtp運作腳本沒有設定正确的使用者所緻。将你的smtp的tcpserver指令的運作使用者群組指定一下。

QMAILDUID=`id -u vpopmail` 

QMAILDGID=`id -g vpopmail`

/usr/local/bin/tcpserver -v -H -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" 

-u "$QMAILDUID" -g "$QMAILDGID" 0 smtp /usr/local/bin/rblsmtpd -r relays.ordb.org 

/var/qmail/bin/qmail-smtpd 

/home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>&1

不需要修改~vpopmail/bin/vchkpw的屬性。

4 451 qq write error or disk full (#4.3.0)

通常産生這個可能有2個原因1你的qmail queue所在的磁盤空間不足。2qmail-queue的權限設定不正确或者檔案有問題。

錯誤資訊the smtp server reply:qq crashed (#5.1.1) 

修改stmp啟動腳本改大smtp的softlimit

Sorry. Although I'm listed as a best-preference MX or A for that host,it isn't in my control/locals file, so I don't treat it as local. (#5.4.6) 

修改源碼ipme.c 

ip_scan("0.0.0.0",&ix.ip);--92行左右加進 

if (!ipalloc_append(&ipme,&ix)) { close(moreipme_fd); return 0; }

在郵件隊列中快速删除從一個地方發過來但又不存在的郵件? 

A: 

設bad.jite.com是這個域。可以鍵入以下指令

echo # > ~alias/.qmail-baddomain-default 

echo bad.jite.com:alias-baddomain>> /var/qmail/control/virtualdomains 

echo bad.jite.com:127.0.0.1 >> /var/qmail/control/smtproutes 

解決qmail經常收到來至<#@[]>這樣的郵件! 

首先說明一下<>和<#@[]>都是系統bouce信件信封(envelope)上的寄信人位址 

這兩種信都是系統産生的差別在于<>往往是系統single bouce的位址而<#@[]>則是系統double bounces或者triple bouces的位址 

系統用這兩種位址是為了避免郵件回路(mail loops) 

來自<#@[]>一般都是系統的double bounces 

要去掉這些double bounces可以有一種簡單的辦法 

其原理是産生一個nobody的位址發往這裡的信件都會被丢棄這樣double bouces就不會煩你的postmaster了 

具體步驟如下 

echo # > /var/qmail/alias/.qmail-nobody 

echo nobody > /var/qmail/control/doublebounceto

繼續閱讀