SMTP 服务器设置、使用和最佳实践
已发表: 2022-04-08曾经想知道电子邮件实际上是如何工作的,当您发送电子邮件并在几秒钟内将它们放入收件人的收件箱中时,发生这种情况的技术是简单邮件传输协议 (SMTP)。 使用 IMAP/POP3 服务器接收电子邮件后如何将电子邮件存储在服务器上是另一个时代的故事,现在,我们将介绍 SMTP,在本文结束时,我们希望您对 STMP 协议、SMTP 服务器有一个完整的了解, 常用选项以及如何确保您的电子邮件完成后进入垃圾邮件。
什么是 SMTP?
简单邮件传输协议 (SMTP) 是用于发送电子邮件的协议,它定义了一个通用标准,以便任何 SMTP 服务器可以与 Internet 上的任何其他 SMTP 服务器或 POP3/IMAP 服务器进行通信,并且它们可以相互理解。 您可以说它确保参与电子邮件传输的不同实体使用共同语言。
什么是 SMTP 服务器?
SMTP 协议需要由应用程序提供,该应用程序响应那些希望发送电子邮件或中继电子邮件的 SMTP 请求的应用程序称为 SMTP 服务/SMTP 中继。 您可以将其分为两种类型,如下所示,除了细微的区别外,两者基本相同 -
- SMTP 服务器:与 SMTP 中继相同,但主要在接收域与服务器域相同时使用。 这些通常与 gmail.com、yahoo.com 等免费电子邮件服务一起使用。
- SMTP 中继服务器:这也是一个服务器,但当源电子邮件和目标电子邮件域与 SMTP 服务器域不同时使用此术语。 一个例子可以是提供这些的 SendGrid 或 SendInBlue。这些服务器主要是邮件的路由器。
Fake SMTP Servers : – 这些服务器主要用于开发人员的测试,它们基本上是包罗万象的服务器,允许用户在不实际发送任何电子邮件的情况下查看电子邮件在收件人端的外观。 您可以安装 MailHog 或 MailCatcher 等本地应用程序,也可以使用 Mailtrap 或我们的本地工具等提供的云。
SMTP 如何工作?
以下是发送电子邮件过程如何使用 SMTP 的通用指南。
- 想要从 [email protected] 到 [email protected] 发送电子邮件的用户使用他的电子邮件客户端草拟带有主题和正文的电子邮件,然后按发送。
- 一旦用户按下发送,电子邮件客户端将连接到配置的 SMTP 服务器,现在让我们假设它是 smtp.source.com 。 客户端和 SMTP 服务器进行握手,如果需要授权,则客户端将提供相同的凭据。
- 握手后,电子邮件客户端发送收件人地址,在我们的例子中是 [email protected],主题和正文。
- 如果它是我们的用户发送给同一域中的某人,那么我们的服务器将简单地将其在内部转发到本地接收服务器。
- 接下来,使用 MX 记录的 DNS 请求的 SMTP 服务器找出其 SMTP 服务器正在运行的收件人 IP 或域地址。
- 接下来,它连接到接收者的 SMTP 地址并尝试发送电子邮件。
- 收件人电子邮件服务器验证它是否可以处理转发给它的电子邮件。 如果一切顺利,它会将其转发到传入的 IMAP 或 POP3 服务器。
通用 SMTP 端口和地址
在大多数情况下,SMTP 地址将是您尝试连接到的域前面的邮件或 smtp 前缀。 这些也是由 DNS 中的邮件交换 (MX) 记录指定的,这些记录将客户端引导到邮件服务器,该邮件服务器应该处理如何路由电子邮件消息。
要查找 SMTP 服务器的地址,您可以使用 dig 命令
1 2 3 |
root @ mailtest : ~ # dig +short freesmtpservers.com MX 20 smtp . freesmtpservers . com . 10 smtp . freesmtpservers . com . |
然后,如果需要,您可以使用 dig 命令查找 IP 地址
1 2 |
root @ mailtest : ~ # dig +short smtp.freesmtpservers.com 104.237.130.88 |
连接的端口并不是那么简单,服务器和中继通常有一组不同的端口可以连接,每个端口都是超时来满足特定要求的。
SMTP 端口
端口号 | 描述 | 信息 |
---|---|---|
25 | 标准 SMTP 端口 | 它应该主要用于电子邮件中继 |
465 | 已弃用的 SMTP 端口 | 用于安全 SMTP,使用 SSL 进行加密。 避免使用。 |
587 | 现代安全 SMTP 端口 | 大多数现代电子邮件客户端都会使用它,它使用 TLS 加密。 |
2525 | 备用非标准 SMTP 端口 | 这被用作 587 的替代品,以防其被阻止。 |
在大多数情况下,您将根据需要使用端口 587。
常用 SMTP 服务器名称
SMTP 服务器的常用地址以 smtp 开头。 或邮件。 使用域名,有些可能还有 IP 地址。 我们在下面列出了一些常见的及其详细信息 -
服务名称 | SMTP 服务器 | 港口 |
---|---|---|
谷歌邮件 | smtp.gmail.com | 587 |
Outlook.com | smtp.live.com | 587 |
Office365.com | smtp.office365.com | 587 |
雅虎邮箱 | smtp.mail.yahoo.com | 465 |
雅虎邮箱加 | plus.smtp.mail.yahoo.com | 465 |
雅虎英国 | smtp.mail.yahoo.co.uk | 465 |
雅虎德国 | smtp.mail.yahoo.com | 465 |
雅虎澳大利亚/新西兰 | smtp.mail.yahoo.com.au | 465 |
氧气 | smtp.o2.ie | 25 |
O2.uk | smtp.o2.co.uk | 25 |
美国在线 | smtp.aol.com | 587 |
美国电话电报公司 | smtp.att.yahoo.com | 465 |
[email protected] | smtp.ntlworld.com | 465 |
英国电信连接 | pop3.btconnect.com | 25 |
英国电信开放世界 | mail.btopenworld.com | 25 |
英国电信互联网 | mail.btinternet.com | 25 |
橙子 | smtp.orange.net | 25 |
Orange.uk | smtp.orange.co.uk | 25 |
瓦纳杜英国 | smtp.wanadoo.co.uk | 25 |
热邮件 | smtp.live.com | 465 |
O2 在线德国 | mail.o2online.de | 25 |
T-在线德国 | securesmtp.t-online.de | 587 |
1&1 (1and1) | smtp.1and1.com | 587 |
1&1 德国 | smtp.1und1.de | 587 |
康卡斯特 | smtp.comcast.net | 587 |
威瑞森 | 传出的.verizon.net | 465 |
Verizon(雅虎托管) | 传出.yahoo.verizon.net | 587 |
Zoho Mail | smtp.zoho.com | 465 |
邮件.com | smtp.mail.com | 587 |
GMX.com | smtp.gmx.com | 465 |
[电子邮件保护] 由 USA.NET | smtp.postoffice.net | 465 |
批量 SMTP 服务器提供程序设置
如果您想发送多封电子邮件会发生什么,比如 10000 K 封电子邮件,那么您将需要像 Bulk SMTP 中继这样的东西,它们还将为您提供 API 和其他功能,如交付跟踪、打开率等。还可以帮助您发送像 SMTP 一样快的电子邮件作为协议有点慢。
如果数量不是很大,那么您可以使用我们的免费 SMTP 服务器提供商列表来做出选择。
如果您想向您的大型用户群发送电子邮件,或者可能用于电子邮件营销,我们在下面列出了各种提供商的价格。
小贩 | 免费/月 | 每日限额 | 付费计划 | 评论 |
---|---|---|---|---|
发送蓝色 | 9000 | 300 | 10000 美元 25 美元到 100 万美元 499 美元 | 最好的免费 |
TurboSMTP | 6000 | 200 | 50k 为 14.95,200 万为 979.95。 | 12个月6000/月 |
阿里巴巴直邮 | 6000 | 200 | 每 1000 封电子邮件 .00029 | |
佩皮邮报 | 3000 | 100 | 15 万美元 25 美元,200 万美元 445 美元 | |
发送网格 | 3000 | 100 | 5 万封电子邮件 14.95 美元,15 万封电子邮件 749 美元 | |
晶石邮报 | 3000 | 100 | 50K 20 美元到 100 万美元 525 美元 | |
弹性电子邮件 | 3000 | 100 | 像 Amazon SES 一样的成本核算 | 低成本付费选项 |
亚马逊 SES | 62000 | .0001 表示 1000 封电子邮件 | 从 AWS EC2 服务器发送的最便宜、免费的产品之一 | |
邮件 | 15000 | 500 | Gsuite 是高级选项 | 域名将是 gmail.com ,可能导致帐户暂停。 |
在 WordPress 中使用 SMTP 服务器
WordPress 为 Internet 上近 40% 的网站提供支持,默认情况下,它使用 PHP Mail 发送事务性电子邮件,如果未配置,则使用 sendmail ,这在交付时可能会遇到问题,因此我们建议使用可以使用 SMTP 设置或使用 SMTP API 的 WordPress 插件。
默认情况下,WordPress 使用 PHP 邮件发送电子邮件,如果配置正确就足够了,但在大多数情况下,使用第三方服务更容易,因为大多数共享主机不允许直接访问控制台来检查正在发生的事情以及您的主机 IP 可能由于垃圾邮件而被列入黑名单,因为服务器上可能还有其他用户(在通用共享主机的情况下)可能不正常并导致您的 IP 被列入黑名单。 被列入黑名单是指您的服务器的 IP 被放入已知垃圾邮件发送者的全球列表中,这使您的邮件更难通过,您可以在此处查看您的状态。
对于 WordPress,我们推荐 Wp Mail SMTP 插件,它易于配置、设置并支持包括 Gmail 在内的许多不同供应商,还有一个选项来记录所有已发送的电子邮件。 对于大多数用户来说,免费计划应该足够了。
您可以轻松地从 WordPress 内部安装它,甚至可以从 WordPress 的网站下载它。 它有一个高级计划,但对于大多数用户来说,免费应该已经足够了。
在 Linux 上设置自托管 SMTP 服务器
快速 MTA 比较,我们将选择 Postfix,因为我们将使用 linux –
如果你是... | 邮箱 | 进出口 | 发送邮件 | 后缀 | 笔记 |
---|---|---|---|---|---|
没有经验 | 0 | 3 | 1 | 3 | Exim 和 Postfix 有很好的文档和清晰的例子 |
担心安全 | 3 | 2 | 0 | 3 | Postfix 既安全又现代; qmail 是安全的,但非常陈旧且脾气暴躁; Exim 符合不同的标准(见上文。) |
依靠 Sendmail 过滤器 | 0 | 1 | 3 | 2 | Postfix 可以运行 milters; 可以使用等效的 Exim 路由器/过滤器脚本 |
想要最少的麻烦 | 0 | 3 | 0 | 3 | Sendmail 有一些简单的前端,但你越深入,它就越糟糕。 Postfix 和 Exim 更容易预测。 |
资源受限 | 3 | 2 | 1 | 2 | 有关其他评论,请参阅下面的嵌入式应用程序 |
在 Windows 上 | 0 | 2 | 3 | 0 | Sendmail 有一个本地 Windows 端口; Exim 在 Cygwin 发行版中 |
需要商业支持 | 1 | 3 | 3 | 3 | 所有 MTA 都有胜任的公司; qmail 本来就不太支持这么旧 |
Postfix 是一个邮件传输代理 (MTA),可以充当 SMTP 服务器或客户端来发送或接收电子邮件。 它易于设置和配置,我们自己使用它来满足我们的大部分需求,也可以将其设置为通过第三方电子邮件服务转发电子邮件的中介。 我们将仅介绍基本设置并发送您的第一封电子邮件。
最简单的设置包括安装 postfix,您应该一切顺利。
这样的基本设置在技术上可以工作,但您的电子邮件可能会进入垃圾邮件,为了迎合这一点并确保更好的电子邮件送达率,我们有另一个指南,我们在其中添加了其他要求,例如 DKIM 或 SPF,这些要求是确保您的电子邮件正常运行所必需的通过。 但是,除非有充分的理由,否则我们不建议您运行您自己的电子邮件服务器。
此过程假定您有一个新安装的 Ubuntu 20.04,并且您可以使用命令行 Linux,如果不是,我们建议您使用现有的 SMTP 提供程序之一。 我们将在 Ubuntu 20.04 服务器上设置 postfix,并使用它向我们自己的虚拟服务发送一封电子邮件,以测试它是否有效。
首先,我们将为 apt 包管理器发出更新缓存命令
sudo apt update
接下来,我们将使用以下命令安装 postfix –
sudo apt install postfix
安装会打开一堆提示,请进行以下选择 -
- 一般类型的邮件配置? :为此,我们将选择一个 Internet 站点,因为这符合我们的基础设施需求。
- 系统邮件名称:如果用户未指定发件人域,这是用于发送电子邮件的基本域。 因此,如果您从 user1 发送电子邮件并且未指定域,则这将被添加到电子邮件的后缀中。 因此,如果给出 example.com,它将从 [email protected] 发送电子邮件。
那应该照顾基本配置。 如需完整设置,请遵循我们的邮件服务器设置指南。 现在端口 25 应该可用,您可以使用任何命令检查它的开放情况 -
1 2 3 4 5 |
sudo lsof - i - P - n | grep LISTEN sudo netstat - tulpn | grep LISTEN sudo ss - tulpn | grep LISTEN sudo lsof - i : 22 ## see a specific port such as 22 ## sudo nmap - sTU - O IP - address - Here |
我们正在寻找这样的东西

master 2575 root 13u IPv4 30244 0t0 TCP *:25 (LISTEN)
master 2575 root 14u IPv6 30245 0t0 TCP *:25 (LISTEN)
如果您甚至需要重新配置设置,只需运行命令 -
1 |
sudo dpkg - reconfigure postfix |
我们都设置好我们的 SMTP 服务器应该启动并运行。 接下来,我们可以向 Internet 上的某些用户发送电子邮件,或者捕获所有电子邮件以进行测试。
使用 SMTP 服务器
通常,电子邮件客户端是我们大多数人与 SMTP 服务器交互的最常见方式,但您也可以使用 telnet 直接与其交互。 我们将从这种方法开始,因为它很酷。
在 linux 中使用 telnet 发送邮件
通过输入以下命令连接到本地 SMTP 服务器 -
1 |
telnet localhost 25 |
你会看到这样的东西——
1 2 3 4 |
root @ mailtest : ~ # telnet localhost 25 Trying : : 1... Connected to localhost . Escape character is '^]' . |
如果您无法连接,请确保 postfix 正在运行并检查端口 25 是否打开。
现在让我们发送一封电子邮件说 [email protected](捕获所有电子邮件)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
root @ mailtest : ~ # telnet localhost 25 Trying : : 1... Connected to localhost . Escape character is '^]' . 220 mailtest ESMTP Postfix ( Ubuntu ) ehlo localhost 250 - li292 - 146.members.linode.com 250 - PIPELINING 250 - SIZE 10240000 250 - VRFY 250 - ETRN 250 - STARTTLS 250 - ENHANCEDSTATUSCODES 250 - 8BITMIME 250 - DSN 250 - SMTPUTF8 250 CHUNKING mail from : bob @ example . com 250 2.1.0 Ok rcpt to : smtptest @ freesmtpservers . com 250 2.1.5 Ok data 354 End data with . Subject : Testing Email service This is a test email . . 250 2.0.0 Ok : queued as A6ADC402D4 quit 221 2.0.0 Bye Connection closed by foreign host . |
去检查[email protected]的收件箱中是否收到了电子邮件,或者如果您使用了其他收件人,可以在其收件箱中检查它。
从 linux 命令行发送电子邮件
在 linux 上,我们可以使用 sendmail 命令快速发送电子邮件。
1 |
echo "Subject: hello" | sendmail - v smtptest @ freesmtpservers . com |
我希望你喜欢我的文章,如果你觉得我遗漏了一些观点或在某个地方有错误,请告诉我,我会在这里更新。