Answers:
从技术上讲,可以从您的计算机直接将电子邮件发送到收件人的SMTP服务器。
从历史的角度来看,如果远程SMTP服务器已关闭,则您希望系统自动处理并继续重试-因此,您拥有SMTP服务器。同样,在过去,并非所有邮件服务器都一直保持连接状态-长距离链接非常昂贵,因此在建立链接时,邮件将排队并发送。
转移到Internet便宜的地方,拥有一种机制,在服务器不可用时重试发送电子邮件仍然很有用,并且将此功能写入MUA(邮件用户代理/最终用户邮件程序)并不理想。这些功能适合MTA(邮件服务器/ SMTP服务器)。
但是,情况变得更糟- 垃圾邮件发送者。大多数电子邮件(超过80%)都是垃圾邮件。因此,邮件提供商将竭尽所能减少此问题,并且大量技术都对电子邮件的发送方式进行了假设,以下是重要的考虑因素:
列入灰名单:如果发件人和收件人以前从未进行过通信,则某些提供程序将自动断开邮件连接,并希望他们再次尝试-因为垃圾邮件发送者通常不这样做,而SMTP服务器通常应该这样做。这样可以将垃圾邮件量减少约80%。不得不这样做虽然很糟糕。
声誉:通过夜间运行的SMTP服务器通过合法的知名SMTP服务器发送电子邮件的可能性更大。为了获得声誉,供应商做了很多事情:
阻止动态/客户端地址(不是100%,但是Internet的大部分已被映射出)。
看起来反向DNS与向前DNS相匹配:这不是很难,但是却显示出一定程度的责任心和最佳实践知识,而许多客户端地址块却没有。
信誉:与其他SMTP服务器通信时,许多提供商都跟踪垃圾邮件的数量和发送的电子邮件量,并且可以通过限制连接并关注这些参数来减少垃圾邮件的数量。(完成此操作的方法有很多,但并非所有方法都是显而易见的,但是需要已知的发送者)。
SPF和DKIM:这些机制将DNS资源与域名绑定在一起,从而使伪造邮件更加困难,并且将很困难(但如果邮件程序(MUA)负责外发邮件,则不一定部署)。完整,因为已经被接受了。值得一提的是,它落在我脑海中的下面的海报上,但仍然非常有效)
可能还有其他一些小问题,但这些可能是主要问题。
为什么需要中间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方面的努力变得越来越顽强,如今,验证的另一层越来越流行。
大多数住宅ISP都阻止TCP端口25(SMTP),以阻止您加入垃圾邮件网络。如果您的PC被感染,您的PC可能会在其他人的要求下开始发送垃圾邮件。
其他答案都很好,垃圾邮件确实与它有很大关系。
但是实际上有一个更简单,更通用的答案:功能。通过SMTP发送电子邮件实际上是一项非常复杂的工作。即使没有垃圾邮件,您也不想在每个电子邮件客户端中实现SMTP协议的全部功能。最好使用专用软件(sendmail,postfix等是* nix世界中的大软件,在Windows世界中是Exchange)是最好的软件。
例如,即使最基本,“真正的” SMTP服务器也必须至少能够解析MX记录。然后,它必须协商功能(主要是TLS,但也有其他功能)。它必须管理重试队列,生成未送达报告等。
那只是基本的,必须具备的功能,没有它,服务器将无法工作。它甚至不包括地址重写,mailertables之类的东西。更不用说sendmail等人支持的十几种其他协议,例如UUCP。
Outlook,Thunderbird等中的SMTP实现非常少-充其量,大约相当于在sendmail上使用智能主机。
相关但独立的问题:电子邮件是一个对安全性非常敏感的主题,您希望有一个或几个中央管理的服务器来处理它,而不是每个桌面上可能有成百上千个单独的服务器。
为什么需要中间SMTP服务器来发送邮件?为什么我的客户端(Outlook,Thunderbird)不能直接将邮件发送到收件人的SMTP域?
您可以创建一个执行此操作的电子邮件程序,毫无疑问,其他人也曾经做过(或尝试过)它。
本质上,您将要编写一个既包含MUA(邮件用户代理)又包含MTA(邮件传输代理)的工具。
传统上将其分为不同的工具,而MTA驻留在“服务器端”,原因是通过开放式Internet发送邮件的MTA编写和配置要复杂得多,而且它受益于驻留在可靠的“始终在线”服务器。
MTA必须:
查找并连接到不信任的服务器,或者连接到不正常的服务器,并以不丢失邮件的明智方式处理错误情况。
处理已关闭的服务器,并路由到备用服务器或将邮件排队以便以后重试。这在“始终连接”到Internet的服务器进程上运行效果最佳。这也意味着邮件传输代理需要自己的存储区域来存储排队的邮件。
处理一系列不同的服务器功能,并根据接收服务器的功能调整行为。
向用户报告错误情况或邮件无法传递时的情况,这样邮件就不会丢失。
拥有出色的安全实践,并且非常注重安全性。
理想情况下,驻留在可靠的,始终连接的服务器上,该服务器具有稳定的IP地址和反向DNS条目,即适用于面向公众的服务器的Internet连接。这有助于其他系统检测不到作为垃圾邮件发送的邮件。
考虑到这些要求,将SMTP服务器放置在某个面向公众的始终在线服务器上,并尝试使用适合该特定工作的工具是有意义的。
要考虑的另一件事是接收返回的电子邮件。至少,所有传出电子邮件都具有可以发送响应的FROM地址(未知用户,休假回复等)。为了解析回信地址,必须存在指向回信收件箱位置的MX记录。除非您从始终具有静态IP地址的计算机发送电子邮件,否则将需要服务器来处理这些入站消息。通常(但并非总是)由同一服务处理。
GMail,Outlook 365和Yahoo Mail是发送电子邮件的个人使用的电子邮件服务的示例。对于商业电子邮件发送,MailChimp,Marketo和Eloqua等服务非常擅长为公司发送大量电子邮件并处理诸如退回,限制和可传递性之类的事情。