如何使用SWAKS与SparkPost

2021年6月24日

电子邮件

1 min read

如何使用SWAKS与SparkPost

关键要点

    • SWAKS (Swiss Army Knife for SMTP) 是一种强大的命令行工具,用于以灵活、适合脚本的方式发送电子邮件和测试SMTP连接。

    • 与telnet相比,它通过提供清晰的标志、身份验证处理、附件、TLS测试、定时和自定义标题,简化了手动SMTP测试。

    • 该工具可在多个平台上使用,尽管功能广泛,但对初学者友好。

    • 基本用法包括发送简单消息、添加主题行、包括标题和发送附件,无需手动进行base64转换。

    • SWAKS 非常适合进行可靠性检查和监控——它可以通过cron来安排定期的“它是否仍然有效?”测试发送。

    • 它还可以通过计时SMTP握手来测量延迟和连接速度,而无需发送完整电子邮件。

    • SWAKS 支持详细的TLS测试,包括验证与现代标准(如TLS 1.2) 的兼容性(由 SparkPost 要求)。

    • 使用 SparkPost 时,SWAKS 允许轻松注入SparkPost SMTP服务器,使用API密钥进行身份验证。

    • TLS版本强制(例如,tlsv1_2)让发件人可以测试他们的环境,确保符合 SparkPost 的弃用标准。

    • SWAKS 提供详细的调试,帮助验证SMTP配置和诊断连接失败。

    • 一个.swaksrc配置文件允许用户存储默认参数,为重复测试启用一键发送。

    • SWAKS 支持命令行覆盖,让用户在需要时动态调整任意字段。

Q&A 精华

  • SWAKS 是什么?

    一个灵活的命令行SMTP测试工具,被称为电子邮件的“瑞士军刀”。

  • 为什么使用SWAKS而不是telnet?

    它自动化了SMTP握手,支持身份验证、TLS、附件和标头,使测试更加轻松和强大。

  • SWAKS 支持哪些平台?

    Linux、macOS 和大多数类 Unix 系统,在它们之间具有相似的语法。

  • 如何使用 SWAKS 发送基本测试邮件?

    通过运行一个简单的命令,指定收件人、发件人和服务器地址。

  • SWAKS 可以发送带有主题行和自定义标头的消息吗?

    是的——它支持主题、发件人/收件人覆写和任意头注入。

  • SWAKS 支持发送附件吗?

    是的 — 并且它会自动为您处理 base64 编码。

  • SWAKS可以帮助测试TLS兼容性吗?

    绝对可以 — 您可以强制使用特定的 TLS 版本(如 TLS 1.2)或测试密码支持。

  • 为什么在发送到 SparkPost 时,TLS 1.2 重要?

    较旧的 TLS 版本已弃用;SparkPost 要求 TLS 1.2+ 进行安全连接。

  • 使用SWAKS时,如何使用SparkPost进行身份验证?

    在命令中使用您的SparkPost API密钥作为SMTP密码。

  • SWAKS 能够测量性能或延迟吗?

    是的 — 使用 time 命令和部分 SMTP 周期来测量握手速度。

  • SWAKS 支持 automation 吗?

    是的 —— 你可以通过cron作业运行它来反复测试SMTP环境。

  • 什么是.swaksrc文件以及为什么使用它?

    这是一个配置文件,存储默认的 SWAKS 参数,可通过一个命令发送,并具有可选的覆盖选项。

去年,我们发布了一篇博客文章,展示了如何使用无处不在且非常有用的telnet工具来检查SMTP连接

下一步是通过使用一个非常棒的“下一等级”工具(它称自己为电子邮件的瑞士军刀)来简化手动过程,这个工具叫做SWAKS。这是一款命令行工具,可以通过SMTP发送电子邮件。它不仅易于使用,还能在需要时同时提供无数选项。

起初,我对大量选项感到害怕,但使用最基本的选项完全可行。如果您遇到任何问题,只需收藏此页面,复制并粘贴示例,然后根据需要进行修改。在本博客结尾时,一旦您熟悉并且对SWAKS命令没有太多变异/动态,我将向您展示如何创建一个预设所有默认参数的配置文件。这使得运行SWAKS只需按下一个按钮(好吧,“键”)即可实现! 

在本练习中,我们将从CentOS 7服务器运行命令,但命令在所有支持的平台上都类似。如上所述,如果您被卡住,只需直接复制并粘贴到您的系统中,然后进行必要的修改。以下是基础:

去年,我们发布了一篇博客文章,展示了如何使用无处不在且非常有用的telnet工具来检查SMTP连接

下一步是通过使用一个非常棒的“下一等级”工具(它称自己为电子邮件的瑞士军刀)来简化手动过程,这个工具叫做SWAKS。这是一款命令行工具,可以通过SMTP发送电子邮件。它不仅易于使用,还能在需要时同时提供无数选项。

起初,我对大量选项感到害怕,但使用最基本的选项完全可行。如果您遇到任何问题,只需收藏此页面,复制并粘贴示例,然后根据需要进行修改。在本博客结尾时,一旦您熟悉并且对SWAKS命令没有太多变异/动态,我将向您展示如何创建一个预设所有默认参数的配置文件。这使得运行SWAKS只需按下一个按钮(好吧,“键”)即可实现! 

在本练习中,我们将从CentOS 7服务器运行命令,但命令在所有支持的平台上都类似。如上所述,如果您被卡住,只需直接复制并粘贴到您的系统中,然后进行必要的修改。以下是基础:

去年,我们发布了一篇博客文章,展示了如何使用无处不在且非常有用的telnet工具来检查SMTP连接

下一步是通过使用一个非常棒的“下一等级”工具(它称自己为电子邮件的瑞士军刀)来简化手动过程,这个工具叫做SWAKS。这是一款命令行工具,可以通过SMTP发送电子邮件。它不仅易于使用,还能在需要时同时提供无数选项。

起初,我对大量选项感到害怕,但使用最基本的选项完全可行。如果您遇到任何问题,只需收藏此页面,复制并粘贴示例,然后根据需要进行修改。在本博客结尾时,一旦您熟悉并且对SWAKS命令没有太多变异/动态,我将向您展示如何创建一个预设所有默认参数的配置文件。这使得运行SWAKS只需按下一个按钮(好吧,“键”)即可实现! 

在本练习中,我们将从CentOS 7服务器运行命令,但命令在所有支持的平台上都类似。如上所述,如果您被卡住,只需直接复制并粘贴到您的系统中,然后进行必要的修改。以下是基础:

安装 SWAKS

sudo yum install epel-release -y && sudo yum install swaks -y
sudo yum install epel-release -y && sudo yum install swaks -y
sudo yum install epel-release -y && sudo yum install swaks -y

使用 SWAKS 发送您的第一封电子邮件

安装后,以下是发送消息的基本语法。在此示例中,我们使用服务器的本地地址:


swaks -s 127.0.0.1 -f sender@from.com -t recipient@recipient.com


发送一条带有“Subject”行标题和其他标题的消息,然后在正文中包含“Hello World!”文本:


swaks -s 127.0.0.1 
  -f me@from.com 
  -t them@recipient.com 
  --header "Subject: Hello! This is the subject header" 
  --header "Second_Header: 123" 
  --header "Third_Header: XYZ" 
  --body "Hello World!"


以下是添加附件的方法,SWAKS 为您进行 base64 转换,非常适合测试消息大小限制:


swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --attach /path/to/file.tgz

安装后,以下是发送消息的基本语法。在此示例中,我们使用服务器的本地地址:


swaks -s 127.0.0.1 -f sender@from.com -t recipient@recipient.com


发送一条带有“Subject”行标题和其他标题的消息,然后在正文中包含“Hello World!”文本:


swaks -s 127.0.0.1 
  -f me@from.com 
  -t them@recipient.com 
  --header "Subject: Hello! This is the subject header" 
  --header "Second_Header: 123" 
  --header "Third_Header: XYZ" 
  --body "Hello World!"


以下是添加附件的方法,SWAKS 为您进行 base64 转换,非常适合测试消息大小限制:


swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --attach /path/to/file.tgz

安装后,以下是发送消息的基本语法。在此示例中,我们使用服务器的本地地址:


swaks -s 127.0.0.1 -f sender@from.com -t recipient@recipient.com


发送一条带有“Subject”行标题和其他标题的消息,然后在正文中包含“Hello World!”文本:


swaks -s 127.0.0.1 
  -f me@from.com 
  -t them@recipient.com 
  --header "Subject: Hello! This is the subject header" 
  --header "Second_Header: 123" 
  --header "Third_Header: XYZ" 
  --body "Hello World!"


以下是添加附件的方法,SWAKS 为您进行 base64 转换,非常适合测试消息大小限制:


swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --attach /path/to/file.tgz

Advanced SWAKS 测试技术

您已经掌握了基本知识! 现在让我们看看您还能如何提升您的设置游戏。 以下是一些想法:

  • 使用像 chron 这样的调度程序来进行基本的“是否有效”测试,这些测试可以作为基础,甚至可以增强您的监控系统。

  • 测量连接和断开邮件服务器连接时的延迟。

  • 测试不同的 TLS 版本和加密

您不会被单独留下,我会展示如何进行以上所有操作。

您已经掌握了基本知识! 现在让我们看看您还能如何提升您的设置游戏。 以下是一些想法:

  • 使用像 chron 这样的调度程序来进行基本的“是否有效”测试,这些测试可以作为基础,甚至可以增强您的监控系统。

  • 测量连接和断开邮件服务器连接时的延迟。

  • 测试不同的 TLS 版本和加密

您不会被单独留下,我会展示如何进行以上所有操作。

您已经掌握了基本知识! 现在让我们看看您还能如何提升您的设置游戏。 以下是一些想法:

  • 使用像 chron 这样的调度程序来进行基本的“是否有效”测试,这些测试可以作为基础,甚至可以增强您的监控系统。

  • 测量连接和断开邮件服务器连接时的延迟。

  • 测试不同的 TLS 版本和加密

您不会被单独留下,我会展示如何进行以上所有操作。

使用 SWAKS 通过 SparkPost SMTP

这次我们要注入到我们的SparkPost服务器中。

发送信息到我们的SparkPost服务器(如何创建API密钥,以及SMTP选项)。一旦获取到你的认证密钥,将其粘贴到命令中(确保密钥的安全和保密!):


swaks 
  --server smtp.sparkpostmail.com:587 
  --tls 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_AUTH_KEY" 
  -f me@from.com 
  -t them@recipient.com

如果你正在寻找通过SMTP发送到我们服务器的故障排除指导,请查看我们的SMTP故障排除文章。对于基本的SMTP连接测试,你也可以使用手动telnet会话验证SMTP连接

测试TLS版本和密码兼容性

响应最佳安全实践,SparkPost已弃用所有旧的TLS版本,除v1.2及以上版本外。如果你想查看你的系统是否兼容,SWAKS允许你测试特定的TLS版本和密码。


swaks 
  -s smtp.sparkpostmail.com:587 
  --tls 
  -f me@from.com 
  -t them@recipient.com 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_API_KEY" 
  -tlsp tlsv1_2 
  --tls-cipher ECDHE-RSA-AES128-GCM-SHA256

在这个例子中,我们使用“tlsv1_2”,但请继续将其更改为“tlsv1_1”,并在其他域上使用以观察其兼容性。

测量SMTP连接延迟

如果你想计时邮件服务器响应的速度呢?SWAKS可以通过SMTP循环,在某些点中断而不发送消息,并且你可以使用“time”命令来计时,它会显示在输出的末尾:


$ time swaks -s 127.0.0.1 
  -f sender@from.com 
  -t them@recipient.com 
  test 
  --quit-after RCPT
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
...
 -> RCPT TO:<them@recipient.com>
<- 250 2.1.5 <them@recipient.com> ok
 -> QUIT
<

这次我们要注入到我们的SparkPost服务器中。

发送信息到我们的SparkPost服务器(如何创建API密钥,以及SMTP选项)。一旦获取到你的认证密钥,将其粘贴到命令中(确保密钥的安全和保密!):


swaks 
  --server smtp.sparkpostmail.com:587 
  --tls 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_AUTH_KEY" 
  -f me@from.com 
  -t them@recipient.com

如果你正在寻找通过SMTP发送到我们服务器的故障排除指导,请查看我们的SMTP故障排除文章。对于基本的SMTP连接测试,你也可以使用手动telnet会话验证SMTP连接

测试TLS版本和密码兼容性

响应最佳安全实践,SparkPost已弃用所有旧的TLS版本,除v1.2及以上版本外。如果你想查看你的系统是否兼容,SWAKS允许你测试特定的TLS版本和密码。


swaks 
  -s smtp.sparkpostmail.com:587 
  --tls 
  -f me@from.com 
  -t them@recipient.com 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_API_KEY" 
  -tlsp tlsv1_2 
  --tls-cipher ECDHE-RSA-AES128-GCM-SHA256

在这个例子中,我们使用“tlsv1_2”,但请继续将其更改为“tlsv1_1”,并在其他域上使用以观察其兼容性。

测量SMTP连接延迟

如果你想计时邮件服务器响应的速度呢?SWAKS可以通过SMTP循环,在某些点中断而不发送消息,并且你可以使用“time”命令来计时,它会显示在输出的末尾:


$ time swaks -s 127.0.0.1 
  -f sender@from.com 
  -t them@recipient.com 
  test 
  --quit-after RCPT
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
...
 -> RCPT TO:<them@recipient.com>
<- 250 2.1.5 <them@recipient.com> ok
 -> QUIT
<

这次我们要注入到我们的SparkPost服务器中。

发送信息到我们的SparkPost服务器(如何创建API密钥,以及SMTP选项)。一旦获取到你的认证密钥,将其粘贴到命令中(确保密钥的安全和保密!):


swaks 
  --server smtp.sparkpostmail.com:587 
  --tls 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_AUTH_KEY" 
  -f me@from.com 
  -t them@recipient.com

如果你正在寻找通过SMTP发送到我们服务器的故障排除指导,请查看我们的SMTP故障排除文章。对于基本的SMTP连接测试,你也可以使用手动telnet会话验证SMTP连接

测试TLS版本和密码兼容性

响应最佳安全实践,SparkPost已弃用所有旧的TLS版本,除v1.2及以上版本外。如果你想查看你的系统是否兼容,SWAKS允许你测试特定的TLS版本和密码。


swaks 
  -s smtp.sparkpostmail.com:587 
  --tls 
  -f me@from.com 
  -t them@recipient.com 
  --auth-user SMTP_Injection 
  --auth-password "YOUR_API_KEY" 
  -tlsp tlsv1_2 
  --tls-cipher ECDHE-RSA-AES128-GCM-SHA256

在这个例子中,我们使用“tlsv1_2”,但请继续将其更改为“tlsv1_1”,并在其他域上使用以观察其兼容性。

测量SMTP连接延迟

如果你想计时邮件服务器响应的速度呢?SWAKS可以通过SMTP循环,在某些点中断而不发送消息,并且你可以使用“time”命令来计时,它会显示在输出的末尾:


$ time swaks -s 127.0.0.1 
  -f sender@from.com 
  -t them@recipient.com 
  test 
  --quit-after RCPT
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
...
 -> RCPT TO:<them@recipient.com>
<- 250 2.1.5 <them@recipient.com> ok
 -> QUIT
<

使用配置文件自动化 SWAKS

正如承诺的那样,如果您读到了这里,那么奖励就是这个简单的配置文件,用于设置默认参数:


$ cd $HOME
$ vim .swaksrc


将以下内容复制并粘贴到 .swaksrc 文件中:


--from swakstest@jasdevism.com
-h-From: "Jas Swaks" <swakstest@jasdevism.com>
-s 127.0.0.1
--body "This is a test!"
--to jsingh@sparkpost.com


一旦保存它,只需键入“swaks”,它会自动填充所有内容并发出!更好的是,您可以通过在命令行中添加来覆盖它,比如您想要一个不同的收件人:


swaks -t recipient@somewherelse.com

正如承诺的那样,如果您读到了这里,那么奖励就是这个简单的配置文件,用于设置默认参数:


$ cd $HOME
$ vim .swaksrc


将以下内容复制并粘贴到 .swaksrc 文件中:


--from swakstest@jasdevism.com
-h-From: "Jas Swaks" <swakstest@jasdevism.com>
-s 127.0.0.1
--body "This is a test!"
--to jsingh@sparkpost.com


一旦保存它,只需键入“swaks”,它会自动填充所有内容并发出!更好的是,您可以通过在命令行中添加来覆盖它,比如您想要一个不同的收件人:


swaks -t recipient@somewherelse.com

正如承诺的那样,如果您读到了这里,那么奖励就是这个简单的配置文件,用于设置默认参数:


$ cd $HOME
$ vim .swaksrc


将以下内容复制并粘贴到 .swaksrc 文件中:


--from swakstest@jasdevism.com
-h-From: "Jas Swaks" <swakstest@jasdevism.com>
-s 127.0.0.1
--body "This is a test!"
--to jsingh@sparkpost.com


一旦保存它,只需键入“swaks”,它会自动填充所有内容并发出!更好的是,您可以通过在命令行中添加来覆盖它,比如您想要一个不同的收件人:


swaks -t recipient@somewherelse.com

其他新闻

阅读更多来自此类别的内容

A person is standing at a desk while typing on a laptop.

完整的AI原生平台,可与您的业务一起扩展。

© 2025 Bird

A person is standing at a desk while typing on a laptop.

完整的AI原生平台,可与您的业务一起扩展。

© 2025 Bird