好早好早之前计算机网络老师就教了说,邮件嘛,就三个协议smtp,imap,pop3。 web
smtp 用来发邮件,imap,pop3用来收邮件。噢?是么。难道没有发现这句话有很是多的漏洞,根本就不能说清楚这个邮件发送的整个过程。发邮件? 往哪里发? 收邮件? 往哪里收。当真的编程的时候就无比蛋疼了。编程
首先总结一句话。完成邮件发送这个整个过程,无论是你发给别人,仍是别人发给你,只是经过了smtp协议。换一句话说就是只用postfix,你就能够搭一个邮件服务器。你能够经过它给你的qq邮箱发送,更能够经过qq邮件发送给他。服务器
咱们仍是先跟随一个典型的发送邮件的到接受邮件的过程,看一看smtp ,imap ,pop3以及postfix, dovecot在这个过程当中到底扮演了什么角色。网络
从最开始,小明用邮件代理(MUA mail user-agent ),能够是你foxmail,outlook,或者是你的web-qq-mail,或者是Thunderbird 。 不管是哪一种MUA 邮件建立以后被送到了用户的邮件传输代理服务器(MTA mail transform-agent) ,这个就正是postfix——传输的协议使用smtp协议。而后MTA 也就是postFix 检测你的用户合法性,以及一系列检测(包括你发邮件的限制数量,是否含有什么流氓信息之类的)。等postfix检测完了以后,它就去找DNS找寻 你的目标。例如:你发送给 11111@qq.com , 此时他就去找DNS问 qq.com的ip是多少(详细过程更为复杂一些,例如, qq.com的服务器和 她的邮件服务器颇有可能不在一个网段内部,也就是说qq.com那台并非mail服务器,可是咱们的mail服务器又很想用qq.com的域名,怎么搞,总不可能要求别个把mail服务器丢到web服务器的网段嘛。这个时候就能够设置qq.com的mx记录,而且设置到目标主机,详细过程再也不赘述)。而后将这封邮件投递给qq.com mx 记录指向的主机的25(默认)端口——此时也是使用smtp协议。固然,考虑到不一样的网络配置,可能邮件在传输的过程当中颇有可能被转移到了另外的MTA,可是最终会有一个MTA接管这封邮件,而且负责投递。而后MTA将邮件转移给某个MDA(邮件投递代理) ——她主要的做用是将邮件保存到本地磁盘中,有些MTA也包揽了这个工做——如postfix就是包含MTA,MDA。ssh
Ok这个时候,邮件发送的整个过程已经结束了(服务器层面上的),也就是说如今你能够给qq.com发,qq.com也能够给你发了,编程实现的投递过程也就到此结束。post
你能够ssh到你的邮件服务器,去看下,/hom/mail/...你的目录下面你的邮件了,(显然各个邮件系统的存储方式不尽相同,这只是举个例子)计算机网络
那么这个时候你nmap一下你的邮件服务器,就会发现多了一个25端口,你能够经过这个端口指示它向mail.qq.com投递,同理qq.com 也能够经过他给你投递一封邮件。代理
这个时候咱们再来看一看Dovecot尼玛在这个过程当中到底起到了什么狗屎做用,我好不容易配了一个Postfix,尽然还要装个这货。因此再重复一次,Dovecot并不负责邮件的投递或者存储,这两方面出现了问题,应该考虑你的MTA或者MDA是否正确。orm
Dovecot的主要配置包括,邮件存储位置,邮件存储类型,用户列表和密码列表,她支持多种用户密码格式。你用该选择一种邮件服务全局均可以接受的用户名和密码格式。以便你的postfix和dovecot沟通咯。ip
那么有了这个狗屎货以后有什么用呢,你再nmap 一下你的端口,发现多了110,143端口,她们分别是pop和imap端口,这个时候你就能够经过你的outlook等等MUA来查收你的邮件咯,固然若是你设置smtp为本机的话,也就能够发了。大概这个时候一个很是很是简单的邮件服务器就搭起来咯。
因此总的来讲dovecot没起到任何做用,pop,imap也没有起到做用。开玩笑哈~
固然若是想要经过这个邮件服务器去给你的用户发送邮件,那显然是不靠谱的,她们妥妥地会出如今你用户的垃圾邮箱,甚至直接就被别人的MTA拦截住了。