歡迎您光臨本站 註冊首頁

在Linux下安裝郵件伺服器Qmail

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

功能列表
SMTP伺服器:SMTP-AUTH認證(Plain,Login,CRAM-MD5),TLS(SSL)支持
POP3伺服器:CRAM-MD5,APOP,和SSL支持
IMAP伺服器:TLS(SSL)支持
病毒和垃圾郵件檢測
自動回復
郵件列表
Web管理
通過Web顯示統計信息
WebMail
MRTG



安裝準備
安裝環境
這個安裝過程基本上你只需要複製粘貼就可以完成.我在RedHat上安裝成功,其他系統還沒試過.

為了方便安裝我在安裝Redhat3.0時選了apache、php、mysql,注意 mysql-devel和mysql-server開發包一定要裝上.另外大家在安裝LINUX時一定要裝上軟體開發和內核開發兩個軟體組,這樣可以避免不必要的由於編譯環境的問題而導致的安裝問題,這點對於LINUX 新手猶為重要。安裝系統后,一般另需安裝php-mysql這個包,在安裝光碟第三張。AS3.0安裝后,並沒有mysql-server軟體包,需自行下載安裝,為方便大家,mysql-server軟體包我已經與所有軟體放在一個包中。

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

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


如果你還沒有安裝, 請先安裝它們. 你可以到安裝光碟或是在這裡找到它們的RPM包 http://www.rpmfind.net.
啟動mysql server:
# /etc/rc.d/init.d/mysqld start
設置mysql root口令:
# mysqladmin -u root password 『xukixu』(設置你的密碼)

mysql的頭文件和庫文件分別在/usr/include/mysql和/usr/lib/mysql。
安裝完Redhat3.0后,修改/etc/httpd/conf/httpd.conf,使web服務正常啟用,為mysql添加root用戶的密碼。如果設置了防火牆,要打開伺服器的www 80、smtp 25和pop3 110三個埠。



檢查DNS設置
在開始之前,確保正確設置了DNS MX記錄.例如使用"domain.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 xxx.xxx.xxx.xxx

在Windows下:

C:\>nslookup
Default Server: ns.domain.com
Address: xxx.xxx.xxx.xxx
>set type=mx
>domain.com
domain.com MX preference = 10, mail exchanger = mail.domain.com
mail.domain.com internet address = xxx.xxx.xxx.xxx
>exit

卸載已有的郵件系統
確認沒有SMTP/POP/IMAP服務在運行:

/etc/init.d/sendmail stop
netstat -na | grep 25
netstat -na | grep 110
netstat -na | grep 143
ntsysv

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

rpm -e --nodeps sendmail
rpm -e --nodeps postfix

下載軟體
文中所用的軟體:

netqmail-1.05.tar.gz
daemontools-0.76.tar.gz
daemontools-0.76.errno.patch
autorespond-2.0.5.tar.gz
toaster-scripts-0.6.tar.gz
qmail-toaster-0.6-1.patch.bz2
ezmlm-0.53.tar.gz
ezmlm-idx-0.42.tar.gz
courier-imap-2.2.2.20040207.tar.bz2
igenus_2.0.2_20040901_release.tgz
mysql-server-3.23.58-1.i386.rpm
qmailadmin-1.2.3.tar.gz
chkuser-0.6.mysql.patch
ucspi-tcp-0.88.a_record.patch
ucspi-tcp-0.88.errno.patch
ucspi-tcp-0.88.nobase.patch
ucspi-tcp-0.88.tar.gz
vpopmail-5.4.7.tar.gz
qmailadmin-1.2.3.tar.gz
vqadmin-2.3.6.tar.gz
Mail-SpamAssassin-3.0.1.tar.gz
clamav-0.80.tar.gz
qmail-scanner-1.22.tgz
qms-analog-0.3.4.tar.gz
maildrop-1.7.0.tar.bz2
tnef-1.2.3.1.tar.gz
qmailanalog-0.70.tar.gz
qmailanalog-0.70.errno.patch
qlogtools-3.1.tar.gz
qlogtools_errno.patch
zlib-1.1.4.tar.gz
libpng-1.2.7.tar.gz
gd-1.8.3.tar.gz
mrtg-2.10.15.tar.gz
qmailmrtg7-4.0.tar.gz
igenus_admin_0.1.tgz
isoqlog-2.1.1.tar.gz


我把下文中所提到的軟體打成了一個包,下載地址為:http://www.xuki.org/qmail_2.0.tar.g...?莞鋈訟骯甙傘?

tar -xzf netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh

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



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

安裝軟體

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 -p1 < /home/pkg/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
package/install
# 驗證daemontools已經正常運行:
sleep 5
ps ax | grep svscan

ucspi-tcp

ucspi-tcp包括tcpserver和tcpclient,一個命令行工具來建立client-server應用程序.

安裝:

cd /home/pkg
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < ../ucspi-tcp-0.88.a_record.patch
patch -p1 < ../ucspi-tcp-0.88.errno.patch
patch -p1 < ../ucspi-tcp-0.88.nobase.patch
make
make setup check



qmail



這個toaster補丁,是下面這幾個補丁的組合:

smtp auth 0.4.2

qmail-queue (to allow for virus scanners)

maildir++ patch

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

mfcheck (check that the envelope sender has a dns entry)

tarpit delay

qregex (regular expression matching in badmailfrom and badmailto)

big concurrency (set the spawn limit above 255)



安裝:

mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails

# 在這裡把vpopmail用戶也加上
groupadd -g 89 vchkpw
useradd -u 89 -g vchkpw vpopmail

cd /home/pkg
tar -xzf toaster-scripts-0.6.tar.gz
cd netqmail-1.05/
bunzip2 -c ../qmail-toaster-0.6-1.patch.bz2 | patch -p0
cd netqmail-1.05

# 注:在RedHat上,需要為TLS補丁鏈接一個include文件:
ln -s /usr/kerberos/include/com_err.h /usr/kerberos/include/krb5.h \
/usr/kerberos/include/profile.h /usr/include/

make
make setup check

# 用你自己的主機名代替下面的mail.domain.com
./config-fast mail.domain.com

cd /var/qmail/alias
touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
chmod 644 /var/qmail/alias/.qmail*
cd -

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

make cert
# 按提示輸入公司信息

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

# 用"crontab -e"在crontab里增加下面這條,每天晚上更新temp keys
01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1

為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
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3d/log
chmod +t /var/qmail/supervise/qmail-pop3ds/log
cp /home/pkg/toaster-scripts-0.6/send.run /var/qmail/supervise/qmail-send/run
cp /home/pkg/toaster-scripts-0.6/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /home/pkg/toaster-scripts-0.6/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /home/pkg/toaster-scripts-0.6/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /home/pkg/toaster-scripts-0.6/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /home/pkg/toaster-scripts-0.6/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /home/pkg/toaster-scripts-0.6/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /home/pkg/toaster-scripts-0.6/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 /home/pkg/toaster-scripts-0.6/rc /var/qmail/
cp /home/pkg/toaster-scripts-0.6/qmailctl /var/qmail/bin/
chmod 755 /var/qmail/rc
chmod 755 /var/qmail/bin/qmailctl

ln -s /var/qmail/bin/qmailctl /usr/bin
ln -s /var/qmail/bin/sendmail /usr/sbin/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為基礎的虛擬域管理包

vpopmail的用戶和組我們前邊已經建立了

配置:

mkdir -p /home/vpopmail/etc

# 設置默認域,紅色部份改成你要設置的域。
echo "domain.com" > /home/vpopmail/etc/defaultdomain

# 設置smtp規則,關閉open relays
echo '127.0.0.1:allow,RELAYCLIENT=""' > /home/vpopmail/etc/tcp.smtp
cd ~vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

# 設置MySQL信息,第一個vpopmail是帳號,xukixu為密碼,第二個vpopmail是資料庫
echo "localhost|0|vpopmail|xukixu|vpopmail" > ~vpopmail/etc/vpopmail.mysql
chmod 640 ~vpopmail/etc/vpopmail.mysql

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

# 在MySQL里添加vpopmail的帳號
/usr/local/mysql/bin/mysql -uroot --pxukixu


CREATE DATABASE vpopmail;
GRANT select,insert,update,delete,create,drop ON vpopmail.*
TO vpopmail@localhost IDENTIFIED BY 'xukixu';
FLUSH PRIVILEGES;
QUIT

安裝:

cd /home/pkg/
tar zxvf vpopmail-5.4.7.tar.gz
cd vpopmail-5.4.7

.

# 帶資料庫支持

./configure --enable-auth-module=mysql \
--enable-incdir=/usr/include/mysql \
--enable-libdir=/usr/lib/mysql \
--enable-mysql-logging \
--enable-mysql-limits \
--enable-valias \
--enable-logging=y


make
make install-strip

管理:

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

# 添加域,紅色部份前面是域名,後面是管理員(postmaster)密碼
vadddomain domain.com xukixu

# 添加用戶,紅色部份為註解,不用輸入
vadduser -q 10485760S(郵箱大小) xukixu@domain.com(郵箱帳號) 1234(密碼)
vmoduser -c 許靖(郵箱描述) xukixu@domain.com

# 設置郵箱容量達到90%的警告信息
vi /home/vpopmail/domains/.quotawarn.msg

From: 郵箱管理員
Reply-To: postmaster@domain.com
To: 郵箱用戶
Subject: 郵箱空間警告
Mime-Version: 1.0
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: base64

您的郵箱空間已經達到90%.如果想繼續使用,請刪除一些信件.
如果需要幫助,請聯繫郵箱管理員:
Email : postmaster@domain.com

# 設置郵箱已滿的警告信息
echo "郵件被拒絕,用戶的郵箱空間已滿." > /home/vpopmail/domains/.over-quota.msg

啟動腳本:

cp /home/pkg/toaster-scripts-0.6/vpopmailctl /var/qmail/bin
ln -s /var/qmail/bin/vpopmailctl /usr/bin
chmod 755 /var/qmail/bin/vpopmailctl

# 用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 -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep

補丁:

# 帶資料庫支持
cd /home/pkg/netqmail-1.05/netqmail-1.05
patch -p0 < /home/pkg/chkuser-0.6.mysql.patch

# 如果資料庫是自定義安裝的,還要把libmysqlclient.a複製到指定位置
mkdir -p /usr/local/mysql/lib/mysql/
cp /usr/local/mysql/lib/libmysqlclient.a /usr/local/mysql/lib/mysql/

make clean
make
qmailctl stop
make setup check
qmailctl start

安裝選項參考:


vpopmail 5.4.7
------------------------------------
vpopmail directory = /home/vpopmail
uid = 89
gid = 89
roaming users = OFF --disable-roaming-users (default)
password learning = OFF --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)
mysql logging = ON --enable-mysql-logging
mysql limits = ON --enable-mysql-limits
MySQL valias = ON --enable-valias
auth inc = -I/usr/include/mysql
auth lib = -L/usr/lib/mysql -lmysqlclient -lz -lm
system passwords = OFF --disable-passwd (default)
pop syslog = log success and errors including passwords
--enable-logging=v
auth logging = ON --enable-auth-logging (default)
one domain per SQL table = --disable-many-domains



#POP3和SMTP測試

用outlook測試qmail的smtp和pop3是否正常,注意由於vpopmail支持虛擬域名,所以在outlook中設置郵件帳號時,用戶名后要加上域名,如demo@demo.com。smtp是帶認證的,在outlook中也要作相應設置。建議先測試正常后再進行下一步安裝。如果qmail 出現問題,可查看mysql中的vpopmail資料庫,/var/log下的mysqld和maillog日誌記錄,這樣容易很快找出問題。



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


courier-imap


Courier-IMAP支持IMAP/SIMAP訪問

安裝:

cd /home/pkg
tar -xjf courier-imap-2.2.2.20040207.tar.bz2
cd courier-imap-2.2.2.20040207

# 作為vpopmail用戶進行安裝
chown -R vpopmail:vchkpw ../courier-imap-2.2.2.20040207
su vpopmail
./configure --with-redhat
# 注:Redhat用戶需要使用"--with-redhat"選項

make
exit
make install-strip
make install-configure

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

authmodulelist="authvchkpw"

# 修改文件/usr/lib/courier-imap/etc/imapd

IMAPDSTART=YES

# 修改文件/usr/lib/courier-imap/etc/imapd-ssl

IMAPDSSLSTART=YES


啟動:


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




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

autorespond

Autorespond是一個自動回復工具,可以很好的與qmailadmin配合使用

安裝:

cd /home/pkg
tar -xvzf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5
make
make install

ezmlm

exmlm是一個快速,強大的郵件列表程序,可以通過qmailadmin對其進行配置

1.注意:為了啟用maillist的MySQL支持,你必須首先:
建立mysql管理用戶:(Ex:user:ezmlm,pass:ezmlm)
# mysql -u root ?pxukixu
>use mysql;
>insert into user values('localhost','ezmlm','','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y');
>update user set password=password('ezmlm') where user='ezmlm';
>FLUSH PRIVILEGES;
>exit;
建庫:(Ex:database:ezmlm)
# mysqladmin -u root -pxukixu create ezmlm



2.安裝:

cd /home/pkg
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 mysql #MySQL 支持
make clean
make man
make ch_GB #漢字GB2312支持
修改conf-sqlcc文件
內容為:-I/usr/include/mysql

修改conf-sqlld
內容為: -L/usr/lib/mysql -lmysqlclient -lnsl -lm -lz

修改conf-bin
第一行:/var/qmail/bin/ezmlm

修改conf-man
第一行:/var/qmail/man

修改conf-qmail
第一行:/var/qmail

# make setup

3.在你建立一個基於MySQL的maillist之前,你必須保證ezmlm庫中已存在一個對應的表:
Ex:你想建一個基於MySQL的maillist:testlist

# /var/qmail/bin/ezmlm/ezmlm-mktab -d testlist | mysql -uezmlm -pezmlm -f ezmlm


這樣就在ezmlm庫中為testlist建立了一系列相關表格:
+------------------------+
| Tables |
+------------------------+
| testlist |
| testlist_allow |
| testlist_allow_slog |
| testlist_cookie |
| testlist_deny |
| testlist_deny_slog |
| testlist_digest |
| testlist_digest_cookie |
| testlist_digest_mlog |
| testlist_digest_slog |
| testlist_mlog |
| testlist_mod |
| testlist_mod_slog |
| testlist_slog |
+------------------------+

你可以用一下命令察看!
# mysqlshow -u root -pxukixu ezmlm



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

qmailadmin

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

安裝:

cd /home/pkg
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 \
--enable-ezmlmdir=/var/qmail/bin/ezmlm \
--enable-maxusersperpage=20 \
--enable-maxaliasesperpage=20 \
--enable-modify-quota \
--enable-domain-autofill

make
make install-strip
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
image dir = /var/www/html/images/qmailadmin
image URL = /images/qmailadmin
template dir = /usr/local/share/qmailadmin
qmail dir = /var/qmail
vpopmail dir = /home/vpopmail
autorespond dir = /usr/bin
ezmlm dir = /usr/local/bin/ezmlm
ezmlm idx = yes
mysql for ezmlm = yes
help = no
modify quota = yes
domain autofill = yes
modify spam check = no



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

安裝並運行igenus





1.到http://www.igenus.org下載最新的安裝...901_release.tgz



#tar zxvf igenus_2.0.2_20040901_release.tgz -C /var/www/
#cd /var/www/
#rm -rf html/
#mv igenus html



2.建temp文件夾



cd /var/www/html/


#mkdir temp



#chmod -R 0755 temp



#chown -R vpopmail:vchkpw 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/



3.修改httpd.conf



#vi /etc/httpd/conf/httpd.conf


Group vchkpw


User vpopmail


DocumentRoot "/var/www/html/"



AddDefaultCharset GB2312 //使默認頁面為中文



#/etc/rc.d/init.d/httpd restart //重啟apache,使修改生效



4.修改config_inc.php文件



# cd /var/www/html/igenus/config



# vi config_inc.php



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



$CFG_MYSQL_HOST = 'localhost';



$CFG_MYSQL_USER = 'vpopmail'; \\vpopmail訪問mysql的帳號



$CFG_MYSQL_PASS = 'xukixu'; \\vpopmail訪問mysql的密碼



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



$CFG_TEMP = $CFG_BASEPATh."/temp"; \\改成你安裝的目錄的當前目錄下


5.重新編製Mysql資料庫表格

刪除之前創建的域名

#/home/vpopmail/bin/vdeldomain domain.com


/usr/local/mysql/bin/mysql -uroot --pxukixu

alter table vpopmail.vpopmail drop primary key;
alter table vpopmail.vpopmail add column pw_id int(5) unsigned NOT NULL PRIMARY KEY auto_increment;
alter table vpopmail.vpopmail add KEY pw_name (pw_name,pw_domain);

編輯/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 ;

# --------------------------------------------------------
刪除創建'lastauth'表部份。

運行
#mysql -u root -pxukixu

6. 設置igenus 定義允許上傳下載的郵件的大小

編輯/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

7.編輯/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.domain.net

DocumentRoot /var/www/html



重啟apache:

#service httpd restart


8.如果需要,用vadddomain和vadduser添加新域名和新用戶。



最後打開瀏覽器,輸入http://domain.com/,就可以訪問網站了。

9.Qmail限制附件的大小



在/var/qmail/control/databytes 文件中設置附件的大小,可以實現對qmail附件大小的限制,一般安裝完成後,這個文件是沒有的,你可以自己創建。



smtp方式是以qmail的databytes作限制的



創建databytes並設置郵件最大為4m



# echo 4000000 >/var/qmail/control/databyte



10.限制單域的郵箱數量



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了



11.用qmail封mailfrom



vi/var/qmail/control/badmailfrom



這個控制文件實現拒收郵件功能的,每一個地址要單獨一行。而且,不用重起qmail就能生效。例如:



peng@96633.net -----限制一個特定的用戶



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



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

安裝並運行iGenus_Admin

iGenus_Admin安裝

#下載
從www.igenus.org 下載igenus_admin的安裝文件igenus_admin_0.1.tgz到/home/pkg

#安裝
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 <wuqiong@sczg.com>
*
* $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 = "vpopmail"; \\改為你的密碼
$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;//domain.com/admin/sys/

用戶:Admin密碼Admin來登錄.注意A要大寫..這個管理帳號密碼登錄后可以改的

登錄后,首先點"更新資料庫"你就會看見你的域名啦.然後點"編輯"把"登錄許可權 該域管理員(Postmaster)有權登錄進行用戶管理"這一項打勾,確認后,就可以用

http;//domain.com/admin/

來登錄管理了。





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






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

cd /home/pkg
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="xukixu"; /* NULL for no password */
static const char *db="vpopmail";

./configure --enable-mysql=y
make
make install

編輯資料庫,加入domain_owner表

mysql -uroot -pxukixu
use vpopmail;

CREATE TABLE domain_owner (
domain CHAR(64) NOT NULL,
owner CHAR(32) NOT NULL,
PRIMARY KEY(domain, owner)
);


現在我們需要將下面幾行添加到httpd.conf文件中:

vi /etc/httpd/conf/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 nobody.nobody /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



service httpd restart
在你的瀏覽器上測試一下安裝結果:

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


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

SpamAssassin

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

安裝SpamAssassin 要用到Time-HiRes、Digest-SHA1、HTML-Parser和HTML-Tagset. 如果你沒有安裝的話,必須首先安裝它,此文件均在RHAS3安裝光碟第二和第三張中。對應的軟體包為:


perl-Time-HiRes-1.38-3.i386.rpm
perl-Digest-SHA1-2.01-15.1.i386.rpm
perl-HTML-Parser-3.26-17.i386.rpm
perl-HTML-Tagset-3.03-28.noarch.rpm


# 安裝SpamAssassin

groupadd spamd

useradd -g spamd -s /bin/false spamd


cd /home/pkg
tar -xzvf Mail-SpamAssassin-3.0.1.tar.gz
cd Mail-SpamAssassin-3.0.1

export LC_ALL=C
perl Makefile.PL
make
make install

#我們想要SpamAssassin 隨系統自動啟動,安裝目錄中提供了一個起動腳本

cp spamd/redhat-rc-script.sh /etc/rc.d/init.d/spamd

vi /etc/rc.d/init.d/spamd

SPAMDOPTIONS="-d -c -u spamd -H /home/spamd -m5 -H"
修改其中一行為上所示。

chmod 755 /etc/rc.d/init.d/spamd

chkconfig --add spamd

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

chmod 755 /etc/rc.d/init.d/spamd
chkconfig --add spamd
service spamd start

# 進行一個spam和non-spam的測試
spamassassin -t < sample-spam.txt > spamtest.txt
less spamtest.txt
spamassassin -t < sample-nonspam.txt > nospamtest.txt
less nospamtest.txt
spamtest.txt文件在主題一段中將包含"*****SPAM*****" 這一行, 而nospamtest.txt文件中則沒有.

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


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

Clamav

添加所需的組和用戶

groupadd clamav
useradd -g clamav -s /bin/false clamav

安裝軟體
tar -xzvf clamav-0.80.tar.gz
cd clamav-0.80
./configure
make check
make install

測試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 \\去掉前面的#

更改/usr/local/etc/clamav.conf文件,去掉下面選項前面的#:

vi /usr/local/etc/clam.conf
#Example \\前面加上#
LogFile /var/log/clamav/clamd.log \\去掉前面的#
LogFileMaxSize 2M \\去掉前面的#
LogTime \\去掉前面的#
PidFile /var/run/clamd.pid \\去掉前面的#
DataDirectory /var/lib/clamav \\去掉前面的#,並且修改路徑為/usr/local/share/clamav
LogSyslog \\去掉前面的#
ScanMail \\去掉前面的#

升級clamscan病毒庫
freshclam --verbose

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

crontab -e

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 clamav.clamav -R /var/log/clamav/


touch /var/log/freshclam.log
chmod 644 /var/log/freshclam.log
chown clamav:clamav /var/log/freshclam.log

創建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 }"
echo ""
exit 64
;;
esac

使其能夠執行
chmod 755 /etc/rc.d/init.d/clamav

隨開機起動
echo /etc/rc.d/init.d/clamav start >/etc/rc.d/rc.local


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

qmail-scanner&qms-analog

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

cd /home/pkg
rpm -Uvh perl-suidperl-5.8.0-88.3.i386.rpm

解開qmail-scanner...

tar zxvf qmail-scanner-1.22.tgz

解壓qms-analog...

tar zxvf qms-analog-0.3.4.tar.gz

cd qms-analog-0.3.4

make all

下一步,我們拷貝所需要的qms-analog文件到qmail-scanner安裝目錄

cp qmail-scanner-1.22-st-qms-20040530.patch /home/pkg/qmail-scanner-1.22/

cp qms-config-script /home/pkg/qmail-scanner-1.22/

現在,讓我們打上qms-analog補丁

cd /home/pkg/qmail-scanner-1.22

chmod 755 qms-config-script

patch -p1 < qmail-scanner-1.22-st-qms-20040530.patch

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

groupadd qscand
useradd -g qscand -s /bin/false qscand

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

vi qms-config-script

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

#!/bin/sh

if [ "$1" != "install" ]; then
INSTALL=
else
INSTALL="--install"
fi

./configure --domain domain.com \
--qmail-queue-binary /var/qmail/bin/qmail-queue \
--admin postmaster \
--local-domains "domain1.com,domain2.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 \
--lang en_GB \
--debug yes \
--unzip yes \
--scanners clamscan,verbose_spamassassin \
"$INSTALL"

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

保存並退出。

現在我們測試qmail-scanner安裝

./qms-config-script

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

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

./qms-config-script 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

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -z //如果沒有Can't do setuid出現,安裝OK

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -r //查看qmailscan當前包含的特徵

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -g //保存qmailscan定義特徵的修改,使他生效。

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


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

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

在你的qmail啟動腳本加入紅色部份
#!/bin/sh
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 stop

qmailctl start

qmailctl stat

這裡有測試程序

cd /home/pkg/qmail-scanner-1.23/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-atachments.txt

主要的排錯監測日誌
/var/spool/qmailscan/quarantine.log
/var/spool/qmailscan/qmail-queue.log
/var/spool/qmailscan/qms-events.log
/var/log/clamav/clamd.log
/var/log/maillog


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

MailDrop and TNEF reader

TNEF是一個從"application/ms-tnef". 類型中找出MIME附件的程序.這僅僅是微軟系統中的一種附件.

TNEF程序允許將封裝成TNEF的附件提取出來. 安裝TNEF並不是必須的, 但我強烈推薦安裝它!

# 安裝 maildrop
cd /home/pkg
tar -jzvf maildrop-1.7.0.tar.bz2
cd maildrop-1.7.0
./configure
make
make install-strip
make install-man

# 安裝 the tnef
cd /home/pkg
tar -xzvf tnef-1.2.3.1.tar.gz
cd nef-1.2.3.1
./configure
make
make install



使用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內容如下:
| /usr/local/bin/maildrop ./mailfilter


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

QmailAnalog & qlogtools

Qmailanalog針對qmail的日誌進行一些最基本的分析,並將結果發送到你指定的位置。在我的方案中,設置qmailanalog每天晚上運行,並將結果發送給管理員。在使用qmailanalog時,我們還將會用到 qlogtools軟體包。qlogtools提供一系列分析qmail日誌的工具,這些工具將文件中誨澀難懂的日誌轉換成便於我們閱讀和能夠理解的報告。當安裝完成Qmailstats和Qlogtools后,我將會創建一個腳本讓它每天晚上運行,並將報告發送到管理員郵箱。這個腳本也可用到我們先前安裝的qms-analog,qms-analog將會提供qmail-scanner運行狀態報告。

先安裝qmailanalog

cd /home/pkg/

tar zxvf qmailanalog-0.70.tar.gz

cd qmailanalog-0.70

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

make && make setup check

安裝qlogtools

cd /home/pkg/

tar zxvf qlogtools-3.1.tar.gz

cd qlogtools-3.1

patch < /home/pkg/qlogtools_errno.patch

make

./installer

現在我們要創建一個腳本,並將它添加到cron,讓其每天晚上運行併產生報告。

下面是一個可靠的腳本,它將會收集qmailanalog輸出的信息併產生報告。

紅色部份改成你的域名。
vi /var/qmail/bin/qmailstats

#!/bin/sh
# 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: postmaster@yourdomain.com" > $EMAILMSG
echo "From: postmaster@yourdomain.com" >> $EMAILMSG
echo "Subject: Nightly Qmail Stats Report for $DATE" >> $EMAILMSG
echo "" >> $EMAILMSG
echo "" >> $EMAILMSG
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
zoverall < $QMAILSTATS >> $EMAILMSG
echo "" >> $EMAILMSG
echo "" >> $EMAILMSG
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
zfailures < $QMAILSTATS >> $EMAILMSG
echo "" >> $EMAILMSG
echo "" >> $EMAILMSG
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $EMAILMSG
zdeferrals < $QMAILSTATS >> $EMAILMSG
echo "" >> $EMAILMSG
echo "" >> $EMAILMSG
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $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 "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >> $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點運行。

crontab -e

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


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

isoqlog

isoqlog是一個qmail日誌分析工具,它是用perl寫的,可以分析和統計 qmail的運行日誌,並生成漂亮的HTML格式的報表,如果伺服器上已經安裝WEB服務,管理員就可以通過瀏覽器來查看這些報表。相對於 qmailanalog,isoqlog分析的項目稍微少一些。

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

#安裝isoqlog

cd /home/pkg

tar zxvf isoqlog-2.1.1.tar.gz

cd isoqlog-2.1.1

./configure

make

make install

make clean

cd isoqlog


mkdir /var/www/html/isoqlog

cp -pr ./htmltemp/images ./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

crontab -e

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

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


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

MRTG

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

# 安裝 zlib (壓縮的圖形文件包)
cd /home/pkg
tar -xzf zlib-1.1.4.tar.gz
mv zlib-1.1.4/ zlib
cd zlib
./configure
make
cd ..

# 安裝 libpng (PNG圖片格式包)
tar -xzf libpng-1.2.7.tar.gz
mv libpng-1.2.7/ libpng
cd libpng
make -f scripts/makefile.std CC=gcc ZLIBLIB=../zlib ZLIBINC=../zlib
rm *.so.* *.so
cd ..

# 安裝 gd (製圖軟體包)
tar -xzf gd-1.8.3.tar.gz
mv gd-1.8.3/ gd
cd gd
make INCLUDEDIRS="-I. -I../zlib -I../libpng" LIBDIRS="-L../zlib -L. -L../libpng" LIBS="-lgd -lpng -lz -lm"
make install
cd ..

# 編譯 MRTG
tar -xzf mrtg-2.10.15.tar.gz
cd mrtg-2.10.15/
./configure --prefix=/usr/local/mrtg-2 ?-with-gd=/home/pkg/gd/ --with-z=/home/pkg/zlib/ --with-png=/home/pkg/libpng/
make
make install
所有MRTG需要的軟體包都安裝在了 /usr/local/mrtg-2 目錄下. 你現在可以安全的刪除上面編譯的源碼. 但是你最好留著,以便你編譯下一個版本的MRTG時所需.

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

# 編譯 qmailmrtg
cd /home/pkg
tar -xzf qmailmrtg7-4.0.tar.gz
cd qmailmrtg7-4.0
make
make install
mkdir /var/www/html/qmailmrtg
cp qmail.mrtg.cfg index.html /var/www/html/qmailmrtg
cd /usr/local/apache/htdocs/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數據. 運行如下命令:

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

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg 2>&1 > /dev/null
現在運行MRTG三次來安裝它. 你將會收到3次警告消息. 之後,你將不會再收到警告了.

env LANG=C /usr/local/mrtg-2/bin/mrtg /var/www/html/qmailmrtg/qmail.mrtg.cfg
現在應該安裝好了. 為了能顯示些信息,我們等待15分鐘的日誌記錄. 你可以通過下面的地址來檢查圖形監控情況:

http://your.host.name/qmailmrtg/
查看它們的圖形監控情況!



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

測試
測試igenus

http://domain.com/

測試qmailadmin


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

測試vQadmin


http://domain.com/cgi-bin/vqadmin/vqadmin.cgi
測試SMTP認證
# telnet localhost 25

Trying 127.0.0.1...

Connected to mail.domain.com (127.0.0.1).
Escape character is '^]'.
220 mail. domain.com ESMTP
EHLO hostname
250-mail.domain.com
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
測試POP3
# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Hello there.
user xy.wang@domain.com
+OK Password required.
pass [password]
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.

測試IMAP
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.localdomain(127.0.0.1).
Escape character is '^]'.
* 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 user@test.com [password]
a001 OK LOGIN Ok.
a001 logout
* BYE Courier-IMAP server shutting down
a001 OK LOGOUT completed
Connection closed by foreign host.


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

郵件系統維護:
郵件系統相關日誌
/var/log/maillog
/var/log/qmail/current
/var/log/qmail/pop3d/current
/var/log/qmail/pop3ds/current
/var/log/qmail/smtpd/current
/var/spool/qmailscan/qmail-queue.log
/var/spool/qmailscan/qms-events.log
/var/spool/qmailscan/quarantine.log

設置Qmail用戶郵箱的容量
# cd /home/vpopmail/bin
#./vsetuserqutoa domain.com 10500000s --domain.com這個域,都設成10m的
#./vsetuserqutoa xuki@domain.com 10500000s ---只把xuki@domain.com這個用戶單獨設置為10m。

批量添加用戶

例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
do
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備份qmail+mysql數據到指定的ftp地址的方法
備份vpopmail的domains目錄、qmail的control目錄和mysql的var數據存放目錄,使用crontab定時進行操作。下面是腳本文件,具體的目錄視自己的系統更改:
mkdir /var/qmailbakup
cd /var/qmailbakup
touch qmailbakup.sh
chmod 755 qmailbakup .sh
vi qmailbakup.sh
[code:1:d480555598]
#!/bin/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 //刪除本機產生的文件,如果你想在本伺服器也保存一份備份,去掉該項即可。
[/code:1:d480555598]
使用crontab定時執行:
vi /etc/crontab
00 20 * * 0-6 /var/qmailbakup/qmailbakup.sh
這樣每天晚上8:00執行改備份程序。
給新浪發信的解決辦法
qmail
echo "我的郵件伺服器的真實域名(A記錄)" > /var/qmail/control/helohost

臨時限制一個用戶的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:
a.cdb配置的?那麼請把/home/vpopmail/domains這個文件夾備份好就可以了。用戶和密碼文件,還有用戶信件都在這個目錄下。
還應該備份/var/qmail/control下的相關配置文件。

b.如果是以MYSQL資料庫方式來存儲用戶認證信息的
只需要備份
~vpopmail/domain下的所有郵件
/var/qmail/control的配置文件
MYSQL資料庫目錄下的vpopmail庫目錄。一般是/var/lib/mysql(RPM)、/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附件,修改如下文件
# vi /etc/php.ini

post_max_filesize=5M //320行
upload_max_filesize=5M //405行
session.bug_compat_42=0 //加入到641行
session.bug_compat_warn=0

# 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。

[火星人 ] 在Linux下安裝郵件伺服器Qmail已經有863次圍觀

http://coctec.com/docs/linux/show-post-203807.html