前言

很久之前就想拥有一个让人过目不忘的电子邮箱。
好的邮箱 @ 前面醒目,更好的邮箱 @ 后面更加醒目。 @ 前面的用户名无非是与网名相同、短、有词义这么几种,然而对于没赶上电子邮箱服务拓荒时代的人们来说,好的用户名早就被抢注一空; @ 后面的邮箱后缀往往也没什么更好的选择,毕竟主流邮箱服务的域名固定不变。好在如今域名人人可得,寻找一个称心如意的域名后再想好邮箱用户名,剩下的就简单多了。

Mailgun + Gmail 搭建个性化邮箱

Mailgun 是一个功能强大的电子邮件服务,设计初衷是为开发者发送大量邮件提供支持,同时只需要简单的步骤设置好路由规则就可以用来接收邮件。由于 Mailgun 只提供 SMTP 服务器,因此只需要设置 SMTP 服务器就能绑定邮箱账号的 Gmail 成为了 Mailgun 的最佳搭配。
Mailgun 为初级用户 (Unity Plan) 提供每月 10,000 封免费邮件,超过免费额度才会按发送邮件数收费,完全能够满足个人邮箱的需求。当然需要注意的是新注册的账号是受限的,只能使用测试功能——与添加到名单内的邮箱互发邮件;升级到 Unity Plan 需要绑定信用卡,支持 VISA / MasterCard / American Express / Discover。此外 Unity Plan 用户仍然有每小时只能发送 100 封邮件的限制,移除这一限制需要用户满足一定条件每小时 100 封还不够要啥自行车

配置 Mailgun 并不困难,过程如下:

  1. Register Mailgun
    这个没什么好说的……到 Mailgun 注册一个新账号。
  2. Domain
    Domain -> Add Domain -> 输入要用作邮箱的域名,按要求添加 Mailgun 给出的 DNS 记录,等待 Mailgun 验证完成。
  3. SMTP Server
    mailgun-example
    Manage SMTP credentials -> New SMTP credential -> 添加个性邮箱的用户名,设置用于验证的密码。
  4. Route
    mailgun-example-2
    Routes -> Create route -> Expression Type 选择 Match Recipient(匹配收件人),Recipient 填入完整的个性邮箱, Action 勾选 Forward 填自己的 Gmail, 保存。
  5. Gmail Settings
    切换到 Gmail, Settings -> Accounts and Import -> Add another email address you own,在弹出的窗口中依次输入个性邮箱, SMTP 服务器填 smtp.mailgun.org,端口选 587,这里用户名也是填完整的个性邮箱,密码是第三步设置的验证密码,安全连接方式选 TLS。设置好确认后 Gmail 会给个性邮箱发送一封验证邮件,收到邮件后点击邮件中的验证链接或在弹出窗口中输入邮件中的验证码就可以完成验证。

mailgun-example-3
现在可以使用个性邮箱发送邮件了!

把!邮箱!给我!

电子邮箱是连接各种互联网服务的关键所在,而在作为通信工具又能起到类似个人名片的作用,因此电子邮箱之于互联网的重要性无须多言。
通常更仰赖互联网的用户对邮箱数量的需求也更多。轻度网络用户只要一个邮箱足矣;当用户使用的服务增加或者想要在网络上佩戴不同的“面具”,通信、注册各种服务、匿名社交等自然而然就需要更多邮箱。有些主流邮箱只允许互相绑定(如果不考虑所谓手机邮箱的话),收件箱不共用很不方便;大部分主流邮箱都提供别名可以一个邮箱账号对应多个邮箱,不过往往有别名数量的限制,例如 Outlook(10个)、 iCloud(5个)、 Mail.com(10个)、 QQ(都算上是3个)。
Gmail 比较特别,虽然没有别名,但有这么两个规则:

无限多个邮箱能做什么用?

至少有一点可以肯定,为不同的邮箱创建过滤器要方便得多,在一个收件箱里查阅通过过滤器筛选的邮件,省却了切换邮箱的麻烦,无疑能够提高效率。
比如说,每注册一个网络服务都使用相应的关键词作为别名,[email protected] [email protected] 如此这般,搭配 Gmail 的标签和过滤器,不同网站的邮件一目了然。
进一步延伸的用法是保护隐私,因为每次注册都使用相应的邮箱,判断垃圾邮件的来源变得轻而易举。不过鉴于 Gmail 用户名总是在邮箱地址里,隐私保护的效果并不如传统的邮箱别名。

那么有没有既有无限多个邮箱、又能保护隐私的邮箱呢?
答案呼之欲出:
域名邮箱!

这就是域名邮箱的优点

  1. 看着电子邮箱地址 @ 符号后面是自己精挑细选的域名,中二又时髦,感觉好极了!
  2. 域名邮箱可以有无限多个,随便用,不重样
  3. 可以尽情设计简短好记的邮箱,在有些时候很能体现出价值。

域名邮箱有这些使用方法

  • 邮箱转发
    一般的域名商都会提供。只需要使用通配符,一条 *@example.com 规则就可以把所有发送到邮箱主机地址是 @example.com 的邮件都转发到指定的邮箱(比如常用的 Gmail 邮箱),也就是说有了无限多个邮箱名;也可以设置不同的规则,将发送到不同域名邮箱的邮件再分别转发到各自对应的邮箱。缺点是只能收不能发,但如果是拿来注册各种网络服务则得心应手。
  • 企业邮箱
    把域名绑定到现有的邮箱服务上去。免费的如 QQ、 ZOHO,商用的如 G Suite,基本每个主流邮箱服务都有付费的企业邮箱。美中不足的是企业邮箱往往只能绑定一个域名,并不是最佳选择。
  • 自建电子邮件服务器
    动手能力强/有相关需求可以考虑。但对于一般人来说有必要看清自己的需求,不要片面追求高大全,专业的事完全可以交给专业的人来做。
  • Mailgun
    本文重点,不再赘述。
    写到这里想起一个细节,最初配置好 Mailgun 的个性邮箱时试着给 QQ 邮箱发了邮件,结果发现 Mailgun 的邮件会被拦截。不知道现在这个限制移除了没有?

5.7.1 DMARC Policy

2017年8月[^1],心血来潮想把 Twitter / Flickr 的邮箱换成自己的个性邮箱,结果发现总是收不到验证邮件。查看 Mailgun 的日志发现当来自 Twitter / Flickr 的邮件被 Mailgun 转发时,会提示 "rejected due to domain's 5.7.1 DMARC policy",翻阅了 Google 给出的搜索结果[^2]最终发现了问题所在。
个人理解是: 5.7.1 DMARC Policy 这一规则是通过域名的一条 DNS 记录验证一封邮件的发件人是否是域名所有人。当收件服务器接收到一封邮件时,会分析发件人的域名信息查询该域名的 TXT 或 SPF 记录(只是目前一般都使用 TXT 记录)进行检验,若收件服务器发现发件人的信息与域名提供的 TXT 记录不符,则发件人不能通过验证,该封邮件就会被判定为是伪造了域名所有人的身份,进而被收件服务器拒收。
如此一来就可以理解为什么 Gmail 通过 Mailgun 或邮箱的邮件转发功能收取的验证邮件会被拒收。 Mailgun 收取邮件是通过 Mailgun 的路由功能转发而来,并不是直接收取。这里以自己的经历来说明:一封来自 Twitter 的验证邮件经过了 Mailgun 或邮箱的邮件自动转发功能来到了预设的 Gmail 邮箱;但 Gmail 的收件服务器通过查询 twitter.com 的 TXT 记录,发现这封邮件虽然是 Twitter 的验证邮件,却不是从 Twitter 的服务器发来的。所以在 Gmail 的收件服务器看来,这封发件人写着 Twitter的邮件实际上来自 Mailgun 或配置了自动转发的邮箱的服务器,无法通过 5.7.1 DMARC Policy 验证,结果就是 "rejected" 被拒收。
这一规则正逐渐被各家网站作为安全措施广泛部署,不过不同的网站也有宽松和严格的区别,例如成文之时 Twitter 只有验证邮件会被拒收; PayPal 则采取了极端严格的策略,任何无法通过 5.7.1 DMARC Policy 验证的邮件都将被拒收。

说了这么多,关键的问题『收取邮件』该怎么办?

当然还是可以补救的。
方法之一是切换到 POP3 收取邮件。以 Gmail 为例, Settings -> Accounts and Import -> Check mail from other accounts -> Add a mail account,导入邮件的方式选择 POP3,这种方法适合收取此前配置了邮件自动转发的邮箱。
方法之二是使用域名注册商提供的域名邮箱转发,这种方法只能补救受到影响的 Mailgun,因为 Mailgun 本身没有收件箱,而这意味着通过 Mailgun 配置的个性邮箱不能用来注册……没什么更好的解决方法。
不过正好以此为契机把长期待机的域名拿出来用上一用,也算不让金钱白白浪费吧。


参考:

  1. Twitter @AsakawaP
  2. FastHosts Community: Email forwarding failure due to DMARC
  3. 忘尘寒 - 电子邮件装逼指南
  4. xdays - 利用 Mailgun 搭建私有域名邮箱