博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

David_Linux~blog

Ctrl + C + 剪刀,天下文章一大抄,抄来抄去有提高
abcd.cublog.cn


Qmail搭建全攻略for Linux as 3
目录 [显示隐藏]

简介

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.rpmfind.net

如果设置了防火墙,要打开服务器的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.8866.org/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.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

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 "domain.com" > /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 domain.com xukixu

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

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

c.设置邮箱容量达到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 

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.org)下载最新的安装包,我用的是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 domain.com

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.phpmyadmin.net # # Host: localhost # Generation Time: Jun 04, 2004 at 11:26 AM # Server version: 3.23.55 # PHP Version: 4.3.0 # # Database : `vpopmail` #
# --------------------------------------------------------
# # Table structure for table `address` #
use vpopmail; //加入这一行 CREATE TABLE `address` ( `id` int(11) unsigned NOT NULL auto_increment, `pw_id` int(5) NOT NULL default '0', `name` varchar(64) NOT NULL default , `email` varchar(128) NOT NULL default , UNIQUE KEY `id` (`id`), KEY `pw_id` (`pw_id`) ) TYPE=MyISAM PACK_KEYS=1 ;
# -------------------------------------------------------- 。。。。。。。。。 。。。。。。。。。。
CREATE TABLE `vpopmail` ( `pw_id` int(5) unsigned NOT NULL auto_increment, `pw_name` varchar(32) NOT NULL default , `pw_domain` varchar(64) NOT NULL default , `pw_passwd` varchar(40) NOT NULL default , `pw_uid` int(11) default NULL, `pw_gid` int(11) default NULL, `pw_gecos` varchar(48) default NULL, `pw_dir` varchar(255) default NULL, `pw_shell` varchar(20) default NULL, `pw_clear_passwd` varchar(16) default NULL, \\加入这一行 `createtime` timestamp(14) NOT NULL, PRIMARY KEY (`pw_id`), KEY `pw_name` (`pw_name`,`pw_domain`) ) 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://domain.com/, 就可以访问网站了

10)Qmail限制附件的大小

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

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

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

echo 4000000 >/var/qmail/control/databyte

11)限制单域的邮箱数量

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

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

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

12)用qmail封mail from

vi /var/qmail/control/badmailfrom

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

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

发表于: 2007-02-26 ,修改于: 2007-02-26 21:24,已浏览2724次,有评论1条 推荐 投诉


网友评论
内容:
请问你是原作者么?你的安装包不能下
http://nanu.8866.org/qmail.tar.gz这个报503错。可以重新给个下载地址么?
本站网友评论于:2007-03-09 21:37:31 (124.78.210.★)

发表评论