分享

Qmail搭建全攻略

 农夫子oice 2007-06-13

Qmail搭建全攻略

Wikipedia,自由的百科全书

目录 [隐藏]

简介

Qmail搭建文档可以基于Redhat AS3 & Qmail实现以下功能:

  • qmail
  • vpopmail (POP/POP3邮件服务)
  • iGenus (Web Mail系统)
  • iGenus admin (Web Mail管理系统)
  • qmail-scanner (邮件扫描系统)
  • maildrop (邮件扫描器连接模块)
  • spamassasin (反垃圾邮件系统)
  • Clamav (邮件反病毒系统)
  • isoqlog (mail日志分析)

以上配置能够满足中小型企业的日常需求。

功能列表:

  • SMTP服务器:SMTP-AUTH认证(Plain,Login,CRAM-MD5),TLS(SSL)支持
  • POP3服务器:CRAM-MD5,APOP,和SSL支持
  • 病毒和垃圾邮件检测
  • Web管理
  • 通过Web显示统计信息
  • WebMail

安装准备

1)推荐在Red Hat Enterprise Linux Advanced Server 3.X或Red Hat Linux 9.0中部署本邮件系统。在AS4中测试时,发现反垃圾部分由于缺少一个RPM包(在AS4安装光盘中无法找到),因而反垃圾功能未能实现。另外,在开始部署本邮件系统之前请务必确认您的系统中已经部署完成Apache+PHP+MySQL,否则Webmail和Web管理无法安装!

要确认下面的软件是否已经安装:

rpm -q gdbm
rpm -q gdbm-devel
rpm -q openssl
rpm -q openssl-devel
rpm -q stunnel
rpm -q krb5-devel

如果你还没有安装, 请先安装它们. 你可以到安装光盘或是在这里找到它们的RPM包 http://www.

如果设置了防火墙,要打开服务器的www 80、smtp 25和pop3 110三个端口。

2)卸载已有的邮件系统,确认没有SMTP/POP/IMAP服务在运行:

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

3)删除已有的SMTP/POP/IMAP软件:

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

4)下载软件

我把下文中所提到的软件打成了一个包,下载地址为:http://nanu./qmail.tar.gz,我一般把软件放在/usr/local/qmail_src下面,根据个人习惯吧。

cd /usr/local/qmail_src
tar xzvf qmail.tar.gz
cd Qmail
tar xzvf netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh

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

安装软件

1)daemontools

daemontools是一个收集管理UNIX进程的工具.用它来监听qmail-send,qmail-smtpd,qmail-pop3d.

安装:

cd /usr/local/qmail_src/Qmail
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
patch -p1 < /usr/local/qmail_src/Qmail/netqmail-1.05/
other-patches/daemontools-0.76.errno.patch package/install

验证daemontools已经正常运行:

sleep 5
ps ax | grep svscan

2)ucspi-tcp

ucspi-tcp包括tcpserver和tcpclient,一个命令行工具来建立client-server应用程序.

安装:

cd /usr/local/qmail_src/Qmail
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

3)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 /usr/local/qmail_src/Qmail
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/ vi qmail-smtpd.c \ 搜索函数straynewline中的451改为553

当你的服务器收到无效格式的邮件时,会发送:"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.",告诉对方的服务器不要再发这封无效的信件。

4)make

make setup check

用你自己的主机名代替下面的mail.

./config-fast mail.
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

crontab -u root -e
01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1

5)为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 /usr/local/qmail_src/Qmail/toaster-scripts-0.6/send.run /var/qmail/supervise/qmail-send/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/send.log.run /var/qmail/supervise/qmail-send/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/smtpd.run /var/qmail/supervise/qmail-smtpd/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3d.run /var/qmail/supervise/qmail-pop3d/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run
cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run
cp /usr/local/qmail_src/Qmail/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

6)启动脚本:

cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/rc /var/qmail/
cp /usr/local/qmail_src/Qmail/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

7)用daemontools来启动qmail-send和qmail-smtpd

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

8)命令:

启动,停止,重启,查看队列等

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

9)检查服务

netstat -an | grep 25
ps -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep

10)日志:

/var/log/maillog
/var/log/qmail/current
/var/log/qmail/pop3d/current
/var/log/qmail/pop3ds/current
/var/log/qmail/smtpd/current

vpopmail的安装

1)定义

vpopmail是一个以qmail为基础的虚拟域管理包

vpopmail的用户和组我们前边已经建立了

2)配置

mkdir -p /home/vpopmail/etc

a.设置默认域,红色部份改成你要设置的域。

echo "" > /home/vpopmail/etc/defaultdomain

b.设置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

c.设置MySQL信息,第一个vpopmail是账号,xukixu为密码,第二个vpopmail是数据库

echo "localhost|0|vpopmail|xukixu|vpopmail" > /home/vpopmail/etc/vpopmail.mysql
chmod 640 /home/vpopmail/etc/vpopmail.mysql
chown -R vpopmail.vchkpw /home/vpopmail/etc

d.在MySQL里添加vpopmail的账号

mysql -uroot --pxukixu
> CREATE DATABASE vpopmail;
> GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY ‘xukixu‘;
> FLUSH PRIVILEGES;
> QUIT

3)安装:

cd /usr/local/qmail_src/Qmail
tar zxvf vpopmail-5.4.7.tar.gz
cd vpopmail-5.4.7

4)带数据库支持

./configure --enable-incdir=/usr/local/mysql/include 
--enable-libdir=/usr/local/mysql/lib --disable-roaming
-users --enable-logging=p --disable-passwd --enable-
clear-passwd --disable-domain-quotas --enable-auth-
module=mysql --enable-auth-logging --enable-mysql-
logging --disable-valias --disable-mysql-limits
make
make install-strip

5)管理:

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

a.添加域,红色部份前面是域名,后面是管理员(postmaster)密码

vadddomain  xukixu

b.添加用户,红色部份为注解,不用输入

vadduser -q 10485760S(邮箱大小) xukixu@(邮箱账号) 1234(密码)
vmoduser -c 许靖(邮箱描述) xukixu@

c.设置邮箱容量达到90%的警告信息

vi /home/vpopmail/domains/.quotawarn.msg
From: 邮箱管理员
Reply-To: postmaster@
To: 邮箱用户
Subject: 邮箱空间警告
Mime-Version: 1.0
Content-Type: text/html; charset=gb2312
Content-Transfer-Encoding: base64
您的邮箱空间已经达到90%.如果想继续使用,请删除一些信件.
如果需要帮助,请联系邮箱管理员:
Email : postmaster@

6)设置邮箱已满的警告信息

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

7)启动脚本:

cp /usr/local/qmail_src/Qmail/toaster-scripts-0.6/vpopmailctl /var/qmail/bin
ln -s /var/qmail/bin/vpopmailctl /usr/bin
chmod 755 /var/qmail/bin/vpopmailctl

8)用daemontools来启动qmail-pop3d和qmail-pop3ds

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

9)命令:

  • 启动,停止,重启,查看队列等
vpopmailctl start|stop|restart|stat|pause|cont|help

10)检查服务

netstat -an | grep 110
ps -ef | grep qmail
ps -efl | grep "service errors" | grep -v grep

11)带数据库支持

cd /usr/local/qmail_src/Qmail/netqmail-1.05/netqmail-1.05
patch -p0 < /usr/local/qmail_src/Qmail/chkuser-0.6.mysql.patch

12)修改libmysqlclient.a存在路径

vi conf-mysql
/usr/local/mysql/lib/libmysqlclient.a
make clean
make
qmailctl stop
make setup check
qmailctl start

13)安装选项参考:

vpopmail 5.4.7
Current settings
------------------------------------------------------
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 = 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)

14)POP3和SMTP测试

用outlook测试qmail的smtp和pop3是否正常,注意由于vpopmail支持虚拟域名,所以在outlook中设置邮件账号时,用户名后要加上域名,如demo@demo.com。smtp是带认证的,在outlook中也要作相应设置。建议先测试正常

后再进行下一步安装。如果qmail出现问题,可查看mysql中的vpopmail数据库,/var/log下的mysqld和maillog日志记录,这样容易很快找出问题。

安装并运行igenus

这里 (http://www.)下载最新的安装包,我用的是igenus_2.0.2_20040901_release.tgz

1)安装:

cd /usr/local/qmail_src/Qmail
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/"
/etc/rc.d/init.d/httpd restart //重启apache,使修改生效

4)修改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 = $CFG_BASEPATh."/temp"; \\改成你安装的目录的当前目录下

5)重新编制Mysql数据库表格

a.删除之前创建的域名

vdeldomain 

b.编辑数据库:

mysql -uroot -pxukixu

use vpopmail; drop table lastauth; drop table vpopmail; quit;

c.编辑/var/www/html/docs/iGENUS.sql

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

# phpMyAdmin SQL Dump # version 2.5.3 # http://www. # # 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`) ) TYPE=MyISAM PACK_KEYS=1 ;

6)运行

mysql -uroot -pxukixu </var/www/html/docs/iGENUS.sql 导入数据表。

7)设置igenus 定义允许上传下载的邮件的大小

vi /etc/php.ini

a.编辑/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

vi /etc/httpd/conf/httpd.conf

b.编辑/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
<VirtualHost *:80>
ServerName mail.domain.net
DocumentRoot /var/www/html
</VirtualHost>

8)重启apache:

service httpd restart

9)如果需要,用vadddomain和vadduser添加新域名和新用户。

最后打开浏览器,输入http:///, 就可以访问网站了

10)Qmail限制附件的大小

在/var/qmail/control/databytes 文件中设置附件的大小,可以实现对qmail附件大小的限制,一般安装完成后,这个文件是没有的,你可以自己创建。

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

创建databytes并设置邮件最大为4m

echo 4000000 >/var/qmail/control/databyte

11)限制单域的邮箱数量

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

maxpopaccounts 200 default_quota 52428800s
chmod 700 /home/vpopmail/domains//.qmailadmin-limits chown vpopmail:vchkpw /home/vpopmail/domains//.qmailadmin-limits

这样就把邮箱总数限制在200个,每个邮箱为50M了

12)用qmail封mailfrom

vi/var/qmail/control/badmailfrom

这个控制文件实现拒收邮件功能的,每一个地址要单独一行。而且,不用重起qmail就能生效。例如:

peng@96633.net -----限制一个特定的用户
@sina.com -----限制整个域中的邮件

安装并运行iGenus_Admin

1)下载

从www. 下载igenus_admin的安装文件igenus_admin_0.1.tgz到/home/pkg

2)安装

cd /usr/local/qmail_src/Qmail
tar -xzvf igenus_admin_0.1.tgz -C /var/www/html/

3)设置

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

<?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/"; } ?>

4)保存退出

touch /etc/syspasswd.dat

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

5)登录设置页面 http:///admin/sys/

用户:Admin密码Admin来登录.注意A要大写..这个管理账号密码登录后可以改的

登录后,首先点"更新数据库"你就会看见你的域名啦.然后点"编辑"把"登录权限 该域管理员(Postmaster)有权登录进行用户管理"这一项打勾,确认后,就可以用 http:///admin/ 来登录管理了。

SpamAssassin

1)简介

Spam是一个让人讨厌的字眼. 大部分的人都不喜欢它. 如果你想保护自己免受spam, 你就需要安装SpamAssassin.

安装SpamAssassin 要用到Time-HiRes、Digest-SHA1、HTML-Parser、perl-DB_File和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
perl-DB_File-1.804-88.i386.rpm

2)如需安装请按照以下顺序安装RPM:

perl-Time-HiRes* --> perl-Digest-SHA1* --> perl-HTML-Tagset* --> perl-HTML-Parser* --> perl-DB_File*

3)安装SpamAssassin

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

cd /usr/local/qmail_src/Qmail 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

4)我们想要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"

修改其中一行为上所示。

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

spamassassin的过滤模板在/etc/mail/spamassassin/local.cf,修改为:

vi /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

运行ntsysv,将spamd设定的为开机运行.

5)进行一个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

1)添加所需的组和用户

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

2)安装软件

cd /usr/local/qmail_src/Qmail
tar -xzvf clamav-0.86.2.tar.gz
cd clamav-0.86.2
./configure
make check
make install

3)测试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/clamd.conf文件,去掉下面选项前面的#: vi /usr/local/etc/clamd.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 \\去掉前面的#
touch /var/log/freshclam.log chmod 644 /var/log/freshclam.log chown clamav:clamav /var/log/freshclam.log

4)升级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

5)创建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/

6)创建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

7)使其能够执行

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

8)随开机起动

echo /etc/rc.d/init.d/clamav start >/etc/rc.d/rc.local


MailDrop and TNEF reader

1)简介

TNEF是一个从"application/ms-tnef". 类型中找出MIME附件的程序.这仅仅是微软系统中的一种附件.

TNEF程序允许将封装成TNEF的附件提取出来. 安装TNEF并不是必须的, 但我强烈推荐安装它!

2)安装 maildrop

cd /usr/local/qmail_src/Qmail
tar -xjvf maildrop-1.7.0.tar.bz2
cd maildrop-1.7.0
./configure
make
make install-strip
make install-man

3)安装 the tnef

cd /usr/local/qmail_src/Qmail
tar -xzvf tnef-1.2.3.1.tar.gz
cd tnef-1.2.3.1
./configure
make
make install

4)使用Maildrop调用SpamAssassin 在/home/vpopmail/domains/localhost.com(你创建的域)/ 建立mailfilter文件

touch mailfilter
chown vpopmail:vchkpw mailfilter
chmod 700 mailfilter

vi 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" } }

5)修改.qmail-default

内容如下:

| /usr/local/bin/maildrop ./mailfilter

qmail-scanner&qms-analog

1)为了能够扫描邮件服务器中进出的邮件, 我们需要安装 qmail-scanner. 如果你之前没有安装perl-suidperl,我们还需要安装它

cd /usr/local/qmail_src/Qmail
rpm -Uvh perl-suidperl-5.8.0-88.3.i386.rpm

2)解压qmail-scanner

tar zxvf qmail-scanner-1.22.tgz

3)解压qms-analog

tar zxvf qms-analog-0.3.4.tar.gz

cd qms-analog-0.3.4
make all

4)拷贝所需要的qms-analog文件到qmail-scanner安装目录

cp qmail-scanner-1.22-st-qms-20040530.patch /usr/local/qmail_src/Qmail/qmail-scanner-1.22/

cp qms-config-script /usr/local/qmail_src/Qmail/qmail-scanner-1.22/

5)打上qms-analog补丁

cd /usr/local/qmail_src/Qmail/qmail-scanner-1.22

chmod 755 qms-config-script
patch -p1 < qmail-scanner-1.22-st-qms-20040530.patch

6)继续安装qmail-scanner,添加所需的组和用户

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

7)通过qms-config-script脚本来安装qmail-scanner,编辑qms-config-script

vi qms-config-script

8)修改下面红色部份以达到我们的需求

#!/bin/sh

if [ "$1" != "install" ]; then INSTALL= else INSTALL="--install" fi
./configure --domain --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 no --unzip yes --scanners clamscan,verbose_spamassassin "$INSTALL"

注意: "--admin" 和 "--domain" 参数组成了账号"user"@"domain name". 警告消息将通过qmail-scanner 发往这个邮件账号, 所以必须确认这是一个管理级别的账号. 另外,所有域的警告信息都会发给这个账号, 所以一定要小心.

9)保存并退出。

10)测试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

11)在你的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

12)重新启动smtp服务

qmailctl stop
qmailctl start
qmailctl stat

13)测试程序

cd /usr/local/qmail_src/Qmail/qmail-scanner-1.22/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-attachments.txt

14)主要的排错监测日志

/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

isoqlog

1)简介

isoqlog是一个qmail日志分析工具,它是用perl写的,可以分析和统计qmail的运行日志,并生成漂亮的HTML格式的报表,如果服务器上已经安装WEB服务,管理员就可以通过浏览器来查看这些报表。相对于 qmailanalog,isoqlog分析的项目稍微少一些。

soqlog可以生成多个邮件域的报表;对于每个邮件域,isoqlog可以统计出每天、每月、每年的邮件流量以及字节数,还生成相应的统计柱状图;对于每天的报表,isoqlog可以根据邮件投递的数量以及字节数的多少来对邮件用户进行排列。

1)安装isoqlog

cd /usr/local/qmail_src/Qmail
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

2)配置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."
maxsender = 100 maxreceiver = 100 maxtotal = 100
maxbyte = 100

3)保存并退出。

4)下一步是告诉isoqlog哪些虚拟域需要产生统计报表,我希望我的mail服务器能够报告每个域的状态,所以只需要简单的创建了个链接即可:

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

5)现在,isoqlog应该能够正常运行了,运行如下命令测试一下效果:

/usr/local/bin/isoqlog

6)通过如下页面查看输出结果:

http:///isoqlog

7)你可以点击各个虚拟域名称显示其报表。

8)我们希望isoqlog能够即时提供报表,将如下内容加入crontab

crontab -e
58 * * * * /usr/local/bin/isoqlog 1>/dev/null 2>/dev/null
每个小时的第58分钟运行一次

邮件系统维护

1)邮件系统相关日志

/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

2)设置Qmail用户邮箱的容量

# cd /home/vpopmail/bin
#./vsetuserqutoa  10500000s --这个域,都设成10m的
#./vsetuserqutoa xuki@ 10500000s ---只把xuki@这个用户单独设置为10m。

3)批量添加用户

例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

临时限制一个用户的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

把一邮件域的名字比如a.com更改为b.com,如何实现 以下几个步骤:

a、cd /home/vpopmail/domains

mv a.com b.com

b、把vpopmail数据库的vpopmail表导出把所有a.com改为b.com,然后删除vpopmail表,再导入.

c、把把vpopmail数据库的dir_control表的a.com改为b.com

d、在/home/qmail/control 目录下把 virtualdomains和rcpthosts下的的a.com改为b.com.

e、在/home/qmail/users目录下把assign文件的a.com改为b.com

f、需要运行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。

FAQ (整理编写: Nanu)

1、iGENUS Admin无法添加域,返回一些数据库查询错误?

执行下面的操作问题就可以解决了:

# chown root /home/vpopmail/bin/vadddomain
# chmod a+s /home/vpopmail/bin/vadddomain

2、用Outlook发送邮件的时候出现451, qq crashed # 4.3.0 错误?

检查/var/qmail/supervise/qmail-smtpd/run,查看exec /usr/local/bin/softlimit -m 40000000 是否为40000000,注意是7个0,如果小于40000000(40MB),则会出现451, qq crashed # 4.3.0 错误。

3.用Outlook发送邮件的时候出现451 tempory qq failed 错误?

这个问题与Qmail、qmail-scanner和Clamav有关,可以按照顺序从新安装Qmai、Clamav、qmail-scanner解决。但注意,重新安装之前请先执行:

# qmailctl stop
# /etc/rc.d/init.d/clamav stop

4.iGENUS Admin的登录好像总是有问题?

iGENUS Admin有两种登录模式,一种时管理员模式(拥有所有域的控制权限);另一种是域管理模式(只能控制所属域)。这两种方式的登录地址是不一样的:

管理员模式:http://mail./admin/sys/
域管理模式:http://mail./admin/

5.何更改iGENUS Admin的管理员用户名?

默认情况下,iGENUS Admin的管理员用户名为Admin,可以通过以下方式更改管理员用户名:

# vi /path-to-webmail/admin/include/config_inc.php

找到下面行:

$CFG_SYSADMIN_NAME  = "Admin";
将Admin换成你所要的管理员用户名。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多