为什么我需要一个 SMTP 服务器?

Tob*_*bia 97 email smtp

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

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

dav*_*dgo 118

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

从历史角度来看,如果远程 SMTP 服务器停机,您希望系统自动处理它并不断重试——因此您有一个 SMTP 服务器。同样,在过去,并不是所有的邮件服务器都一直连接——长途链接很昂贵,所以邮件会在链接建立时排队发送。

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

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

  1. 灰名单:如果发件人和收件人以前没有通信,一些提供商会自动断开邮件连接,并希望他们再次尝试——因为垃圾邮件发送者通常不会这样做,而 SMTP 服务器总是应该这样做。这将垃圾邮件数量减少了大约 80%。但是不得不这样做很糟糕。

  2. 信誉:通过信誉良好的已知 SMTP 服务器发送电子邮件的人更有可能是合法的,而不是夜间服务器。为了了解声誉,提供商会做很多事情:

    1. 阻止动态/客户端地址(不是 100%,但互联网的大块已经被映射出来)。

    2. 看看反向 DNS 与正向 DNS 匹配:这并不难,但显示出一定程度的责任感和最佳实践知识——这是许多客户端地址块所没有的。

    3. 声誉:在与其他 SMTP 服务器通信时,许多提供商会跟踪垃圾邮件的数量和发送的电子邮件数量,并可以通过限制连接和关注这些参数来减少垃圾邮件的数量。(有很多方法可以做到这一点,并非所有方法都很明显,但需要已知的发件人)。

    4. SPF 和 DKIM:这些机制将 DNS 资源绑定到域名,使伪造邮件更加困难,并且会很困难(但如果邮件程序 (MUA) 负责外发邮件,则不一定无法部署。)完整,因为它已经被接受了。它应该归功于下面的海报,因为它让我心烦意乱,但它仍然非常有效)

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

  • 不要忘记诸如 SPF(允许为域发送邮件的主机白名单)和 DKIM(域级别的数字签名消息)之类的_不完全是次要的_事情 - 特别是后者只能通过专用中继才能实现。 (19认同)
  • 可以补充一点,在“过去的美好时光”中,邮件通常从一个 SMTP 服务器发送到另一个服务器,然后是另一个,然后是另一个,然后再到达目的地。这通常工作正常,但例如在 rtm 蠕虫攻击期间,其中一台计算机停机是必不可少的邮件中继之一,因此带有警告、解决方案和蠕虫修复程序的电子邮件可能需要长达 48 小时才能到达他们的收件人。 (4认同)
  • @ManuH:根据最佳答案中的指标,普通邮件会影响 1/5 的邮件量。根据 _my_ 服务器上的指标,普通邮件会影响 1/20 的邮件量。这是一个了不起的权衡。 (2认同)
  • @manuh:灰名单的工作原理是在发送电子邮件之前关闭连接 - 它只会在收到发件人和收件人之前进行侦听 - 它们位于 th 标头中。此外,一些灰名单系统将立即生效。接受来自具有重试传递历史的 smtp 服务器的所有电子邮件。可悲的是,它非常有效。 (2认同)

Gia*_*968 33

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

在 1991 年——以及 1990 年代早期的大部分时间,甚至更早的时候——你也许能够做到你所描述的。但 2015 年的现实是,虽然技术上可以从任何安装了邮件服务的机器上向任何人发送电子邮件,但垃圾邮件的世界已经使这种方法变得毫无用处。

当您使用“真正的” SMTP 服务时,会设置诸如 PTR 记录、SPF 记录甚至域密钥之类的设置,这些设置都是为了一个目的且仅一个目的:保证发送消息的 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(域密钥识别邮件):电子邮件消息级别验证。正如此处维基百科所述,“DKIM 是一种电子邮件验证系统,旨在通过提供一种机制来检测电子邮件欺骗,该机制允许接收邮件交换器检查来自域的传入邮件是否已获得该域管理员的授权以及电子邮件(包括附件)在运输过程中没有被修改。” 通过使用加密哈希,DKIM 验证邮件本身在传输过程中没有被过滤或篡改。这也是“你是合法的还是垃圾邮件?”中的另一个验证点。链。

因此,最终,一个有价值的面向公众的 SMTP 服务器将至少设置其中两项(PTR 和 SPF)来验证 SMTP 服务器和相关电子邮件是否合法。并非每个人都使用 DKIM,但随着垃圾邮件发送者在发送垃圾邮件的努力中变得更加顽强,它是当今越来越流行的另一层验证。


Ron*_*pin 15

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

  • @hobbs,我从未写过大多数 ISP 都这样做;我写的是大多数_住宅ISP_都这样做。例如,AT&T、Comcast、TWC、Verizon 等为他们的住宅客户这样做,但他们不为他们的商业客户这样做。 (3认同)
  • @barlop 前者——他们阻止了 25 上从住宅链接到他们自己的邮件服务器以外的机器的传出连接(或者实际上是任何地方,因为他们可能将 587 或 465 用于他们自己的服务器)。但是,说大多数 ISP 都这样做有点夸张。 (2认同)
  • @hobbs - 我的经历(也是我工作的一部分)是不同的。虽然许多 ISP 会以端口 25 为目标阻止流量离开其网络(这会强制端口 25 流量通过其邮件服务器),但端口 587 或 465 通常并非如此——这确实是有道理的。端口 587 和 465 通常需要身份验证和阻塞,并且特别是 MUA 到 MTA 而不是 MTA-MTA - 阻塞这些端口会产生巨大的反弹,因为许多公司都需要它,以便允许漫游、问责和不破坏 SPF。 (2认同)

Kev*_*ane 7

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

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

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

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

Outlook、Thunderbird 等中的 SMTP 实现非常少 - 充其量,大致相当于在 sendmail 上使用智能主机,如果那样的话。

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


tho*_*ter 5

\n

为什么需要中间 SMTP 服务器来发送邮件?为什么我的客户端(Outlook、Thunderbird)无法\xe2\x80\x99 将邮件直接发送到收件人\xe2\x80\x99s SMTP 域?

\n
\n\n

您可以创建一个电子邮件程序来执行此操作,并且我毫不怀疑其他人以前也已经这样做过(或尝试过)。

\n\n

您本质上是在编写一个集 MUA(邮件用户代理)和 MTA(邮件传输代理)于一体的工具。

\n\n

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

\n\n

MTA 必须:

\n\n
    \n
  • 查找并连接到不信任或可能行为不当的服务器,并以不会丢失邮件的合理方式处理错误情况。

  • \n
  • 处理已关闭的服务器,并路由到备用服务器或将邮件排队以供稍后重试。这在“始终连接”到互联网的服务器进程上运行得最好。它还意味着邮件传输代理需要自己的存储区域来存储排队的邮件。

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

  • \n
  • 向用户报告错误情况或邮件无法送达的情况,这样邮件就不会丢失。

  • \n
  • 拥有出色的安全实践并具有很强的安全意识。

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

  • \n
\n\n

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

\n


归档时间:

查看次数:

15405 次

最近记录:

7 年,7 月 前