E-mail诞生年代非常早,但应用迅速发展,如何架设好的邮件系统,建立功能强大,性能稳定的邮件服务器也是企业关注的焦点,开场废话不多说,进正题

一:基础知识
传统的邮件服务,由四部分组成(这也是写mail贴总是xxx+xxx+xxx....更细的有如MSA和MAA)
---------------------------
| MUA |
| MDA |
| MTA |
| -------------------- |
| |
| 操作系统 |
---------------------------
MUA:(Mail Transfer Agent),邮件传输代理
MDA:(Mail Delivery Agent),邮件分发代理
MUA:(Mail User Agent).邮件用户代理
操作系统:提供底层支持,安全性至关重要,最好选择Unix.BSD或linux这些先天足够安全,健壮的系统
二,选择MTA
MTA是负责处理所有接收和发送邮件的程序,在Unix与类linux下可选择的MTA程序很多,但通过考验并被广泛使用的只有寥寥几种,(Sendmail ...Postfix...Qmail),下边具体介绍每中优缺点
Sendmail:
可能是使用最广泛的MTA程序了,诞生与1979年,一直伴随着Unix成长,也是最古老的MTA程序
优点:
通用性非常强
缺点:
可能也是所有这类比较古老软件的通病,“安全“,在互联网刚起步时候,骇客基本还属于稀有”动物“,因此Sendmial在设计之初就没有很好考虑其安全性,漏洞也很严整,相信大家看到这里会很”汗“,其实,现在使用的Sendmial,已经被重新编写了,而且添加了很多新功能,然而由于先天设计的问题,改版后的MTA仍然有可能被侵入
加上被设计成每隔一段时间才查看一次邮件队列,会造成收发的延迟,因此性能比较低
Postfix:
进年来出现的另一个优秀的MTA程序,由于吸取了前辈经验(Sendmial,Qmail,Maildir),在设计构架上优势明显
优点:
快速,安全,易于管理,与Sendmail良好的兼容性
配置主要使用main.cf与master.cf两个文本,使用中心化的配置文件和容易理解的配置指令,配置相当简便
模块设计,让安全性得到最大保障,可以运行在安全度很高的chroot环境中
缺点:
起步时间比较短,但并不影响良好性能。
Postfix是IBM资助的开源软件,遵循IBM的开源许可,如果需要修改,需要给IBM反馈,并且,IBM可以随时取消用户使用和发布Postfix的权利,商业应用就需要密切关注这类信息
Qmail:
开发Qmail的初衷是替换安全和性能都不太令人满意的Sendmail
优点:
主要的优点是安全,可靠,高效
Qmail设置简单,速度很快,经过互联网多年考验,至今没发现任何安全漏洞,是公认的最安全的MTA程序
应用之初,曾经悬赏漏洞,1年无人拿走,只好捐赠,足以见安全性
缺点:
唯一的缺点是太优秀了
这里是三种MTA的比较:
  • ---------------------------------------------------------------------------------------------------------------
    MTA 成熟性 安全性 特色 性能 Sendmail兼容性 模块化设计
    ---------------------------------------------------------------------------------------------------------------
    Sendmail 高 低 中 低 ------- 否
    ---------------------------------------------------------------------------------------------------------------
    Postfix 中 中 中 中 支持 是
    ---------------------------------------------------------------------------------------------------------------
    Qmail 中 高 高 高 插件实现 是
    --------------------------------------------------------------------------------------------------------------
对与MTA的选择至关重要,可以说是mail的核心吧,选择好MTA后就可以搭配选择其他组件了
sendmail适合小型企业
Postfix适合中型企业
Qmail适合大型企业,比如YAHOO的邮箱服务
三:选择MDA
邮件分发代理MDA,主要功能就是将MTA接收的信件依照目的分发,与邮件过滤等功能
常用的MDA有(Binmail....Procmail....Maildrop)
Binmail:
该MDA程序简单,不需要进行配置,因此灵活性比较差
Procmail:
使用类似”处方“的用户配置文件,编程语法复杂,并且不支持Maildir油箱格式
Maildrop:
支持传统邮箱,支持Qmail的Maildir邮件存储格式,编程简单,容易上手
四:MUA
MUA只要功能就是接收邮件主机的电子邮件,并提供用户浏览,编写邮件
邮件需要代理,这是由于通常Client端的计算机无法直接寄信,所以需要通过MUA帮我们传递信件。
Client需要系统提供的MUA才能使用邮件系统。
无论是windows下的OutLook Express 还是linux下Eudora等,都是优秀的MUA软件
随着互联网普及,基于WEB的MUA程序越来越受欢迎,典型代表有(SqWebMail...OpenWebMail..iGENUS)
这些除了支持P0P3和IMAP协议,还具有功能丰富,安全稳定,和简单易用的特点
-----------------------------------------------------------------------------------------------------------------------
五:相关协议
在电子邮件系统的组件之间发生的通信是由一系列标准和协议定义的,这些标准文件由IETF维护,并作为RFC文档发布
RFC包含许多解释某一技术或协议组成。
SMTP:
全称Simple Message Transfer Protocol ,中文为简单邮件传输协议,工作在TCP/IP层次的应用层,SMTP采用C/S
工作模式,默认使用TCP 25端口,提供可靠的邮件发送服务,SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知,具体的流程与原理还是比较复杂的,这里说就比较过分了
SMTP还是很有优势的(X.400复杂和健壮,但由于复杂,缺少支持,不如SMTP普及)
*SMTP十分流行
* 厂商的平台都支持SMTP
*SMTP便于实现,易管理
*SMTP地址方案简单
不足之处在于:
*SMTP功能不足
*SMTP的安全机制不如X.400
*它的简单性限制了其使用
POP3:
全称:Post Office Protocol 3 ,中文名为第三版邮局协议,工作在TCP/IP层次的应用层,采用C/S模式,默认使用TCP 110端口,提供可靠的邮件接收协议
POP3是检索电子邮件的标准协议,POP3协议控制电子邮件客户端和服务器之间的连接,把电子邮件从服务器检索到客户端,沟通有三种状态(身份验证,事务处理,更新状态)
简单说,POP3邮件客户端连接到服务器后必须接受身份验证,然后检索电子邮件,通过身份验证后进入事务处理阶段
客户关闭与服务器连接后,邮件存储区会更新,即跟新状态
POP3的工作流程和原理就不说了,需要的可以自己找去看看
IMAP:
全称,Internet Mail Access Protocol ,中文,互联网邮件访问协议,1986诞生,1994被接收为互联网标准
使用TCP 143端口
IMAP被设计为POP的超集,而POP是个地位牢固的开放邮件标准,在日常使用中,IMAP的特性以及支持还没有压倒POP3,但是它的发展趋势已经显而易见了,主要厂商都计划支持IMAP4。
IMAP与POP3不同在于,IMAP能以3种模式或者说消息传递范式来与客户交互:在线,离线,和断连方式
*在线方式:邮件保存在Mail服务器,客户可以对其进行管理,使用方式与WebMail类似
*离线方式:邮件保存在Mail服务器,客户可以对其管理,这与POP协议一样
*断连方式:邮件的一部分在Mail服务器,一部分在客户端,这与一些成熟的组件包应用的方式类似
这些多种方式,要比POP3灵活很多,功能也要强大许多
与POP3比较,IMAP收邮件更加快速和节省硬盘空间,强大的功能还是受到专业邮件服务商的支持,大型企业的好管家
与IMAP相关的命令这里也不介绍,因为很多
相信看了前边的东西,会比较烦,但邮件系统确实复杂,这就不得不去了解下简单的 邮件工作流程
当你告诉你的MUA(用户界面)发送邮件时候,它只是简单地将邮件提交到MTA(传输代理)服务器上
MTA从一个系统发送邮件到另一系统中完成了大量的工作
当MTA接收到邮件时,首先决定是否接受这封邮件,一个MTA默认接受本地用户的邮件,与它知道如何转发其他系统的邮件
一旦MTA接受邮件,它将决定接下来如果处理这封邮件,发送到本地用户,或将邮件发送给其他MTA(MTA中继),如不能发送或独立转发邮件,它会将邮件退回发送者或者通知管理员
MTA(服务器)通常是英特网服务商管理,如果这封邮件的收信人是系统中用户,MTA将邮件传递给MDA(分发代理),由MDA进行最终的发送,MDA会将邮件以文件形式存储或存储在一个专用的数据库中,一旦邮件被保存在邮件仓库服务器,它将一直保存直到收件人接收
接收者使用MUA(用户界面)获取邮件并阅读,MUA连接到可以访问的邮件仓库,当服务器成功验证用户,它将把用户的邮件传输给MUA。
这就是简单的一个邮件的传递过程
--------------------------------------------------------------------------
六:电子邮件的历史
掌握一件东西,总是应该去了解一点相关的历史,这也是很重要的
电子邮件的发明人 雷*汤姆林森回忆,电子邮件是诞生在1971年的秋天,虽然是70年代发明的,但知道80年代才兴起,只要是那时候网络人太少,带宽仅3K多,知道80年代个人电脑兴起,90年代中期互联网浏览器的诞生,全球网民激增,电子邮件太广泛使用,互联网电子邮件兴起不过是前几年的事情,由hotmail推广,到现在门户网站必有服务,
Yahoo,google等,都拥有自己的电子邮件服务。
七:电子邮件地址的组成
其实在这里说这个,可能都觉得有点白痴,但你细细回味一遍,就知道为什么要提它了
e-mail像普通邮件一样,需要地址,区别就是它是电子地址,internet上所有的e-mail地址都是唯一的,服务器就是根据这些地址,将每封邮件传送到各个用户信箱,你能否收到信件,取决与你的地址是否正确
@符号在英文中含有两种意思,“在”或“单价”,它的前一种意思发音类似于英文的at,于是常被作为“在”的名词使用,比如,”明天早晨在学校等“,英文的便条就成了"wait you@school morning",于是,汤姆森确立了@在电子邮件中的地位,赋予@新的意义,使用@将用户名与电脑地址分开,如loginname@hostname.domainname
用户名@主机名.域名
从上边的格式不能看出,这种命名需要牵扯到的东西,呵呵,很明显,DNS服务,因为网络只认IP,不认识名字
八:电子邮件系统和DNS联系
上边我们简单说下电子邮件的地址会牵扯到DNS服务,这里就具体说下是怎么回事
从互联网诞生,邮件服务器与DNS联系就分不开,如果你想要发电子邮件,就的通过邮件主机帮你将信件发送出去,但邮件主机必须要知道自己发送的邮件去那里,这就需要你的主机可以通过DNS系统找到对应IP
假设,你已经成功的Internet上完成了合法注册,即有了A地址,那么你就可以假设邮件服务器了,DNS中有一个MX标志,这是(Mail Exchanger)记录邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器,例如:当internet上某个用户要发一封信给user@mydomain.com是,该用户的邮件系统通过DNS来查找mydomain.com这个域名的MX记录,如果MX存在记录,用户计算机就将邮件发送到MX记录所指定的邮件服务器上,MX类似路由器的功能,可以说是邮件路由,当然MX记录一定要设置正确,不然邮件可能永远流浪在Internet上。
安装qmail前注意事项:
-------------------------------------------------------------
注意:
1:如果在foxmail或其他软件中,收信正常,发信有错误,请把/var/qmail/supervise/qmail-smtpd/run中添加的域名去掉,然后把/home/vpopmail/etc/tcp.smtp.cdb所有者与组修改为vpopmail.vchkpw即可,就不在教程里更新了
2:教程中关于vpopmail的少写了一句,现在添上,缺少会出现在foxmail中无法仅使用名称,而要使用全称才能取信的功能,具体错误就是在测试帐户时其他选项都通过,就是在登陆pop3服务器上出错!
cd /home/vpopmail/etc/
# sudo vim defaultdomain
apt-get.vicp.net (写入你的域名) 
3:关于qmail-pop3d/run与qmail-pop3ds/run中填写域名的问题,在run中会有'hostname',需要写入自己的域名,这时候填写应该把‘’也去掉,
如'hostname'改为apt-get.vicp.net ,不然会出现类似/home/Maildir之类的错误,教程里没写清楚,特别提醒下!
4:如果遇到foxmail中给外网发信,The server reply: 553 sorry,that domain isn't in my list of allowed rcpthosts错误
需要修改/var/qmail/control/rcpthosts文件,
比如需要给QQ的信箱发信,就加入qq.com
给hotmail发信,就另换一行写入hotmail.com
这个也是教程中的遗漏,不好意思! 
5:这个是补充,没有确认是否会出问题,但加编译安装时候加入没有坏处
编译vpopmail时候,除了教程中的参数外,在加上这两个参数
--enable-vpopuser=vpopmail
--enable-vpopgroup=vchkpw
如发现错误会即使更正,希望大家也多找错误与遗漏!
更新基本病毒防护!
垃圾邮件过滤更新!
教程基本已经完结,所有配置均在ubuntu8.04服务器版下测试通过!
新接触qmail的用户下载最后的基本安装包就可以了,适应后,可以慢慢增加。
有关其他mail的配置,论坛都是有的,这里就不在写了!
附件:
文件注释: 基本垃圾邮件过滤
请安装基本病毒防护后在安装

 qmail-spam.tar.gz [11.33 KB]
文件注释: 基本病毒防护
会继续更新!

 qmail-clamav.rar [2.45 MB]
文件注释: 更新后的webmail
主要修改些安装错误!

 WebMail.tar.gz [264.11 KB]
文件注释: Web管理
管理虚拟域,用户,邮件列表等。

 qmail-web-manage.tar.gz [1.11 MB]
文件注释: 更新后的基本安装包
修正一些小错误
主要是更换smtp验证包
添加对sina,qq,hotmail等网站发信必须配置

 qmail-bases.tar.gz [1.38 MB]