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

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
没有评论

发表回复

Postfix
如何实现PosFix邮件投递失败退信?

1 前言 一个问题,一篇文章,一出故事。 最近老板要求postfix实现当邮件投递失败时候通知发件人 …

Postfix
如何设置PostFix限制用户单位时间内发送的邮件数量?

1 前言 一个问题,一篇文章,一出故事。 本章将整理如何限制用户单位时间内发送的邮件数量。 2 最佳 …

Fail2Ban
如何用Fail2ban拉黑频繁发邮件的用户?

1 前言 一个问题,一篇文章,一出故事。 我们生产环境有使用PostFix邮件服务器,笔者希望当用户 …