为什么需要SMTP服务器?


92

为什么需要中间SMTP服务器来发送邮件?为什么我的客户端(Outlook,Thunderbird)不能直接将邮件发送到收件人的SMTP域?

例如,如果我必须address@example.com使用我的Gmail帐户向发送电子邮件,则将其发送到smtp.gmail.com服务器;然后该服务器会将我的消息发送到的MX服务器example.com


Answers:


114

从技术上讲,可以从您的计算机直接将电子邮件发送到收件人的SMTP服务器。

从历史的角度来看,如果远程SMTP服务器已关闭,则您希望系统自动处理并继续重试-因此,您拥有SMTP服务器。同样,在过去,并非所有邮件服务器都一直保持连接状态-长距离链接非常昂贵,因此在建立链接时,邮件将排队并发送。

转移到Internet便宜的地方,拥有一种机制,在服务器不可用时重试发送电子邮件仍然很有用,并且将此功能写入MUA(邮件用户代理/最终用户邮件程序)并不理想。这些功能适合MTA(邮件服务器/ SMTP服务器)。

但是,情况变得更糟- 垃圾邮件发送者。大多数电子邮件(超过80%)都是垃圾邮件。因此,邮件提供商将竭尽所能减少此问题,并且大量技术都对电子邮件的发送方式进行了假设,以下是重要的考虑因素:

  1. 列入灰名单:如果发件人和收件人以前从未进行过通信,则某些提供程序将自动断开邮件连接,并希望他们再次尝试-因为垃圾邮件发送者通常不这样做,而SMTP服务器通常应该这样做。这样可以将垃圾邮件量减少约80%。不得不这样做虽然很糟糕。

  2. 声誉:通过夜间运行的SMTP服务器通过合法的知名SMTP服务器发送电子邮件的可能性更大。为了获得声誉,供应商做了很多事情:

    1. 阻止动态/客户端地址(不是100%,但是Internet的大部分已被映射出)。

    2. 看起来反向DNS与向前DNS相匹配:这不是很难,但是却显示出一定程度的责任心和最佳实践知识,而许多客户端地址块却没有。

    3. 信誉:与其他SMTP服务器通信时,许多提供商都跟踪垃圾邮件的数量和发送的电子邮件量,并且可以通过限制连接并关注这些参数来减少垃圾邮件的数量。(完成此操作的方法有很多,但并非所有方法都是显而易见的,但是需要已知的发送者)。

    4. SPF和DKIM:这些机制将DNS资源与域名绑定在一起,从而使伪造邮件更加困难,并且将很困难(但如果邮件程序(MUA)负责外发邮件,则不一定部署)。完整,因为已经被接受了。值得一提的是,它落在我脑海中的下面的海报上,但仍然非常有效)

可能还有其他一些小问题,但这些可能是主要问题。


19
不要忘记诸如SPF(允许在域中发送邮件的主机的白名单)和DKIM(在域级别进行数字签名消息)之类的事情-尤其是后者只有通过专用中继才能实现。
grawity

@grawity绝对值得一提,但是如果没有专用的中继,为什么DKIM不会“可行”?DKIM选择器未绑定到发送应用程序或IP地址。如果您的邮件客户端可以使用已发布的密钥对邮件进行签名,则它与任何其他签名者一样有效。
Mathias R. Jessen

2
@ManuH:按照正确答案中的指标,普通邮件会损害邮件量的1/5。根据服务器上的指标,普通邮件会损害邮件量的1/20。这是一个了不起的折衷。
dotancohen 2015年

1
@manuh:Greylisting的工作方式是在发送电子邮件之前关闭连接-仅侦听直到接收到发件人和收件人(位于标题中)。另外,一些灰名单系统将立即使用。接受来自具有重试传递历史的smtp服务器的所有电子邮件。可悲的是,它非常有效。
davidgo

4
可以补充说,在“好日子”中,邮件通常是在到达目的地之前从一个SMTP服务器发送到另一个,然后是另一个,然后是另一个。这通常可以正常工作,但是例如在rtm蠕虫攻击期间,关闭一台计算机是必不可少的邮件中继之一,因此带有警告,解决方案和补丁的电子邮件可能最多需要48小时才能到达他们的收件人。
Baard Kopperud

32

为什么需要中间SMTP服务器来发送邮件?为什么我的客户端(Outlook,Thunderbird)不能直接将邮件发送到收件人的SMTP域?

在1991年(以及1990年代初期甚至更早的大部分时间),您可能能够做到所描述的。但是,2015年的现实是,尽管从技术上讲,它可以从安装了邮件服务的任何计算机上向任何人发送电子邮件,但SPAM的世界已使该方法实际上无用。

当您使用“真实的” SMTP服务时,会设置诸如PTR记录,SPF记录甚至是DomainKeys之类的东西,它们都是出于一种目的和一种目的而建立的:确保发送邮件的SMTP是合法的。如果不是?将邮件过滤到垃圾邮件文件夹或删除的“深渊”中。以下是这些项目的分类:

  • PTR(指针记录/反向DNS记录):服务器级别验证。如此处所述,PTR记录用于将网络接口(IP)映射到主机名。这意味着,如果您123.456.789.0的SMTP服务器上有发送电子邮件的地址,smtp.example.com则相应的PTR记录将为smtp.example.com。似乎太简单了,但是它起作用了,因为唯一可以真正设置PTR记录的人就是IP地址的所有者,并且只能在其硬件上进行设置。因此,它充当对谁拥有/运行/管理该IP地址的验证点。

  • SPF(发件人策略框架):主机名DNS条目级别验证。SPF记录(如此处所述)基本上是域名所有者设置的DNS记录,该记录提供了允许发送该域名的电子邮件的服务器的IP地址和主机名的列表。这又是另一个验证步骤,可确保只有SMTP服务器的真实域名所有者才能发送邮件。因此,假设IP地址为的服务器123.456.789.9正在发送电子邮件给example.com。我们已经知道smtp.example.com使用123.456.789.0,但是SPF记录条目example.com可以声明为“嘿!123.456.789.9是一个很好的服务器!他是合法的!尊重他的电子邮件!”

  • DKIM(DomainKeys标识邮件):电子邮件级别的验证。如此Wikipedia所述,“ DKIM是一种电子邮件验证系统,旨在通过提供一种机制来检测电子邮件欺骗,该机制允许接收邮件的交换者检查来自该域的管理员的授权来自该域的传入邮件以及该电子邮件(包括附件)通过使用加密哈希,DKIM可以验证邮件本身在传输过程中没有被过滤或篡改。这也充当“您是合法的还是垃圾邮件?”链中的另一个验证点。

因此,最终,任何有价值的面向公众的SMTP服务器都将至少具有以下两项(PTR和SPF),以验证SMTP服务器和相关电子邮件是否合法。并非每个人都使用DKIM,但是随着SPAMmers在发送SPAM方面的努力变得越来越顽强,如今,验证的另一层越来越流行。


15

大多数住宅ISP都阻止TCP端口25(SMTP),以阻止您加入垃圾邮件网络。如果您的PC被感染,您的PC可能会在其他人的要求下开始发送垃圾邮件。


您编写“大多数住宅ISP阻止TCP端口25(SMTP)” <-您可以详细说明这是什么意思。您是说他们不允许您在端口25上建立到SMTP服务器的传出连接吗?还是您是说他们不允许您在端口25上接收连接?
barlop

2
@barlop前者-他们阻止25条从住宅链接到其自己的邮件服务器以外的机器(或实际上到任何地方的出站连接,因为它们可能将587或465用于自己的服务器)。但是,说大多数ISP这样做有点夸张。
hobbs 2015年

2
@hobbs-我的经历(这是我工作的一部分)是不同的。尽管许多ISP会以目标端口25(迫使端口25的流量通过其邮件服务器)阻止离开网络的流量,但对于587或465端口通常情况并非如此-实际上这是有道理的。端口587和465通常需要身份验证和阻塞,并且特别是MUA到MTA,而不是MTA-MTA-阻塞这些端口会产生大量反冲,这是许多公司所需要的,从而允许漫游,问责和不破坏SPF。
davidgo,2015年

3
@hobbs,我从来没有写过大多数ISP都会这样做。我写的是,大多数住宅ISP都这样做。例如,AT&T,Comcast,TWC,Verizon等针对其住宅客户执行此操作,但不针对其商业客户执行此操作。
罗恩·莫平

6

其他答案都很好,垃圾邮件确实与它有很大关系。

但是实际上有一个更简单,更通用的答案:功能。通过SMTP发送电子邮件实际上是一项非常复杂的工作。即使没有垃圾邮件,您也不想在每个电子邮件客户端中实现SMTP协议的全部功能。最好使用专用软件(sendmail,postfix等是* nix世界中的大软件,在Windows世界中是Exchange)是最好的软件。

例如,即使最基本,“真正的” SMTP服务器也必须至少能够解析MX记录。然后,它必须协商功能(主要是TLS,但也有其他功能)。它必须管理重试队列,生成未送达报告等。

那只是基本的,必须具备的功能,没有它,服务器将无法工作。它甚至不包括地址重写,mailertables之类的东西。更不用说sendmail等人支持的十几种其他协议,例如UUCP。

Outlook,Thunderbird等中的SMTP实现非常少-充其量,大约相当于在sendmail上使用智能主机。

相关但独立的问题:电子邮件是一个对安全性非常敏感的主题,您希望有一个或几个中央管理的服务器来处理它,而不是每个桌面上可能有成百上千个单独的服务器。


这是个好的观点。但是,这不仅与排队的实际功能有关,还包括:服务器的可用性使其中某些功能有所不同。如果出现问题,并且您关闭笔记本电脑,则笔记本计算机必须等到下一次开机才能重试-邮件服务器很可能会24/7全天候可用,因此可以更好地管理邮件队列。通过SMTP将邮件提交到服务器后,您的邮件客户端无需保持在线状态即可确保传递。
David Spillett

4

为什么需要中间SMTP服务器来发送邮件?为什么我的客户端(Outlook,Thunderbird)不能直接将邮件发送到收件人的SMTP域?

您可以创建一个执行此操作的电子邮件程序,毫无疑问,其他人也曾经做过(或尝试过)它。

本质上,您将要编写一个既包含MUA(邮件用户代理)又包含MTA(邮件传输代理)的工具。

传统上将其分为不同的工具,而MTA驻留在“服务器端”,原因是通过开放式Internet发送邮件的MTA编写和配置要复杂得多,而且它受益于驻留在可靠的“始终在线”服务器。

MTA必须:

  • 查找并连接到不信任的服务器,或者连接到不正常的服务器,并以不丢失邮件的明智方式处理错误情况。

  • 处理已关闭的服务器,并路由到备用服务器或将邮件排队以便以后重试。这在“始终连接”到Internet的服务器进程上运行效果最佳。这也意味着邮件传输代理需要自己的存储区域来存储排队的邮件。

  • 处理一系列不同的服务器功能,并根据接收服务器的功能调整行为。

  • 向用户报告错误情况或邮件无法传递时的情况,这样邮件就不会丢失。

  • 拥有出色的安全实践,并且非常注重安全性。

  • 理想情况下,驻留在可靠的,始终连接的服务器上,该服务器具有稳定的IP地址和反向DNS条目,即适用于面向公众的服务器的Internet连接。这有助于其他系统检测不到作为垃圾邮件发送的邮件。

考虑到这些要求,将SMTP服务器放置在某个面向公众的始终在线服务器上,并尝试使用适合该特定工作的工具是有意义的。


1

要考虑的另一件事是接收返回的电子邮件。至少,所有传出电子邮件都具有可以发送响应的FROM地址(未知用户,休假回复等)。为了解析回信地址,必须存在指向回信收件箱位置的MX记录。除非您从始终具有静态IP地址的计算机发送电子邮件,否则将需要服务器来处理这些入站消息。通常(但并非总是)由同一服务处理。

GMail,Outlook 365和Yahoo Mail是发送电子邮件的个人使用的电子邮件服务的示例。对于商业电子邮件发送,MailChimp,Marketo和Eloqua等服务非常擅长为公司发送大量电子邮件并处理诸如退回,限制和可传递性之类的事情。

请参阅:https//en.m.wikipedia.org/wiki/Bounce_address


我不明白为什么我需要一个静态IP来获得我的回复...回复应该传递到我的MX服务器(例如Gmail),而不是我的计算机。我对吗?
Tobia

是的,你是对的。我想我的意思是,收件箱通常位于服务器上某处,以便发送外发电子邮件。从逻辑上讲,该服务器也可以处理传出电子邮件。否则,您将失去诸如拥有“已发送”电子邮件文件夹之类的东西。
dana

嗯,这很合理。不过,我可以自由地发送邮件与Gmail与未知“从”或“的replyTo”地址unsing的SMTP服务器...
托比亚

1
如果使用GMail,则必须使用smtp身份验证。因此,FROM地址设置为您的@ gmail.com地址。否则,您将可以使用其服务进行欺骗。
dana 2015年

2
如今,许多用户已经不太在乎反弹了,但是通常认为不接受反弹的设置可能是垃圾邮件来源。
rackandboneman
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.