Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2521194
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-08-24 11:15:31

一:适用范围:
	本文探讨的是如何建立一个可容纳数K-数M数量级用户的邮件系统,实现如此大量的用户,使我们有充足的理由
	抛弃sendmail,转向qmail,如果你的系统仅仅需要为几十用户提供mail服务,那么你应该使用sendmail,
	因为转向qmail并不是一件轻松的工作。
二:想达到的目的:
	假设你有了一台运行RedHat 7.1 的系统,DNS工作正常,特别是,MX纪录正确。现在希望在此系统上实现一个
	Mail Server,要求:
	1:支持可预见的用户数量;
	2:多域(不同于你的主机域)
	3:管理简洁;
	4:在线申请账号;
	5:全功能的Web界面支持;
	6:pop3及smtp(验证)支持;
	………………
三:所需软件包:
	许多人安装qmail是从qmail-1.03.tar.gz源码包开始的,虽然可定制,但得到一个可运行的qmail时(假设每
	一步都不出意外),已经耗去了你的大部分精力与热情,网上大部分qmail的文章从头到尾都是教你如何去编辑
	各种各样的启动脚本,如何configure。实际上,qmail的安装已相当成熟,没有必要再重复别人已经做过的工
	作,因此,本文主要使用.src.rpm包来构建系统(qmail不允许第三方以二进制发行)。
	1:基本系统	
	ucspi-tcp-0.88-1.src.rpm
	ucspi-unix-0.34-1.src.rpm
	daemontools-0.70-3.src.rpm
	supervise-scripts-3.3-1.src.rpm
	qmail-1.03_252bpatches-18.src.rpm
	以上包均由Dan Kuykendall发行,可在或~bruceg/找到。
	2:的系列包:
	vpopmail-4.10.26.tar.gz
	qmailadmin-0.56.tar.gz
	sqwebmail-2.1.1.tar.gz
	3:依附包
	autorespond-1.0.0.tar.gz
	ezmlm-0.53.tar.gz
	ezmlm-idx-0.40.tar.gz
	maildrop-1.3.3.tar.gz
	
四:安装qmail
	1:
	rpm --rebuild ucspi-tcp-0.88-1.src.rpm 
	rpm --rebuild daemontools-0.70-3.src.rpm
	rpm --rebuild supervise-scripts-2.4-1.src.rpm
	rpm -rebiuld ucspi-unix-0.34.src.rpm
	2:
	rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-tcp-0.88-1.i386.rpm
	rpm -ivh /usr/src/redhat/RPMS/i386/ucspi-unix-0.34.i386.rpm
	rpm -ivh /usr/src/redhat/RPMS/i386/daemontools-0.70-3.i386.rpm
	rpm -ivh /usr/src/redhat/RPMS/noarch/supervise-scripts-2.4-1.noarch.rpm	
	5:rpm -e --nodeps sendmail
	6:
	rpm -rebiuld qmail-1.03_252bpatches-18.src.rpm
	rpm -ivh /usr/src/redhat/RPMS/i386/qmail-1.03+patches-18.i386.rpm
	7:config
	(replace 192.168.2 with your own IP,replace hleil with your own user name)
	echo "127.allow" >> /etc/tcpcontrol/pop-3.rules
	echo "192.168.2.allow" >> /etc/tcpcontrol/pop-3.rules
	echo '127.allow,RELAYCLIENT=""' >> /etc/tcpcontrol/smtp.rules
	echo '192.168.2.allow, RELAYCLIENT=""' >> /etc/tcpcontrol/smtp.rules
	tcprules /etc/tcpcontrol/pop-3.cdb /etc/tcpcontrol/pop-3.tmp \
		< /etc/tcpcontrol/pop-3.rules
	tcprules /etc/tcpcontrol/smtp.cdb /etc/tcpcontrol/smtp.tmp \
		< /etc/tcpcontrol/smtp.rules
	echo hleil > /etc/qmail/alias/.qmail-root
8:Start pop3 and smtp:
	killall -HUP init
	svc-add /var/qmail/service/pop3d
	svc-add /var/qmail/service/smtpd
	OK!基本的qamil系统已安装完毕,够简单吧!root的邮件将发往hleil。
	要是你还嫌麻烦,我编辑了一个脚本qmail-1.03-18,修改一下,执行:
	./qmail-1.03-18 install
	就行了!
	安装脚本请!
9:说明
	本qmail没有auto-create-Maildir-when-a message arrived 功能,需手工为用户建立Maildir,
	或使用此脚本来转换mailbox->Maildir并为每个系统用户建立Maildir!
 
五:虚拟域支持(vpopmail):
	1:确保mysql运行正常,添加用户vpopmail,vpopmailread,vpopmail拥有全部权限,用于创建及管理
	,vpopmailread只可select,用于vpopmail的日常运行。
	不要为vpopmail设定default-domain。实在无此必要。并可能带来不必要的麻烦。
	2:tar- zxvf vpopmail-4.10.24.tar.gz
	3:
	cd vpopmail-4.10.24 
	echo '#define MYSQL_UPDATE_SERVER "localhost"' >> vmysql.h
	echo '#define MYSQL_UPDATE_USER "vpopmail"' >> vmysql.h
	echo '#define MYSQL_UPDATE_PASSWD "vpopmailadmin"' >> vmysql.h
	echo '#define MYSQL_READ_SERVER "localhost"' >> vmysql.h
	echo '#define MYSQL_READ_USER "vpopmailread"' >> vmysql.h
	echo '#define MYSQL_READ_PASSWD "vpopmailread"' >> vmysql.h
	创建vchkpw组及vpopmail用户
	./configure --enable-auth-logging=y --enable-logging=v \
	--enable-log-name=vpopmail \
	--enable-mysql=y --enable-roaming-users=y \
	--enable-harkdquota=20000000 --enable-sqwebmail-pass=n \
	--enable-many-domains=n --enable-passwd=y \
	--enable-tcpserver-file=/etc/tcpcontrol/smtp.rules \
	--enable-sqlincdir=/usr/include/mysql --enable-sqllibdir=/usr/lib/mysql \
	--enable-sqllibs=mysqlclient \
	--enable-ip-alias-domains=y --enable-qmail-ext=y \
	--enable-hardquota=20000000 --enable-mysql-replication=n \
	--enable-valias=y
	make clean
	make
	make install-strip
	
	(replace "$vpopmailhome" with your realy path)
	echo "$vpopmailhome"/bin/vchkpw > /etc/qmail/control/checkpassword
	svc-stop /service/pop3d
	svc-start /service/pop3d
	
	edit /etc/crontab,add this line(of course replace home-dir-of-vpopmail 
	with realy path):
	40 * * * * /home-dir-of-vpopmail/bin/clearopensmtp 2>&1 > /dev/null
	
	then(非常重要!):
	rm -f /etc/cron.hourly/qmail
	
	OK!
	
	安装脚本请!
	4:系统说明:
	pop3:用vchkpw代替checkpasswd,本域用户查找/etc/passwd,虚拟域用户查找mysql;
	smtp:由于启用了roaming-user,远程用户pop之后,ip自动保存40分钟,此阶段内,用户可用此IP发信。
	由于qmail-1.03_252bpatches-18.src.rpm默认安装了一个自动更新/etc/qmail/users/assign及
	/etc/qmail/users/cdb的/etc/cron.hourly/qmail,每小时更新/etc/passwd到
	/etc/qmail/users/cdb,更新过程简单覆盖/etc/qmail/users/assign,若不删除,将导致
	vpopmail丢失在/etc/qmail/users/assign及/etc/qmail/users/cdb中的配置。其实对于很少系统
	用户的系统来说,直接查询/etc/passwd并不会导致系统性能下降,因此删除此文件!不必找替代方案
	(否则要写个脚本代替了)。
六:WEB管理(qmailadmin)
	1:为支持vpopmail-4.10.X,必须使用qmailadmin-0.5X。
	2:安装autorespond-1.0.0,cp autorespond /usr/local/bin/
	3:安装ezmlm-0.53及ezmlm-idx-0.40
	4:
	tar -zxvf qmailadmin-0.54.tar.gz
	cd qmailadmin-0.54
	(RedHat 7.1的http主目录有所改变)
	mkdir /var/www/qmailadmin
	./configure --enable-cgibindir=/var/www/cgi-bin \
	--with-htmllibdir=/var/www/qmailadmin --enable-htmldir=/var/www
	make clean
	make
	make install-strip
	
	OK!
	安装脚本请!
 
七:WEB Mail(sqwebmail)
	1:为使用vpopmail的vchkpw验证必须使用更新的preauthvchkpw.c文件代替原有文件(必须使用vchkpw
	验证,不能使用mysql验证,Why?因为mysql验证不使用vpopmail的数据,它需要自己建表,哼,标准的
	垃圾功能,那个傻子才会用!)。
	2:
	tar -zxvf sqwebmail-2.1.1.tar.gz
	cp -f preauthvchkpw.c sqwebmail-2.1.1/auth
	cd sqwebmail-2.1.1
	(非常重要!)
	INCS=-I/usr/include/mysql
	export INCS
	LIBS="-L/usr/lib/mysql -lmysqlclient -lz"
	export LIBS
	CPPFLAGS=-I/usr/include/mysql
	LDFLAGS=-L/usr/lib/mysql
	export CPPFLAGS
	export LDFLAGS	
	(如果不设定上述环境,make时将出错)
	./configure --with-cachedir --without-gzip --enable-webpass=yes \
	--enable-softtimeout=300 --enable-autopurge=180 --enable-maxpurge=180 \
	--with-htmllibdir=/var/www/sqwebmail --enable-cgibindir=/var/www/cgi-bin \
	--enable-imagedir=/var/www/images/sqwebmail --enable-imageurl=/images/sqwebmail/ \
	--enable-mimecharset=gb2312 --with-maxargsize=5000000 \
	--with-maxformargsize=5000000 --with-maxmsgsize=5000000 --with-ispell \
	--with-authshadow --without-authmysql --without-authldap --with-authuserdb \
	--with-authpwd --without-authpam --with-authvchkpw --without-authdaemon 
	make configure-check
	make
	make check
	make install-strip
	make install-configure	
	
	(设定sqwebmail仅用/etc/passwd 和 mysql 的虚拟域信息验证用户,这样本机用户和虚拟域用户都可以
	使用sqwebmail,如果你想更安全,删除authpasswd,仅保留authvchkpw,系统用户将不能通过
	sqwebmail收发邮件)
	echo "authvchkpw authpasswd" > /var/www/sqwebmail/authmodulelist
	
	OK!
	3:说明
	sqwebmail的用户界面可以很容易的定制,并不是说简单的汉化,而是可以创建完全不同的html页面,
	前提是:各页面的头部分必须完整(也就是注释掉的),所有变量不得改动(尤其是大小写)。
	我正在做一个简单的汉化,不久可以完成。
八:Bug
	本安装过程目前尚未发现Bug,我的测试系统已运行了一周,良好!
	如果你发现了更深层次的Bug,请给我发邮件Email:hleil@163.com
	
九:本文的更新版可在得到!
 
参考资料:
1:Qmail-VMailMgr-Courier-imap-HOWTO
2:Vpopmail FAQ
3: Life With qmail
4: Sqwebmail FAQ
阅读(560) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~