第零章:介绍谁应该阅读本书系统管理伦理为什么烦恼?先决条件本书中的电子邮件工具垃圾邮件可交付性IP地址和 EmailEmail 组件邮件安全队列和异步性TLS 和 Email基于DNS的命名实体身份验证(DANE)TLS强度电子邮件基础架构DNS媒体类型和MIME发件人策略框架(SPF)域名密钥识别邮件(DKIM)基于域的消息认证、报告和一致性(DMARC)用于消息识别的品牌指示器(BIMI)邮件传输代理严格传输安全(MTA-STS)TLS报告(TLS-RPT)过滤简单身份验证和安全层(SASL)你需要什么?章节概览
电子邮件是互联网的核心。在线论坛、社交媒体和聊天系统随着网络的发展而蓬勃发展,但就像《星球大战》的忠实粉丝一样,我们一直在回归经典。电子邮件可以在任何有互联网连接的地方使用,也可以在许多没有互联网连接的地区使用。与聊天不同,在聊天中,其他相关人员会看到你收到了他们的消息,并选择忽略他们,而你会在想的时候回复电子邮件。你的联系人不会收到你正在键入回复的通知,直到你写好单词,他们才会看屏幕。电子邮件是每个平台上少数幸存的异步通信工具之一。
第一封类似电子邮件的信息于1965年在麻省理工学院发送,当时互联网只是计算机科学研究生的一个醉酒梦想。当这些学生最终连接两台大型机时,他们开发了原始的互联网协议,以便机器可以通信,并开发了一个名为MAILBOX的程序。今天的电子邮件看起来与他们的完全不同——首先,电子邮件地址中有那些深奥的@符号,而不是漂亮的简单感叹号。然而,现代电子邮件是建立在从这些早期协议中吸取的经验教训之上的。这还不错——所有广泛使用的协议都是以同样的方式发展起来的。如今,少数提供商主导着电子邮件服务。谷歌和微软等公司控制着大多数电子邮件地址。他们是一个电子邮件帝国,而我们这些运行自己的电子邮件系统的人是一个为独立而战的乌合之众。
这是可以做到的。协议易于理解,软件免费提供,调试工具充足,硬件价格合理。
运行电子邮件的问题与技术无关。一旦你知道如何设置,你就可以在几分钟内手动设置电子邮件服务器,或者在几秒钟内自动设置。问题是电子邮件服务器只是运行电子邮件服务器的一部分。
考虑从头开始建立你的第一个网站。您安装软件,启动守护进程,并将web浏览器指向主机的IP地址。你会看到默认页面和胜利的温暖快感。你有一个网络服务器!如果你在上面添加内容,你可以告诉你的同事“嘿,浏览到203.0.113.99,你会找到我的新网站!”你做了一件事。在域名服务(DNS)中添加一个条目,您可以向人们提供以下链接http://mwl.io。更多的测试,你添加TLS,在https中授予你宝贵的S。逐步构建一个符合现代标准的网站。
电子邮件不是这样的。
在现实世界中运行电子邮件不是配置问题。这是关于公民身份的。一旦电子邮件帝国宣布你的服务器不足或不可靠,就很难让他们改变主意。垃圾邮件发送者的标记不是一件容易接受的事情。在向外界发送第一条信息之前,你必须准备好扎实地参与电子邮件社会。当然,你可以在可消耗的域上设置几个一次性主机,并在它们之间专门发送电子邮件,看看软件是如何工作的,但如果你想运行一个真正的电子邮件服务器,并希望其他组织接受你的电子邮件,你必须迅速建立良好的声誉。你无法启动基本的SMTP,并立即开始向电子邮件帝国中的帐户发送邮件;他们会宣布你不值得信任。只有在您完全配置了SPF、DKIM和DMARC后,才能安全地向这些帐户发送邮件。虽然帝国经常声称它需要的比这少,但他们也拒绝信息,因为“他们喜欢”。
一旦你把你的系统建立为一个遵循标准做法的好公民,操作邮件服务器的维护相对较低。我花在电子邮件上的大部分时间都花在应用安全补丁上,就像任何其他面向互联网的应用程序一样。是的,为一家大公司运行邮件服务器是一项全职工作,但其中大部分时间都花在向用户解释“收件人的电子邮件帐户超过配额”的错误消息上,这意味着电子邮件被退回是因为收件人没有清理收件箱。
《运行自己的邮件服务器》 使用常见的免费软件来说明电子邮件的机制,但这本书的主要重点是建立公民身份。你可以使用任何你喜欢的软件来完成必要的角色。这本书并没有涵盖每个平台上的所有可能用例。它侧重于每个人都必须做些什么来支持一个可以在现代互联网上运行的邮件系统。您将学习组件如何协同工作,并能够研究和添加所需的不太常见的功能。
如果你想为一个小型组织、为你自己和你的朋友,或者只为你自己运行一个电子邮件服务器,请阅读这本书。这本书不会让你为全球企业或大型邮件列表运行电子邮件做好准备,但它将为你研究这些高级案例提供基础。
大多数具有运行自己的邮件系统所需背景的人都有几个域名、一两个他们想帮助的组织,甚至可能还有一个朋友。这本书旨在让你以可扩展的方式支持这些人。系统管理员通常倾向于提供过多的帮助、超载和内爆,这需要你来应对。
ethics——伦理
我清楚地记得我第一次在邮件服务器获取root权限,当时1.544Mb T1是连接的巅峰,我的33.6K调制解调器让我激动不已。我想,“我不可能查看每个人的邮件。” 我运行了 more /var/mail/boss
,立刻退缩了,对我惊人的能力感到恐惧。
控制服务器的人可以看到存储在该服务器上的所有信息。每个系统管理员都知道这一点,但在大多数情况下,提取信息太麻烦了。也许你是组织电子商务系统的数据库管理员,但你可能更感兴趣的是数据库使用了多少空间,而不是谁使用了什么。
直到你不是。
与数据库不同,检查存储为文本文件的电子邮件是微不足道的。你甚至不需要SQL,只需要特权(privilege)和分页器(pager)。
当你运行一项服务时,使用该服务的人会信任你。系统管理员没有正式的职业道德规范,但组织和社会有隐私标准。我不是专业的伦理学家,也没有哲学学位,但社会上压倒性的共识是窥探是错误的(snooping is wrong)。大多数组织认为侵犯隐私违反了他们的政策,并会因此终止你的关系。你的配偶可能会因此终止你们的关系。正如人力资源部的人不应该为了满足他们幼稚的好奇心而查阅你的人事档案一样,你也不应该查阅别人的电子邮件,除非是为了回应实际问题。
有时你必须检查用户的电子邮件。很久以前,在遥远的一家雇主那里,我不得不对一个损坏的邮箱进行故障排除。发件人无意中将文字处理器文档附加到邮件中,该文档中的某些内容混淆了POP3服务器。我必须检查邮箱文件中的各个字符以确定问题,这意味着要阅读用户的电子邮件。我请求用户允许我检查他们的邮件。他们批准了。我看到了一份我无权看到的法律文件的一部分,确定了问题所在,从邮箱中提取了问题文件,并恢复了服务。
为什么会不一样?同意。如果用户拒绝了许可,我就不得不上报给我们的老板,让他解决人事和隐私问题。
虽然自那以后,大多数电子邮件的粗糙边缘都被磨平了,但在故障排除过程中侵犯隐私的可能性仍然存在。测试用户、完整的测试环境和像 dtrace(1)
这样的程序分析器都很便宜。使用它们。
如果电子邮件是如此痛苦,为什么要自己运行呢?
隐私、控制和教育。
服务提供商经常扫描电子邮件以查找广告关键字或可销售的个人数据。虽然广告拦截器会让广告远离你的眼球,但它们会在错误的一端解决问题。是的,如果你用email Empire地址给某人发电子邮件,Empire会将你的内容添加到他们的记录中,但当你与其他局外人通信时,他们什么也学不到。电子邮件可能会被恶意拦截,但这种拦截需要付出努力,而且在大多数情况下,服务提供商不会费心。
隐私在商业中尤为重要。服务提供商可能会承诺不挖掘您公司的电子邮件,但他们的一位试图解决您问题的系统管理员可能不得不检查您的电子邮件。如果你的组织的隐私需要侵犯,最好由组织中的某个人来做。
你可以控制自己的电子邮件。许多服务提供商提供花哨的仪表板,让您添加和删除用户或设置配额,但当事情发生意外时,您将无法与他们的支持部门合作。等待技术人员认领你的故障单令人恼火,尤其是当你想让他们做一些琐碎的事情,比如检查日志时。当你运行自己的电子邮件时,你可以控制问题。
也许对许多人来说,最不合理但最重要的原因是纯粹的“极客信誉”(geek cred)。我们想知道事情是如何运作的。正如构建自己的防火墙是学习网络的好方法一样,运行自己的邮件服务器是了解这个生态系统的最佳方式。你运行自己的网络服务器、DNS、云存储和家庭自动化,为什么不运行自己的电子邮件呢?
这是一本适合初级电子邮件操作员的书,但不是一本适合初学者系统管理员的书。你必须具备一定的技能,才能希望运行电子邮件服务器。经验丰富的邮件管理员可能可以解决以下许多要求,但初学者不应该让他们的教育变得比必要的更困难。
你一定用过电子邮件。我不会解释电子邮件地址和附件是什么。
你必须知道如何管理你的操作系统。你需要备份你的主机,应用安全更新,了解网络和本地套接字之间的区别,并且通常让你的主机适合坐在裸互联网上。本书假设并推荐开源软件。我演示了在FreeBSD或Debian Linux上运行Postfix的一切。我在 /etc 下列出了我的所有配置文件和目录。这可能不会反映您的操作系统的默认设置。如果我说 /etc/redis.conf ,你需要弄清楚你的操作系统使用的是 /etc/redis/redis.conf 或 /usr/local/etc/redis.cnf 或其他什么。我提供了我所有配置选择的上下文,这样你就可以在任何类Unix平台上,甚至在你喜欢的邮件服务器上做出自己的决定。
邮件系统不是一个单一的应用程序。它是一个联锁应用系统。每次更改任何内容时,都必须验证新部件是否正常工作,以及您是否损坏了系统的其余部分。如果你不愿意仔细检查你的工作并测试部署的每个阶段,那就放心吧。
您需要至少两个连接到互联网的测试主机。是的,主机通常可以向本地主机上的帐户发送邮件,但几十年来一直运行良好,没有出现任何问题。这些可能是云中的虚拟机、实验室中的主机或其他任何东西。测试造成的硬件负载可以忽略不计。这些主机需要不同的静态IP地址。您还必须控制世界对这些地址的访问,因为电子邮件需要打开多个往返于主机的TCP/IP端口。大多数家庭互联网提供商都会专门屏蔽这些端口。
这些主机应位于不同的域中。是的,你可以在 newyork.solveamurder.org 和 detroit.soleamurder.com 之间发送电子邮件,但如果你在完全无关的域名(如 solveamurden.org 和 ratoperatedvehicle.com )之间进行测试,你的大脑会吸收更好的模式。现在域名很便宜。获取两个——或者设置私有DNS,并在 example.org 和 private.test 之间进行测试。
您必须了解基本的DNS,并控制测试主机的正向和反向DNS。支持域的电子邮件需要在该域中创建和维护多个DNS条目。同样,反向DNS必须与主机名和正向DNS匹配。如果您的主机将其名称宣传为 mail.solveamuder.org ,但反向DNS将您的主机标识为 customer87.chicago.bighosting.com ,则您的电子邮件将无处可去。当客户端查找您的IP地址的主机名时,他们将检查转发DNS是否指向该IP。与该地址关联的任何额外主机名都将被忽略。是的,一个主机名可以解析为多个IP地址,但这些IP地址都必须具有与邮件服务器主机名匹配的反向DNS。
警惕为DNS管理提供有限web界面的托管提供商。其中许多接口限制了您可以创建的记录类型,或者不允许SPF或DKIM记录有足够的字符。在尝试部署电子邮件之前,请验证没有其他人在将DKIM或SPF记录输入您的提供商系统时遇到问题。
遵循最佳实践,并拥有独立的权威和递归名称服务器。递归名称服务器应验证DNSSEC。
为了进行测试,您需要一个来自提供商的电子邮件帐户,该帐户验证并提供SPF、DKIM和DMARC。谷歌或微软的帐户可以使用,许多其他提供商的帐户也是如此。
熟悉IP网络的CIDR(斜线)表示法。软件越来越期望看到 192.0.2.128/25
,而不是192.0.2.128 255.255.255.128
。
熟悉基本的公钥密码学也是必不可少的。你不需要在算盘上费力地进行Diffie-Hellman计算,但你必须知道公钥和私钥之间的区别。您必须定期保护私钥。同样,您需要对TLS有基本的了解。许多程序仍然使用缩写SSL,但您应该知道,SSL的最后一个版本在2015年被弃用。四分之一个世纪以来,传输层安全性(TLS)一直是标准。用户必须进行身份验证才能检查他们的电子邮件,在没有TLS的情况下通过互联网发送用户名和密码是不明智的。如果你仍然混淆SSL和TLS,不要觉得太糟糕。我们将使用的大部分软件都是这样做的。
您必须能够轻松管理TLS和相关的X.509证书。电子邮件并不总是需要TLS,但证书价格已经跌至零,因此TLS是相当标准的。本书使用ACME维护的Let’s Encrypt证书,并假设您也可以这样做。如果您的组织坚持购买昂贵的证书并手工维护,欢迎您这样做。
我们还将使用外部服务来支持电子邮件故障排除。如果你编写自定义代码,这些都是可以替换的服务,这是一种与运行邮件服务器不重叠的技能。我确信,在这本书逃脱后,有人会立即发布一个软件包,让我们轻松处理所述调试。
如果你缺乏这些技能,请允许我推荐我的书 Absolute FreeBSD, 3rd Edition(No Starch Press,2018)、Networking for System Administrators(Tilted Windmill Press,2015)和 TLS Mastery(Tilt Windmill出版社,2021)。我还推荐Cricket Liu的 DNS and BIND (O'Reilly,2006)4,一旦你完成了,我自己的 DNSSEC Mastery, 2nd Edition (2022)。
从现在开始,我将讨论 network port 、 X.509 certificate 和 floccinaucinihilipilification 等术语,并希望您知道它们的含义或如何查找它们。你运行电子邮件服务器时不能患有长单词恐惧症。
电子邮件不是服务器,它是一个由多个组件组成的系统。最明显的是“邮件服务器”。邮件服务器是一个接受用户电子邮件并与其他服务器交换邮件的主机。系统的大部分都使用简单邮件传输协议(Simple Mail Transport Protocol —— SMTP)。本书使用 Postfix (https://www.postfix.org)作为参考平台。
您的用户可能希望有一个从桌面查看电子邮件的选项。这可能会使用像Thunderbird这样的邮件客户端,使用像IMAP这样的协议。我们将为客户端和IMAP使用 Dovecot (https://www.dovecot.org/)。其他用户更喜欢web界面,所以我们将讨论 Roundcube (https://roundcube.net/)。我们将使用 mutt 进行调试(https://www.mutt.org)。
一旦你的核心系统正常工作,并且可以在本地发送电子邮件,你就需要基本的反垃圾邮件保护。我们将讨论灰名单(greylisting,)、非名单(nolisting)、DNSBLs和 rspamd (https://rspamd.com/)。
有了这些,你就可以冒险通过DNS向全世界介绍你的邮件系统。这将我们引导到MX记录、发件人策略框架(Sender Policy Framework —— SPF)和域密钥标识邮件(DomainKeys Identified Mail —— DKIM)等主题。有了这些基础知识,你可以考虑DMARC、MTA-STS和TLS-RPT等缩写词。本书的主要目的是向您介绍这些工具和协议,以便您可以提高电子邮件的送达率。
我们将重点介绍现代电子邮件。虽然一些网络仍然依赖于UUCP、bangpaths和POP3,但这些网络非常罕见。不要在现代互联网上部署它们。一些用户仍然喜欢POP3,但即使在20世纪90年代,我们也知道它需要更换,2004年,当高级IMAP接管时,POP4的开发停止了,所以无论他们需要多少e,都不允许任何人说服你部署它。我们也将忽略这些协议的专有替代品。许多邮件服务提供商提供了一个方便的API来代替SMTP或IMAP。如果你愿意接受完全的供应商锁定,这些都没有错。
今天,我们使用 allow list 一词来描述被允许跳过一层保护的实体,使用 block list 来描述被断然拒绝的实体。许多旧的程序,以及一些由非英语母语者开发的软件,仍然使用旧的 black list 和 white list 。本书使用现代语言,但配置这些程序时除外。请鼓励你最喜欢的开发人员将他们的语言更新到21世纪。
未经请求的广告是电子邮件的祸害。虽然你会听到它被称为未经请求的商业电子邮件(unsolicited commercial email —— UCE)或 junk ,但最常见的技术术语是“spam”,因为互联网是按照Monty Python(巨蟒组)的配乐构建的。它如此普遍,以至于合法邮件被称为“火腿”(ham)。
大约三十年来,人们认为电子邮件是一个奇迹。你可以在办公桌前写一条信息,几小时甚至几分钟后,它就会到达地球的另一边。早期的互联网由计算机科学大学生、精选的计算机相关公司和美国军方组成。SMTP完全没有更广泛的商业利益,是为开放网络设计的。系统管理员运行 open relays (开放的中继),允许任何人通过它们发送邮件,以方便其他遭遇中断的系统管理员。每个人都在一起努力维持奇迹,几乎不担心虐待。
1978年,数字设备公司(Digital Equipment Corporation —— DEC)的销售员Gary Thuerk向数百名他不认识的人发送了一封电子邮件,邀请他们参加新的DEC分组交换系统的演示。从来没有人尝试过通过电子邮件进行商业广告。反应绝大多数是负面的,但很有道理。更广泛的社区一致认为商业广告是不可接受的。消息传出五天后,美国空军的ARPAnet管理处处长Raymond Czahor少校打电话给Thuerk的老板,告诉他们不要再这样做,否则会断开连接。
这封第一封广告电子邮件还售出了1200万美元的电脑。
Thuerk的电子邮件确立了“不在电子邮件中做广告”的先例。它还开创了“随机电子邮件营销利润丰厚”的先例。展望未来,该网络依靠社会契约和激烈的空军少校来防止垃圾邮件。电子邮件协议保持不变。
1990年,UUnet开始构建自己的商业IP网络。UUnet的AlterNet可以与互联网通信,但不受政府规定的约束。虽然经营企业的个人可能很好,但大多数公司对软弱的社会契约漠不关心,也不对军队负责。
1994年4月,第一个垃圾邮件污染了Usenet,随后垃圾邮件紧随其后。它就像幼儿园操场上意外发生的有毒物质泄漏。邮件管理员惊慌失措,实施了短期修复,并很快发现针对可送达性优化的协议无法停止投递。系统管理员阻止了垃圾邮件域,因此邮件发送者伪造了他们的原始域。阻止垃圾邮件发送者的网络导致垃圾邮件发送者通过善意的第三方转发他们的垃圾邮件,或黑客入侵无关但未打补丁的邮件服务器。尽管花费了时间和金钱滥用协议,垃圾邮件发送者还是从中获利。如今,病毒和蠕虫入侵机器,将其转化为垃圾邮件机器人,以最快的速度喷出垃圾邮件。
未经检查的垃圾邮件使电子邮件无用。在过去的三十年里,SMTP的几乎每一次变化都是为了消除垃圾邮件,同时保持广泛的互操作性。
选择电子邮件营销是可以的。如果你想让你最喜欢的创作者告诉你他们的下一件大事何时会发生,那太好了!你应该收到这些电子邮件,直到你选择退出。我为此运行了一个邮件列表。不过,我在底特律生活和工作,那个一直试图向我推销南非税法课程的家伙可以从一个短气闸里走很长的路。
有些邮件绝对是垃圾邮件:有些绝对是合法的:但有些是模糊的。许多垃圾邮件检测系统通过建立垃圾邮件评分 (score) 来工作,该评分表示一封电子邮件是垃圾邮件的可能性。分数越高越好。我们将在第14章中考虑这一点,但现在只需知道软件可以增加或减少邮件的垃圾邮件分数。
垃圾邮件不断演变,你收到的垃圾邮件将与你的邻居收到的不同。运行自己的邮件系统的一个优点是,你可以训练你的垃圾邮件识别系统来识别你收到的垃圾邮件的准确味道。缺点是训练你的垃圾邮件系统需要收集你收到的垃圾邮件的精确特征。几天后,您可能会删除未读的垃圾邮件。别这样。整理你的个人垃圾。根据rspamd的文档,训练垃圾邮件解析器至少需要200条垃圾邮件。
如果你想知道为什么与电子邮件相关的软件会这样工作,或者为什么我们有所有这些附加协议,答案几乎肯定是“spam”。
虽然垃圾邮件很糟糕,但对垃圾邮件的一些回应更糟糕。不要对垃圾邮件生成自动响应;这种反向散射大多无法送达,给其他邮件运营商带来了更多工作。为其他邮件运营商创建工作是让您的主机进入阻止列表的好方法。
今天,明显是垃圾邮件或火腿(spam or ham)的消息不是问题所在。我们知道阻止来自冰星球王子试图将数百万帝国信用转移到地球之外的电子邮件。我们知道医疗预约确认信息必须发送给我们的用户。不过,人们对他们想要得到什么有自己的看法。许多消息陷入了一个空白,一些用户声称它们是合法的,但另一些用户坚持认为它们是垃圾邮件。无论你的系统如何标记它们,都会有人抱怨。您添加到系统中的每个用户都会加剧这个问题。
“未经请求但合法”(unsolicited but legitimate)的邮件和垃圾邮件是有区别的,但许多人认为所有不需要的电子邮件都应该放在垃圾邮件文件夹中。大型邮件系统的用户界面鼓励这样做——是的,有一个阻止按钮和一个取消订阅链接,但突出的垃圾邮件按钮意味着大多数人不会再看了。其中一些系统甚至会引导您取消订阅,然后将违规邮件作为垃圾邮件归档。如果有足够多的Gmail或Microsoft用户将您的合法邮件标记为“垃圾邮件”,他们的算法会决定您的域发送的低质量邮件应始终直接进入垃圾邮件桶。一些注册了邮件列表但后来想取消订阅的人通过将邮件路由到垃圾邮件文件夹来实现。博客作者冷邮寄可能的来源经常受到这种影响,合法的收债人也是如此。
我发现自己也想做同样的事情。我需要Stripe和PayPal发给我的商业通知,但他们利用我们的商业关系合法地将贷款广告塞进我的收件箱。在向PayPal申请商业贷款之前,我会去含铅油漆厂有毒废物堆旁的小巷,在拉里·断腿者的博彩店和紧急金融服务公司申请。尽管我非常讨厌这些公告,但如果我开始教我的垃圾邮件过滤器,让它知道来自PayPal和Stripe的邮件是垃圾邮件,它可能会使关键电子邮件不匹配。我必须编写更具选择性的过滤规则。
其他人会认为这些优惠不是垃圾邮件。
您的用户希望他们的电子邮件能够到达预期的收件人。可交付性是指您的系统中的邮件如何满足这一期望。在垃圾邮件出现之前,可送达性并不是一个大问题。在20世纪70年代和80年代初,你可能不得不通过超载的电话线将电子邮件通过加州大学伯克利分校路由到麻省理工学院、伦敦帝国理工学院和TAMK,但这是一个众所周知的问题。1983年至1993年,在简单邮件传输协议标准化之后,垃圾邮件出现之前,是电子邮件连接的黄金时代。
如果来自服务器的邮件类似于垃圾邮件,目标服务器将丢弃它。您的电子邮件无法投递。由于所有邮件系统都有以不同方式配置的不同垃圾邮件识别系统,因此可送达性因目的地而异。本书的目标是通过配置允许收件人验证邮件真实性的协议,帮助您使电子邮件尽可能可交付。
在某些方面,当您运行小型邮件服务器时,高送达率更容易。谷歌对向他们发送邮件有要求,但随着你发送的邮件数量的增加,这些要求变得更加严格。2024年,他们对每天向他们发送5000多封电子邮件的主机提出了额外要求。这是我的警告,要开始考虑这些要求,因为在未来几年,他们将把这些要求推向越来越小的服务器。人们将在这些年里开发合规工具。您可以为开发这些解决方案做出贡献,或者在最坏的情况下,从中受益。运行一个支持数百或数千用户的中型服务器将更快地突破这些限制,可用的工具也会更少。
交付能力面临的最大风险是用户。您可以配置DKIM、SPF和DMARC。您只能向希望收到您消息的联系人发送严格的非商业消息。您可以在反垃圾邮件部署中实现技术上的完美,而不会克服人为问题。
垃圾邮件文件夹与其他文件夹不同:它是一个算法坑(algorithmic pit)。一旦信息被扔到坑里,爬出来就很难了。如果有足够多的收件人把你的邮件扔进垃圾坑,他们会把你的域名也拖进去。防止人们把你的消息扔进垃圾坑的最好方法是发送人们想阅读的邮件。如果有足够多的人把你的邮件从垃圾邮件坑里拖出来,算法可以颠倒过来——但这比不掉进坑里要困难得多。
算法还会观察你的行为。如果一个主机通常在数月又数月内发出大致一致的电子邮件,但突然发出大量电子邮件,每个人都会产生怀疑。出于这个原因,我已经把新书发布清单外包了。如果我每天只发送几十封电子邮件的安静服务器突然喷出数千封电子邮件,大型提供商的算法将宣布这些邮件可疑。如果这些消息来自已知托管合法邮件列表的服务器,则可交付性将更好。
只发送人们想要接收的邮件是避免垃圾邮件坑的关键组成部分。
即使每个防御和真实性协议都配置正确,您仍然可以通过发送垃圾邮件来破坏您的可送达性。更糟糕的是,其他垃圾邮件发送者可能会在你开始之前就破坏你的送达能力。
“我需要完全控制公共互联网上的测试机器?我会去我最喜欢的提供商那里启动一个虚拟机!”
别那么快决定。
在电子邮件生态系统中,IP地址具有声誉。任何拥有电子邮件地址和信用卡的人都可以在短时间内创建虚拟机。垃圾邮件发送者设置一个廉价的虚拟机并向每个人的收件箱中吐垃圾是没有问题的,顺便说一句,他们租用的IP地址的声誉也受到了损害。提供完全配置的服务器的轻松自动化的托管公司尤其容易受到攻击。虽然散布垃圾邮件违反了每家托管公司的服务条款,但垃圾邮件发送者并不在乎。
邮件管理员用来阻止垃圾邮件的工具之一是过滤已知垃圾邮件发送者的网络地址。托管提供商的IP地址几乎肯定以前就被使用过。如果垃圾邮件发送者之前弄脏了你的地址,它可能在一个或多个已知坏地址的阻止列表中(第8章)。几乎每个邮件系统都使用至少一个阻止列表来阻止攻击。在您开始之前,来自脏IP地址的电子邮件通常无法送达。
通过自动化,垃圾邮件发送者可以在提供商的网络运营中心关闭之前发送数百万封电子邮件。该提供商将在洪水开始后的几分钟内收到数十或数百起投诉,并将迅速关闭垃圾邮件发送者。许多提供商将客户的IP地址发送给阻止列表维护者,将客户引导到他们的邮件交换器或商业邮件服务器。您无法在这些提供商上成功托管邮件服务器。亚马逊、微软和甲骨文等大型主机提供商经常对邮件服务器施加限制。
其他提供商有服务条款,声明不允许垃圾邮件,但不强制执行。阻止列表维护者可以快速识别分配给这些提供商的整个IP地址范围,并将其添加到他们的列表中。无论你多么想成为一个好公民,这些提供商上的任何电子邮件服务器的送达能力都很差。
邮件服务器的最佳托管提供商默认情况下会阻止电子邮件的网络端口,并且只会根据请求打开这些端口。他们可能会要求您拥有一个帐户30天,然后才能打开端口。垃圾邮件发送者没有耐心。你必须有。
在为您的电子邮件系统选择托管提供商之前,请先询问一下其他人是否在该提供商上运行电子邮件服务器,以及该电子邮件是否可以广泛交付。如果你没有运行邮件服务器的联系人,请继续尝试使用你最喜欢的提供商,但要准备好搬家。我不会提供推荐,因为每次我推荐一家公司,它们都会在发布后立即崩溃、爆炸或被收购。
也许您的组织拥有ISP颁发的IP地址,或者拥有自己的地址。以前的主人可能弄脏了这些地址。此外,一些互联网服务提供商在其网络边界阻止发送电子邮件。开始前检查这些。
如果你的地址从未被用于电子邮件,那么它们就没有声誉。“没有声誉”(No reputation)并不意味着他们值得信任,只是他们不值得信任。你可以建立自己的声誉。这本书将帮助你把它做好。无论如何,一些网站都不会接受来自30天以内域名的邮件。
如果您无法控制测试系统的IP地址,您仍然可以自学,但请记住,您的测试范围有限。根据众多反垃圾邮件阻止列表测试工具之一检查您的IPv4和IPv6地址。mxtoolbox.com
等商业网站提供免费的黑名单测试人员,作为说服您外包电子邮件的一部分。第9章讨论了如何将您的地址从阻止列表中删除。
如果你习惯了基于网络的电子邮件,你可能已经了解了邮件的工作原理。当你发送电子邮件时,你的网络浏览器会与邮件服务器对话。该邮件服务器与收件人的邮件服务器进行通信。当人们想要阅读电子邮件时,他们会打开浏览器查看。
如果你使用桌面电子邮件客户端,你知道它有点复杂。您在客户端编写一条消息并将其发送到邮件服务器。您的邮件服务器将邮件发送到收件人的服务器。当收件人打开他们的电子邮件客户端时,客户端会下载电子邮件。
那是一种肤浅的观点。实际的计算机科学家设计了电子邮件,电子邮件系统具有RFC 5598中记录的实际架构。你发送的每一封电子邮件都会通过系统。这是一个稍微不那么肤浅的观点。任何给定的系统都可能有特殊的配置来覆盖其中的任何部分。
xxxxxxxxxx
Sender's Mail User Agent ➡ Sender's Message Store
(MUA) (MS)
⬇
Mail Submission Agent
(MSA)
⬇
Sender's Mail Transfer Agent
(MTA)
⬇
Recipient's Mail Transfer Agent
(MTA)
⬇
Recipient's Local Delivery Agent
(MDA)
⬇
Recipient's Message Store
(MS)
⬇
Recipient's Mail User Agent
(MUA)
Figure 1-1: message flow through email
任何电子邮件用户界面都称为 邮件用户代理 (Mail User Agent —— MUA)。MUA通常被称为邮件客户端(mail client)。它可能是Thunderbird、网页或办公套件的一部分。你甚至可以使用像 netcat
这样的程序手动向服务器发送邮件。(您也可以在邮件服务器本身上运行命令行客户端,如 mutt
。它们不公平地利用自己的位置跳过下一步,所以让我们暂时忽略它们。)当您发送电子邮件时,MUA会将其传输到邮件提交代理。这通常是通过SMTP完成的,但微软使用 消息应用程序编程接口(Messaging Application Programming Interface —— MAPI),其他供应商可能有自己的特殊工具。通常,但并非总是如此,客户端会将消息复制到消息存储区。
消息存储(Message Store —— MS)是用户电子邮件的服务器副本。大多数消息存储都会保留传入和传出消息的副本,直到用户删除它们。大多数邮件客户端使用 Internet邮件访问协议(Internet Message Access Protocol —— IMAP)或较旧的 邮局协议(Post Office Protocol —— POP3)将其邮件与服务器同步。Microsoft改用MAPI和ActiveSync。在Unix系统上,消息存储区通常位于用户的主目录中,类似于 /home/mwl/Mail 或 /home/mvl/Maildir/ 。
邮件提交代理(Mail Submission Agent —— MSA)在服务器上运行。它接受来自邮件客户端的邮件并将其发送到邮件传输代理。MSA与SMTP通信。
邮件传输代理(Mail Transfer Agent —— MTA)接收来自邮件提交代理和其他邮件传输代理的电子邮件。您可能会听到MTA称为邮件交换器 ( mail exchanger )或 MX 。如果MTA可以立即传递邮件,例如对于本地帐户,它就会这样做。否则,MTA会将新邮件存储在 邮件假脱机 (mail spool) 或 邮件队列 ( mail queue )中。MTA通过队列工作,试图识别每封邮件的收件人。
如果邮件发往外部网络,MTA会检查DNS以识别远程网络的MTA并与之联系。这两台服务器通过SMTP有一个对话框,归结为“嗨,我有一封你的用户的电子邮件。”“是的,那是我的用户,请发邮件。”你可能在这里插入了电子邮件服务提供商、反垃圾邮件或防病毒供应商或其他第三方。
如果MTA确定邮件是发往本地用户的,它会将邮件转发给 本地传递代理 (Local Delivery Agent —— LDA)。标准称之为 消息传递代理(Message Delivery Agent —— MDA),但LDA已成为公认的术语。LDA接受消息并将其存储在用户的邮箱中。LDA还处理服务器端电子邮件转发、自动外出邮件和将电子邮件过滤到文件夹中等任务。
当收件人的MUA检查新电子邮件并下载时,它通常会将邮件移动到收件人的邮件存储中。收件人的MUA可能会进一步对消息进行排序、删除某些消息或用户配置的任何其他类型的处理。
最后,用户的邮件客户端下载邮件的副本。电子邮件的旅程已经完成。
在所有这些组件中,哪个是“邮件服务器”。每个组件可能位于单独的机器上,或者它们中的任何一个都可以与它们的对等组件组合在一起。一个组织可能有不同的MTA来接收和发送电子邮件。这完全取决于系统负载、用户数量以及每个组织更喜欢哪种麻烦。用户可以将消息存储或MSA称为邮件服务器。外部组织可能会认为从外部世界接收电子邮件的MTA是您的邮件服务器,除非他们在接收您的电子邮件时遇到问题,并意识到您对出站邮件有完全不同的MTA。即使你只有一台服务器来控制所有这些角色,也不要使用“邮件服务器”这个词。
在垃圾邮件之前,电子邮件客户端仅在连接到邮件存储时进行身份验证。客户端未通过身份验证向邮件提交代理发送邮件。邮件提交代理可以将电子邮件直接转储到MTA。MTA不验证彼此的身份,经常向任何看起来不太合适的服务器发送邮件。一个没有特权的用户可以轻而易举地伪造来自联邦税务机构的电子邮件。每个人都知道电子邮件是公开的,有一个精心放置的数据包嗅探器的人可以捕获消息。
垃圾邮件的出现让每个人都说,“也许我们应该锁定这些其他连接?”
服务器到服务器协议仍然称为简单邮件传输协议。人们嘲笑SMTP并不简单,但即使有了所有现代扩展,它也比它所取代的更简单。SMTP使用不同的TCP/IP端口,具体取决于您正在与系统的哪个部分通信。协议命令仍然是纯文本,可以由具有netcat和知识的系统管理员复制。像IMAP这样的客户端协议也是如此。即使将连接包裹在TLS中,也只能防止传输过程中的窃听。
与计算领域的一切一样,这些保护措施并不完美。TLS可以通过流氓证书颁发机构、配置错误和老式的私钥盗窃来破解。聪明的人可以想出违反底层协议的棘手方法。你必须跟上日常系统维护。面向公众的电子邮件服务器对垃圾邮件发送者来说很有价值。入侵者会探测你的安全。如果你留下任何空白,他们就会劫持你的主机并开始喷出垃圾邮件。
另一方面,Unix套接字比网络套接字更快、更高效、更安全,即使是只在本地主机上监听的网络套接字。每当守护进程只接受来自本地主机的连接时,我们都会将其配置为只提供Unix套接字而不是网络端口。如果您的邮件系统增长到需要为Postfix、Dovecot和rspamd提供单独的强大主机的程度,那么将软件配置为在网络上工作将是您最小的问题。
如今,我们拥有集群、虚拟IP、负载均衡器和地理分布,每月只需几美元,这可能无法保证可用性,但至少提供了更高级别的中断。电子邮件是在这之前开发的。当时,廉价的服务器要花费数万美元。只有最大的组织才能负担得起备份邮件服务器,升级可能需要数小时精心计划的劳动力。系统管理员无法在公司网站上发布通知,因为网站不存在。站点之间的连接也很脆弱。你今天的家可能有千兆以太网,但在当时,一所拥有数万名学生的连接良好的大学可能有每秒1兆比特的巨大连接,每三天就有一次失败。消息可能通过过载的电话线发送,并通过多个系统传递,每个系统都会发生同样的故障。
如果另一个组织的人太不体贴,以至于在收件人的系统无法访问时发送了一封电子邮件,那么邮件将无法送达。如果电子邮件系统立即通知发件人无法发送邮件,发件人可能会致电帮助台,了解问题所在以及帮助台将如何处理。当然,答案是“我不知道”和“什么都不知道”。
电子邮件被设计为异步和可查询的,而不是为帮助台做更多的工作。如果一封电子邮件不能立即传递到其旅程的下一阶段,它就会排在出站邮件的队列中。每隔一段时间,电子邮件系统就会再次尝试传递这些信息。当收件人系统可访问时,消息将被传递。
如今,电子邮件通常在短时间内送达,但服务器仍然有一个邮件队列来应对暂时的连接问题。在停机期间,或者如果系统无法处理大量电子邮件,队列可能会膨胀。我曾为多家公司工作过,这些公司每天晚上五点关闭办公室,但邮件服务器每天都会排到午夜或更晚的队伍。管理层可能会坚持电子邮件总是立即出现,但事实并非如此。邮件可以在队列中停留长达五天,尽管许多MTA在一天后退出。
“紧急电子邮件”与“巨型虾”、“冒犯和平”或“有香味的除臭剂”一样矛盾。它可能存在于个人层面,但不存在于协议层面。你手机的短信也可能需要几天的时间才能送达,而且不太确定能否送达。如果你想同步实时通信,打个语音电话。
您可能已经看到了各种关于TLS配置的建议:禁用弱密码、禁用TLS 1.0、1.1和所有版本的SSL等。这些建议对网站很有用,但与公共互联网上的服务器到服务器SMTP无关。
原始SMTP没有使用任何加密。然而,一旦互联网被移交给商业利益,执法部门就对电子邮件产生了兴趣。1997年,联邦调查局的Carnivore大规模数据包捕获系统引发了人们对SMTP加密的兴趣。这导致了STARTTLS的创建,它允许未加密的连接转换为TLS,而无需创建新的TCP连接或使用不同的TCP端口。当客户端连接到SMTP服务器时,服务器会声明它支持哪些功能。如果STARTTLS在其中,客户端可以说“在我们做任何事情之前,让我们切换到TLS”,或者它可以在没有TLS的情况下继续进行。这通常被称为机会性TLS。STARTTLS于1999年成为标准。不更改SMTP的端口号允许在互联网上逐步推出TLS。
TLS的X.509证书仍然很昂贵。虽然自签名证书不能提供防止中间人攻击的保护,但它们足以避免大规模的被动数据包捕获。许多组织拥有数十台邮件服务器,对花费数百美元购买用户永远看不到的证书不感兴趣。虽然自签名证书会让网络浏览器发出刺耳的警告,但SMTP没有人为因素,如果被告知这样做,服务器会愉快地忽略警告。我们及时告诉他们这样做。虽然证书价格在几十年来暴跌,但许多邮件运营商仍然使用自签名证书。
如今,很少有邮件系统在服务器到服务器通信期间验证证书的真实性。您可以告诉服务器在所有传入连接上都需要TLS,但SMTP协议不允许您强制外部MTA验证您的证书。你可以告诉你的服务器在外部服务器上验证证书,但你会发现很多网站仍然使用自签名证书。
IMAP和提交(第5章)等面向客户端的服务需要全局有效的X.509证书,因为用户可以看到它们。您也可以将该证书用于服务器到服务器SMTP。其中一些服务提供专用的TLS端口,其他服务仅支持STARTTLS。这本书更喜欢专用端口,因为它们可以抵抗STARTTLS易受攻击的某些类别。
DNS-based Authentication of Named Entities (DANE)
对常见X.509证书的一大反对意见是证书颁发机构(Certificate Authorities —— CA)的存在。并不是说它们很贵,或者很难使用:它们确实存在。在适当的会议上提出这一点是开始斗争的好方法。这个论点超出了本书的范围,但作为自签名证书的稳定消费者,SMTP欢迎另一种选择。
基于DNS的命名实体身份验证(DNS-based Authentication of Named Entities —— DANE)是组织通过TLSA DNS记录发布X.509证书指纹的一种方式,如RFC 7671中所述。它允许域所有者对自签名证书和CA证书进行自我身份验证。DANE可以说比标准的基于CA的TLS更强,并强制执行传输加密和主机身份验证。
DANE也很有争议。关于它的争论几乎与关于证书颁发机构的争论相反。它需要DNSSEC,这会启动另一个并行但不同的参数链。这些战斗不会由我自己或任何可能读过这本书的人来解决。不同的人对不同的风险和他们独特的痛点有不同的优先级,仅此而已。
电子邮件是DANE的最大用户。如果有人费心为他们的MTA发布DANE信息,我们应该尊重他们。
你能为自己的电子邮件系统实现DANE吗?当然!然而,使用DNSSEC签署您的区域是先决条件,因此我在我的书 DNSSEC Mastery(倾斜风车出版社,2022)中对此进行了讨论。
MTA-STS(第15章)是一个新的标准,用于要求人们实际验证您的证书。尽管我在哲学上更喜欢DANE,但电子邮件帝国更喜欢MTA-STS,我希望它最终成为一种要求。
忽略证书有效性是机会主义( opportunistic )TLS与客户端可见SMTP不同的一个例子。您可能会被提示每周更新您的web浏览器,但MTA升级之间可能会间隔数月或数年。
本书的许多读者确保他们的系统具有最新的加密库和安全修复程序,并将这种做法一直延续到修补 cat
。世界其他地方不会这样做。Postfix可以支持底层OpenSSL加密库提供的每个版本的TLS,但默认情况下提供TLS 1.0及更高版本。2021年3月,TLS 1.0和1.1版本在协议标准中正式弃用。虽然TLS 1.2早在2008年就出现了,但某些高流量网站仍然使用弃用的TLS版本。禁用它们会切断你的连接。
同样,你会发现像Mozilla的SSL配置生成器这样的推荐网站,它们禁用低质量的密码和算法。他们的建议适用于面向客户端的系统,但如果将其应用于SMTP,您将无法与某些站点通信。
机会主义TLS协商双方支持的最佳加密。是的,TLS 1.0和1.1被认为是不安全的。但是,如果禁用这些协议,连接将退回到使用纯文本,这甚至更不安全。您可以将系统设置为需要TLS,但随后您将失去与不支持TLS的站点的连接。请记住,我们谈论的是一种不需要验证证书真实性的协议。电子邮件中的TLS标准很低,无论我们多么希望如此。
那么,我们该怎么办?
一组邮件运营商优先考虑广泛的兼容性。它们仍然允许弃用的TLS和弱密码,因为它们比纯文本更好。Postfix附带了这种配置,否则人们会抱怨。另一组优先考虑传输完整性。他们鼓励DANE(或最近的MTA-STS),并拒绝纯文本和除1.2和1.3之外的任何版本的TLS。第三组人不断提醒大家,电子邮件是不安全的,从来都不安全,如果你想要隐私,你应该发送实体明信片。你必须了解自己属于哪个群体,并认识到其他群体有不同的要求。
然而,SMTP本身不足以与另一个网络成功交换邮件。电子邮件添加了有助于保护、限制和验证电子邮件的协议。本书的大部分内容都讨论了这些辅助协议。我们将在这里简要介绍它们以指导您,然后深入研究每一个。
域名服务将主机名和IP地址相互映射。您必须对DNS有可靠的控制才能成功运行电子邮件,并且您必须已经了解区域和SOA以及AAAA和PTR等常见记录类型的基础知识。域在DNS中声明其邮件信息。大多数电子邮件的辅助协议在DNS中提供其信息。电子邮件是建立在这样一个假设之上的,即控制DNS的任何实体都控制着域。
理想情况下,每个MTA都应该在本地主机上安装其递归DNS服务器。不太理想的是,他们可以使用您组织的本地递归DNS服务器。使用任何大型DNS提供商,如谷歌或Cloudflare,都会破坏基于DNS的阻止列表,这是最重要的反垃圾邮件保护之一。
与电子邮件一样,DNS是在互联网基本上是一个专用网络时创建的。与电子邮件类似,安全性也是在之后集成的。DNS安全扩展(DNSSEC)是当今维护DNS信息完整性和真实性的标准,每年都得到更广泛的部署。您的递归服务器应验证DNSSEC。
原始电子邮件不仅仅是纯文本,而且仅限于ASCII。人们想要更多。第一个将冒号粘在左括号上并称之为笑脸的人被誉为令人讨厌的英雄(annoying hero)。最终,互联网获得了足够的计算能力和带宽,可以在更复杂的邮件格式上花一点钱,允许HTML格式的电子邮件和附加病毒,或者更糟糕的是,价格报价。
多用途互联网邮件扩展 (Multipurpose Internet Mail Extensions —— MIME),是用ASCII编码非ASCII字符的标准。它将消息划分为明确标记的块,以便收件人可以识别电子邮件的纯文本版本、HTML版本和任何附件。它使用MIME类型 (MIME type) 来标识每个片段的格式。1996年,RFC 2046试图将MIME类型重命名为 媒体类型 (media types) ,但失败了。“媒体类型”更为准确,但与“服务器”一样,它具有歧义,您会发现它与“MIME类型”可以互换使用。
MIME问题是用户可见的,因此开发人员一直面临着正确使用MIME编码的压力。几十年来,我不需要修复MIME问题。但是,您应该知道MIME是什么。
请注意,您发送的任何电子邮件都应包含纯文本版本。有视力问题的人使用的屏幕阅读器依赖于纯文本版本。
Sender Policy Framework —— SPF
MX记录告诉世界哪些主机接收域的电子邮件,而发件人策略框架(SPF)告诉世界哪些主机被授权为域发送邮件。SPF声明出站MTA的主机名和网络,而不是客户端或邮件提交代理。现代SPF是通过DNS TXT记录分发的。
SPF语法允许您声明谁可以从您的域发送邮件。您可以制定规则,如“仅这些地址”、“此其他域的任何MTA”,甚至“此域不发送邮件”。例如,我的域mwl.io的SPF记录包含一些IP地址和主机名。
当MTA收到声称有来自特定域的邮件的连接时,MTA应该根据传入计算机的IP地址检查SPF。如果它们不匹配,则连接可疑,可能应该被拒绝。如果有人从mwl.io向Gmail用户发送电子邮件,Gmail的服务器会检查mwl.io的SPF记录。如果伪造者的IP地址不在我的域的SPF记录中,Gmail会断开连接,并记录伪造者IP不可信。
SPF被认为是最低级别的真实性,并且易于实施。新域名应立即实施SPF。在添加新的出站MTA之前,它不需要任何维护。
SPF声明电子邮件的来源,而 DomainKeys Identified Mail(DKIM)则对电子邮件的发件人进行身份验证。DKIM信息通过 _domainkey
条目发布在DNS TXT记录中。
DKIM比SPF更难实现,但比让垃圾邮件发送者欺骗你的域名更不可怕。最佳实践表明,您应该定期旋转密钥,因此确实需要更多的维护。
SPF和DKIM改进了邮件身份验证。基于域的消息认证、报告和一致性(Domain-based Message Authentication, Reporting, and Conformance —— DMARC)是下一个演进。它使用SPF来识别合法的邮件来源。它使用DKIM对电子邮件进行身份验证。其强大的策略语言使组织能够定义收件人如何识别合法邮件并报告这两种协议中的失败。
DMARC记录通过TXT记录分发,与 _dmarc
记录绑定。
如果您的组织使用商标进行营销,您可能会对消息识别的品牌指标(Brand Indicators for Message Identification —— BIMI)感兴趣。如果最终用户有一个支持BIMI的电子邮件客户端,它将检查BIMI DNS记录,并使用它们在电子邮件旁边显示一个数字签名的公司徽标。BIMI是基于DMARC构建的,因此它经过了加密验证。
部署BIMI从“注册昂贵的商标”、“购买人为昂贵的证书”和“聘请昂贵的商标律师就国际商标法互动为您提供建议”开始,因此这两段是本书对该主题的唯一报道。
最初,电子邮件是以未加密的方式传输的。任何拥有正确放置的数据包嗅探器的人都可以窃听所有电子邮件交易。我们最终为用户身份验证添加了加密,保护了用户名和密码,但在MTA之间使用TLS是可选的。大多数部署TLS的邮件运营商认为像Carnivore这样的大规模捕获程序是他们的主要风险,因此自签名证书变得可以接受,即使它们不能防止其他攻击。
邮件传输代理严格传输安全(Mail Transfer Agent Strict Transport Security —— MTA-STS)声明您的MTA仅接受基于TLS的SMTP。您必须在网站上提供政策声明。MTA-TS通过DNS记录使用 _mta_sts
标识符激活。
每个系统管理员都看到过电子邮件反弹消息,声明收件人没有帐户,或者服务器配置错误,或者接收MTA正在计划外休假。这些邮件通过SMTP在MTA之间传输。
如果您的MTA使用MTA-STS声明它只接受通过TLS的连接,并且它有TLS问题,那么这些SMTP邮件将无法通过。您的MTA将继续愉快地拒绝连接,让您对问题一无所知。TLS reporting (TLS-RPT) 是MTA交换TLS问题报告的方式。如果部署MTA-STS,还需要TLS报告。
与电子邮件中的其他内容一样,TLS-RPT信息是通过DNS分发的。
任何收到大量电子邮件的人都绝对需要过滤。虽然客户端可以过滤邮件,但服务器端的过滤效率要高得多,有助于保持客户端之间的一致性。Sieve是用于编写邮件过滤器的行业标准平台无关语言。ManageSieve
协议允许客户端配置其过滤规则。
几十年来,X.509证书的定价一直不合理,促使人们开发不依赖SSL或后来的TLS的安全交换数据的替代方案。电子邮件系统采用的替代方案是 简单身份验证和安全层 (Simple Authentication and Security Layer ——SASL )。SASL允许客户端在公共互联网上安全地识别自己。证书不再那么昂贵,但协议变化缓慢。虽然某些协议可以很容易地坚持将所有身份验证请求包装在TLS中,但其他协议则不能。
SASL还允许应用程序将身份验证请求传递给其他应用程序。我们将使用此功能来配置我们的服务。
这些协议是在几年后制定的。它们的一些功能重叠。你需要哪些,哪些可以忽略?
许多人在设置服务器时部署了可用的协议,从未回头添加新的协议。您将看到仅具有SPF或仅具有SPF和DKIM的服务器。你需要的不仅仅是你想为世界提供什么的问题。这是关于其他服务器可以验证什么。如果MTA只能验证SPF,但您只提供DKIM,收件人可能会认为您的邮件可疑。
为了最大限度地提高可送达性并意识到任何问题,请为您的出站邮件实施SPF、DKIM和DMARC。为了尽量减少垃圾邮件,请验证入站邮件的SPF和DKIM。
您需要MTA-TLS和TLS-RPT吗?这取决于你的威胁模型。也许你不在乎传入连接是否加密。它相当新,所以也许你的MTA还不支持它。但是,如果你正在部署一个新的邮件系统或花时间改进现有的系统,你不妨尝试一下。在测试时使用一个非常低的超时时间,这样远程服务器就不会在数月或数年内缓存你的错误。
垃圾邮件发送者可以像我们其他人一样轻松地部署这些协议——如果他们投资于自动化,就更容易了。支持他们不足以传递你的电子邮件,但这是一个开始。
这有很多要涵盖的内容,但如果你坚持下去,你会学到一切的。向前的!