安全Qmail电子邮件系统架设
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所示: ![]() ![]() 有了这些架构在软件安装和调试的过程中会感觉非常的清晰明快。 在安装进行之前必须要有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 #安装拷贝文件 拷贝MDA执行代码#./config-fast mail.itp.swjtu.edu.cn #添加域名到/var/qmail/control目录下的文件中 # (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root) # chmod 644 ~alias/.qmail* # cp /var/qmail/boot/home to /var/qmail/rc #拷贝home脚本到缺省启动位置 由于现在有两种比较流行的邮箱目录形式:/home/$user/Mailbox和/home/$user/Maildir/,邮件分发代理MDA要判断邮件往哪一个邮箱分发邮件所以必须正确配置/var/qmail/rc文件,Mailbox是用一个文件来保存$user用户的所有邮件,而Maildir/方式是采用目录的方式来保存用户的每一封邮件,效率比前者高且减少了错误几率。所以推荐使用Maildir/格式,因为rc文件缺省采用Mailbox格式所以我们打开该文件将‘Mailbox’替换成为‘Maildir/’保存,kill掉刚才前面用rc启动的qmail-send等进程并且重新启动MDA。# csh -cf '/var/qmail/rc %26amp;' 启动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 //解包 安装完成之后可以用下面的命令测试一下checkpasswd是否工作正常。# cd checkpassword-0.81 # make //编译源代码 # make install check //安装-拷贝checkpasswd到/bin/目录 (注:qmail-popup的运行语法是“qmail-popup 服务器域名 运行的子程序”,在这里域名是mail.itp.swjtu.edu.cn,子程序是验证程序checkpasswd。) # /var/qmail/bin/qmail-popup mail.itp.swjtu.edu.cn /bin/checkpassword pwd 如果工作正常就可以把pop3服务的启动代码输入到/etc/inetd.conf文件中了。加入如下字符到该文件中后用“#killall –HUP inetd”重新启动inetd服务。+OK <...@ mail.itp.swjtu.edu.cn > user zhp //输入用户名 'zhp' +OK pass Friend //输入密码'Friend' /usr/home/zhp/ //认证成功返回zhp用户的用户目录 (-ERR authorization failed) //认证失败则这样显示 上一篇:构建全功能的邮件系统 下一篇:如何用solaris自带sendmail实现多域邮件服务 更多相关文章
|
推荐文章
精彩文章
|