SMTP-SINK(1) SMTP-SINK(1)
名称
smtp-sink - 并行化 SMTP/LMTP 测试服务器
概述
smtp-sink [选项] [inet:][主机]:端口 待处理队列
smtp-sink [选项] unix:路径名 待处理队列
描述
smtp-sink 监听指定的主机(或地址)和端口,接收网络中的 SMTP 消息后直接丢弃。
该工具主要用于测试客户端性能,而非协议合规性。
本程序也可配置为将每次邮件传输记录到文件中。由于磁盘延迟远高于网络延迟,
此模式会显著降低最大处理性能(可能降低数个数量级)。
支持通过 IPv4、IPv6 端点或 UNIX 域套接字建立连接,默认使用 IPv4 和 IPv6。
本程序是 smtp-source(1) 的配套工具。
注意:这是非官方支持的测试工具,不保证版本间的兼容性。
参数
-4 仅支持 IPv4。当 Postfix 编译时不支持 IPv6 时此选项无效
-6 仅支持 IPv6。当 Postfix 编译时不支持 IPv6 时此选项不可用
-8 禁用 8BITMIME 支持声明
-a 禁用 SASL 认证支持声明
-A 延迟
响应 DATA 命令后等待指定秒数,然后返回 550 状态码强制终止会话。
此操作会阻止客户端发送结束符"."。设为零则立即终止
-b 软退回响应
设置软拒绝响应消息(默认:"450 4.3.0 错误:命令失败")
-B 硬退回响应
设置硬拒绝响应消息(默认:"500 5.3.0 错误:命令失败")
-c 显示实时计数器,在以下情况更新:
SMTP 会话结束/收到 QUIT 命令/收到结束符"."
-C 禁用 XCLIENT 支持
-d 转储模板
将每次邮件事务转储到独立文件,文件名通过 strftime(3) 格式化模板生成,
并附加随机十六进制数(例如:"%Y%m%d%H/%M." 会生成 "2006081203/05.809a62e3")。
若模板含"/"会自动创建缺失目录。转储格式见下文说明。
注意:每个进行中的邮件事务都会保持一个独立的捕获文件
-D 转储模板
将邮件事务追加到多邮件转储文件,文件名通过 strftime(3) 格式化模板生成。
若模板含"/"会自动创建缺失目录。转储格式见下文说明。
注意:每个进行中的邮件事务都会保持一个独立的捕获文件
-e 禁用 ESMTP 支持声明
-E 禁用 ENHANCEDSTATUSCODES 支持声明
-f 命令列表
以硬错误(5xx)拒绝指定命令(隐含-p选项)
有效命令:CONNECT, HELO, EHLO, LHLO, MAIL, RCPT, VRFY, DATA, ., RSET, NOOP, QUIT
多个命令可用空格或逗号分隔,需用引号保护空格
-F 禁用 XFORWARD 支持
-h 主机名
设置 SMTP 问候语/HELO/EHLO 响应中使用的主机名(默认:"smtp-sink")
-H 延迟
设置接收 DATA 后的首次读取延迟(秒),配合大测试邮件和小 TCP 窗口
(通过-T设置)可测试 Postfix 客户端的 write_wait() 实现
-L 启用 LMTP 模式替代 SMTP
-m 数量(默认:256)
设置最大并发连接数限制,防止文件描述符耗尽
超额连接将保持在 TCP/IP 协议栈队列中
-M 数量
接收指定数量的邮件后终止
-n 数量
处理指定数量的会话后终止
-N 禁用 DSN 支持声明
-p 禁用 ESMTP 命令流水线支持声明
-P 模拟 CISCO PIX 系统的服务器问候语(隐含-e选项)
-q 命令列表
收到指定命令后立即断开连接(不响应)
有效命令同-f选项
-Q 命令列表
收到指定命令后返回 421 响应并断开连接
有效命令同-f选项
-r 命令列表
以软错误(4xx)拒绝指定命令(隐含-p选项)
有效命令同-f选项
-R 根目录
设置进程的根目录(需要超级用户权限,常与-u配合使用)
-s 命令列表
将指定命令记录到系统日志
有效命令同-f选项
-S 起始字符串
设置写入转储文件的消息前缀(支持C转义序列:
\a响铃 \b退格 \f换页 \n换行 \r回车 \t水平制表 \v垂直制表
\ddd八进制数 \\反斜杠)
-t 超时(默认:100)
设置命令接收和响应发送的超时时间(秒)
-T 窗口大小
覆盖默认TCP窗口大小(建议值:0-65535,用于解决TCP窗口缩放问题)
-u 用户名
设置运行权限(需在打开网络套接字后使用,常与-R配合,
超级用户权限下必须指定)
-v 显示SMTP会话详情
-w 延迟
设置响应DATA命令前的等待时间(秒)
-W 命令:延迟[:概率]
设置指定命令的响应延迟(秒),可选概率参数(1-99)表示:
实际延迟时间为延迟值乘以随机系数(通过0-99随机数≥概率值的尝试次数确定)
[inet:][主机]:端口
监听指定网络接口(默认:所有接口)的TCP端口
主机和端口可用数字或符号形式表示
unix:路径名
监听指定路径的UNIX域套接字
待处理队列
设置未完成连接队列的最大长度(参考 listen(2) 系统调用)
转储文件格式
每条转储消息包含换行符终止的文本行,内容顺序如下:
· -S 参数指定的前缀字符串(可选)
· smtp-sink 生成的报头(格式如下)
· 从SMTP客户端接收的原始消息头和正文
· 空行
生成的报头格式:
X-Client-Addr: 文本
客户端IP地址(IPv6地址以"ipv6:"前缀标识)
必填字段
X-Client-Proto: 文本
客户端协议类型:SMTP/ESMTP/LMTP
必填字段
X-Helo-Args: 文本
本次邮件事务前最近的HELO/EHLO命令参数
仅当客户端发送过HELO/EHLO时存在
X-Mail-Args: 文本
启动本次邮件事务的MAIL命令参数
每个事务出现一次
X-Rcpt-Args: 文本
本次事务中的所有RCPT命令参数
按客户端发送顺序排列,每个RCPT对应一条记录
Received: 文本
兼容邮件处理软件的三行消息头,格式:
from HELO参数 ([客户端地址])
(若无HELO则显示客户端地址)
by 主机名 (smtp-sink) with 协议 id 随机数;
(主机名来自-h,随机数来自转储文件名)
RFC 2822 时间戳
参见
smtp-source(1), SMTP/LMTP 消息生成器
许可
本软件需随附 Secure Mailer 许可证
作者
Wietse Venema
IBM T.J. Watson 研究院
邮政信箱 704
Yorktown Heights, NY 10598, 美国
Wietse Venema
Google 公司
纽约第八大道 111 号
NY 10011, 美国
SMTP-SINK(1)