sendmail是最重要的邮件传输代理程序。Sendmail作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有bug等方面具有一定的特色,且可以在网络中搜索到大量的使用资料。一般情况下,我们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理。而投递代理则从信件传输代理取得信件传送至最终用户的邮箱。邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。有许多的程序可以作为信件传输代理,但是sendmail是其中最重要的一个,事实证明它可以支持数千甚至更多的用户,而且占用的系统资源相当少。不过,sendmail的配置十分复杂,且无验证,没有防范垃圾机制,没有防病毒机制。当sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的。sendmail首先确定这个地址是用户名+机器名的格式,然后,通过查询DNS来确定需要把信件投递给某个服务器。DNS数据中,与电子邮件相关的是MX记录。
MUA (mail user agent 邮件用户代理),用于用户端发送邮件或者阅读邮件。linux有mutt这个工具 MTA (mail tranfer agent 邮件传输代理 ),相当于一个邮局,server端的软件,主要的功能有,接收MUA发来的邮件和把邮件发送给下一个MTA,可以说是一个邮件路由(mail router),server端的软件就属于MTA,现在开源的有sendmail,postfix,qmail等 。
MDA (mail devilery agent 邮件投递代理),主要是将MTA所接受的邮件,依照邮件的目的地将此邮件放到本机账号下或者是给下一个MTA,一般就是指mail这样的命令。
邮件的协议:
发信: SMTP (simple mail tranfer protocol 简单邮件传输协议) 端口号 TCP的25端口,在发信时,MUA会主动连接MTA的port 25,然后经由SMTP协议发送出去,SMTP分为接受SMTP和发送SMTP,它不管两端主机的配置或者系统等,只要两边SMTP协议OK就可以发送邮件
收信: POP (post office protocol 邮局协议),来连接到MTA,以读取或者下载邮件,现在常用的版本是POP3,端口为110 IMAP (internet message access protocol 网络报文件协议),能在下载邮件前先下载邮件头信息,以可以让用户选择性下载 端口 143。
首先来测试一下环境
这里我用的centos的系统,默认似乎是安装过了sendmail的,并且是启动过的。
接着安装dovecot:yum install dovecot
启动dovecot: service dovecot start
这时是可以发信件的,为了测试可以先添加两个账号user1、user2,然后向其发送一份邮件
由日志看出,发送成功了,真的发送成功了吗,要看user1能否收到这封标题为1的内容为12387681498649821的邮件,为了验证,要切换到user1,进行收信