1.    版本历史

Revision    Author(s)    Date    Summary of activity
1.0    罗辉    2007-07-26    创建
1.1    罗辉    2007-8-27    增加9.15(收信超时问题)
1.2    罗辉    2007-9-4    增加二级域名访问WEBMAIL

2.    参考文档

[1] QmailToaster Home
    http://www.qmailtoaster.com
   
3.    前言

本文主要记录了公司E-Mail服务器的安装和配置。公司E-Mail建立在CentOS linux 5平台上,使用Qmail + vpopmail + qmailadmin + squirrelmail + mysql + ezmlm +clamav+ spamassassin建立一个完整的企业邮局平台。已有的功能包括虚拟域,虚拟用户,WEBMAIL,WEB邮局管理,邮件列表,在线时实扫毒,反垃圾邮件等。
Qmail安装有很多种方法,大部份方法都是下载各种源代码,进行编译安装,再进行各个配置。我们采用做好的RPM源码包,编译成RPM安装包进行安装。这种方法的好处再于安装简单,维护方便,功能也齐全。

4.    硬件系统环境
邮件服务器为Dell PowerEdge 2950,CPU为Intel xeon 5150 X2,内存为8G,146G 15000转的SAS硬盘。

5.    软件系统环境
服务器所装操作系统都为Centos linux 5,可在http://www.centos.org 下载。
所用apache及Mysql为操作系统自带版本,也可以在http://www.apache.org 及http://www.mysql.com下载源代码编译安装。
邮件系统用到的所有软件包都可从http://www.qmailtoaster.com下载。

6.    软件包下载
Qmailtoaster可以通过一个脚本下载邮件系统所需的所有安装包,我们先下载这个脚本,再通过执行脚本下载所需的软件包:
#wget http://www.qmailtoaster.com/info/current-download-script.sh
#chmod 755 current-download-script.sh
#./current-download-script.sh
除了上述软件包之外,还需下载一些脚本,用于安装邮件系统:
#wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-deps.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-djbdns-localcache-install.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-install-script.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-perl.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/cnt5064-svcs.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/mysql-setup.sh
#wget http://www.qmailtoaster.com/centos/cnt5064/very-quick-install.txt

7.    邮件系统安装

以下主备两台服务器都需要安装。
very-quick-install.txt文件说明了安装qmailtoaster的大致步骤,我们在安装时可根据自己的需求,做一些调整。下面介绍安装步骤:

7.1.    安装前期准备工作

# ./cnt5064-deps.sh
运行cnt5064-deps.sh,通过yum安装一些邮件系统所需要的软件包。
# ./cnt5064-perl.sh
运行cnt5064-perl.sh,安装一些perl的库。
# vi mysql-setup.sh
将:
MYSQLPW=YOUR_MYSQL_ROOT_PASSWORD
改成:
MYSQLPW=123456
123456为mysql的root用户密码。
再运行脚本,配置mysql服务:
# ./mysql-setup.sh
配置iptables,开放qmail系统需用到的端口:
# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
#Accept ssh port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
#Accept smtp port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
#Accept http port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
#Accept pop3 port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 110 -j ACCEPT
#Accept imap port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 143 -j ACCEPT
#Accept smtps port
#-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 456 -j ACCEPT
#Accept msp port
#-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 587 -j ACCEPT
#Accept SpamAssassin port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 783 -j ACCEPT
#Accept imaps port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 993 -j ACCEPT
#Accept pop3s port
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 995 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT
重启服务:
# service iptables restart
建立一个头文件的链接,没有这个等下编译的时候会通不过:
# ln -s /usr/include/et/com_err.h /usr/include/com_err.h

7.2.    安装邮件系统

# ./ cnt5064-install-script.sh
cnt5064-install-script.sh是安装邮件系统的脚本,这个脚本让帮助我们自动编译和安装相关软件包。在每安装一个包时,它都会询问用户Shall we continue? (yes, skip, quit) [y]/s/q:按y安装,s跳过,q退出。
下列软件包选y,这些包我们不需要手动去改什么配置:
daemontools-toaster
ucspi-tcp-toaster
安装了上两个包后,选q退出。对于下面的vpopmail-toaster,我们需要改一些编译的参数:
先安装原码包:
# rpm -ivh vpopmail-toaster-5.4.17-1.3.4.src.rpm
更改编译配置:
# vi /usr/src/redhat/SPECS/vpopmail-toaster.spec
找到:
       –enable-auth-module=mysql
       –enable-log-name=vpopmail
       –disable-mysql-limits
       –enable-valias
       –disable-many-domains
mv %{buildroot}%{vdir}/etc/vpopmail.mysql %{buildroot}%{vdir}/etc/vpopmail.mysql.dist
echo "localhost|0|vpopmail|SsEeCcRrEeTt|vpopmail" > %{buildroot}%{vdir}/etc/vpopmail.mysql
%attr(0644,vpopmail,vchkpw) %config(noreplace) %{vdir}/etc/vpopmail.mysql
%attr(0644,vpopmail,vchkpw) %{vdir}/etc/vpopmail.mysql.dist
更改为:
        –enable-auth-module=cdb
        –enable-log-name=vpopmail
#       –disable-mysql-limits
#       –enable-valias
#       –disable-many-domains
#mv %{buildroot}%{vdir}/etc/vpopmail.mysql %{buildroot}%{vdir}/etc/vpopmail.mysql.dist
#echo "localhost|0|vpopmail|SsEeCcRrEeTt|vpopmail" > %{buildroot}%{vdir}/etc/vpopmail.mysql
#%attr(0644,vpopmail,vchkpw) %config(noreplace) %{vdir}/etc/vpopmail.mysql
#%attr(0644,vpopmail,vchkpw) %{vdir}/etc/vpopmail.mysql.dist
按新配置编译:
# rpmbuild -bb –with cnt5064 /usr/src/redhat/SPECS/vpopmail-toaster.spec
安装编译好的包:
# rpm -ivh /usr/src/redhat/RPMS/x86_64/vpopmail-toaster-5.4.17-1.3.4.x86_64.rpm
/home/vpopmail在/分区,以后所有的邮件都会放在这个目录,/分区空间有限,我们将其移到/web下:
# cp -rfp /home/vpopmail /web
# rm –rf /home/vpopmail
# ln -s /web/vpopmail /home/vpopmail
继续安装其它包:
# ./ cnt5064-install-script.sh
下列软件包选y,这些包我们不需要手动去改什么配置,其它包选s跳过:
libdomainkeys-toaster
libsrs2-toaster
qmail-toaster
courier-authlib-toaster
courier-imap-toaster
autorespond-toaster
control-panel-toaster
ezmlm-toaster
qmailadmin-toaster
qmailmrtg-toaster
maildrop-toaster
isoqlog-toaster
squirrelmail-toaster
spamassassin-toaster
clamav-toaster
ripmime-toaster
simscan-toaster
如果中间没有什么错误的话,到此安装就完成了。

8.    配置邮件系统

8.1.    增加虚拟邮件域

# /home/vpopmail/bin/vadddomain testqmail.com 123456

用上面的命令就可增加一个虚拟邮件域,域名为testqmail.com,密码为123456。这个命令会产生一个 postmaster@testqmail.com的邮件用户,postmaster用户是testqmail.com的管理用户。通过其可以在 qmailadmin内增加或删除邮件帐号。

8.2.    更改default域名

当初安装操作系统时,这台服务器为tomcat服务器,域名设为tomcat1.testqmail.com。邮件系统的默认域名也就相应成了 tomcat1.testqmail.com,我们需要将其改为testqmail.com,这才是邮件系统的真正域名。
# cd /var/qmail/supervise
# vi imap4/run
# vi imap4-ssl/run
# vi pop3/run
# vi pop3-ssl/run
将上面这些文件内的:
HOSTNAME=`hostname –fqdn`
改成:
HOSTNAME=`cat /var/qmail/control/defaultdomain`
# vi smtp/run
# vi submission/run
将上面这些文件内的:
HOSTNAME=`hostname`
改成:
HOSTNAME=`cat /var/qmail/control/defaultdomain`

8.3.    配置squirrelmail

Squirrelmail是一个WEBMAIL软件,安装后需要配置一下才能正常使用:
配置squirrelmail:
# cd /usr/share/squirrelmail/config/
# ./conf.pl
#选择 “2. Server Settings”=>“A. Update IMAP Settings”=>“8. Server software”改成“courier”;回到主菜单,选择“10. Languages”,将“ Default Language”改成“zh_CN”,“Default Charset”改成“GB2312”。保存退出。

安装多语言:
# wget http://superb-west.dl.sourceforge.net/sourceforge/squirrelmail/all_locales-1.4.9-20070106.tar.gz
# cd /usr/share/squirrelmail
# tar -xvzf all_locales-1.4.9-20070106.tar.gz

8.4.    配置开机启动

qmail需要apache和mysql服务,我们需要同时配置这三个服务开机启动,qmail运行才正常:
# chkconfig –level 2345 httpd on
# chkconfig –level 2345 qmail on(做集群时不用设,heartbeat会启动它)
重启服务器后,qmail就可以正常运行了。

9.    增加二级域名访问WebMail

安装完后,用http://ip/qmailadmin和http://ip/webmail可访问管理页面和webmail,但是不方便,为此,建立两个二级域名:qmailadmin.testqmail.com和webmail.testqmail.com,方便用户记忆。为此,需做以下更改:
#vi /etc/httpd/conf/httpd.conf
将:
#Include /etc/httpd/conf/toaster.conf
#Include /etc/httpd/conf/squirrelmail.conf
更改为:
#Include /etc/httpd/conf/toaster.conf
#Include /etc/httpd/conf/squirrelmail.conf
NameVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /usr/share/squirrelmail
        ServerName webmail.testqmail.com
        <Directory /usr/share/squirrelmail>
           Options None
           Order allow,deny
           allow from all
        </Directory>
        ErrorLog logs/webmail.testqmail.com.error_log
</VirtualHost>

<VirtualHost *:80>
        DocumentRoot /usr/share/qmailadmin/
        ServerName qmailadmin.testqmail.com
        ScriptAlias /mail/ /usr/share/toaster/cgi-bin/
        Alias /admin-toaster /usr/share/toaster/htdocs/admin/
        Alias /stats-toaster/ /usr/share/toaster/htdocs/mrtg/
        Alias /qlogs-toaster/ /usr/share/toaster/htdocs/isoqlog/
        Alias /images-toaster/ /usr/share/toaster/htdocs/images/
        Alias /scripts/ /usr/share/toaster/htdocs/scripts/
        Alias /qmailadmin /usr/share/qmailadmin/
        <Directory /usr/share/qmailadmin>
            AddHandler cgi-script .cgi
            AddHandler cgi-script qmailadmin
            DirectoryIndex index.cgi qmailadmin index.html
            Options +Indexes FollowSymLinks +ExecCGI
            Order allow,deny
            Allow from all
        </Directory>
        <Directory /usr/share/toaster/htdocs>
            Options -Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
        <Directory /usr/share/toaster/htdocs/admin>
            AuthType Basic
            AuthName "Qmail Toaster v. 1.3 Admin"
            AuthUserFile /usr/share/toaster/include/admin.htpasswd
            require valid-user
        </Directory>
        <Directory /usr/share/toaster/htdocs/mrtg>
            AllowOverride All
            Order allow,deny
            Allow from all
            AuthType Basic
            AuthName "Qmail Toaster v. 1.3 Admin"
            AuthUserFile /usr/share/toaster/include/admin.htpasswd
            require valid-user
        </Directory>
        <Directory /usr/share/toaster/htdocs/isoqlog>
            AllowOverride All
            Order allow,deny
            Allow from all
            AuthType Basic
            AuthName "Qmail Toaster v. 1.3 Admin"
            AuthUserFile /usr/share/toaster/include/admin.htpasswd
            require valid-user
        </Directory>
        <Directory /usr/share/toaster/cgi-bin/vqadmin>
            AllowOverride All
            Options ExecCGI
            Order allow,deny
            Allow from all
            AuthType Basic
            AuthName "Qmail Toaster v. 1.3 Admin"
            AuthUserFile /usr/share/toaster/include/admin.htpasswd
            require valid-user
        </Directory>
        <Directory /usr/share/toaster/cgi-bin>
            AllowOverride All
            Options ExecCGI
            Order allow,deny
            Allow from all
        </Directory>
        ErrorLog logs/qmailadmin.testqmail.com.error_log
</VirtualHost>

在重启apache服务:
# service httpd restart
便可用http://webmail.testqmail.com和http://qmailadmin.testqmail.com访问了。

10.    NFS配置

10.1.    配置Nfs服务

NFS服务器IP:192.168.1.204
#vi /etc/exports
/home/vpopmail 192.168.1.*(rw,async,anonuid=89,anongid=89)
#vi /etc/passwd
vpopmail:x:89:89:Vpopmail User:/home/vpopmail:/sbin/nologin
#vi /etc/group
vchkpw:x:89:
#service portmap start
#service nfs start

10.2.    挂载nfs

#cp –rfp /home/vpopmail /home/vpopmailbak
#rm –rf /home/vpopmail/*
#mount –t nfs 192.168.1.204:/home/vpopmail /home/vpopmail
#cp –rfp /home/vpopmailbak/* /homev/vpopmail/

在qmail服务器上挂载

11.    heartbeat安装及配置

11.1.    heartbeat安装

#yum install heartbeat*

11.2.    heartbeat配置

#cp /usr/share/doc/heartbeat-2.1.*/ha.cf /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.*/authkeys /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.*/haresources /etc/ha.d/
#vi /etc/hosts
192.168.1.6      qmail6
192.168.1.5      qmail5
#vi /etc/sysconfig/network
HOSTNAME=qmail5
#vi /etc/ha.d/authkeys
auth 1
1 crc
#chmod 600 /etc/ha.d/authkeys
#vi /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 2
说明:心跳频率,自己设定。1:表示1秒;200ms:表示200毫秒
deadtime 30
说明:节点死亡时间阀值,就是从节点在过了30后还没有收到心跳就认为主节点死亡,自己设定
udpport 694
说明:心跳信息传递的udp端口,自己设定
#bcast eth0
#说明:采用eth0的udp广播用来发送心跳信息,建议在副节点不只一台时使用
ucast eth0 192.168.0.6
#说明:采用网卡eth0的udp单播来通知心跳,ip应为对方IP(未验证)
#mcast eth0 225.0.0.1 694 1 0
#说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用
#注:广播,单播,多播,以上三种任选其一即可
auto_failback on
说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
node qmail6
node qmail5
说明:节点名称,与uname –n保持一致。

ping 192.168.1.6

respawn 指令在运行时指定某个程序的运行和监控。如果此程序退出时的退出码不是 100,程序将自动重启。
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root

apiauth         mgmtd   uid=root
respawn         root    /usr/lib/heartbeat/mgmtd –v
上面两行是配置图型界面的管理服务hb_gui,可要可不要。

crm 指令指定了 Heartbeat 应运行 1.x-style 集群管理器或 2.x-style 集群管理器,后者支持 2 个以上的节点。
crm on

#vi /etc/ha.d/haresources
qmail5 IPaddr::192.168.1.7 Filesystem::192.168.1.205:/home/vpopmail::/home/vpopmail::nfs::rw qmail

生成/var/lib/heartbeat/crm/cib.xml
#/usr/lib/heartbeat/haresources2cib.py /etc/ha.d/haresources
设置图型界面hb_gui的管理密码
#passwd hacluster
#vi /etc/ha.d/haresources
qmail5 IPaddr::192.168.1.7 Filesystem::192.168.1.205:/home/vpopmail::/home/vpopmail::nfs::rw qmail

qmail5为主服务器,主备服务器在此设置。两台机器haresources都设成上面这样。

11.3.    开机启动

#chkconfig –level 2345 heartbeat on

12.    Q&A

12.1.    如何增加及删除用户

用户管理有两种方式,一是用WEB管理:http://qmailadmin.testqmail.com。二是用vadduser和vdeluser添加新用户和删除用户

12.2.    如何使用webmail

用浏览器打开:http://webmail.testqmail.com。输入带域名和用户名(如:cary.luo@testqmail.com)和密码登陆便可。

12.3.    使用客户端收发邮件的相关参数是什么

POP3 Server:pop.testqmail.com
SMTP Server:smtp.testqmail.com
IMAP Server:imap.testqmail.com
邮件系统同时支持pop3,pop3s,imap,imaps协议。可选其中任何一种协议收邮件,建议使用pop3s和imaps,它们的安全性更高。
发送邮件服务器需要用户认证。
设置用户名时请用全名,如:cary.luo@testqmail.com

12.4.    邮箱警告邮件能设为中文吗

可以。
设置邮箱容量达到90%的警告信息
# vi /home/vpopmail/domains/.quotawarn.msg

From: 邮箱管理员
Reply-To: postmaster@testqmail.com
To: 邮箱用户
Subject: 邮箱空间警告
Mime-Version: 1.0
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: base64

您的邮箱空间已经达到90%.如果想继续使用,请删除一些信件.

如果需要帮助,请联系邮箱管理员:

Email : postmaster@testqmail.com

设置邮箱已满的警告信息

# echo "邮件被拒绝,用户的邮箱空间已满." > /home/vpopmail/domains/.over-quota.msg

12.5.    如何清除邮件队列

12.5.1.    处理队列中的邮件:

如想在队列中的邮件马上传递,可以
# kill -HUP qmail-send

要删除队列中的邮件
# service qmail stop
# mv /var/qmail/queue/lock /var/qmail/
# find /var/qmail/queue/ -type f -exec rm {} ;
# mv /var/qmail/lock /var/qmail/queue/
# service qmail start
队列中的邮件包含在以下目录中 /var/qmail/queue/{info,mess,remote,local}/hash/#number

12.5.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信号

12.5.3.    删除队列中的大量广告信息

# service qmail stop
# cd /var/qmail/queue/mess
# find /var/qmail/queue/mess -type f -exec grep "^Subject:dss" {} ; -print -exec rm {} ;
运行queue-fix清除相关文件
# service qmail start

12.6.    我怎么更新邮件系统内的杀毒软件

邮件系统的杀毒模块用的是clamav,本身会有一个进程freshclam自动升级病毒码。有时系统会有如下错误在/var/log/clamav /freshclam.log内:
freshclam daemon 0.90.1 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
ClamAV update process started at Mon Jul 16 10:06:06 2007
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.90.1 Recommended version: 0.91
DON’T PANIC! Read http://www.clamav.net/support/faq
这是因为目前系统上的版本低于最新的版本造成的,可通过升级clamav解决:
# wget http://nchc.dl.sourceforge.net/sourceforge/clamav/clamav-0.91.1.tar.gz
# tar –xvzf clamav-0.91.1.tar.gz
# cd clamav-0.91.1
按自己的架构生成Makefile,服务器上是x86_64:
#i386
# ./configure –build=i686-redhat-linux-gnu –host=i686-redhat-linux-gnu –target=i386-redhat-linux-gnu –program-prefix= –prefix=/usr –exec-prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –sysconfdir=/etc –datadir=/usr/share –includedir=/usr/include –libdir=/usr/lib –libexecdir=/usr/libexec –localstatedir=/var –sharedstatedir=/usr/com –mandir=/usr/share/man –infodir=/usr/share/info –enable-experimental /usr/bin/make
#x86_64
# ./configure –build=x86_64-redhat-linux-gnu –host=x86_64-redhat-linux-gnu –target=x86_64-redhat-linux-gnu –program-prefix= –prefix=/usr –exec-prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –sysconfdir=/etc –datadir=/usr/share –includedir=/usr/include –libdir=/usr/lib64 –libexecdir=/usr/libexec –localstatedir=/var –sharedstatedir=/usr/com –mandir=/usr/share/man –infodir=/usr/share/info –enable-experimental /usr/bin/make
# make
# make install

12.7.    spamd日志内出错

smamd有下面的错误:
@40000000469ad2e71c1bcef4 [18428] error: Can’t locate Crypt/OpenSSL/Bignum.pm in @INC (@INC contains: ../lib /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.7/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.6/x86_64-linux-thread-multi /usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8) at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/Crypt/OpenSSL/RSA.pm line 17.

原因是少了一个prel库,通过下面的安装解决:
# perl -MCPAN -e shell
cpan> install Crypt::OpenSSL::Bignum
cpan> quit

12.8.    收发邮件时出错

收发邮件时出错如下错误:
登录邮件服务器时出错。“密码”被拒绝。 帐户: ‘192.168.1.223’, 服务器: ‘192.168.1.223’, 协议: POP3, 服务器响应: ‘/home/vpopmail/bin/vchkpw: error while loading shared libraries: libgssapi_krb5.so.2: failed to map segment from shared object: Cannot allocate memory’, 端口: 110, 安全(SSL): 否, 服务器错误: 0x800CCC90, 错误号: 0x800CCC92

原因为相关进程给的内存太少,需要增加相应的内存:
vi /var/qmail/supervise/pop3/run
vi /var/qmail/supervise/pop3-ssl/run
vi /var/qmail/supervise/imap4/run
vi /var/qmail/supervise/imap4-ssl/run
将softlimit -m 24000000改为softlimit -m 40000000 (24M内存改为40M)

12.9.    怎么按时间看qmail日志

qmail日志中的时间转换(如:@400000003f1f409e2256080c 转换成2003-07-24 10:12:36.576063500 ):
# tai64nlocal < /var/log/qmail/smtp/current
可将日志中的时间戳转化为标准格式,而其他信息不变

12.10.    怎么限制邮件的大小

在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail邮件大小的限制,一般安装完成后,这个文件是没有的,可以自己创建,smtp方式是以qmail的 databytes作限制的,如要创建databytes并设置邮件最大为4m:
# echo 4000000 >/var/qmail/control/databyte

12.11.    如何禁止垃圾帐号发信过来

# vi /var/qmail/control/badmailfrom
这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。例如:
peng@96633.net —-限制一个特定的用户
@sina.com —-限制整个域中的邮件

12.12.    如何限制单域和用户的默认邮箱数量及容量

# vi /home/vpopmail/etc/vlimits.default
#限制单域的容量和总邮件数
#这里设的是单域最大容量90G,最大邮件数5000000封
quota                   90000
maxmsgcount             5000000

# 限制新用户默认的容量和邮件数
# 这里设的是200M和10000封
default_quota           209715200
default_maxmsgcount     10000

如果想修改个别的用户容量可通过http://ip/qmailadmin管理.

12.13.    怎么配置SMTP发送的最大重试时间

# vi /var/qmail/control/queuelifetime

新增上面这个文件,这个文件用来指定一个邮件在队列中的最大存活时间,默认是604800秒,当一个邮件达到这个时间线后,qmail将最后一次尝试发送这封邮件,如果依然失败,会将其从队列中删除。我们可将其改成3600。

12.14.    如何查询qmail的送队列

# /var/qmail/bin/qmail-qstat
messages in queue: 63         //队列内有63份邮件
messages in queue but not yet preprocessed: 0
# /var/qmail/bin/qmail-qread //查看队列内的外发邮件

12.15.    用outlook收信老超时连不上

这个问题和域名反解有关,每当去服务器收信时,服务器都要对客户IP进行解析,当DNS不好或网络慢时,就会发生超时现象了。
# vi /var/qmail/supervise/pop3/run
#!/bin/sh

PASSPROG="/home/vpopmail/bin/vchkpw"
#HOSTNAME=`hostname –fqdn`
HOSTNAME=`cat /var/qmail/control/defaultdomain`

exec /usr/bin/softlimit -m 40000000
/usr/bin/tcpserver -v -R -c 200 0 110
/var/qmail/bin/qmail-popup $HOSTNAME
$PASSPROG /var/qmail/bin/qmail-pop3d Maildir 2>&1
改成:
#!/bin/sh

PASSPROG="/home/vpopmail/bin/vchkpw"
#HOSTNAME=`hostname –fqdn`
HOSTNAME=`cat /var/qmail/control/defaultdomain`

exec /usr/bin/softlimit -m 40000000
/usr/bin/tcpserver -v -R -H -c 200 -l 0 0 110
/var/qmail/bin/qmail-popup $HOSTNAME
$PASSPROG /var/qmail/bin/qmail-pop3d Maildir 2>&1
再重启Qmail。-H为不对远程机器做反解,-l 0 为不对本机做反解

13.    结论

邮件服务器还有些小问题需要以后解决:
邮件杀毒模块不能对RAR的压缩文件进行解压杀毒。目前也没有找到免费的杀毒模块有此功能。
目前的邮件系统使用的反垃圾软件为spamassassin,效果并不是很理想。