电子邮件的工作原理及日常使用技巧

“当你打开邮箱,看到PM又在变态的加需求,还不给原型图时,你直接把邮件删掉,装做一切都没发生的样子。但又怕以后撕逼不占上风,于是你把邮件从‘已删除’恢复,并以上帝视角回复了以下几个字:“知道了”。于是,你司PM和你用电子邮件发动了一场无声的撕逼战。但电子邮件是无辜的TAT..”

一、电子邮件传输全过程

首先和大家分享的是,一封电子邮件从发送到对方接收,都经过了哪些过程。

首先,一封完整的电子邮件包括以下三部分:信封(envelop),信头(header),正文(body)。传统的书信过程是,你将写好的信放入你精心准备的信封里,并在信封上面写好收件人的地址信息以及你的地址。那么在电子邮件中,你同样可以这样理解。

回到刚才的故事。当你打开你的邮件客户端正准备和PM大撕一场时,你可能填写的内容包括:收件人(To),抄送(Cc),密送(Bcc),主题(Subject),正文(Body)这几个部分。当你点击了“发送”按钮时,这封邮件就被自动套上了一个隐形的信封(envelop)。(打住!就到这儿,我们暂且先不让这封邮件发出去)那么这个信封中包括了发件人地址(From),收件人地址(To)。在这里,假设程序猿小哥的邮箱为404@heygeek.net,PM的邮箱为pmdog@heygeek.net,那么信封(envelop)就是这个样子:(为方便理解,只显示关键信息):

From: 404@heygeek.net

To: pmdog@heygeek.net

信封里包括信头(header)正文(body)两部分,信头(header)是你的收件人/抄送人/密送人的地址,正文(body)是你的邮件内容,此处程序猿小哥写到“不加需求会死啊!”。

好了,现在这封邮件已经创建好了,于是程序猿小哥用上帝视角点了下“发送”,长舒一口气。那么,在程序猿小哥点了“发送”按钮后,这封邮件就会像微信红包一样,马上闪现在产品小哥的收件箱吗?

当然不是。下面重点来了(敲黑板!!)先放一张图来压压惊。

首先,程序猿小哥的这封邮件以“信封+信”的形式,从他的本地客户端(Mail User Agent,简称MUA)中发出,到达程序猿小哥所在网络的MDA(Mail Delivery Agent,邮件分发代理)或者MTA(Mail Transfer Agent,邮件传输代理),在外发邮件时,发件方的MTA往往也承担着MDA的角色。

这封邮件到了MTA后,首先MTA回根据信封(envelop)来判断收件人是否为本地的邮件地址,若收件人与发件人都属于“heygeek.net”,那么这封邮件就会自动由MDA分发到收件人的邮箱当中。否则,继续下一步(本文假设程序猿小哥和产品小哥不在一个本地服务器,否则没说的了。。)

在大多数情况下,这封邮件会直接进入MTA的邮件队列(假设前面还有100封程序猿对喷产品狗的邮件,那么刚才这位程序猿小哥就要等到之前的100封全都喷出去以后才能对喷),经过了漫长的等待,这封邮件终于从队列里移出。

此时,信封(envelop)会自动根据收件人的邮件地址在DNS上找到收件人地址所在域的MX记录(Mail eXchange,邮件服务),找到了产品小哥的收件服务器的MX记录以后,会自动判断MX记录的优先级,将这封邮件送往优先级最高的MX服务器上。

注:一般MX记录格式如下,优先级数值中,数字越小,优先级越高。

邮件服务器名:mxbiz1.qq.com 优先级:5
邮件服务器名:mxbiz2.qq.com 优先级:10

此时,这封邮件需要穿过产品小哥设置的各种防火墙,反垃圾,反病毒等障碍,经检验合格后,才能成功到达产品小哥邮箱所在的MDA。聪明的MDA会按照信封上写的收件人地址,将这封邮件投递到产品小哥的收件箱中。以网易邮箱为例,如果产品小哥查看了这封邮件的信头,那么他会看到这些代码:(为方便理解,仅保留关键信息)

Received: from 404@heygeek.net ( [115.171.167.3] ) by ajax-webmail-wmsvr117
 (Coremail) ; Wed, 22 Feb 2017 21:48:23 +0800 (CST)
Date: Wed, 22 Feb 2017 21:48:23 +0800 (CST)
From: 404 <404@heygeek.net>
To: pmdog <pmdog@heygeek.net>
Subject: =?GBK?B?SGmy+sa3ubc=?=
Content-Type: multipart/alternative; 
MIME-Version: 1.0
Message-ID: <21f35480.96e3.15a66147fc3.Coremail.404@heygeek.net>
------=_Part_145707_437787864.1487771303875
Content-Type: text/html; charset=GBK
Content-Transfer-Encoding: base64

PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS43O2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7
Zm9udC1mYW1pbHk6QXJpYWwiPrK7vNPQ6Mfzu+HLwMLwo788YnI+PGRpdiBzdHlsZT0icG9zaXRp
b246cmVsYXRpdmU7em9vbToxIj48ZGl2Pjxicj48L2Rpdj48ZW1iZWQgaWQ9Inh1bmxlaV9jb21f
dGh1bmRlcl9oZWxwZXJfcGx1Z2luX2Q0NjJmNDc1LWMxOGUtNDZiZS1iZDEwLTMyNzQ1OGQwNDVi
ZCIgX3R5cGU9ImFwcGxpY2F0aW9uL3RodW5kZXJfZG93bmxvYWRfcGx1Z2luIiBoZWlnaHQ9IjAi
IHdpZHRoPSIwIj48L2VtYmVkPjxkaXYgc3R5bGU9ImNsZWFyOmJvdGgiPjwvZGl2PjwvZGl2Pjwv
ZGl2Pg==
------=_Part_145707_437787864.1487771303875--

在产品小哥看到的邮件信头中,可以看到发件人所在服务器的IP地址,邮件接收时间,发件人,收件人,邮件主题,内容类型(MIME),信息ID,最后是邮件正文,本例中,网易邮箱自动对邮件正文的Html代码进行Base64转码处理,所以不能直接看到正文,需要解码后方可看到。


二、电子邮件常见术语/名词介绍

      1. MX记录。全称“Mail eXchange”,是DNS记录的一种类型,其作用是在邮件传输过程中,根据收件人的电邮地址后缀,而告诉这封邮件应该去往哪一个服务器。比如,产品小哥的邮箱为pmdog@heygeek.net,那么heygeek.net的域名所有者就需要在其DNS记录中,添加1条或多条MX记录值,指向用于处理邮件的服务器。MX记录值可以设置优先级,数值越小,优先级越高。当外部邮件根据查找MX记录,找到了当前邮件服务器时,他会优先将该邮件投递到优先级高的邮件服务器中,仅当高优先级的邮件服务器不可用时,才会投递到优先级低的邮件服务器。
      2. SMTP。全称“Simple Mail Transfer Protocal”。中文名是“简单文件传输协议”。起到的主要作用将你编写好的邮件发送出去。当我们在配置手机/电脑邮件客户端时往往需要填写你邮箱的SMTP服务器地址,登录名,密码以及加密方式。
      3. POP3。全称“Post Office Protocal 3”。是一种邮局协议。它起到的作用是将存储于邮件服务器上的邮件下载到你的手机客户端或电脑客户端上,但你在本地客户端进行的操作“删除/分类”等不会同步到服务器。当你外发邮件时,你的邮件也只会存储在你自己的客户端/电脑上,也不会同步到邮件服务器中。简单来说,如果你在你的Mac上使用POP3来收发邮件,那么当你换了一台Windows时,你是看不到你在Mac上的邮件记录的。
      4. IMAP。全称“Internet Messaging Access Protocal”。中文叫“交互式邮件存取协议”。他起到的作用是将邮件服务器中的邮件与本地(客户端)的邮件进行同步。它与POP3的区别是,IMAP可以完全同步你在本地客户端进行的操作“删除/标记”等等,同时你的外发邮件也会同步存储在邮件服务器中,当你切换到另一台电脑/客户端时,你也可以完整的看到你之前进行的所有邮件操作。因此,IMAP也是当前主流的邮件协议。
      5. SPF。全称“Sender Policy Framework”。中文名“发信者策略框架”。它的作用是确定哪些邮件服务器/ip地址可以在您的域(名)下发送邮件。换句话说,就是一个发信资格列表,在列表中的服务器/ip才算是被正式授权以当前域(名)的名义外发邮件。举个栗子,当我在heygeek.net的DNS记录中添加一条TXT记录,值为:“v=spf1 include:spf.mail.qq.com ~all”,这条SPF记录就是在告诉收件方的服务器,“mail.qq.com“是我(heygeek.net)信任的邮件发送服务器,以后从这个服务器发出的邮件就代表是我发出的。设置SPF记录有利于提高邮件送达率,防止被收件方误认为垃圾邮件,是预防垃圾邮件的一个重要解决方案。
      6. DKIM。全称“DomainKeys Identified Mail”。中文名“域名密钥识别邮件标准”。它的作用是用于收件服务器鉴别收到的邮件是否确实从发送方发出的。DMIK包括“公钥(Public Key)”和“私钥(Private Key)”两部分,其中,私钥存储于发件方服务器,在发送邮件时自动包含在信头(header)里;公钥存储于DNS中供各收件服务器查询。当收件服务器收到一封邮件时,他会将邮件中的私钥于在DNS查询到的公钥进行比对,如果比对失败或不合法,那么就很容易被判定为垃圾邮件。
      7. DMARC。全称“Domain-based Message Authentication, Reporting and Conformance”。他是一个建立于SPF和DKIM之上的反垃圾邮件解决方案。主要是用来解决信头(header)中的发件方(From)伪造而诞生的一种新的邮件来源验证手段。他能够在邮件收发双方之间建立起一个数据反馈机制。举个栗子,“v=DMARC1;p=reject;rua=404@heygeek.net”,这就是一条常见的DMARC记录,他的作用是告诉收件服务器,如果检测到有人伪造我的发送方时,直接将该邮件标记为垃圾邮(reject),同时将一段时间的汇总报告发送到“404@heygeek.net”这个邮箱中。
      8. PTR。全称“PoinTer Record”。中文叫“指针记录”,一般称之为“IP反向解析记录”。通常我们在DNS设置A记录时,是将我们的域名解析到一个IP上;PTR记录则是将这个IP同时指向我们的域名。一般由主机提供商/域名管理商/ISP设置。做好PTR记录后,主流邮件ISP就会知道这个ip和发送域名之间双向匹配,起到的作用是提高发信方的信誉,提升邮件送达率。

三、如何退订广告(垃圾)邮件

你之所以会收到各种广告(垃圾)邮件,主要是以下几方面造成的:

      1. 在该网站使用邮箱注册,并默认/主动选择接受邮件通知;
      2. 在相关网站的“订阅”菜单中,填写了自己的邮箱;
      3. 被卖了 —_—||。

……

对于商家/网站而言,邮件主要分为两种:营销类邮件事务类邮件

上图是一个典型的营销类邮件,下图是一个典型的事务类邮件

在网易邮箱诚信开放平台上,将营销类邮件定义为:

“更新通知、各类期刊、各类报表、新品推广、季末促销、优惠套餐、折扣优惠、积分优惠、好友邀请、会员关怀、主题活动、用户调研”等相关类型的邮件。

事务类邮件定义为:

“帐号激活、信息验证、帐号绑定、密码修改、密码取回、订单通知、付款通知、退款通知、物流通知、交易投诉、对账单、流水账单、催款通知、账户变更”等类型的邮件。

在国内的大环境下,在一个网站/商家想要给你发送营销类/事务类邮件之前,他需要到网易/腾讯等主流ISP处进行备案,通常需要提交其公司资质,发件方名称,发信IP这几项内容。待审核通过后,就可以正式发送了。

在发送方的邮件系统中,存在着一个或多个邮件列表,那么你的邮箱可能只存在于1个列表中,也可能同时存在于多个列表中。

举个栗子,当当网的邮件列表可能包含:①喜欢社科类图书的人;②钻石会员。那么如果你之前多次购买过社科类图书,并且还是当当网的钻石会员,那么,你很可能就同时存在以上两个列表中,所以,你很可能会经常收到两种不同类型的邮件,一种是发送给“喜欢社科类图书的人”这一列表的邮件,内容可能是新书推荐;另一种是发送给“钻石会员”这一列表的邮件,内容可能是本月会员活动。

那么,当你不再想收到“社科类新书推荐”这一类的邮件,你该怎么做呢?重点来了!

      1. 点击邮件正文的“退订”链接,通常会跳转到该网站的会员后台/邮件订阅后台/邮件发送系统退订页面,总之,无论跳转到哪个页面,你只要去找“退订”或“Unsubscribe”字样的按钮,完成退订操作,就会从该列表中删除,下次就不会再收到发给这个列表的邮件了。栗子:
      2. 但是,有的网站非常“巧妙”的关闭了“退订”功能,当你点击“退订”链接后,要么跳转的是一个空页面,要么就是怎么也退订不掉,要么就是显示退订成功但是下次(或隔一段时间,通常称之为“休眠”)你还是会收到邮件。如果是这样,那么我们也需要使用一些“巧妙”的办法。以网易邮箱为例。点击上方菜单栏中的“举报”后,逐步确认“将发件人加入黑名单”、“将发件人的历史来信移到垃圾邮件”后,你从此就再也不会收到这个发送方发来的广告(垃圾)邮件了。注意,这种方式会降低该发送方/发送通道(IP)的信誉度,如果举报的人数较多,其发送量也会受到影响,所以是一种严厉的“退订”方式。
      3. 以上两种方法基本可以解决99%以上的退订问题了,如果你还是一名反垃圾邮件的积极支持者,那么你也可以将你收到的垃圾邮件,作为附件转发给“abuse@12321.cn”,网络不良与垃圾信息举报与受理中心,如果12321认定为是垃圾邮件,那么他们就会将原始外发IP列入黑名单,只要引用12321黑名单的企业,就将不在收到该IP发送的垃圾邮件。相关介绍

四、总结及邮箱使用建议

      1. 如果遇到可疑邮件,请使用查看信头/查看原文/查看eml文件等方法找到这封邮件的完整代码(传输过程),对主要的标识进行仔细甄别(From/Sender/IP/SPF/DKIM/Authentication),判断原发件方和显示的发件方是否一致,以及一些邮件服务器的SPF检测结果是否有异常。
      2. 对垃圾邮件“0”容忍,收到一封举报一封,并向12321转发。
      3. 尽量使用安全系数高的邮箱。如:Gmail、Outlook。
      4. 适当使用“替身邮箱”进行垃圾邮件的二次检查。比如,对外公开的邮箱为网易/QQ邮箱,并设置自动转发所有邮件到你的私有邮箱,这样使邮件能得到双重反垃圾检查,进一步避免垃圾邮件的出现。
      5. 使用“授权码”登陆邮件客户端,根据需要开启二次验证,避免关键密码被盗。

 

以上是对电子邮件基本原理以及日常使用技巧的介绍,如有错误,欢迎在下面留言指正或补充!


图片及部分参考来源:
https://www.oasis-open.org/khelp/kmlm/user_help/html/how_email_works.html
http://lomu.me/post/SPF-DKIM-DMARC-PTR
http://serverfault.com/questions/824882/whats-the-point-of-repeating-an-email-address-in-the-envelope-and-the-the-he
http://rve.org.uk/about-email-envelopes
http://ccm.net/contents/116-how-email-works-mta-mda-mua
https://en.wikipedia.org/wiki/Message_transfer_agent
https://en.wikipedia.org/wiki/Email_agent_(infrastructure)
https://mediatemple.net/community/products/dv/204643950/understanding-an-email-header
http://stackoverflow.com/questions/1750194/why-does-email-need-an-envelope-and-what-does-the-envelope-mean

发表评论

电子邮件地址不会被公开。 必填项已用*标注