为什么选择Qmail
(作者:凌云志、雷晓荣 2000年08月17日 12:15)
践证明,基于Windows NT 的Exchange Server并不是企业级电子邮件系统的最佳选择。由于对稳定性等性能要求非常高,因此大型电子邮件系统一般都使用UNIX作为服务器的操作系统,例如,Hotmail使用FreeBSD和Solaris,国内163等站点也是采用BSD系列。追求稳定的大型企业可采用FreeBSD和Solaris,普通中小企业可采用Linux。
传统的UNIX系统下的电子邮件系统由于设计所能承受的用户数有限,其系统结构存在一定的缺陷,难以承受大用户量的访问。比如,应用非常广泛的Sendmail系统就存在如下几个局限性:
* 由于其用户信息存放于/etc/passwd文件中,在大用户量的情况下认证效率将会大大降低;
* 邮件存放通常在/var/mail目录下面,每个人的邮件是一个文件,用户数多则邮件文件就多。而在UNIX系统中,同一级目录中的文件超过一定数量后,文件系统运转效率将会大大降低。当使用NFS共享存储空间的时候,还会产生一个严重的问题——由于NFS缺乏文件锁定机制,在使用传统的用户邮件存储格式Mailbox时,由于所有的邮件都保存在同一个文件中,因此进行邮件操作就必须加锁,以保证没有访问冲突,这就使得它不适合NFS存储方式;
* 由于每一个用户的多封邮件都位于同一个文件中,所以如果在用户取信过程中出现网络异常,则很容易引起邮箱的死锁。
上述问题大大限制了Sendmail邮件系统在用户数量较大情况下的应用。另外,如果完全以系统用户做为邮件系统的用户也存在严重的安全隐患。因此,如果要适应大容量的需要,必须从邮件系统体系结构上,特别是邮件存贮方式和用户认证方式上进行改进,使之在大用户量的情况下仍旧能够保持良好的性能。
Qmail是可以完全替代Sendmail-binmail体系的新一代UNIX邮件系统,它也是一个基于UNIX操作系统的Internet邮件传输机构( Internet Mail Transfer Agent 简称MTA)。它采用标准的简单邮件传输协议(Simple Mail Transfer Protocol 简称SMTP)与Internet上其他MTA交换信息。为了解决用户邮件存储问题,Qmail提出了Maildir存储方式,每个邮件作为单独的一个文件保存在用户个人的邮件目录下,这就避免了加锁。同时,Qmail支持虚拟域(Virtual Domain)和虚拟用户(Virtual User),使邮件系统的用户独立于UNIX系统用户。与Sendmail相比,Qmail有以下优点:
*安全---- Qmail将E-mail处理过程分为多个分过程,尽量避免以Root用户身份运行。同时Qmail也禁止对特权用户(Root、Deamon等)直接发信。
*可靠---- Qmail的直接投递保证了E-mail在投递过程中不会丢失。Qmail同时支持新的更可靠的信箱格式——Maildir,保证系统在突然崩溃情况下不至破坏整个信箱。
* 高效----运行在奔腾的BSD上,Qmail每天可以轻松地投递20万封电子邮件。
*简单---- Qmail 要比其他的Internet Mail系统小得多。 它通过统一的向前机制完成Forwarding、Alias和Maillist等功能, Qmail使用简单高效队列来处理投递。Qmail-SMTPD可以由Inetd启动,节省了一定资源。
当前在国内最流行的免费电子邮件系统如163、371等,都是使用网易公司开发的系统。这些系统就是采用Qmail作为基本服务器软件,采用NFS网络文件系统作为用户邮件存储空间,使用Maildir作为邮件存储格式,提供多级目录以支持较大的用户数。
与Internet上的免费电子邮件系统相比,大中型企业电子邮件系统用户主要为企业内部用户,虽然数量没有上十万、百万那么多,用户群也相对固定,但对系统的安全性、稳定性的要求更高,用户管理工作也更细致、繁琐。如果能采用统一的Web 形式建立完善的用户数据库并提供邮件服务和用户管理,则会在方便用户的同时,大大地减轻系统管理员繁琐的工作。
Qmail是GNU下的一个著名的自由软件,世界各地的高手们为进一步完善和扩充它的功能,开发了大量的基于Qmail的工具和补丁软件,VmailMgr(Virtual Mail ManaGeR)就是其中之一。它增强了Qmail虚拟域(Virtual Domain)的功能,提供了大量的命令,以方便建立和管理独立于UNIX系统用户的邮件系统用户,提供软、硬空间限额等丰富的管理功能;邮件服务器的虚拟用户也可以通过POP3、IMAP标准协议访问自己的邮箱。特别值得一提的是,VmailMgr还提供一组CGI程序和PHP函数,有了这组程序,用户们可以通过Web页面进行邮箱申请、密码更换,邮件管理员也可以通过Web页面轻松完成用户管理和邮件系统的配置工作。
一个优秀的大型企业电子邮件系统应该具备以下功能:
1. 为企业内部用户提供大规模高速安全可靠的邮件服务,用户数量可达数千至数万人。
2. 邮件系统支持各种E-mail的标准协议,提供POP3和IMAP邮件访问方式。
3. 提供WebMail的功能,用户只需要一个浏览器,便能完成所有邮件的操作。
4.为每个用户提供20MB或更大的大容量邮件存储空间。
5.为用户提供Mailing List、邮件转寄、别名等功能。
6. 建立用户数据库系统,保存用户注册时的个人信息,方便用户管理。
7. 为日常维护人员提供完全基于浏览器的日常管理和监测工具,支持远程管理。
该系统对硬件要求不高,可采用性能价格比较高的PC型服务器。具体配置根据用户数量而定,如果用户数量较少,单台普通的PC服务器配以稍大一些的SISC硬盘就能满足要求;如果用户数量较大,则需要较大内存(最好配到256MB以上),相应外存要求也较高,可配100GB以上的RAID系统或采用专用的NFS服务器,以适应大量用户大容量邮件存储的要求。
软件可以全部使用开放源代码的自由软件,功能全面,可根据需要灵活配置。为追求稳定,在大型企业应用中可采用Freebsd替换Linux,具体配置见表1。
表1 | ||||
序号 |
类别 |
名称 |
版本 |
下载地址 |
1 |
操作系统 |
Linux |
Blue Point 1.0 |
|
2 |
邮件系统 |
qmail |
1.03 |
|
3 |
|
Vmailmgr |
0.96 |
|
4 |
|
Courier IMAP |
0.32 |
|
5 |
Web服务器 |
Apache |
1.3.12 |
|
6 |
|
PHP 3 |
3.0.12 |
|
7 |
数据库系统 |
MySQL |
3.22.3.0 |
这样的一套系统具有很高的性能价格比,突破了以往邮件系统依赖于昂贵硬件设备的限制,从高端服务器到低端服务器均可以适应,易于管理和使用,提供高性能的大容量邮件服务。尤其是软件全部使用开放源代码的自由软件,使我们能够自由下载和传播这些软件的源代码。与一般商业软件相比,这些自由软件在可靠性、安全性及稳定性上有明显优势。它们大多数具备良好的定制功能,使用者能够完全按照自己的需求来定制软件。除了能节约购买商业软件的巨大开销外,开放源代码使得软件在版权方面比私有软件具有更大的灵活性,也给我们安装软件以更大的自由度。目前有几百种成熟的开放源代码产品正被广泛使用,有一些产品的性能大大超过了同类的商业软件。
起步篇:Qmail的安装调试
(作者: 2000年08月17日 12:14)
软件的正确安装与调试是构筑系统的第一步,同时,简单的评测也是必不可少的。如果你的系统中以前曾安装过Sendmail,那么请不要错过本篇中关于Sendmail向Qmail迁移的内容。
下载Qmail
可以通过访问www.qmail.org或Mirror站点下载qmail-1.03.tar.gz。在http://em.ca/~bruceg/qmail+
patches/上有一个很好的补丁包,里面有若干针对Qmail的POP3d及其他问题的补丁,笔者建议您把它下载过来。
安装Qmail
获得Qmail-1.03.tar.gz后,用tar命令解包:
#tar xzvf qmail-1.03.tar.gz
进入Qmail目录后,请仔细阅读Readme和Install文件。
在进行编译前,可根据需要选择安装补丁程序:
root:/usr/local/src/qmail-1.03# patch -p1 < /path/to/qmail-
103.patch
接下来,开始安装Qmail。
1. 建立Qmail 根目录
# mkdir /var/qmail
2. 按照Install.ids中的方法建立Qmail用户和组
我们需要一一建立Qmail各后台进程运行所要用到的用户名和用户组:
# groupadd nofiles
# useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
# useradd -g nofiles -d /var/qmail -s /bin/false qmaild
# useradd -g nofiles -d /var/qmail -s /bin/false qmaill
# useradd -g nofiles -d /var/qmail -s /bin/false qmailp
# groupadd qmail
# useradd -g qmail -d /var/qmail -s /bin/false qmailq
# useradd -g qmail -d /var/qmail -s /bin/false qmailr
# useradd -g qmail -d /var/qmail -s /bin/false qmails
3. 编译 Qmail 及相关软件
这一步是软件编译及建立Qmail 的目录结构:
root:/usr/local/src/qmail-1.03# make setup check
4. 配置Qmail
开始配置Qmail之前,请认真阅读Install.ctl和FAQ,配置Qmail最简单的方法是:
#./config
或者:
#./config-fast your.full.home.name
5. 建立系统别名
root:/usr/local/src/qmail-1.03# cd ~alias
root:/var/qmail/alias# echo adam > .qmail-root
root:/var/qmail/alias# echo bob > .qmail-postmaster
root:/var/qmail/alias# echo bob > .qmail-mailer-daemon
6. 建立/var/qmail/rc
/var/qmail/rc是专门用来启动Qmail的文件(它可以说是最为重要的Qmail文件了)。/var/qmail/rc中存放着Qmail的确认投递指令(Default Delivery Instructions),由它来决定Qmail收到邮件后该怎么做。
我们可以先复制/var/qmail/
boot/proc到/var/qmail/rc,再对它进行编辑修改:
# cp /var/qmail/boot/proc /var/qmail/rc
如果我们想让系统支持 .forward 文件,并将邮件投递到/var/spool/mail,那么/var/qmail/
rc 应该这样写:
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ′|dot-forward .forward | preline procmail′
如果想把邮件投递到每个用户的 Maildir 中而不是传统的 /var/spool/mail中,就要把/var/qmail/rc修改成这样:
#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ′|dot-forward .forward
./Maildir/′
7. 开始测试Qmail投递程序
建好/var/qmail/rc后,就可以启动Qmail了:
# csh -cf ′/var/qmail/rc &&′
启动Qmail后,可以参照TEST.deliver介绍的方法进行测试。
启动 Qmail-SMTPD的方法
可以通过两种方法启动Qmail-SMTPD,一种是在Inetd中,一种是Tcpserver程序。
1. 在Inetd中启动Qmail-SMTPD:
在/etc/inetd.conf中设置Qmail-SMTPD:
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env \
tcp-env/var/qmail/bin/qmail-smtpd
然后重新启动Inetd。
2.用Tcpserver程序启动Qmail-SMTPD:
将/etc/inetd.conf中有关smtp一行注释掉,然后将下面一行加入你的系统启动文件中:
tcpserver -u 7770 -g 2108 0 smtp /var/qmail/bin/qmail-smtpd &&
把7770换成你的Qmail的UID,2108换成你的Nofiles的GID。
Tcpserver命令参数很多,可以对同时使用Qmail-SMTPD的人数、IP地址、域等进行控制,详细的命令请参考Qmail的FAQ(当然,你必须要安装Tcpserver程序,该程序可在http://pobox.com/~djb/ucspi-tcp.html下载)。
启动Qmail-POP3D
传统的POP3只支持Mailbox方式的邮件投递,为了支持Maildir方式的邮件投递,需要使用Qmail提供的POP3:Qmail-POP3D。首先,确定你的/etc/services文件中已经有下面这一行:POP3 110/tcp。
然后,需要安装一个口令验证程序。如果想使用VmailMgr的虚拟用户认证方式,可在安装VmailMgr 后使用“checkvpw”命令换掉“checkpassword”命令(不然要从http://pobox.com/~djb/checkpwd.html下载checkpassword)。在/etc/inetd.conf加入下面一行:
POP3 stream tcp nowait root
/var/qmail/bin/qmail-popup qmail-popup
YourHost /bin/checkpassword /var/qmail/bin/qmail-POP3d Maildir
注意,请将YourHost换为你的域名全称。当然,也可以通过Tcpserver 启动来把 YourHost换为你的域名的全称。
tcpserver 0 POP3 /var/qmail/bin
/qmail-popup YOURHOST \
/bin/checkpassword /var/qmail/
bin/qmail-POP3d Maildir &&
从Sendmail向Qmail迁移
如果你的系统以前安装使用着Sendmail,就需要进行下面的步骤:
1.首先找到Sendmail的启动程序,一般是在/etc/rc.d目录中,看上去像这样的命令:“sendmail -bd -q15m”,将其注释掉。
2. 杀掉Sendmail进程。
如果Sendmail有子进程,可以反复用-STOP和-CONT信号杀,直到没有子进程后用-TERM后加-CONT杀就可以了。
3. 检查E-mail队列中是否还有信,如果认为有必要将它们发送出去,可以在以后一段时间不定期地运行“sendmail.bak -q”,直到队列清空。
4. 去掉Sendmail等文件的setuid bit:
# chmod 0 /usr/lib/sendmail
# chmod 0 /usr/sbin/sendmail
# chmod 0 /usr/lib/sendmail.mx
# mv /usr/lib/sendmail /usr/lib
/sendmail.bak
# mv /usr/sbin/sendmail /usr
/sbin/sendmail.bak
5. 将csh -cf ′/var/qmail/rc &&′添加到启动文件中去。
6. 安装Qmail的Sendmail外壳:
# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
7. 虚拟域与虚拟用户。
将虚拟域名加入/var/qmail/
control/local和/var/qmail/control/rcpthosts 。然后在/var/
qmail/control/virtualdomains中加入your.virtual.domains:youracct。
这样,所有发往me@your.virtual.domains的邮件都将以youracct-me@your.virtual.domains的形式发给youracct。
VmailMgr是一个Qmail的增强工具,它扩展了Qmail的口令验证功能,使用户可以通过POP3 及IMAP访问自己的虚拟邮箱,我们将在以后的内容中重点介绍VmailMgr。
Qmail配置工作虽然较Sendmail来说已经大大简化,但要想真正建立一个功能强大、运行稳定的邮件服务器,掌握其灵活的配置,认真阅读其How-to和FAQ还是极有必要的。关于Dot-forward、邮件列表等其他非常有用的方法和使用技巧,限于篇幅就不再介绍了,建议大家参考软件包中的有关文档。
邮件存储模式篇——Courier
(作者: 2000年08月17日 12:13)
传统的IMAP并不支持Maildir邮件存储格式,为给Qmail用户提供IMAP协议,必须安装Courier-IMAP。Courier-IMAP 是一个提供IMAP协议访问Maildir的服务器,它不再支持传统的Mailbox邮件存储方式。
前面已经介绍过,“Maildir” 是Qmail为了解决用户邮件存储问题而提出的新的邮件存储方式。每个邮件以单独的一个文件保存在用户个人的邮件目录下,不再像过去每个用户的邮件都保存在/var/mail下面的文件中。多个应用程序可以同时访问同一个邮件目录,避免了加锁问题的困扰,特别适合于缺乏文件锁定机制的NFS存储方式。
Courier-IMAP主要特点
* 小巧而高效;
* 提供多种用户认证模块和方式;
* 支持虚拟邮箱;
* 可限制IMAP同时登录的总数目及同一个IP地址同时登录的数目,能有效保护系统在受到拒绝服务(Denial-of-service)攻击时不致因超载而瘫痪;
* 支持共享文件夹(Shared folder)。
下载与安装
目前的最新版本是:courier-imap-0.32-tar.gz。Courier-IMAP会自动监听来自客户端的连接请求,所以还需要将/etc/inetd.conf文件中的IMAP服务一行注释掉。完整的安装过程如下:
$ ./configure [ options ]
$ make
$ make check
$ make install
用以下命令启动Courier-IMAP服务:
$ /usr/lib/courier-imap/
libexec/imapd.rc start
假定Courier-IMAP安装在/usr/lib/courier-imap中,可通过以下命令停止Courier-IMAP服务:
$ /usr/lib/courier-imap/
libexec/imapd.rc stop
你可以将这两条命令加到系统的启动和关闭脚本中。
Courier-IMAP的使用
与POP3协议相比,IMAP 协议的好处在于可将用户个人的邮件分门别类地保存在邮件服务器的个人目录中,而不用下载到本地硬盘中,尤其适用于那些没有固定个人电脑或者经常出差在外的用户。作为邮件服务的提供者,我们应同时提供这两种服务,以满足用户的不同需要。
Courier-IMAP支持各种标准的IMAP客户端软件,如Netscape Messenger、Pine、Microsoft Outlook Express、Eudora等,用户可选择自己喜爱的客户端邮件软件(很遗憾,目前最受用户推崇的FoxMail尚不支持IMAP协议)。需要注意的是,使用虚拟域和虚拟用户时,由于用户权限上的问题,好象无法在InBox之外建立个人目录,好在这不是个大问题。
邮件管理篇——VmailMgr
(作者: 2000年08月17日 12:12)
对于管理员来说,当然需要一个好的工具来对邮件系统进行管理。实际上,Qmail就有个擅长管理的好伙伴——VmailMgr。
VmailMgr介绍
VmailMgr全称是Virtual Mail ManaGeR(虚拟邮件管理器),是专门配合Qmail的一个软件包,利用它可以实现以下功能:
* 增强Qmail的口令验证功能,使用户可以通过POP3及IMAP访问自己的虚拟邮箱;
* 基于CDB的用户口令管理方式,尤其是在用户数量较大时可以大大提高口令验证速度;
* 提供了丰富的工具进行虚拟域、虚拟用户及别名(Aliases)的管理;
* 提供一组功能强大的CGI,可以直接通过网页进行增加用户、删除用户和修改密码等各种管理工作;
* 提供一组PHP函数,可以灵活地编写PHP文件,并通过网页进行各种管理工作;
* 通过后台进程确保CGI和PHP代码操作的安全。
VmailMgr安装
最新版本的VmailMgr 可在www.Vmailmgr.org或http://em.ca/~bruceg/vmailmgr/ 下载。如果下载RPMS包,至少要下载Vmailmgr和 Vmailmgr-daemon 包。
笔者推荐大家从源代码安装,其安装方法如下:
(做为非root 用户)
tar zxf <package.tar.gz>
cd <newly created dir>
./configure
make
(做为root 用户)
make install
VmailMgr使用
安装VmailMgr完成后,开始使用虚拟域之前,还有几个必要的步骤,我们以建立一个虚拟用户“me@mydomain.org”(其别名是“myself@mydomain.org”和“myname@mydomain.org”)为例,一步步地进行介绍。
1.首先要为这个虚拟域做域名解析。在DNS服务器上将MX记录指向邮件服务器,如果想使虚拟域可以基于IP地址正常工作,还需要在DNS服务器上做一条PTR记录,例如:如果nslookup 10.56.33.122 返回 mail.mydomain.com,那么为了使用“虚拟域”,对应于IP地址的PTR是:“mail.mydomain.com:myuser”。
2. 建立该虚拟域的基本用户。这个用户的UNIX登录口令也将作为进行该虚拟域的邮件系统管理超级用户口令,所有该虚拟域的虚拟用户的邮件都将保存在这个用户的目录下,所以这个目录要留有足够的空间。例如,我们建立了用户“v” 做为虚拟域的基本用户,用户目录在“/home/vmailuser”。
3.告诉Qmail 识别这个虚拟域。这需要修改Qmail在“/var/qmail/control”目录下的两个设置文件: “rcpthosts”和“virtualdomains”。
1)在“rcpthosts”中加入“mydomain.org”。
2)在“virtualdomains”中加入“mydomain.org:v”。
如果想使用“anything.mydomain.org”的形式, 可按如下修改:
3)在 “rcpthosts”中加入“.mydomain.org”。
4)在“virtualdomains”加入“.mydomain.org:v”。
4.修改Qmail-popup/Qmail-
POP3D的口令校验方式,使用VmailMgr 提供的“checkvpw”。具体的修改方法依赖于Qmail的安装方式。
1)将Qmail-popup/Qmail-POP3D 命令行中的“checkpassword”换成“checkvpw”(Qmail-popup/Qmail-
POP3D命令行可能在“/etc/inet.conf”中或者在一个“tcpserver”命令中 )。
2)打入以下命令:
′echo checkvpw > /var/qmail
/control/checkpassword′
5. 加入虚拟用户及别名。首先以刚才创建的基本用户身份登录(如, “su - v”),然后就可以使用Vmailmgr提供的命令进行用户及别名的建立。例如下面的命令将建立一个用户me及他的两个别名myself和myname:
1)执行命令:“vadduser me”(将提示要求输入口令)
2)执行命令:“vaddalias me myself”
3)执行命令:“vaddalias me myname”
完成以上步骤后,你还需要杀掉并重新启动“Qmail-send”,让它读新建的“virtualdomains”表,安装过程就完成了。可以通过下面两种方式进行使用访问:
一种是以“userSEPvirtual.domain.org”形式登录,“user”是虚拟用户名;SEP分隔符,可以是“@”或者 “:”(可在“/etc/vmailmgr/”目录下设置);“virtual.domain.org”是虚拟域的域名,与 “/var/qmail/control/
virtualdomains”文件中相同。
第二种方式是以邮箱的内部形式访问——“baseuser-user”,这里的“user”是虚拟用户名,而“baseuser”是该虚拟域的基本用户,也是该虚拟域的邮件系统管理者。
例如 “/var/qmail/control/
virtualdomains”含有:“mydomain.com:v”
已经建立了基本用户“v”,并建立了虚拟用户“me”,在“/etc/vmailmgr/”中的“分隔符”变量包含“@:”,那么这个虚拟用户的邮件可以用 “me@mydomain.com”、“me:mydomain.com”或者“v-me”方式访问。
VmailMgr对POP3 及IMAP的支持
要使Qmail的POP3支持VmailMgr的虚拟用户认证方式,需要在“/etc/qmail/control/checkpass
word”文件中加入“checkvpw”,并重新启动POP3D。
VMailMgr支持Courier-IMAP, 但 Courier-IMAP却不能自动检测到VMailMgr。这意味着我们要做一些工作以使它们两者一起工作顺畅。
*首先,你必须将′/usr/local/bin/authvmailmgr′拷贝到′/usr/
lib/courier-imap/libexec/authlib/authvmailmgr′。
* 然后,编辑′/usr/lib/courier
-imap/etc/imapd.config′文件中的“AUTHMODULES”声明,并且添加′authvmailmgr′为第一个确认系统。
VmailMgr的命令与系统配置
VmailMgr的系统参数都在 “/etc/vmailmgr/”目录下以文件的形式进行设置。可进行设置的项很多,如口令的验证方法、默认邮件大小、软硬磁盘空间限额及用户目录名等。每一项对应一个设置文件,如果没有对应的文件则采用系统默认值。具体设置方法可参考VmailMgr文档中的configuration.htm。
VmailMgr提供用户认证、管理,邮件管理的命令也很丰富,常用的命令见表2。其具体的使用方法可参考http://www.vmailmgr.org/docs/下的文档。
表2 | |
命令名称 |
用途 |
vmailmgrd |
vmailmgr 的守护进程 |
vsetup |
建立一个虚拟域 |
vadduser |
增加一个虚拟用户 |
vdeluser |
删除一个虚拟用户 |
vaddalias |
增加一个别名 |
vdelalias |
删除一个别名 |
vpasswd |
修改一个虚拟用户的口令 |
vdeliver |
通过vmailmgr 投递邮件信息 |
vauthenticate |
验证一个虚拟用户 |
checkvpw |
为虚拟和非虚拟用户验证口令 |
vchattr |
修改一个虚拟用户的各项属性 |
锦上添花篇:Webmail系统的建设
(作者: 2000年08月17日 12:11)
Webmail是当今非常流行的E-mail形式,同时通过浏览器可以进行相应的个人及系统的管理工作。所以Webmail系统的建设必不可少。
大中型企业电子邮件系统用户数量常常很大,虽然使用对象相对固定,但用户水平参差不齐,对用户的管理工作也比一般的ISP更为严格。这给邮件系统管理人员带来繁重的管理工作,我们希望能采用目前流行的免费 Webmail 形式提供邮件服务和远程管理,用户通过浏览器就能够完成邮箱申请、密码更改、发送邮件、接收邮件等工作,并且能以数据库方式保存用户的注册信息、个人信息和通信录等,这样大大方便了一般用户,特别是对E-mail客户端软件使用不熟练的用户,同时减轻了系统管理员繁琐的用户管理工作。
表3 | |
CGI程序名称 |
功能说明 |
listvdomain |
以表格形式列出虚拟域中的别名和用户邮箱 |
vaddalias |
增加一个别名 |
vadduser |
增加一个用户及邮箱 |
vchattr |
修改用户的各项属性 |
vchforwards |
修改用户的邮件转发目的地 |
vdeluser |
删除一个用户 |
vpasswd |
修改用户的口令(用户自行修改或由管理员修改) |
我们采用著名的Apache作为Web服务器,使用PHP3为脚本语言,数据库系统采用小巧而高效的MySQL,这是目前建立动态网站的“黄金组合”。介绍这几种软件的资料很多,在网上还有很多高手建立了专门的网站,限于篇幅,有关这三个软件的安装使用方法,就不介绍了。
在Webmail的具体程序设计中,Web客户端可以通过直接文件访问的方式来获得用户的邮件,也可以通过POP3、IMAP等标准协议来访问。我们采用的是通过IMAP协议来访问服务器,其优点是Web客户端和E-mail服务器相分离,可提高系统安全性,同时PHP3提供了丰富的IMAP和MySQL函数库,使我们可以很轻松地写出简捷高效的程序。
在设计用户管理Web页面时,可直接调用Vmailmgr提供的CGI程序,它们在Vmailmgr安装完成时已被自动存放在网站的cgi-bin目录下了,简要说明见表3,详细的说明和使用方法可查阅文档中的vmailmgr-cgi.htm。
| |
函数语法格式 |
函数说明 |
int vm-adduser(string vdomain, string basepwd, string newusername, string newuserpassword); |
增加一个虚拟用户 |
int vm-deluser (string vdomain, string username) |
删除一个虚拟用户 |
int vm-addalias (string vdomain, string basepwd, string username, string alias) |
增加一个虚拟用户的别名 |
int vm-delalias (string vdomain, string basepwd, string alias) |
删除一个别名 |
int vm-passwd (string vdomain, string username, string password, string newpassword) |
修改一个虚拟用户的口令 |
要想自己设计更灵活方便的页面,Vmailmgr还提供了一组PHP3、PHP4函数,见表4。
当前,已经有一些相当成熟的开放源代码的Web客户端软件,如采用Perl编写的WING,还有采用PHP来实现的IMP等,这些开放源代码软件都相当不错。其中,IMP是通过IMAP协议访问服务器的Web邮件客户端软件,功能强大,支持多种语言和数据库(可在Http://www.horde.org下载),使用这些软件可大大减轻系统开发的工作量。
电子邮件系统的安全问题
(作者: 2000年08月17日 12:10)
由于企业级电子邮件系统一般建立在Intranet内部,与Internet之间有防火墙保护,所以受到外界恶意攻击的可能性较小。另外,由于采用Qmail的虚拟域和虚拟用户及MailDir邮件存储方式,使邮件系统用户与UNIX系统用户分离,这些都大大地提高了系统的安全性。
这里我们重点考虑用户邮件和用户认证口令的传输安全。由于TCP/IP协议是一种包交换网络,各个数据包在网络上都是透明传输的,并且可能经过不同的网络,并由那些网络上的路由器转发,才能到达目的计算机。而TCP/IP协议本身没有考虑安全传输,很多应用程序,如:Telnet、FTP等,甚至使用明文来传输非常敏感的口令数据。一般的邮件系统也存在这个问题,如用户使用POP3协议的客户端软件(如常用的FoxMail)下载邮件时,口令就是用明文来传输的,用户通过浏览器和IMAP协议下载邮件,也同样存在这个问题。
为加强数据的传输安全,特别是敏感的口令数据的传输安全,可采用公开密钥算法对传输数据进行加密。对HTTP和IMAP协议的传输,可使用SSL(安全Soket层),不但能通过公开密钥算法保证传输的安全,还可以通过获得认证证书CA,保证客户连接的服务器没有假冒。
可以用来实现SSL的自由软件是OpenSSL,可在http://www.openssl.org/下载。
Apache可以通过加载mod_ssl模块来支持SSL;Courier-IMAP也支持SSL;除OpenSSL外,还需要下载 stunnel(地址是http://mike.daewoo.com.pl/computer/stunnel/)。
Apache上安装新模块需要重新进行编译安装(想省事的话,可在网上找一找有无现成的RPM包)。具体的配置方法可查看安装说明。
目前,Qmail的POP3协议还不支持SSL,仍然存在被恶意窃听甚至盗用密码的危险(这种危险普遍存在于目前被广泛使用的各种免费E-mail服务中)!所以在使用电子邮件传输各种敏感的需要保密的数据时一定要慎重,企业的重要数据、保密的文件等尽量不要用Internet上的免费E-mail邮箱传送!
笔者文中谈到的电子邮件系统主要是针对大中型企业而设计的,作为企业Intranet的一个重要组成部分,对安全性、稳定性和可管理性都有更高的要求。其用户数量可从数千至数万,当用户数量超过10万时,单台服务器的性能就不能满足要求了,必须要由多台服务器同时服务,存储空间也必须由服务器集群来提供,通过光纤通道或者网络文件系统NFS来共享存储空间,对一些资源紧张的服务还需使用多服务器进行负载均衡。这些内容超出了本文的范围,有兴趣的朋友可参考其他文章,如《建立大容量基于Web的E-mail系统》
本文所推荐的软件都是相当成熟的开放源代码的软件,这些软件的源代码可以被公众使用,并且这些软件的使用、修改和分发不受许可证的限制。要特别指明的是,开放源代码软件通常是有版权的,它们大都使用GPL许可进行保护,因此基于这些软件进行的任何改动,还应该遵循其许可要求,将改动的源代码对外公开。由于笔者接触自由软件时间不长,本文的错误、疏漏在所难免,在此希望与自由软件的爱好者与使用者进行交流。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |