如何压力测试邮件服务器?

Bash

1 前言

一个问题,一篇文章,一出故事。
最近生产环境的PostFis邮件服务器因为需要控制每分钟发送的邮件数量,因此需要一个压力测试脚本,于是整理此章节。

2 最佳实践

2.1 实践环境

邮件服务端,如有需要请参考,

如何设置Postfix直出因特网中继?

2.2 压力测试

2.2.1 创建压力测试脚本

vim ~/scripts/sendmail.sh

加入如下配配置,

#!/bin/bash

emailCount=20
pauseDuration=0
smtpSer="smtp.cmdschool.org"
smtpPort="25"
mailTo="will@cmdschool.org"
mailFrom="sender@cmdschool.org"
mailTool="s-nail" #option: "s-nail" or "mail"

for i in $(seq 1 $emailCount); do
        echo -e "\e[32mTest Email $i.\e[0m"
        if [ "$mailTool" == "s-nail" ]; then
                echo "This is a test email $i." | s-nail -s "Test Email $i" -r "$mailFrom" -S "mta=smtp://$smtpSer:$smtpPort" "$mailTo";
        elif [ "$mailTool" == "mail" ]; then
                echo "This is a test email $i." | mail -s "Test Email $i" -r "$mailFrom" -S "smtp=smtp://$smtpSer:$smtpPort" "$mailTo";
        else
                echo "Invalid mail tool specified."
                exit 1
        fi
        if [ $pauseDuration -gt 0 ]; then
                sleep $pauseDuration
        fi
done

需要注意的是,
– 参数“emailCount”定义发送邮件的数量,范例为“20”。
– 参数“pauseDuration”定义每发送一封邮件的停顿时间,范例“0”表示不停顿。
– 参数“smtpSer”定义SMTP邮件服务器的主机名称或IP地址,范例为”smtp.cmdschool.org”
– 参数“smtpPort”定义SMTP邮件按服务器的端口,范例为”25″
– 参数“mailTo”定义邮件收件人,范例为”will@cmdschool.org”
– 参数“mailFrom”定义邮件发件人,范例为”sender@cmdschool.org”
– 参数“mailTool”定义发送邮件的工具,可选值为”s-nail”或”mail”,范例为”s-nail”

2.2.2 执行压力测试

bash ~/scripts/sendmail.sh
没有评论

发表回复

Bash
如何Telnet自动登录路由器执行命令?

1 前言 一个问题,一篇文章,一出故事。 最近在笔者需要一个脚本自动从路由读取一些信息,因此整理本章 …

Bash
如何防止Base Shell脚本重复执行?

1 前言 一个问题,一篇文章,一出故事。 笔者最近发现脚本因为重复执行而损耗服务器性能,因此解决此问 …

Bash
如何实现Base Shell的数值百分比计算?

1 前言 一个问题,一篇文章,一出故事。 最近笔者需要通过Base Shell实现一个计算Quota …