Postfix+Dovecot+MySQL搭建邮件服务器图文解析

转自http://www.open-open.com/lib/view/open1431592348122.html


自己觉得人家写的特别清楚,特别鲜明,特地收藏!!

配置邮件服务器并不是一项简单的工作,其过程不仅需要一定的技术能力,同时也需要大家具有一定的耐心,同时也需要大家非常细心。为了能够「看懂」并「最终实践」这篇文章,大家还需要了解或掌握以下知识:

介绍服务

Postfix: 是一个标准的MTA「Mail Transfer Agent」服务器,它负责通过SMTP协议管理发送到本机的邮件以及由本机发向外界的邮件。在本例中,Postfix会把邮件的本地投递工作「接受到邮件之后将邮件存档到本地磁盘」交给Dovecot的LMTP服务「Local Mail Transfer Protocol service」处理。当然,当大家想通过服务器向外界发送邮件时,Postfix还将负责验证权限以确保服务器不被滥用。「很多邮件服务器根本没有对SMTP做用户验证,这将导致任何匿名用户都可以通过服务器向外界发送邮件,从而使得服务器变成垃圾中转站」

Dovecot: 是一个非常优秀的IMAP/POP服务器用以接收外界发送到本机的邮件。通常,Dovecot的工作内容包括:验证用户身份以确保邮件不会被泄露。在本例中,Dovecot将负责所有的「身份验证」工作,我们会配置Dovecot查询本地的MySQL数据库以确认用户身份

MySQL: 不必多说,它将存储所有的用户信息,其中包括:需要监听的域名信息、用户邮箱地址、登录密码、邮箱别名「alias」等

工作原理


服务器接收邮件的过程

在开始讲述本例的内容之前,我们先来看看Postfix+Dovecot+MySQL是如何相互协作以实现邮件服务器的各项功能。我们假设 张三通过oschina.net的邮箱[email protected]发送一份邮件给 李四[email protected],则服务器接收邮件的过程大致如下图所示:

Postfix+Dovecot+MySQL搭建邮件服务器图文解析

1. [email protected]发送邮件到[email protected]

2. oschina.net服务器会通过DNS查询mydomain.com的MX记录并找到Postfix所在的服务器

3. 邮件被发送给Postfix

4. Postfix转向MySQL求助,以查询mydomain.com是不是需要处理的域名

5. MySQL返回确认信息给Postfix

6. Postfix将接受到的邮件投递给Dovecot的LMTP服务以便做处理

7. Dovecot将邮件内容保存到[email protected]用户对应的磁盘路径


用户查收邮件的过程

上述例子中我们看到了服务器接收邮件的过程,接下来我们看看,当大家通过用户名密码登录邮箱查看邮件时,会发生什么事情:

Postfix+Dovecot+MySQL搭建邮件服务器图文解析

1.邮件客户端 to Dovecot:尊敬的Dovecot大人,您好!我阔以建立一个IMAP加密连接吗?

2.Dovecot to 邮件客户端:当然阔以。这是我的SSL证书,请您告诉我帐号和密码!

3.邮件客户端 to Dovecot:好滴!这是我的用户名和密码,千万不要告诉别人哦!

4.Dovecot to MySQL:Hi 美女!请问下,这个用户名和密码是正确的嘛?

5.MySQL to Dovecot:好的,请稍后!呃……这个用户名和密码是正确的哦!

6.Dovecot打开存放在本地磁盘/var/mail/mydomain.com/llisi的mailbox

7.Dovecot获取到最新的邮件及其他相关信息

8.Dovecot将邮件及其相关的其他信息通过IMAP协议发送给客户端


用户发送邮件的过程

查收了最新的邮件之后,李四[email protected]发现张三给他发来了邮件。现在,李四回复一封邮件给张三,会发生什么事情:

Postfix+Dovecot+MySQL搭建邮件服务器图文解析

1.邮件客户端 to Postfix:尊敬的Postfix大人,您好!我阔以建立一个安全的SMTP连接嘛?

2.Postfix to 邮件客户端:说人话!可以就是可以,干嘛要说「阔以」啊!你丫贱啊,找抽啊!想建立SMTP连接可以,不过要加密。这是我的SSL证书,告诉我你的帐号和密码,你个贱人!

3.邮件客户端 to Postfix:对不起,大人,我错鸟!这是我的帐号和密码,不要告诉别人哦!

4.Postfix to Dovecot:Hi 帅哥,帮我查一下这个帐号和密码!

5.Dovecot to MySQL:Hi 美女,这个帐号和密码是正确的呢?!还是正确的呢?!还是……

6.MySQL to Dovecot:好啦,你乖啦!我查过啦,这个帐号密码是正确的啦!表卖萌哦,Dovecot君!

7.Dovecot to Postfix:大锅,则个帐号密码斯正缺滴!

8.Postfix to 邮件客户端:贱人,过来!你给的帐号密码是正确的,允许你发送邮件!

9.邮件客户端将编写好的邮件通过SMTP协议发送给Postfix

10.Postfix将收到的邮件转发给对方

以上,大家已经看到邮件收、发的整个过程