Bash
1 前言
一个问题,一篇文章,一出故事。
最近生产环境的PostFis邮件服务器因为需要控制每分钟发送的邮件数量,因此需要一个压力测试脚本,于是整理此章节。
2 最佳实践
2.1 实践环境
邮件服务端,如有需要请参考,
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
没有评论