一、首先应该先了解用户和邮件服务器以及邮箱的使用
现在通常使用Email都很容易,这是因为有第三方服务商搭建邮件服务器,用户只需注册然后使用邮箱的收发功能。
但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。
所以一封邮件的流程是:
发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--收取-- MUA:收件人
MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议;
而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。
需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA(MUA到MTA或者MTA到MTA之间)和MDA(MUA到MDA之间)并不是同一台服务器,因此,在Outlook等软件中,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。
感兴趣的可以自己尝试使用命令交互:smtp客户和服务器的命令交互(发)、pop3客户和服务器的命令交互(收)。注意使用的7位的ascii编码
smtp
S:220 hamburger.edu
C:HELO crepes.fr
S:250 Hello crepes.fr, please to meet you
C:MAIL FROM:<[email protected]>
S:250 [email protected] ... Sender ok
C:RCPT TO:<[email protected]>
S:250 [email protected] ... Recipient ok
C:DATA
S:354 Enter mail, end with "." on a line by itself
C:Do you like ketchup?
S:How about pickles?
C:.
S:250 Message accepted for delivery
C:QUIT
S:221 hamburger.edu closing connection
pop3
S:+OK POP3 server ready
C:user bob
S:+OK
C:pass hungry
S:+OK user successfully logged on
C:list
S:1 498
S:2 912
S:.
C:retr 1
S:<message 1 contents>
S:.
C:dele 1
C:retr 2
S:<message 1 contents>
S:.
C:dele2
C:quit
S:+OK POP3 server signing off
二、为什么需要搭建自己的邮件服务器?
对于用户自己的网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件。但是在前几天由于有重要信息需要立即通知用户,所以选择了群发邮件的方式。在当我以为一切都是辣么完美的时候,陆续有用户过来问我什么情况,我都会跟他们说请查收邮件,但是有好几个人说并没有任何邮件,于是我试着再发一次,结果返回了错误提示。在网上找了下原因,后来看到这个:各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况,才知道是因为发信数量限制了。
所以我只好另寻出路了,然后我在知乎上面找到了很多个提供邮件发送的服务商,大概有这些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建议之后,我选择了Mailgun。Mailgun注册和配置都挺简单,很快我就成功的发出了第一封邮件,怀着这封欣喜,我又发送了几封邮件,可是悲剧发生在第三封邮件,Mailgun后台有详细的发送记录,这个非常不错,在后台我看到我的邮件被拒收了,原因大概是该服务器IP的发信频率超过腾讯邮箱限制。所以这里就涉及到IP的问题,目前第三方的邮件发送服务普遍都是共享IP(后面还试过SendCloud、),而共享IP并不能确定是否已经达到接收方的数量限制,一旦达到了就无法再发送。这就是说还需要使用独立IP才能保证邮件有较高的到达率,接着就看了各家的独立IP价格,一般都是二十几甚至四十几美刀一个月,这对于我们这种小站长邮件需求不高的来说确实有点贵,买台VPS都不用这个价吧。
经过上面这些折腾,也算明白了如果要想顺畅的发出邮件的话,除了花钱,就只有自己搭建一个邮件服务器了。
三、如何搭建?linux系统下邮件服务器的搭建(Postfix+Dovecot)
待更
原文地址:https://www.cnblogs.com/hoanfir/p/9074608.html