Qmail系统架设
----浙江电力内网系统架构
mysql下载之后是个文件夹Qmail是世界上安装使用量仅次于Linux/Unix上缺省使用的Sendmail的邮件服务器软件。Qmail配置较Sendmail简单,而且速度较之要快,所以在浙江省电力公司内网系统(zj.sgcc)的架设过程中,我们选择了Qmail作为邮件服务器的核心。
一个邮件服务器主要包括三个主要的功能,邮件传输代理MTA(Mail Transport Agent)、邮件分发代理MDA(Mail Delevery Agent)和邮件用户代理MUA(Mail User Agent)。Qmail软件包实现了这三个基本的功能,之所以说其只实现了邮件服务器的基本功能是因为它没有实现很多邮件服务器需要的功能,这些功能有些是安全和防止垃圾邮件方面,比如SMTP验证、APOP功能、Relay控制功能和对使用者IP地址的限定等等,还有一些扩展的功能象Webmail功能、虚拟域、基于数据库的用户管理、邮件列表、自动转发它也不能提供。
但有不少自由软件联盟来为Qmail添砖加瓦,这些人们自发组织起来的联盟开发了能够补偿Qmail不足的一些补丁。这些软件补丁主要包括:
Ucspi-tcp-0.88 (tcpsever服务程序,提供对IP地址限定功能)
Checkpassword-0.81 (把/etc/passwd的用户和密码作为POP3的用户和密码进行验证)
Ezmlm-0.53(支持邮件列表功能)
vpopmail-5.2.2(这个重要,提供虚拟域和数据库支持,浙江公司也用这个功能)
Qmailadmin-0.35 (虚拟域的web管理工具)
Autorespond-1.0.0 (自动回复程序,Ezmlm需要)
Igenus webmail (一个Webmail系统,浙江公司也用这个,PHP版的)
Vqsignup-0.4 (提供web方式的用户邮箱注册)
qmail-smtpd-auth-0.26 (提供SMTP认证功能)
cmd5checkpw-0.22 (提供认证加密算法)
浙江电力的邮件主要软件为:
CentOs4.7 + Qmail + MySQL + Vpopmail + Igenus Webmail
以下内容为参考网上一篇FreeBSD系统下用Qmail架构邮件系统的,与实际有所出入,
因为安装期间涉及的软件众多,如果不能搞清楚各个软件在邮件服务器中所起到的作用将会感到满头雾水。基本的Qmail系统和整个邮件系统的架构如图1和图2所示:
图1 Qmail基本功能结构图
图2 邮件服务器总体架构
有了这些架构在软件安装和调试的过程中会感觉非常的清晰明快。
在安装进行之前必须要有DNS的支持,如果你的服务器IP地址没有被DNS解析可以自己运行named deamon作为DNS服务器,并给自己分配一个域名,然后把自己的IP放到/f中。浙江公司是mail.zj.sgcc(10.137.252.119)。
首先要安装Qmail的基本系统。详细步骤如下:(相应的邮件服务器的域名zj.sgcc)建立必要的用户和用户组
# groupadd nofiles
# useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# groupadd qmail
# useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# useradd qmails -g qmail -d /var/qmail -s /nonexistent
创建安装目录,解压安装软件源代码包
# mkdir /var/qmail #创建安装目录缺省为/var/qmail
# tar zxvf qmail-1. #解开源码
# cd qmail-1. #进入源码目录
进行安装
# make setup check #安装拷贝文件
#./config-fast mail.itp.swjtu.edu #添加域名到/var/qmail/control目录下的文件中
# (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
# chmod 644 ~alias/.qmail*
拷贝MDA执行代码
# cp /var/qmail/boot/home to /var/qmail/rc #拷贝home脚本到缺省启动位置
# csh -cf '/var/qmail/rc &' 启动MDA部分
由于现在有两种比较流行的邮箱目录形式:/home/$user/Mailbox和/home/$user/Maildir/,邮件分发代理MDA要判断邮件往哪一个邮箱分发邮件所以必须正确配置/var/qmail/rc文件,Mailbox是用一个文件来保存$user用户的所有邮件,而Maildir/方式是采用目录的方式来保存用户的每一封邮件,效率比前者高且减少了错误几率。所以推荐使用Maildir/格式,因为rc文件缺省采用Mailbox格式所以我们打开该文件将‘Mailbox’替换成为‘Maildir/’保存,kill掉刚才前面用rc启动的qmail-send等进程并且重新启动MDA。
用Inetd启动smtp模块:
相当于运行了/var/qmail/bin/tcp-env /var/qmail/bin/qmail-smtpd
编辑/f,到smtp模块,去除其前面的注释“#”号
# killall –HUP inetd #重新启动Inetd服务将smtp带起
到整个时候已经可以通过邮件客户端比如Foxmail连接smtp服务了,整个服务器目前没有任何验证功能,什么用户什么地址都加以转发。
因为目前还没有安装用来做用户名和密码监测的工具,如果只使用系统用户名和密码文件(/etc/passwd)来作为认证那仅仅安装checkpasswd工具就可以了,安装方法如下:
# tar zxvf Checkpassword-0. //解包
# cd checkpassword-0.81
# make //编译源代码
# make install check //安装-拷贝checkpasswd到/bin/目录
安装完成之后可以用下面的命令测试一下checkpasswd是否工作正常。
(注:qmail-popup的运行语法是“qmail-popup 服务器域名 运行的子程序”,在这里域名是zj.sgcc,子程序是验证程序checkpasswd。)
# /var/qmail/bin/qmail-popup mail.zj.sgcc /bin/checkpassword pwd
+OK <...@ mail.zj.sgcc >
user zhp //输入用户名 'zhp'
+OK
pass Friend //输入密码'Friend'
/usr/home/zhp/ //认证成功返回zhp用户的用户目录
(-ERR authorization failed) //认证失败则这样显示
如果工作正常就可以把pop3服务的启动代码输入到/f文件中了。加入如下字符到该文件中后用“#killall –HUP inetd”重新启动inetd服务。
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup mail.swjtu.edu /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir //中间不换行
到这个阶段,你的服务器已经可以通过smtp和pop3承担基本的邮件收发任务了,用Foxmail测试一下,如果一切顺利就继续了。
接下来的工作就是利用vpopmail软件来让服务器支持虚拟域。因为现在这个阶段的邮件服务器仅仅能够对FreeBSD上的用户提供邮件服务,如果每增加一个邮件用户都要给系统增加一个用户的话,不但浪费资源而且会带来安全的隐患,而且现在的这个服务器仅仅支持一个域名mail.itp.swjtu.edu。vpopmail提供了虚拟域的功能同时也把基于/etc/passwd的认证转为基于/home/vpopmail/domain/%domain%/passwd.cdb (vpopmail缺省安装在/home/vpopmail,%domain%是建立的虚拟域名)的认证,也可以选择通过数据库存储用户的注册信息,这里就以mysql数据库为例。
为了简单起见,在这里我假设用户已经安装了Mysql服务器并且工作正常。我们只要着手vpopmail的安装和配置就可以了。
先解包、然后配置为以mysql数据库方式认证、编译、安装。
# tar zxvf vpopmail-5.2.
# cd vpopmail-5.2.2
# ./configure –enable-mysql=y --enable-roaming-users=y
//声明用mysql方式认证并支持漫游用户
# group add -g 89 vchkpw //建立用户组vchkpw
# adduser vpopmail //创建用户vpopmail,不用pw user add是因为adduser会创建一个用户目录/home/vpopmail
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论