英语法语西班牙文

OnWorks 网站图标

swaks - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 swaks

这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 swak,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


swaks - 瑞士军刀 SMTP,通用 smtp 交易测试器

商品描述


swaks 的主要设计目标是成为一个灵活的、可编写脚本的、面向事务的 SMTP 测试
工具。 它处理 SMTP 功能和扩展,例如 TLS、身份验证和
流水线; SMTP 协议的多个版本,包括 SMTP、ESMTP 和 LMTP; 和
多种传输方法,包括 unix 域套接字、互联网域套接字和
到衍生进程的管道。 可以在环境变量中指定选项,
配置文件,以及允许最大可配置性和易用性的命令行
对于操作员和脚本员。

主页


将标准测试电子邮件发送至 [电子邮件保护] 在 test-server.example.net 的端口 25 上:

交换——到 [电子邮件保护] --服务器测试-server.example.net

发送标准测试电子邮件,要求以用户身份进行 CRAM-MD5 身份验证 [电子邮件保护].
“X-Test”标题将添加到电子邮件正文中。 认证密码将是
提示。

交换——到 [电子邮件保护] - 从 [电子邮件保护] --auth CRAM-MD5 --auth-用户 [电子邮件保护] --header-X-Test "测试邮件"

使用附件中的 EICAR 测试病毒扫描程序。 不显示消息数据部分。:

交换-t [电子邮件保护] --attach --server test-server.example.com --suppress-data

在电子邮件正文中使用 GTUBE 测试垃圾邮件扫描程序,通过 MX 记录路由
例子.com:

交换——到 [电子邮件保护] --body /path/to/gtube/文件

将标准测试电子邮件发送至 [电子邮件保护] 通过 UNIX 使用 LMTP 协议
域套接字文件

交换——到 [电子邮件保护] --socket /var/lda.sock --协议 LMTP

报告在测试服务器上不可验证的文本文件中的所有收件人:

用于`cat /path/to/email/file`中的E
do
swaks --to $E --server test-server.example.com --quit-after RCPT --hide-all
[$? -ne 0 ] && 回显 $E
完成

条款 AND 公约


本文件试图在使用以下术语时保持一致和具体
减少混乱。

交易
事务是通过传输打开连接到目标并使用
消息传递协议来尝试传递消息。

目标
事务的目标是 swaks 连接的对象。 这个通用术语是
在整个文档中使用,因为大多数其他术语不正确地暗示某事
关于正在使用的交通工具。

Transport / 运输
传输是用于连接到目标的底层方法。

协议
协议是用于与目标通信的应用程序语言。 这个
文档使用 SMTP 来泛指所有三种支持的协议,除非它
声明它是在谈论特定的“SMTP”协议并排除其他协议。

留言信息
存在用于传输消息的 SMTP 协议,即采用约定格式的一组字节
有一个发件人和一个收件人。

信封
消息的信封包含消息的“真实”发送者和接收者。 它可以
也称为其组件,信封发送者和信封接收者。 这是
重要的是要注意,邮件信封不必匹配其收件人:和发件人:
标头。

数据
SMTP 事务的 DATA 部分是正在发送的实际消息
运输。 它由消息的标题和正文组成。 数据和身体
有时用作同义词,但在此它们始终是两个不同的事物
文档。


消息的标题被定义为消息 DATA 部分之前的所有行
第一个空行。 它们包含有关将显示的电子邮件的信息
到收件人,例如收件人:,发件人:,主题:等。在此文档中,标题将
始终以大写的第一个字母和结尾的冒号书写。

Body
消息的正文是其 DATA 部分的第一个空行之后的部分。

OPTION 处理


为防止本文档中潜在的混淆,swaks 的标志始终称为
一个选项”。 如果该选项采用附加数据,则该附加数据称为
选项的参数。 例如,“--来自 [电子邮件保护]"可能会提供给
swaks 在命令行上,“--from”是选项,“[电子邮件保护]“ 存在
——来自的论点。

可以通过三种方式为 swaks 提供选项。 它们可以在配置中指定
文件、环境变量和命令行。 视具体选项而定
并且无论是否给它一个参数,swaks 可能会提示用户输入参数。

当 swaks 评估它的选项时,它首先寻找一个配置文件(在一个
默认位置或使用 --config 指定)。 然后它评估任何选项
环境变量。 最后,它评估命令行选项。 在每一轮
处理,之前设置的任何选项都将被覆盖。 此外,任何选项都可以
以“no-”为前缀,使 swaks 忘记变量先前已设置。
此功能是必要的,因为许多选项处理已定义但无参数
与未定义不同。

下面列出了使用每种类型的确切机制和格式。

配置文件
配置文件可用于设置常用或异常详细的选项。
默认情况下,swaks 按顺序查找 $SWAKS_HOME/.swaksrc、$HOME/.swaksrc 和
$LOGDIR/.swaksrc。 如果发现其中之一存在(并且未使用 --config )
该文件用作配置文件。

此外,可以使用指定非默认位置的配置文件
--配置。 如果已设置且未给出参数,则 swaks 将不使用任何
配置文件,包括任何默认文件。 如果 --config 指向一个可读的
文件,它用作配置文件,覆盖可能存在的任何默认值。 如果
它指向一个不可读的文件,将显示错误并且 swaks 将退出。

还可以通过在末尾添加选项来创建一组“可移植”默认值
swaks 程序文件。 在分发时,最后一行 swaks 应该是“__END__”。 任何
添加在 __END__ 之后的行将被视为配置文件的内容。
这允许一组用户首选项自动从服务器复制到服务器
在单个文件中。

如果存在且未明确关闭配置文件,则 __END__
配置总是被读取。 每个配置文件只使用一个
调用 swak,即使指定了多个配置文件。 指定
不带参数的 --config 选项关闭 __END__ 的处理
config 和任何实际的配置文件。

在配置文件中以散列 (#) 开头的行将被忽略。 所有其他线路
假定是 swaks 的一个选项,前导破折号或破折号是可选的。
选项行第一个空格之后的所有内容都被假定为选项的参数
并且没有经过外壳处理。 因此,引用通常是不需要的,将是
字面上包括在论证中。 这是一个内容的例子
配置文件:

# 始终使用此发件人,无论是服务器还是登录用户
- 从 [电子邮件保护]
# 我更喜欢我的测试电子邮件有一个漂亮的标题。 笔记
# 选项上没有破折号,周围没有引号
# 整个论点。
h-来自:“弗雷德的例子”[电子邮件保护]>

环境变量
可以通过环境变量提供选项。 变量的形式为
$SWAKS_OPT_name,其中 name 是将在
命令行。 因为在大多数情况下,环境变量名称中不允许使用破折号
unix-ish shell,不应使用前导破折号和选项内的任何破折号
名称应替换为下划线。 以下将创建相同的选项
配置文件示例中显示:

$ SWAKS_OPT_from='[电子邮件保护]'
$ SWAKS_OPT_h_From='"Fred 示例"[电子邮件保护]>'

将变量设置为空值与在命令行中指定它相同
没有任何争论。 例如,设置 SWAKS_OPT_server="" 会导致 swaks
在每次调用时提示使用要连接的服务器。

除了设置等价的命令行选项外,还可以设置 SWAKS_HOME
到包含要使用的默认 .swaksrc 的目录。

命令行选项
向 swaks 提供选项的最后一种方法是通过命令行。 选项
行为方式与大多数 unix-ish 命令行程序一致。 很多选择
有短格式和长格式(例如 -s 和 --server)。 按照惯例短
选项用单破折号指定,长选项用双号指定
短跑。 这只是一个约定,任何一个前缀都适用于任何一种类型。

下面演示配置文件和环境中显示的例子
可变部分:

$ swaks——来自 [电子邮件保护] --h-From: '"Fred 示例"[电子邮件保护]>'

运输


swaks 可以通过 unix 管道(“pipes”)、unix 域套接字(“unix
套接字”),或互联网域套接字(“网络套接字”)。通过网络套接字连接
是默认行为。 由于所用交通工具的独特性,每组
以下部分中的选项是相互排斥的。 指定多个
--server、--pipe 或--socket 将导致错误。 混合其他选项
传输类型只会导致忽略不相关的选项。 下面是一个
每种运输方式的简要说明以及特定于该运输方式的选项
运输类型。

网络插座
这种传输尝试通过 TCP/IP 传递消息,这是用于
传送 SMTP。 这是 swaks 的默认传输。 如果没有 --server,
--pipe 或 --socket 给出然后使用此传输和目标服务器
从收件人的域确定(有关更多详细信息,请参阅下面的 --server )。

这种传输需要 IO::Socket 模块,它是标准 perl 的一部分
分配。 如果此模块不可加载,则尝试使用此传输将
导致错误和程序终止。

当存在 IO::Socket::INET6 模块时支持 IPv6。

-s, --server [目标邮件服务器[:端口]]
明确告诉 swaks 使用网络套接字并指定主机名或 IP
要连接的地址,如果没有给出参数则提示。 如果这个选项是
未给出且未给出其他传输选项,目标邮件服务器为
根据收件人电子邮件域的适当 DNS 记录确定
使用 Net::DNS 模块的地址。 如果 Net::DNS 不可用,swaks 将
尝试连接到 localhost 进行交付。 可以选择设置目标端口
这里。 支持的格式包括 SERVER:PORT(支持名称和 IPv4
地址); [SERVER]:PORT 和 SERVER/PORT(支持名称、IPv4 和 IPv6
地址)。 另请参阅--copy-routing。

-p, --port [端口]
指定要使用目标上的哪个 TCP 端口,如果没有参数则提示
列出。 参数可以是服务名称(由 获取服务名称(3)) 或
一个端口号。 默认端口由 --protocol 选项确定。 看
--protocol 了解更多详情。

-li, --local-interface [IP 或主机名[:port]]
使用参数作为传出 SMTP 连接的本地接口,或提示
用户如果没有给出参数。 参数可以是 IP 地址或主机名。 默认
动作是让操作系统选择本地接口。 参见 --server
关于 :port 格式的附加评论。

-lp, --local-port [端口]
指定发起事务的传出端口。 如果这个选项是
未指定系统将选择一个临时端口。 请注意,普通用户
无法指定某些端口。

--copy-routing [域]
该参数被解释为电子邮件地址的域部分,并用于
使用与查找目标服务器相同的逻辑来查找目标服务器
收件人电子邮件地址的目标服务器。 有关更多详细信息,请参阅 --to 选项
关于如何从电子邮件域确定目标。

-4,-6
强制使用 IPv4 或 IPv6。

UNIX 套接字
此传输方法尝试通过 unix 域套接字文件传递消息。
这对于测试侦听套接字文件的 MTA/MDA 很有用(例如,测试
LMTP 交付给 Cyrus)。 这种传输需要 IO::Socket 模块,它是一部分
标准的 perl 发行版。 如果此模块不可加载,则尝试使用
这种传输将导致错误和程序终止。

--socket [/path/to/socket/文件]
此选项将 unix 域套接字文件作为其参数。 如果 swaks 不能
打开这个套接字它会显示一个错误并退出。

管道
这种传输尝试产生一个进程并通过管道与它通信。 这
生成的程序必须准备好在 STDIN/STDOUT 上充当邮件服务器。 任何
设计为从 inet/xinet 运行的 MTA 应该支持这一点。 此外,一些 MTA
提供可通过 STDIN/STDOUT 进行通信的测试模式。 这种运输
可用于自动化该测试。 例如,如果您实施了 DNSBL 检查
使用 Exim 并且您想确保它正常工作,您可以运行 'swaks --pipe
“exim -bh 127.0.0.2”'。 在理想的世界中,您正在与之交谈的进程应该表现
就像标准输入和标准输出上的 SMTP 服务器一样。 任何调试都应发送至
stderr,它将被定向到您的终端。 在现实世界中,swaks 可以
通常在孩子的标准输出上处理一些调试,但不能保证如何
它可以处理多少。

这种传输需要 IPC::Open2 模块,它是标准 perl 的一部分
分配。 如果此模块不可加载,则尝试使用此传输将
导致错误和程序终止。

--pipe [/path/to/command 和 arguments]
为进程提供进程名称和参数。 swaks 将尝试产卵
进程并通过管道与它通信。 如果参数不是
可执行文件 swaks 将显示错误并退出。

外交协定 配置


这些选项与协议层有关。

-t, --to [电子邮件地址[,电子邮件地址,...]]
告诉 swaks 使用参数作为电子邮件的信封收件人,或提示
如果没有提供参数,则接收者。 如果提供了多个收件人并且
需要收件人域来确定路由最后一个收件人的域
提供使用。

此选项没有默认值。 如果没有通过任何方式提供收件人
意味着,将提示用户以交互方式提供一个。 唯一的例外
是如果提供了一个 --quit-after 值,这将导致 smtp 事务被
在需要接收者之前终止。

-f, --from [电子邮件地址]
使用参数作为电子邮件的信封发件人,如果未指定参数,则提示用户。
可以提供字符串 <> 来表示空发送者。 如果用户没有指定
发件人地址使用默认值。 默认发件人的域部分是
最好猜测本地主机的完全限定域名。 的方法
确定本地部分各不相同。 在 Windows 上, Win32::登录名() 用来。 在unix-
ish 平台,如果设置了 $LOGNAME 环境变量,则使用它。 除此以外
获取数据(3) 使用。 另见--force-getpwuid。

--ehlo, --lhlo, -h, --helo [helo 字符串]
用作 HELO/EHLO/LHLO 命令的参数的字符串,或者如果没有参数则提示使用
指定的。 如果不使用此选项,则最好猜测完全限定域名
使用本地主机的。 如果 Sys::Hostname 模块是基础的一部分
分发,不可用时,用户将被提示输入 HELO 值。 注意
已观察到 Sys::Hostname 在某些情况下无法找到本地主机名
情况。 这与 Sys::Hostname 不可用的效果相同。

-q, --quit-after [停止点]
应停止事务的点。 当请求的停止点
在交易中达成,前提是 swaks 在之前没有出错
到达它时,swaks 将发送“QUIT”并尝试干净地关闭连接。
这些是关于其含义的有效论据和注释。

连接,横幅
在收到目标的问候横幅后终止会话。

FIRST-HELO、FIRST-EHLO、FIRST-LHLO
在 STARTTLS(但不是 tls-on-connect)会话中,在
两个 HELO 中的第一个。 在非 STARTTLS 事务中,行为与 HELO 相同
(见下文)。

客户端
发送 XCLIENT 后退出

TLS 在 TLS 协商后立即退出事务。 请注意,这
根据是 STARTTLS 还是 tls-on-connect 发生在不同的地方
用过的。 这总是在协商 TLS 之后退出,
不管是否尝试过。

HELO,EHLO,LHLO
在 STARTTLS 或 XCLIENT 会话中,在第二个 HELO 之后退出。 否则退出
在第一个也是唯一的 HELO 之后。

认证
验证后退出。 这总是在身份验证之后退出
无论是否尝试,都将进行谈判。

邮件,发件人
发送 MAIL FROM: 后退出。

RCPT, 到
发送 RCPT TO: 后退出。

--timeout [时间]
使用参数作为 SMTP 事务超时,或者如果没有给出参数则提示用户。
参数可以是一个纯数字,将被解释为秒,或者可以
有一个说明符 s 或 m(5s = 5 秒,3m = 180 秒)。 作为特殊情况,0
意味着不要让交易超时。 默认值为 30 秒。

--protocol [协议]
指定要在事务中使用的协议。 有效选项显示在
下表。 目前的“核心”协议是 SMTP、ESMTP 和 LMTP。 通过使用
这些协议类型的变体可以简洁地指定默认端口,无论是
应该尝试身份验证,以及应该使用的 TLS 连接类型
尝试过。 默认协议是 ESMTP。 该表展示了可用的
--protocol 的参数和每个设置为副作用的选项:

SMTP
HELO, "-p 25"

SSMTP
EHLO->HELO, "-tlsc -p 465"

新加坡SSMTPA
EHLO->HELO, "-a -tlsc -p 465"

SMTPS
HELO, "-tlsc -p 465"

ESMTP
EHLO->HELO, "-p 25"

欧洲航空运输协会
EHLO->HELO, "-a -p 25"

电子邮件传输协议
EHLO->HELO, "-tls -p 25"

ESMPSA
EHLO->HELO, "-a -tls -p 25"

LMTP
LHLO, "-p 24"

LMTPA
LHLO, "-a -p 24"

LMMTPS
LHLO, "-tls -p 24"

LMTPSA
LHLO, "-a -tls -p 24"

- 管道
如果远程服务器支持它,请尝试 SMTP PIPELINING (RFC 2920)。 这是一个
较年轻的选项,如果您遇到问题,请通知作者。
潜在的问题领域包括服务器接受数据,即使没有有效的
接收者(在这种情况下,swaks 应该发送空体,而不是 QUIT)并导致死锁
通过发送超出 tcp 窗口大小的数据包。

--force-getpwuid
告诉 swaks 使用 getpwuid 方法来查找默认发件人本地部分
首先尝试 $LOGNAME。

TLS / 加密


这些是与加密交易相关的选项。 这些已经过测试和
确认适用于所有三种运输方法。 Net::SSLeay 模块用于
在请求时执行加密。 如果此模块不可加载,则 swaks 将
忽略 TLS 请求或错误输出,具体取决于请求是否可选。
STARTTLS 被定义为 ESMTP 协议中的扩展,如果出现以下情况将不可用
--protocol 设置为 smtp 的变体。 因为它在协议中没有定义
本身,--tls-on-connect 可用于任何协议类型,如果目标支持它。

协商 TLS 连接不需要本地证书。 然而,一些
服务器使用客户端证书检查来验证客户端是否被允许连接。
可以通过使用 --tls-cert 告诉 swaks 使用特定的本地证书
和 --tls-key 选项。

-tls
需要连接才能使用 STARTTLS。 如果 TLS 由于任何原因不可用则退出(不是
广告,谈判失败等)。

-tlso, --tls-可选
尝试使用 STARTTLS(如果可用),如果 TLS 是,则继续正常事务
因任何原因无法协商。 请注意,这是一个半无用的选项,因为
当前已实现,因为在协商失败后连接的状态
未知。 在某些情况下,如版本不匹配,连接应保留为
纯文本。 在其他情况下,如验证失败,服务器端可能认为它
应该继续说 TLS,而客户端认为它是纯文本。 可能有一个
尝试在未来添加更细粒度的状态检测,但现在请注意
如果尝试进行 TLS 协商,则此选项可能会发生奇怪的事情并且
将失败。

-tlsos,--tls-可选-严格
如果可用,尝试使用 STARTTLS。 如果协商了 TLS,则继续进行交易
成功或 STARTTLS 未公布。 如果 STARTTLS 被通告但 TLS
协商失败,视为错误并中止交易。 由于注意事项
上面,这是一个比 --tls-optional 更理智的选项。

--tlsc,--tls-on-connect
连接时立即启动 TLS 连接。 遵循共同约定,如果
此选项指定默认端口从 25 更改为 465,尽管这可以
仍然会被 --port 选项覆盖。

-tlsp, --tls-protocol 规范
指定在协商 TLS 时使用(或不使用)哪些协议。 此时的
编写时,可用的协议是 sslv2、sslv3、tlsv1、tlsv1_1 和 tlsv1_2。 这
这些协议的可用性取决于您的底层 OpenSSL 库,因此
并非所有这些都可用。 可用协议列表显示在
--dump 的输出(假设 TLS 完全可用)。

规范字符串是一个逗号分隔的协议列表,可以使用或
未使用。 例如 'tlsv1,tlsv1_1' 仅在这两个中的一个时才会成功
协议在客户端和服务器上都可用。 反过来,
'no_sslv2,no_sslv3' 将尝试协商除 sslv2 和 sslv3 之外的任何协议。
两种形式的规范不能混用。

-tls-密码 CIPHER_STRING
此选项的参数传递给底层 OpenSSL 库以设置列表
用于连接的可接受密码的数量。 这个字符串的格式是
对 swaks 不透明,定义在
http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT。 一个简单的例子
将是 --tls-cipher '3DES:+RSA'。

--tls-验证
默认情况下,swaks 不做任何证书验证。 设置 --tls-verify 将
导致 swaks 尝试验证服务器的证书。 如果设置了这个选项并且
服务器的证书不可验证(使用系统默认 CA
信息,或自定义 CA 信息(请参阅 --tls-ca-path))TLS 协商不会
成功。

--tls-ca-path [ /path/to/CAfile | /路径/到/CAdir/]
默认情况下,swaks 将使用底层 OpenSSL 库的默认 CA 信息
验证服务器证书。 --tls-ca-path 允许你指定一个替代
地点。 看 http://www.openssl.org/docs/ssl/SSL_CTX_load_verify_locations.html
文件/目录内容的详细信息。

--tls-cert /路径/到/文件
提供包含本地证书 swaks 的文件的路径,如果 TLS 是
协商。 文件路径参数是必需的。 按照目前实施的
文件中的证书必须是 PEM 格式。 有的话联系作者
迫切需要 ASN1。 如果设置了此选项,则还需要 --tls-key。

--tls-key /路径/到/文件
提供包含本地私钥 swaks 的文件的路径,如果 TLS 是
协商。 文件路径参数是必需的。 按照目前实施的
文件中的证书必须是 PEM 格式。 有的话联系作者
迫切需要 ASN1。 如果设置了此选项,则还需要 --tls-cert。

--tls-get-peer-cert [/路径/到/文件]
获取 TLS 对等方证书的副本。 如果没有给出参数,它将是
显示到 STDOUT。 如果给出参数,则假定它是文件系统路径
指定证书应该写在哪里。 然后可以将保存的证书
使用标准工具(例如 openssl 命令)进行检查。 如果指定了文件,则其
内容将被覆盖。

认证


如果有指示,swaks 将尝试向目标邮件服务器进行身份验证。 这个
部分详细说明了可用的身份验证类型、要求、选项及其
交互以及身份验证使用中的其他要点。 因为身份验证是
定义为 ESMTP 协议中的扩展,如果设置了 --protocol 将不可用
到 smtp 的变体。

所有身份验证方法都需要 base64 编码。 如果 MIME::Base64 perl 模块是
loadable swaks 尝试使用它来执行这些编码。 如果 MIME::Base64 不是
可用的 swak 将使用其自己的板载 base64 例程。 这些比
MIME::Base64 例程和较少审查,尽管它们已经过彻底测试。 使用
鼓励使用 MIME::Base64 模块。

如果需要身份验证(有关何时需要和不需要身份验证,请参阅下面的选项)和
不满足可用身份验证类型的要求,swaks 显示错误
并退出。 这可能发生的两种方式包括强制 swaks 使用特定的
由于缺少要求或允许 swaks 无法使用的身份验证类型
使用任何身份验证类型,但服务器只公布 swaks 不能支持的类型。 在
前一种情况会在选项处理时消除错误,因为它预先知道
将无法进行身份验证。 在后一种情况下,swaks 将在
smtp 交易的身份验证阶段,因为 swaks 不会意识到它会
在那之前无法进行身份验证。

以下是支持的身份验证类型,包括任何个人注释和
要求。

以下选项会影响 swaks 对身份验证的使用。 这些选项都是互
有关的。 例如,指定 --auth-user 意味着 --auth 和 --auth-password。
指定 --auth-optional 意味着 --auth-user 和 --auth-password 等。

-a, --auth [授权类型[,授权类型,...]]
需要 swaks 进行身份验证。 如果没有给出参数,任何支持的身份验证类型
尝试由服务器通告,直到一个成功或全部失败。 如果一个或多个
auth-types 被指定为一个参数,每个服务器也支持的被尝试
直到一个成功或全部失败。 此选项需要 swaks 进行身份验证,
因此,如果没有找到常见的身份验证类型或没有成功的凭据,swaks 会显示一个
错误并退出。

下表列出了有效的身份验证类型

登录,普通
这些基本身份验证类型得到完全支持和测试,并且没有
其他要求

CRAM-MD5
CRAM-MD5 验证器需要 Digest::MD5 模块。 它经过全面测试
并且相信可以针对任何实现它的服务器工作。

DIGEST-MD5
DIGEST-MD5 验证器 (RFC2831) 需要 Authen::SASL 模块。 版本
20100211.0 和更早版本使用了 Authen::DigestMD5,它有一些协议级别的错误
这阻止了它与某些服务器一起工作。 验证::SASL的DIGEST-MD5
处理更加稳健。

swaks 中的 DIGEST-MD5 实现相当不成熟。 目前支持
例如,只有“auth”qop 类型。 如果您有 DIGEST-MD5 经验并且
想帮助swaks更好地支持DIGEST-MD5,请与我联系。

可以使用 --auth-extra "realm" 设置 DIGEST-MD5 协议的 "realm" 值
关键词。 如果没有给出领域,将使用合理的默认值。

可以使用 --auth-extra 设置 DIGEST-MD5 协议的“digest-uri”值
选项。 例如,您可以创建digest-uri-value
“lmtp/mail.example.com/example.com”带有选项“--auth-extra”
dmd5-serv-type=lmtp,dmd5-host=mail.example.com,dmd5-serv-name=example.com”。
“digest-uri-value”字符串及其组成部分在 RFC2831 中定义。 如果没有
给出了这些值,将使用合理的默认值。

CRAM-SHA1
CRAM-SHA1 验证器需要 Digest::SHA 模块。 这种类型只有
已针对 Exim 服务器上的非标准实现进行了测试,并且可能
因此存在一些实施上的不足。

NTLM/SPA/MSN
这些验证器需要 Authen::NTLM 模块。 注意有两个
在 CPAN 上使用 Authen::NTLM 命名空间的模块。 马克布什实施
(Authen/NTLM-1.03.tar.gz) 是swaks需要的版本。 这种类型已
针对 Exim、Communigate 和 Exchange 2007 进行测试。

除了标准的用户名和密码外,此身份验证类型还可以
还识别“域”。 可以使用 --auth-extra "domain" 设置域
关键词。 请注意,这从未在不支持的邮件服务器上进行过测试
忽略 DOMAIN,因此这可能会被错误地实现。

-ao, --auth-可选 [auth-type[,auth-type,...]]
此选项的行为与 --auth 相同,只是它请求身份验证
而不是要求它。 如果找不到常见的身份验证类型或没有凭据
成功,swaks 继续进行,就好像没有请求身份验证一样。

-aos, --auth-可选-严格 [auth-type[,auth-type,...]]
此选项是 --auth 和 --auth-optional 之间的折衷。 如果没有共同认证
找到类型,swaks 的行为就像指定了 --auth-optional 并继续
交易。 如果 swaks 不能支持请求的身份验证类型,则服务器不会
通告任何常见的身份验证类型,或者如果没有凭据成功,swaks 的行为就像
--auth 被使用并退出并出现错误。

-au, --auth-user [用户名]
提供用于身份验证的用户名,如果没有,则提示用户输入
提供了论据。 可以提供字符串 <> 表示空用户名。

-ap, --auth-password [密码]
提供用于身份验证的密码,如果没有,则提示用户输入
提供了论据。 可以提供字符串 <> 来表示空密码。

-ae, --auth-extra [关键字=值[,...]]
某些身份验证类型允许将额外信息包含在
认证过程。 而不是为每个角落和缝隙添加一个新选项
每个身份验证器,--auth-extra 选项允许提供此信息。

下表列出了当前识别的关键字和身份验证器
使用它们的

领域,领域
领域和域关键字是同义词。 使用任一将设置“域”
NTLM/MSN/SPA 中的选项和 DIGEST-MD5 中的“领域”选项

dmd5-服务类型
dmd5-serv-type 关键字由 DIGEST-MD5 身份验证器使用,在
部分,构建digest-uri-value字符串(参见RFC2831)

dmd5-主机
dmd5-host 关键字由 DIGEST-MD5 验证器使用,在
部分,构建digest-uri-value字符串(参见RFC2831)

dmd5-服务名称
dmd5-serv-name 关键字由 DIGEST-MD5 验证器使用,在
部分,构建digest-uri-value字符串(参见RFC2831)

-am, --auth-map [auth-alias=auth-type[,...]]
提供一种将备用名称映射到基本身份验证类型的方法。 对任何有用
对常见类型使用备用名称的网站。 这个功能实际使用
在内部将类型 SPA 和 MSN 映射到基本类型 NTLM。 命令行
模拟这一点的参数是“--auth-map SPA=NTLM,MSN=NTLM”。 所有的授权——
上面列出的类型是除 SPA 和 MSN 之外的有效映射目标。

-apt, --auth-明文
不是在传输时显示 AUTH 字符串 base64 编码,而是翻译它们
在屏幕上打印之前到纯文本。

-ahp, --auth-hide-password [替换字符串]
如果指定了此选项,任何时候都会将可读密码打印到
终端(特别是 AUTH PLAIN 和 AUTH LOGIN)密码被替换为
虚拟字符串(或“替换字符串”的内容,如果提供的话)。 虚拟字符串
将采用 base64 编码或不取决于 --auth-plaintext 选项。

请注意,--auth-hide-password 与 --protect-prompt 相似,但不完全相同
选项。 前者保护密码不被显示在 SMTP 事务中
不管它们是如何输入的。 后者保护敏感字符串,当
用户在终端输入它们,不管如何使用字符串。

客户端 配置


XCLIENT 是 Postfix 项目引入的 SMTP 扩展。 XCLIENT 允许一个
(适当授权的)客户端告诉服务器使用备用信息,例如 IP
地址或主机名,用于客户端。 这为测试邮件提供了更简单的路径
服务器配置。 有关该协议的完整详细信息,请访问
http://www.postfix.org/XCLIENT_README.html.

--xclient-addr [值]
--xclient-name [值]
--xclient-port [值]
--xclient-proto [值]
--xclient-helo [值]
--xclient-login [值]
--xclient-reverse-name [值]
这些选项指定应发送到目标服务器的 XCLIENT 属性。 如果
[VALUE] 未提供,swaks 将提示并读取 STDIN 上的值。 看
http://www.postfix.org/XCLIENT_README.html 官方文档
属性均值及其可能的值,包括特殊的“[UNAVAILABLE]”和
“[TEMPUNAVAIL]”值。

举个简单的例子,设置“--xclient-name foo.example.com --xclient-addr
192.168.1.1" 将导致 swaks 发送 SMTP 命令 "XCLIENT NAME=foo.example.com
地址=192.168.1.1"。

请注意,“REVERSE_NAME”属性似乎没有出现在官方
文档。 有一个邮件列表线程记录它,可在
http://comments.gmane.org/gmane.mail.postfix.user/192623.

这些选项都可以相互混合,也可以与--xclient混合使用
选项(见下文)。

--xclient [XCLIENT_STRING]
这是“自由格式”XCLIENT 选项。 为 XCLIENT_STRING 提供的任何值
将作为参数逐字发送到 XCLIENT smtp 命令。 例如,如果
使用"--xclient 'NAME= ADDR=192.168.1.1 FOO=bar'",swaks会发送SMTP命令
“XCLIENT NAME= ADDR=192.168.1.1 FOO=bar”。 与此相比的主要优势
上面的具体选项是这里没有 XCLIENT 语法验证。 这个
允许您将无效的 XCLIENT 发送到目标服务器进行测试。 如果不
XCLIENT_STRING 在命令行上传递,swaks 会提示并读取上的值
标准输入。

--xclient 选项可以与上面的 --xclient-* 选项自由混合。 如果
“--xclient-addr 192.168.0.1 --xclient 'FOO=bar NAME=wind'”被赋予 swaks,“XCLIENT
ADDR=192.168.0.1 FOO=bar NAME=wind”将被发送到目标服务器。

--xclient-可选
--xclient-可选-严格
在正常操作中,设置 --xclient* 选项之一将导致成功
XCLIENT 事务发生以继续进行(即,XCLIENT 需要
广告,所有用户请求的属性都需要被广告,并且
服务器需要接受 swaks 的 XCLIENT 请求)。 这些选项改变了
行为。 --xclient-optional 告诉 swaks 无条件地通过 XCLIENT
SMTP 事务的阶段,无论它是否成功。
--xclient-optional-strict 类似但更精细。 严格的版本将
continue to XCLIENT 没有被通告,但如果 XCLIENT 被尝试但做了,将会失败
不成功。

数据 配置


这些选项与 SMTP 事务的 DATA 部分的内容有关。

-d, --data [数据部分]
使用参数作为 DATA 的全部内容,如果没有指定参数,则提示用户。
如果提供了参数“-”,则将从 STDIN 读取数据。 如果还有其他
提供了参数,它表示可打开文件的名称,文件的内容
将使用该文件。 对于 DATA 内容,任何其他参数都将是其本身。

该值可以在一行上,\n (ascii 0x5c, 0x6e) 表示位置
应该放置换行符。 前导点将被引用。 结束点不是
需要但允许。 此选项的默认值为“日期:%DATE%\n到:
%TO_ADDRESS%\n发件人:%FROM_ADDRESS%\n主题:测试 %DATE%\nX-Mailer:swaks v$p_version
jetmore.org/john/code/swaks/\n%NEW_HEADERS%\n%BODY%\n”。

对 DATA 部分执行非常基本的令牌解析。 见--use-old-data-tokens
有关标记为已弃用的单字符标记的详细信息。 下列
表显示了识别的令牌及其替换值:

%FROM_ADDRESS%
替换为信封发件人。 替换已弃用的 %F 标记。

%讲话%
替换为信封收件人。 替换已弃用的 %T 标记。

%日期%
以适合包含在日期中的格式替换为当前时间:
标题。 请注意,这尝试使用标准模块 Time::Local 作为时区
计算。 如果此模块不可用,则日期字符串将采用 GMT。
替换已弃用的 %D 标记。

%NEW_HEADERS%
替换为 --add-header 选项的内容。 如果 --add-header 不是
指定这个令牌被简单地删除。 替换已弃用的 %H 标记。

%身体%
替换为 --body 选项指定的值。 默认情况下,请参阅--body。
替换已弃用的 %H 标记。

--使用旧数据令牌
在先前版本的 swaks DATA 令牌中,如上面的 --data 选项中所述
使用单字符标记(例如,%F)。 这些不是默认的好选择
令牌,并证明在编码的非英语语言中特别麻烦,其中
这些字符组合可能很常见。 单字符标记是
替换为上面列出的不太容易出错的版本。 的保留
旧令牌和包含此选项以激活它们旨在作为
使用旧令牌为拥有现有消息语料库的用户提供临时帮助。 这
应考虑单字符标记和 --use-old-data-tokens 选项
已弃用,可能会在下一个版本中删除。

-dab, --转储为正文
如果使用 --dump-as-body 并且没有其他选项用于更改默认正文
消息,正文被替换为类似于什么的输出的输出
由 --dump 提供。 --dump 的初始程序功能节未显示,并且
不包括“数据”部分。 此外,--dump 始终包含密码。
默认情况下 --dump-as-body 不包括密码,尽管这可以通过
--dump-as-body-shows-password。

-dabsp, --dump-as-body-shows-password
导致 --dump-as-body 包含明文密码。 不推荐使用此选项。
此选项意味着 --dump-as-body。

--body [身体规格]
指定电子邮件的正文。 默认值为“这是测试邮件”。 如果不
给出了 --body 的参数,提示以交互方式提供一个。 如果提供了“-”,
正文将从标准输入中读取。 如果提供了任何其他文本并且文本
表示一个可打开的文件,该文件的内容用作正文。 如果它
不代表可打开的文件,文本本身用作正文。

如果消息被强制为 MIME 格式(请参阅 --attach)此选项的参数
将包括未编码的作为第一个 MIME 部分。 它的内容类型永远是
文本/普通。

--attach [附件规范]
当提供一个或多个 --attach 选项时,消息将更改为
多部分/混合 MIME 消息。 --attach 的参数的处理方式与
--body 关于标准输入、文件内容等。 --attach 可以提供多个
创建多个附件的次数。 默认情况下,每个附件都作为
应用程序/八位字节流文件。 请参阅 --attach-type 以更改此行为。

如果指定了文件名,则 MIME 编码将包含该文件名。 看
--attach-name 有关文件命名的更多详细信息。

将“-”(STDIN) 多次指定为参数是合法的(一次为
--body 和多次 --attach)。 在这种情况下,相同的内容将是
每次指定时附加。 这对于附加相同的内容很有用
具有多种 MIME 类型。

--attach-type [mime 类型]
默认情况下,使用 --attach 选项将 MIME 附加到邮件的内容是
编码为应用程序/八位字节流。 --attach-type 更改每个 mime 类型
--attach 选项紧随其后。 可以多次指定。

--attach-name [名称]
此选项设置将包含在为以下内容创建的 MIME 部分中的文件名
下一个 --attach 选项。 如果没有为此选项设置参数,则会导致没有文件名
下一个 MIME 部分要包含的信息,即使 swaks 可以生成它
从本地文件名。

-ah, --add-header [标题]
此选项允许将标题添加到 DATA。 如果 %H 存在于数据中
被替换为该选项的参数。 如果 %H 不存在,则参数为
插入在 DATA 中前两个连续换行符之间(即,它是
插入到现有标题的末尾)。

该选项可以多次指定,也可以一次指定多个
标题由文字 '\n' 字符串分隔。 所以,“--add-header 'Foo: bar' --add-header
'Baz: foo'" 和 "--add-header 'Foo: bar\nBaz: foo'" 最终添加了相同的两个
标头。

--header [标头和数据],--h-标头 [数据]
这些选项允许更改数据中已存在的标题。 '--标题
"Subject: foo"' 和 '--h-Subject foo' 是等价的。 如果标题还没有
存在于数据中,则此参数的行为与 --add-header 相同。 然而,如果
标头已经存在,它被替换为指定的标头。

-g 如果指定,swaks 将从 STDIN 读取邮件的 DATA 值。 这是
相当于“--data-”。 如果电子邮件中有 From_ 行,它将被删除
(但请参阅 -nsf 选项)。 用于传递真实消息(存储在文件中)
使用示例消息。

--无数据修复,-ndf
此选项强制 swaks 不对电子邮件的 DATA 部分进行按摩。 这个
包括标记替换、From_ 剥离、尾随点添加、--body/attachment
包含,以及任何标题添加。 此选项仅在与
--data,因为内部默认 DATA 部分使用令牌。

--no-strip-from,-nsf
不要从 DATA 部分中去除 From_ 行(如果存在)。

OUTPUT 配置


默认情况下,swaks 向其调用者(STDOUT/STDERR)提供其交易记录。
该成绩单旨在尽可能忠实地反映交易情况
尽管它确实通过向行添加信息前缀和通过
提供 TLS 交易的明文版本

“信息前缀”被称为交易提示。 这些提示是
最初由这些标记线组成,这些标记线是 swaks 本身的输出,或者
信息或错误消息,以及那些指示实际发送的数据行或
在交易中收到。 下表显示了提示及其含义:

=== 表示由 swaks 生成的信息行

*** 表示在 swaks 中产生的错误

-> 表示由 swaks 发送到目标服务器的预期行

~> 表示由 swaks 发送到目标服务器的 TLS 加密的预期行

**> 表示 swaks 向目标服务器发送了一条意外的线路

*~> 表示由 swaks 发送到目标服务器的 TLS 加密的意外行

> 表示由 swaks 发送到目标服务器的原始测试块(请参阅 --show-raw-text)。
在这个层面上没有“预期”或“意外”的概念。

<- 表示目标服务器发送给 swaks 的预期行

<~ 表示目标服务器发送到 swaks 的 TLS 加密的预期行

<** 表示目标服务器发送给 swaks 的意外行

<~* 表示目标服务器发送到 swaks 的 TLS 加密的意外行

< 表示 swaks 从目标服务器接收的原始文本块(请参阅
--show-raw-text)。 在这个层面上没有“预期”或“意外”的概念。

以下选项控制向调用者显示输出的内容和方式。

-n,--抑制数据
总结 SMTP 事务的 DATA 部分,而不是打印每一行。
这个选项非常有用,接近必需,当使用 swaks 发送某些
测试电子邮件。 例如,带有附件的电子邮件将很快淹没终端
如果数据没有被抑制。

-stl, --显示延时 [i]
显示发送/接收对之间的时间间隔。 此选项在以下情况下最有用
Time::HiRes 可用,在这种情况下,时间流逝将显示在
千分之一秒。 如果 Time::HiRes 不可用或“i”作为参数给出
间隔将仅以整数秒显示。

-nih,--无信息提示
不要显示信息交易的交易提示。 这是最
在需要复制信息行的某些部分时很有用,例如
--tls-get-peer-cert 的证书输出。

-nsh, --no-发送提示
-nrh,--无接收提示
-nth, --无提示
--no-send-hints 和 --no-receive-hints 从发送和
分别接收线路。 这在复制某些部分时通常很有用
在别处使用的事务(例如,“--no-send-hints --hide-receive
--hide-informational" 是一种仅获取给定客户端命令的有用方法
交易)。 --no-hints 等同于同时指定 --no-send-hints 和
--no-receive-hints。

不显示交易提示(与 -hr 结合使用以创建可复制/粘贴的
交易)。

-raw,--显示原始文本
此选项将打印由 swaks 发送和接收的原始数据的十六进制转储。 每个十六进制
dump 是网络上单次读取或写入的内容。 这应该是
与已经显示的内容相同(除了 \r 字符
被删除)。 当服务器发送批次时,此选项可用于查看详细信息
单个数据包中的数据,或将单个行分解为多个数据包。 如果
你真的需要深入那个领域你可能会更好
嗅探器,但此选项是查看奇怪连接问题的良好第一步。

- 输出文件
--output-file-stdout
--output-file-stderr
这些选项允许用户将输出发送到文件而不是 stdout/stderr。 这
第一个选项将两者发送到同一个文件。 &STDOUT 和 &STDERR 的参数是
特殊处理,参考“正常”文件句柄,因此“--output-file-stderr
'&STDOUT'" 会将 STDERR 重定向到 STDOUT。

-pp,--保护提示
不要在可能敏感的提示上回显用户输入(现在仅
认证密码)。 另见--auth-hide-password

-hr, --隐藏接收
不显示 swaks 从远程服务器发送的行

-hs,--隐藏发送
不要显示由 swaks 发送到远程服务器的行

-嗨,--隐藏信息
不要显示来自 swaks 本身的非错误信息行。

-ha,--全部隐藏
不向终端显示任何内容。

-S, --silent [级别]
使 swaks 无声。 如果没有给出参数或者给出了“1”的参数,
除非/直到发生错误,否则不打印输出,之后显示所有输出。 如果
给出了“2”的参数,只有打印错误。 如果给出“3”,则永远不显示输出。

- 支持
打印功能并退出。 某些功能需要非标准的 perl 模块。
此选项评估这些模块是否存在并显示哪些
功能可用,哪些不可用,以及需要添加哪些模块
获得缺失的功能。

- 倾倒
此选项会导致 swaks 在紧接在之前打印选项处理的结果
邮件会被发送。 使用 --dump 时不会发送邮件。 注意
--dump 被认为是一个纯粹的自我诊断工具,不做也不想做
曾经在 --dump 输出中屏蔽密码。

- 帮帮我
显示此帮助信息。

- 版
显示版本信息。

可移植性


的操作系统
该程序主要用于类 Unix 操作系统,它
应该适用于任何合理的版本。 它已经开发和测试
Solaris、Linux 和 Mac OS X,并且在所有这些方面都具有完整的功能。

众所周知,这个程序可以在 Windows 上演示基本功能,使用
ActiveState 的 Perl。 它尚未经过全面测试。 已知可以工作的是基本的 SMTP
功能和 LOGIN、PLAIN 和 CRAM-MD5 身份验证类型。 未知是任何 TLS
功能以及 NTLM/SPA 和 DIGEST-MD5 身份验证类型。

因为这个程序应该可以在 Perl 工作的任何地方工作,我很高兴知道
您彻底使用过的任何新操作系统以及任何问题
在新操作系统上遇到。

邮件服务器
这个程序几乎是专门针对 Exim 邮件服务器开发的。 它被
作者随意使用,虽然没有经过彻底测试,与Sendmail,Smail,
Exchange、Oracle 协作套件、qpsmtpd 和 Communigate。 因为所有
swaks 中的功能基于已知的标准,它应该与任何公平的工作
现代邮件服务器。 如果发现问题,请在地址提醒作者
联络一位教师

退出 编码


0 未发生错误

1 错误解析命令行选项

2 连接到远程服务器时出错

3 未知的连接类型

4 使用“管道”连接类型运行时,写入或读取的致命问题
子进程

5 使用“管道”连接类型运行时,子进程意外死亡。 这个
可能意味着用 --pipe 指定的程序不存在。

6 连接意外关闭。 如果在响应“QUIT”时检测到关闭
swaks 在意外响应之后发送,该意外响应的错误代码
而是使用响应。 例如,如果邮件服务器将 550 响应返回给
MAIL FROM:然后立即关闭连接,swaks检测到
连接已关闭,但使用更具体的退出代码 23 来详细说明
失败。 如果服务器返回 250 代码,然后立即关闭
连接,swaks 将使用退出代码 6 因为没有更具体的退出
码。

10 先决条件错误(所需模块不可用)

从服务器读取初始横幅 21 错误

HELO 事务中的 22 错误

MAIL 事务中的 23 错误

24 不接受 RCPT

25 服务器返回数据请求错误

26 服务器不接受邮件以下数据

27 服务器在正常会话退出请求后返回错误

AUTH 交易中的 28 错误

TLS 事务中的 29 错误

TLS 协商后 EHLO 中的 32 错误

XCLIENT 事务中的 33 错误

XCLIENT 后 EHLO 中的 34 错误

关于我们 您的姓名


“swaks”这个名字是“瑞士军刀 Smtp”的(有点)首字母缩写词。 它被选为
相当明显和发音。 虽然“swaks”作为软件的名称是独一无二的
包,它还有一些其他的非软件含义。 请发送“swak”的其他用法或
“swaks”以供纳入。

《被吻封印》
SWAK/SWAKs 偶尔会出现在互联网上,意思是“带着爱”。

坏/差/生病(南非荷兰语)
在标题“SA se bes en swaks gekledes in 2011”中看到了,翻译成
母语人士的“最佳和最差着装”。 谷歌翻译不喜欢“swaks
gekledes”,但它会将“swak”翻译为“可怜的”,将“swak geklede”翻译为“穿着不当”。

联系我们


[电子邮件保护]
请使用此地址进行一般联系、问题、补丁、请求等。

[电子邮件保护]
如果您希望在新版本的发布时收到通知
swaks 已发布,请发送电子邮件至此地址。

http://www.jetmore.org/john/code/swaks/
可在此链接中找到更改日志、此帮助和最新版本。

使用 onworks.net 服务在线使用 swaks


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    PAC 经理
    PAC 经理
    PAC 是 Perl/GTK 的替代品
    SecureCRT/Putty/等(Linux
    ssh/telnet/... gui)... 它提供了一个 GUI
    配置连接:用户,
    密码,EXPECT 规则...
    下载 PAC 管理器
  • 2
    GeoServer的
    GeoServer的
    GeoServer是一个开源软件
    用 Java 编写的服务器,允许用户
    共享和编辑地理空间数据。
    专为互操作性而设计,它
    发表...
    下载地理服务器
  • 3
    萤火虫III
    萤火虫III
    免费和开源的个人理财
    经理。 Firefly III 具有
    复式簿记系统。 你可以
    快速输入并整理您的
    交易我...
    下载萤火虫III
  • 4
    Apache OpenOffice 扩展
    Apache OpenOffice 扩展
    Apache的官方目录
    OpenOffice 扩展。 你会找到
    扩展范围从字典到
    用于导入 PDF 文件和连接的工具
    与外...
    下载 Apache OpenOffice 扩展
  • 5
    螳螂BT
    螳螂BT
    Mantis 是一个易于部署的网络
    基于错误跟踪器来帮助产品错误
    追踪。 它需要 PHP、MySQL 和一个
    网络服务器。 查看我们的演示并托管
    提供...
    下载MantisBT
  • 6
    LAN Messenger
    LAN Messenger
    LAN Messenger 是一个 p2p 聊天应用程序
    用于 Intranet 通信,并且不
    需要服务器。 各种得心应手
    支持的功能包括
    通知...
    下载 LAN Messenger
  • 更多 ”

Linux 命令

Ad