我应该使用哪个SMTP端口:端口25、465、587还是2525?
配置应用程序或邮件系统以发送(或中继)电子邮件的人们通常有一个共同的问题:“我应该使用哪个SMTP端口?”您可能会看到信息告诉您使用端口25、465、587或2525进行SMTP中继。那么,这些中哪个应该是您的标准SMTP端口?您需要知道的内容,以及原因如下。
什么是SMTP端口?
SMTP(简单邮件传输协议)是邮件服务器用于在互联网上彼此发送电子邮件的基本标准。SMTP还被像Apple Mail或Outlook这样的应用程序用于将电子邮件上传到邮件服务器,然后再将其中继到其他邮件服务器。(另一方面,邮件应用通常依赖于其他标准,例如IMAP或POP3,从服务器中检索电子邮件。)
与网页等其他互联网服务一样,SMTP电子邮件依赖域名和互联网地址来了解向何处发送消息。我们今天都熟悉这些地址的文本版本,例如www.sparkpost.com。我们大多数人知道文本地址代表一个数字IP地址如107.21.246.67。但是并不是我们所有人都知道这些网络地址还包括特定的“端口号”。 “SMTP端口”指的是用于传输电子邮件的互联网地址的特定部分。
网络和HTTP使用端口号80。对于电子邮件和SMTP,该端口号是……好吧,这要看情况。
SMTP与SSL和TLS有何不同?
这两种技术都帮助发送电子邮件。虽然SMTP可以是这个过程的肌肉和骨骼,但安全套接层(SSL)却形成了保护您电子邮件安全的皮肤。SSL适用于任何可用的端口。
在不久前,SSL是常见电子邮件端口的首选安全协议。随着其更新和改进的后裔传输层安全性(TLS)的采纳,电子通信变得更加安全。
虽然这两种协议都在发送和接收计算机之间创建私人通道以保护传输, TLS提供的警报比其前身更多,并且能够执行更多哈希函数以增强加密通信。今天,许多电子邮件使用最新的约定STARTTLS,与SSL或TLS协议结合以实现最大安全性。
单独的SMTP协议并不像它可能那样安全。将转移方法与其中一种安全协议结合提供了更多加密保护。对于发送电子邮件,SSL和其他协议增强SMTP传输。
您如何找到您的SMTP端口?
如果您订阅了托管电子邮件中继服务,您可以从邮件服务的支持页面获取SMTP服务器主机名和端口号。
如果您运行自己的SMTP服务器,您可以从SMTP服务器配置中找到配置的SMTP端口号和地址。在PowerMTA中,您可以从配置文件中的“smtp-listener”指令找到该信息。配置文件可以在Linux服务器上的/etc/pmta/config中找到,而在Windows服务器上则在C:\pmta\config.dat中。
smtp-listener 10.0.1.22:587 # 在端口587和IP 10.0.1.22上监听
您应该使用哪个端口进行SMTP?
端口25、465、587或2525被认为在某个时刻都是标准SMTP端口,但实际上只有587或2525 应该被考虑用于现代用途。
如果您正在配置系统以使用SparkPost作为SMTP中继,您应使用端口587作为您的标准SMTP端口,2525作为备用以防端口587不可用。
我将在我们通过今天用于发送电子邮件的不同端口时解释原因。
端口25:原始标准SMTP端口
端口25是原始标准 电子邮件 SMTP端口 并且是最古老的,自1982年首次出现以来。今天,互联网分配号码管理局(IANA),负责维护互联网寻址方案的团体,仍然将端口25视为标准,默认的SMTP端口。 SMTP在IETF请求评论(RFC)821中被指定用于端口25。但实际上,这并不像看起来的那么简单。
尽管端口25继续用于服务器到服务器的SMTP中继,但大多数现代SMTP客户端不应配置使用此端口。 端口25通常被住宅ISP和商业云托管提供商阻止,因为它因成为垃圾邮件发送者首选的端口而声名狼藉,导致大量未经请求的通讯。
为什么端口25通常被阻止?您如何检查它是否被阻止?
端口25在许多网络上被阻止,以遏制从被攻击的计算机或服务器中继的垃圾邮件量。除非您专门管理邮件服务器,否则您不应在计算机或服务器上有任何流量经过此端口。
要检查端口25是否被ISP阻止:
如果您使用Windows,请打开命令提示符。如果您使用Mac,请打开终端。如果您使用Linux,请打开终端仿真器。
输入以下命令:telnet examplemailserver.com 25
如果端口25没有被阻止,您应该收到如下消息:
user@localhost:~# telnet gmail-smtp-in.l.google.com 25 尝试1.2.3.4...已连接到gmail-smtp-in.l.google.com。逃避字符是'^]'. 220 mx.google.com ESMTP 123si3448417qkd.359 - gsmtp
如果您收到类似以下消息,则很可能端口25被阻止:
telnet: 连接到地址XX.XX.XX.XX: 拒绝连接 telnet: 无法连接到远程主机
您何时会使用端口25?
端口25是互联网上中继电子邮件的默认端口。然而,您可以指定任何端口号(只要在可接受的自定义端口号范围内)来向您的SMTP服务器提交电子邮件。
有特殊情况需要您在SMTP服务器上使用端口25。一个这样的情况是接收异步反弹。这种反弹是在事情发生后发生的。这意味着接收者域接受来自您的SMTP服务器的消息,但稍后反弹该消息。异步反弹被发送到原始消息的返回路径(MAIL FROM)地址。接收者域将尝试将这些反弹发送到返回路径地址的MX服务器,并通过端口25(因为端口25是互联网上中继电子邮件的默认端口)。另一个例子是接收反馈循环(FBL)。
您可以通过配置“smtp-listener”指令在PowerMTA服务器上启用端口25来接收消息。
smtp-listener 10.0.1.22:25 # 在端口25和IP 10.0.1.22上监听
端口465:已弃用且过时的SMTP端口
端口465不再是SMTP的接受标准。然而,仍然有一些遗留系统使用端口465进行SMTP,一些互联网的帮助页面仍然建议将端口465作为推荐设置。 该端口在1990年代后期获得了冗余,但仍依赖于被动隐式SSL方法来建立安全传输。 我们的建议?除非您的应用程序绝对需要,否则不要这样做。
IANA最初为一种名为SMTPS的加密版本的SMTP分配了端口465。最初建议使用安全套接层(SSL)发送电子邮件。然而,IANA已将此端口重新分配给其他用途,因此不应再用于SMTP。这就是为什么SparkPost不接受在端口465上的连接。
端口587:标准安全SMTP端口
现代电子邮件服务器使用端口587进行安全提交以进行邮件传递。例如,如果您使用像Outlook或Apple Mail这样的电子邮件客户端软件,它很可能被配置为使用此端口发送您的消息。不仅仅是个人电子邮件客户端软件,像SparkPost这样的电子邮件传送服务也应配置为使用此端口。
所有SparkPost客户都应使用端口587作为默认端口,除非您被上游网络或托管提供商明确阻止。使用端口587,结合TLS加密,是确保电子邮件安全并可靠地提交给SparkPost(或几乎任何其他提供者)的最佳方法。
端口2525:常见的备用SMTP端口
端口2525不是官方的SMTP端口,也不被IETF或IANA认可。然而,SparkPost和许多其他电子邮件服务提供商支持使用端口2525作为SMTP的替代端口,万一上述端口被阻止。(一个显著的例子是针对在Google Compute Engine上托管的服务)。如果您尝试使用端口587但遇到连接问题,请尝试使用端口2525。与端口587一样,大多数监听端口2525的实现也支持TLS加密。
SMTP端口重要吗?
除了连接问题外,您会发现使用不正确的端口会影响可送达性。电子邮件通信只有在找到发件人与收件人之间的路径时才能有效,而正确的端口确保成功交付。
对于大多数用户,您的电子邮件提供商将为您配置端口,因此您不必选择。不过,对于其他人,理解不同的端口分配了不同的功能是重要的,主要分为提交和中继。
提交与中继
提交是您将刚铸造的电子通信交给电子邮件服务提供商的出箱操作。如果您与提供者位于不同的端口,那么这个过程就停止了——您的电子邮件将无法再进一步。当在相同的端口时,您的邮件服务器接受出站通信并与另一端的计算机握手。当一切安全且达成一致后,传输就会发生。这个过程称为中继。
什么是SMTP服务器?
SMTP服务器是计算机,用于驱动电子邮件客户端在发送、接收和/或中继出站消息时使用的协议。作为该过程的一部分,SMTP服务器验证发件人是否被允许通过SMTP发送,如果发件人被允许发送且消息被认为无法送达,SMTP服务器会将其返回到MAIL FROM地址。PowerMTA是领先的SMTP服务器之一,因为它允许发件人采用最新的身份验证规范以发送高容量电子邮件并遵守新的身份验证政策。
如何设置您的SMTP服务器
在设置SMTP服务器时,有两个选项可以探索。您可以订阅托管电子邮件中继服务。SparkPost是邮件传递和分析服务的领先提供者。或者,您可以设置自己的“本地”SMTP服务器以获得更细粒度的控制。一个例子是PowerMTA。
要建立PowerMTA服务器,请联系support@port25.com获取安装包、许可证和安装说明。所有PowerMTA配置在配置文件中完成,配置文件可以在Linux服务器上的/etc/pmta/config中找到,而在Windows服务器上则在C:\pmta\config.dat中。
就您的SMTP服务器的基本配置而言,有一些考虑和步骤需要采取。
您希望您的SMTP服务器接收邮件的IP地址和端口号是什么?端口25是电子邮件中继的默认端口。在PowerMTA中,您可以通过编辑配置文件中的“smtp-listener”指令来更改此默认端口号。smtp-listener 0/0:25 # 在所有本地IP上的端口25上监听。您还可以指定IP地址的CIDR范围
或
smtp-listener 10.0.1.22:25 # 在端口25和IP 10.0.1.22上监听
您必须允许电子邮件客户端到SMTP服务器的消息中继。您的SMTP服务器绝不能是开放中继。这意味着您必须以某种方式选择性地允许中继。在PowerMTA中,有几种方法可以做到这一点。您可以通过用户名和密码进行身份验证。PowerMTA支持使用LOGIN、PLAIN或CRAM-MD5机制进行入站连接的身份验证。这在配置文件的smtp-user和source段落中进行配置。对于用户“foo”和密码“barbaz”<smtp-user foo> 密码 barbaz 身份验证方法密码 #证书(TLS)或系统(Linux用户)是其他选择 </smtp-user> #然后在源段落中要求身份验证 <source 0/0> require-auth true </source>
您还可以根据特定IP地址或CIDR范围选择性地允许中继。这将是您的电子邮件客户端的IP地址。
<source 10.0.5.20> always-allow-relaying yes # 允许从10.0.5.20中继 </source>
您还可以设置一个收件人域名/地址(或模式),以便PowerMTA接受电子邮件。
# 允许邮件中继到某个.domain relay-domain some.domain relay-address bounce@bounce.yourdomain.com relay-address /@foo(bar)?\.com$/ # 正则表达式模式
另一个考虑是您是否希望安全中继电子邮件从您的电子邮件客户端到SMTP服务器(入站TLS)?如果您的答案是肯定的,您必须为入站连接启用STARTTLS并配置TLS证书。在PowerMTA中,TLS支持从TLSv1到TLSv1.3.smtp-server-tls-certificate /etc/pmta/yourcert.pem # 在入站连接上启用TLS <source 0/0> allow-starttls true require-starttls-before-auth true # 确保仅通过tls发送身份验证信息 </source>
您希望您的SMTP服务器安全地将电子邮件传递给远程服务器(出站TLS)吗?在PowerMTA中,您可以选择使用TLS(如果远程服务器支持)或强制使用TLS并在远程服务器不支持TLS的情况下断开连接。<domain *> # (*)是所有收件人域的通配符 use-starttls true # 如果可用则使用TLS require-starttls true # 强制TLS </domain>
设置您的SMTP服务器发起出站SMTP连接的IP地址和主机名。在PowerMTA中,此设置使用smtp-source-host指令进行设置。smtp-source-host 192.168.0.10 mail10.yourserver.com # 您也可以指定CIDR范围
最后,PowerMTA的一个非常独特的功能是通过构建多重主机来分离您的邮件流。PowerMTA中的VirtualMTA技术允许用户定义和控制每个邮件流的源IP地址、主机名和消息传递参数。这使得创建独立和特定的活动、客户或部门成为可能,同时仍然只运行一个PowerMTA实例。
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.yourserver.com <domain *> use-starttls true require-starttls true retry-after 10m </domain> </virtual-mta> <virtual-mta mta2> smtp-source-host 2.3.4.5 mta2.yourserver.com <domain *> use-starttls false require-starttls false retry-after 45m </domain> </virtual-mta>
当基本设置完成后,您可以将消息提交到配置的SMTP服务器主机名/IP和端口号(上述示例中的10.0.1.22:25)并根据您允许电子邮件提交的方式与配置的用户名(foo)和密码(barbaz)进行身份验证。
总之,SMTP端口587是连接SparkPost以及其他电子邮件传递服务几乎每种用例的最佳选择。
我希望这些信息能帮助您更了解使用哪个SMTP端口!
~ Lade