首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 认证考试-> 软件水平考试
安全qmail电子邮件系统架设_qmail
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
Qmail是世界上安装使用量仅次于Linux/Unix上缺省使用的Sendmail的邮件服务器软件。Qmail配置较Sendmail简单,而且速度较之要快,所以在本邮件系统的架设过程中我选择了Qmail作为邮件服务器的核心。

一个邮件服务器主要包括三个主要的功能,邮件传输代理MTA(Mail Transport Agent)、邮件分发代理MDA(Mail Delevery Agent)和邮件用户代理MUA(Mail User Agent)。Qmail软件包实现了这三个基本的功能,之所以说其只实现了邮件服务器的基本功能是因为它没有实现很多邮件服务器需要的功能,这些功能有些是安全和防止垃圾邮件方面,比如SMTP验证、APOP功能、Relay控制功能和对使用者IP地址的限定等等,还有一些扩展的功能象Webmail功能、虚拟域、基于数据库的用户管理、邮件列表、自动转发它也不能提供。

好在现在Qmail流行开来,有了不少自由软件联盟来为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需要)
Sqwebmail-1.2.0 webmail (一个CGI的Webmail系统)
Vqsignup-0.4 (提供web方式的用户邮箱注册)
qmail-smtpd-auth-0.26 (提供SMTP认证功能)
cmd5checkpw-0.22 (提供认证加密算法)

因为安装期间涉及的软件众多,如果不能搞清楚各个软件在邮件服务器中所起到的作用将会感到满头雾水。基本的Qmail系统和整个邮件系统的架构如图1和图2所示:

issue9_qmail1.jpg

图1 Qmail基本功能结构图


issue9_qmail2.jpg

图2 邮件服务器总体架构

有了这些架构在软件安装和调试的过程中会感觉非常的清晰明快。

在安装进行之前必须要有DNS的支持,如果你的服务器IP地址没有被DNS解析可以自己运行named deamon作为DNS服务器,并给自己分配一个域名,然后把自己的IP放到/etc/resolve.conf中。我这里是mail.itp.swjtu.edu.cn。
首先要安装Qmail的基本系统。详细步骤如下:(mail.itp.swjtu.edu.cn替换成相应的邮件服务器的域名
建立必要的用户和用户组
# pw groupadd nofiles
# pw useradd alias -g nofiles -d /var/qmail/alias -s /nonexistent
# pw useradd qmaild -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmaill -g nofiles -d /var/qmail -s /nonexistent
# pw useradd qmailp -g nofiles -d /var/qmail -s /nonexistent
# pw groupadd qmail
# pw useradd qmailq -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmailr -g qmail -d /var/qmail -s /nonexistent
# pw useradd qmails -g qmail -d /var/qmail -s /nonexistent
创建安装目录,解压安装软件源代码包
# mkdir /var/qmail #创建安装目录缺省为/var/qmail
# tar zxvf qmail-1.03.tar.gz #解开源码
# cd qmail-1.03.tar.gz #进入源码目录
进行安装
# make setup check #安装拷贝文件
#./config-fast mail.itp.swjtu.edu.cn #添加域名到/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 %26amp; 启动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
编辑/etc/inetd.conf,找到smtp模块,去除其前面的注释“#”号
# killall –HUP inetd #重新启动Inetd服务将smtp带起
到整个时候你已经可以通过邮件客户端比如Foxmail连接smtp服务了,整个服务器目前没有任何验证功能,什么用户什么地址都加以转发。
因为目前还没有安装用来做用户名和密码监测的工具,如果只使用FreeBSD的系统用户名和密码文件(/etc/passwd)来作为认证那仅仅安装checkpasswd工具就可以了,安装方法如下:
# tar zxvf Checkpassword-0.81.tar.gz //解包
# cd checkpassword-0.81
# make //编译源代码
# make install check //安装-拷贝checkpasswd到/bin/目录
安装完成之后可以用下面的命令测试一下checkpasswd是否工作正常。
(注:qmail-popup的运行语法是“qmail-popup 服务器域名 运行的子程序”,在这里域名是mail.itp.swjtu.edu.cn,子程序是验证程序checkpasswd。)
# /var/qmail/bin/qmail-popup mail.itp.swjtu.edu.cn /bin/checkpassword pwd
+OK <...@ mail.itp.swjtu.edu.cn >
user zhp //输入用户名 zhp
+OK
pass Friend //输入密码Friend
/usr/home/zhp/ //认证成功返回zhp用户的用户目录
(-ERR authorization failed) //认证失败则这样显示
如果工作正常就可以把pop3服务的启动代码输入到/etc/inetd.conf文件中了。加入如下字符到该文件中后用“#killall –HUP inetd”重新启动inetd服务。
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup mail.swjtu.edu.cn /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir //中间不换行
到这个阶段,你的服务器已经可以通过smtp和pop3承担基本的邮件收发任务了,用Foxmail测试一下,如果一切顺利就继续了。
接下来的工作就是利用vpopmail软件来让服务器支持虚拟域。因为现在这个阶段的邮件服务器仅仅能够对FreeBSD上的用户提供邮件服务,如果每增加一个邮件用户都要给系统增加一个用户的话,不但浪费资源而且会带来安全的隐患,而且现在的这个服务器仅仅支持一个域名mail.itp.swjtu.edu.cn。vpopmail提供了虚拟域的功能同时也把基于/etc/passwd的认证转为基于/home/vpopmail/domain/%domain%/passwd.cdb (vpopmail缺省安装在/home/vpopmail,%domain%是建立的虚拟域名)的认证,也可以选择通过数据库存储用户的注册信息,这里就以mysql数据库为例。

为了简单起见,在这里我假设用户已经安装了Mysql服务器并且工作正常。我们只要着手vpopmail的安装和配置就可以了。

先解包、然后配置为以mysql数据库方式认证、编译、安装。
# tar zxvf vpopmail-5.2.2.tar.gz
# cd vpopmail-5.2.2
# ./configure –enable-mysql=y --enable-roaming-users=y
//声明用mysql方式认证并支持漫游用户
# pw group add -g 89 vchkpw //建立用户组vchkpw
# adduser vpopmail //创建用户vpopmail,不用pw user add是因为adduser会创建一个用户目录/home/vpopmail
# make //编译
# make install-strip //安装到/home/vpopmail
Vpopmail安装好了,checkpasswd当然就要“退休”了。Vpopmail中用来取代checkpasswd软件的模块是vchkpw。还是编辑/etc/inetd.conf,把前面设置的pop3那行改为
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup mail.itp.swjtu.edu.cn home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir
//中间不换行
再用killall-HUP inetd重新启动就可以基于mysql数据库进行认证了。当然我们现在还没有常见任何域和用户,现在谈认证还太早。用下列命令创建域名和用户。
# cd /home/vpopmail/bin
# ./vadddomain mail.itp.swjtu.edu.cn 123456 //创建虚拟域,如果是第一次创建会连 接mysql数据库建立一个vpopmail的数据库
# ./vadduser zhp@mail.itp.swjtu.edu.cn Friend //创建用户zhp
(注:在连接数据库的时候vpopmail可能会错误的去找/usr/local/mysql/tmp/mysql.sock作为和mysql进行连接的渠道,一般mysql.sock被安装到了/tmp/mysql.sock处,用
# mkdir /usr/local/mysql/tmp
# ln –s /tmp/mysql.sock /usr/local/mysql/tmp/mysql.sock
命令建立一个符号连接一般就不会出错了。不过具体问题还要具体分析。)

用vadddomain和vadduser命令来向mysql数据库里面而不是/etc/passwd里面添加用户确实科学可许多但总不能每增加一个用户都去麻烦我们的管理员吧!为了方便的注册用户,这不有了Vqsingup软件包提供了基于WEB的注册功能。其前提当然需要一个WEB服务器,所以鼎鼎有名的Apache担当此任就最合适不过了。

如果你的vpopmail和apache都是安装在缺省的/home/vpopmail和/user/local/apache目录下面,这个软件的安装就简单了。
# tar zxvf vqsignup-0.5.tar.gz
# cd vqsignup-0.5
# make
# make install
如果你的apache装到了别处比如/usr/local/www,那你要找到Makefile把cgibindir = /usr/local/apache/cgi-bin 改为cgibindir = /usr/local/www/cgi-bin。
可能要修改一下相应文件的权限才能在浏览器中看到注册的页面。
# cd /usr/local/apache/cgi-bin/vqsignup
# chown vpopmail vqsignup.cgi
# chgrp vchkpw vqsignup.cgi
# chmod ug+s vqsignup.cgi
要说到这里还没有完,还必须修改那个vqsignup.html文件,把你的可以用域名替换掉那些‘test.com’等东西,其实还有一些路径的问题软件包还没有处理好,这里一下说不清楚,懂一些网页的人应该能轻松搞定,html文件夹内的一些信息提示文件都可以加以汉化和美化一下。安装后的样子如图。
(http://mail.itp.swjtu.edu.cn/vqsignup.html)
issue9_sqsignup.jpg
图3 sqsignup新用户注册页面

用Inetd来启动smtp和pop3有个问题,就是不能限制来访者的IP,这样固然有不安全因素。所以现在很多邮件服务器网站都采用tcpserver工具来保护自己的网站免受恶意攻击。下面是安装过程:
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
# make //编译
# make setup check //执行档tcpserver将被安装于 /usr/local/bin 中。
现在我们来改变pop3的运行方式:先把/etc/inetd.conf中的pop3部分删除或者加‘#’注释掉,运行killall –HUP inetd关掉pop3;然后创建一个/pop3.sh脚本加入下面的执行代码:
/usr/local/bin/tcpserver -H -R 0 pop3 /var/qmail/bin/qmail-popup mail.itp.swjtu.edu.cn /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir %26amp;
里面的参数你只要看懂个大概就行了。保存文件后用chmod +x /pop3.sh给文件加上执行属性,最后用sh /pop3.sh执行脚本,pop3就运行在后台了。

说了这么多,可是smtp还没有认证功能呢,这样我们的服务器会被任何人用来relay他们的垃圾邮件。由于qmail本身不提供认证功能,实现这个功能只能靠第三方的插件来实现了,比较有名气的就是qmail-smtpd-auth-0.26 和cmd5checkpw-0.22的组合。由于是打补丁需要qmail的源代码。假设qmail-1.03.tar.gz、qmail-smtpd-auth-0.31.tar.gz在同一目录,则进入该目录后做如下操作:
# tar zxvf qmail-1.03.tar.gz
# tar zxvf qmail-smtpd-auth-0.31.tar.gz
# cp README.auth base64.c base64.h ../qmail-1.03
# patch -d ../qmail-1.03 < auth.patch
# ../qmail-1.03/make qmail-smtpd
# cp ../qmail-1.03/qmail-smtpd /var/qmail/bin/qmail-smtpd-auth
上面的操作实际上是把打了补丁的qmail-smtp执行档单独编译了一下然后拷贝到了/var/qmail/bin下另取名为qmail-smtpd-auth。
接下来安装cmd5checkpw-0.22
#tar zxvf cmd5checkpw-0.22
#cd cmd5checkpw-0.22
#make
#mkdir /usr/man //在FreeBSD中缺省没有这个目录
#make install
最后编写smtp的执行脚本
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x /etc/tcp.smtp.cdb -u 89 -g 89 0 smtp /var/qmail/bin/qmail-smtpd.auth /home/vpopmail/bin/vchkpw /bin/true /bin/cmd5checkpw /bin/true 2>%26amp;1 %26amp;
\\中间没有分行
同前面讲到的/pop3.sh一样编成一个/smtp.sh可执行脚本,在执行前把 /etc/inetd.conf中smtp的项目屏蔽或删除并用killall –HUP inetd关闭前面打开的smtp服务。sh /smtp.sh之后你的服务器就已经有smtp认证功能了。
看看我们的Foxmail要怎么设置,如图4:
issue9_foxmail1.jpg
issue9_foxmail2.jpg
图4 Foxmail中认证的设置
现在只能用Foxmail在操作邮件的收发,其实还有一个好工具可以提供方便的Webmail服务,它就是sqwebmail。
我没有用该软件的原版,找了个汉化的版本。安装过程如下:
# tar xvfz sqwebmail-1.2.0.tar.gz
# cd sqwebmail-1.2.0
# ./configure --without-authpam --without-authuserdb --enable-webpass=no --without-authpwd --without-authshadow --with-mimetypes=/usr/local/apache/conf/mime.types
# make configure-check
# make //编译
# make check
# make install-strip
# make install-configure
如果一些顺利那就大工告成,在客户机上打开浏览器,输入http://mail.itp.swjtu.edu.cn/cgi-bin/sqwebmail,出现下面的页面:
issue9_sqwebmail1.jpg
图5 sqwebmail的登陆界面
issue9_sqwebmail2.jpg
图6 sqwebmail的登陆后的界面

最后为了让服务器在启动的时候自动加载smtp.sh和pop3.sh,我们把它们拷贝到/usr/local/etc/rc.d/目录下面,把# csh -cf /var/qmail/rc %26amp; 这行启动MDA服务的脚本加到smtp.sh或pop3.sh中就可以了。记住一定要给这两个文件可执行的权限。 由于时间仓促,这份手稿可能有遗漏之处,而且还有很多安装过程也没有搞懂,希望得到各位高手的指教,我的QQ是41185138,Email是 zenghuipeng@163.net 。, ,

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·省市联动菜单的源代码实现(access数据库版)-ASP教程,数据库相关
·【HTML】打开页面时按照指定的URL直接跳转到另一新页面-ASP教程,脚本编码
·多功能DataGrid打印类(WinForm C#)-.NET教程,C#语言
·我也来谈WEB打印。-ASP教程,打印相关
·C#中的泛型 (From dotNet SDK 2.0 Beta1)-.NET教程,C#语言
·J2EE WEB层的曙光 -- JSF-JSP教程,J2EE/EJB/服务器
·C#:获得文件版本信息及只读文件的删除-.NET教程,C#语言
·[ASP.NET]按键跳转以及按Enter以不同参数提交,及其他感应事件-.NET教程,Asp.Net开发
·谈基于.net平台windows开发中的模式窗体-.NET教程,.NET Framework
·ASP.NET 2.0 中实现 Treeview 与数据库的绑定(含代码)-.NET教程,Asp.Net开发
最新文章
·中文版windows xp系统升级sp3新鲜体验_windows xp
·十个提高windows vista系统性能的秘密_windows vista
·用搏客blog月收入200美圆_网赚技巧
·google 禁止使用在线广告宣传adsense推介_网赚技巧
·做广告联盟的站长必读规则_网赚技巧
·刘润:用c2c模式运作捐献公益组织_站长访谈
·seo资料站长丘仕达访谈:整站优化心得_站长访谈
·易被忽视的优化网站设计的五种方法_站长心得
·photoshop非主流照片:可爱红脸蛋美女_photoshop教程
·如何让网民爱上你的网站?(1)_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭