邮件协议(SMTP)性能测试总结(Foxmail邮箱)
先介绍一下邮件协议SMTP的工作机制(连接和发送过程),用wireshark工具抓包进行分析,如下:

SMTP协议的工作机制(连接和发送过程):
1.建立TCP连接,并将邮件服务器地址给客户端;
2.客户端发送EHLO命令以标识发件人自己的身份,然后客户端登录邮件服务器;
3.客户端先标示电子邮件的发件人发送MAIL命令,服务器端以OK作为响应,表明准备接收;
4.客户端发送RCPT 命令,以标识该电子邮件的计划接收人,可以有多个RCPT行, 服务器端以OK作为响应,表示愿意为收件人接收邮件;
5.客户端用命令DATA发送数据;
6.以.表示结束输入内容一起发送出去,服务器端并以OK作为响应;
7.客户端结束发送,用QUIT命令退出,服务器端以Bye作为响应,表示结束;
了解了邮件协议SMTP的工作机制后,下面开始进行性能测试:
一、先安装好邮件客户端FoxMail,被配置好邮件服务器等信息;
二、使用LoadRunner录制脚本

三、生成脚本,并优化脚本
Tasks目录:

接收邮件脚本:

发送邮件脚本:

脚本分析:
1)整体上的分析,接收邮件操作和发送邮件操作在Tasks目录分别生成一对.dat文件,打开.dat文件可以查看到附件的信息(附件类型、内容等);
2)接收邮件和发送邮件的脚本函数是一样的,邮件协议的工作过程是:登录到邮件服务器à发送消息à退出邮件服务器à释放邮件服务器;
3)脚本优化(参数化)
四、执行测试
1)在Contorller场景压力过程中,出现大量的报错,如图1:

查看日志,是由于用户多登陆时,session连接数已经满了,邮件服务器不允许重复登录。当连接数满的时候,需要清理一下。
2)在Contorller场景过程中,出现大量的报错,如图2,3:


这是由于邮件处理的原理是以队列的形式发送的,当多用户并发时,队列阻塞,发送请求和服务响应会出现大量报错信息,场景运行到12分30秒时响应时间没了,此时所有的用户已经处理完成。
3)启动LR录制时,工具先会判断邮件服务器和客户端之间的连接,是否有未接收的邮件显示(因邮件客户端设置不是时时接收邮件),录制日志如图4:

附录:
附录:
SMTP常用的响应
501——参数格式错误
502——命令不可实现
503——错误的命令序列
504——命令参数不可实现
211——系统状态或系统帮助响应
214——帮助信息
220<domain>——服务器就绪
221<domain>——服务关闭
421<domain>——服务器未就绪,关闭传输信道
250——要求的邮件操作完成
251——用户非本地,将转发向<forward-path>
450——要求的邮件操作未完成,邮箱不可用
550——要求的邮件操作未完成,邮箱不可用
451——放弃要求的操作,处理过程中出错
551——用户非本地,请尝试<forward-path>
452——系统存储不足,要求的操作未执行
552——过量的存储分配,要求的操作未执行
553——邮箱名不可用,要求的操作未执行
354——开始邮件输入,以“.”结束
554——操作失败
函数
使用SMTP函数
|
函数名 |
描述 |
|
smtp_logon[_ex] |
登录到SMTP服务器 |
|
smtp_translate[_ex] |
转换SMTP消息 |
|
smtp_send_mail[_ex] |
发送SMTP消息 |
|
smtp_free[_ex] |
释放SMTP服务器,使其不处理命令 |
|
smtp_logout[_ex] |
从SMTP服务器注销 |
使用POP3函数
每个POP3函数都以pop3前缀开头
|
函数名 |
描述 |
|
pop3_logon[_ex] |
登录到POP3服务器 |
|
pop3_command[_ex] |
想POP3服务器发送命令 |
|
pop3_retrieve[_ex] |
检索POP3服务器上的邮件 |
|
pop3_list[_ex] |
列出POP3服务器上的邮件 |
|
pop3_delete[_ex] |
删除服务器上的邮件 |
|
pop3_free[_ex] |
释放POP3服务器,使其不处理命令 |
|
pop3_logoff[_ex] |
从POP3服务器注销 |
邮件协议(SMTP)性能测试总结(Foxmail邮箱)的更多相关文章
- PHP IMAP收QQ邮件,SMTP存入另外QQ邮箱
作用,将qq1收到邮件,用qq2的账号.以qq0的为发件人身份放到qq2的邮箱. 什么样做这样一个功能,一个朋友要求的,她不告诉我为什么,好吧 <?php define('USER','xxx@ ...
- centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 ...
- 邮件协议POP3/IMAP/SMTP服务的区别
2016年09月09日 09時51分 wanglinqiang整理 通过网上查找的资料和自己的总结完成了下面的文章,看完之后相信大家对这三种协议会有更深入的理解.如有错误的地方望指正. POP3 PO ...
- SMTP、POP3和IMAP邮件协议
目录 SMTP POP IMAP 总结 DNS记录中的MX记录 今天入职第一天,公司让配置个人的内网.外网邮箱,这可把我给搞晕了,本来以前就对邮箱这块不是很了解,平时也不怎么用邮箱,顶多有个QQ邮箱而 ...
- C#使用SMTP协议发送验证码到QQ邮箱
C#使用SMTP协议发送验证码到QQ邮箱 在程序设计中,发送验证码是常见的一个功能,用户在注册账号时或忘记密码后,通常需要发送验证码到手机短信或邮箱来验证身份,此篇博客介绍在C#中如何使用SMTP协议 ...
- 45.简单邮件传输协议 SMTP
一丶简单邮件传输协议 简单邮件传输协议 简单邮件传输协议 SMTP smtplib 模块:(在 Python3版本中,可以通过 SMTP协议发送邮件的模块常为 smtplib, 并且这个模块属于内置模 ...
- Foxmail邮箱最新应用指南 --如何使用「邮件标签」?
Foxmail邮箱最新应用指南--如何使用「邮件标签」? 最近看到很多的朋友收发电子邮件,现在我们帮助讲解下foxmail的标签功能,可以帮助我们整理我们的邮箱,让重要信息浮出水面. 1.鼠标右键邮件 ...
- 关于TD邮件功能不能发到认证邮箱的解决之法
[原创] 关于TD邮件功能不能发到认证邮箱的解决之法 认证邮箱, 邮件服务器, 用户, 邮件系统 鉴于不少同行询问TD发邮件的问题,今天重新更新一下说明 解决问题的原则如下一.在TD服务器上安装一个邮 ...
- Foxmail邮箱最新应用指南二
Foxmail邮箱最新应用指南二 1.打开Foxmail主界面—工具—账号管理,或者鼠标右击任何已有账号—属性,弹出账号管理窗口,点击左下角的“新建”按钮: 2.输入邮箱地址,下一步→选择邮箱类型(I ...
随机推荐
- Eclipse 导入项目乱码问题(中文乱码)
1.编码不对 a.对某文件或某工程更改编码: 鼠标移到工程名或文件名,右键->Properties->Resource->Text file enCoding ->更改编码 ...
- [php基础]Mysql日期函数:日期时间格式转换函数详解
在PHP网站开发中,Mysql数据库设计中日期时间字段必不可少,由于Mysql日期函数输出的日期格式与PHP日期函数之间的日期格式兼容性不够,这就需要根据网站实际情况使用Mysql或PHP日期转换函数 ...
- Android开发手记(9) DatePickerDialog 和 TimePickerDialog
1.DatePickerDialog 用于获取用户输入的日期信息.其原型为: public DatePickerDialog(Contex contex, DatePickerDialog.OnDa ...
- Property type 'id<tabBarDelegate>' is incompatible with type 'id<UITabBarDelegate> _Nullable' inherited from 'UITabBar'
iOS报错:Property type 'id' is incompatible with type 'id _Nullable' inherited from 'UITabBar' 如图: 可能原因 ...
- 比file_get_contents稳定的curl_get_contents
相信使用过file_get_contents函数的朋友都知道,当获取的$url访问不了时,会导致页面漫长的等待,甚至还能导致PHP进程占用CPU达100%,因此这个函数就诞生了 分享一个实际在用的函数 ...
- Pycharm在创建py文件时,如何自动添加文件头注释(类似于钩子特性)?
在每次新建一个py文件的时候 1 如何自动添加/usr/bin/env python2 自动添加 coding=utf8 操作方法: File->settings->Editor-> ...
- 解决VS2013中“This function or variable may be unsafe”的问题
1.在VS2013中编译代码时出现如上错误信息,下面就介绍下如何解决This function or variable may be unsafe的问题. 2.用VS2013打开出现错误的代码文件 3 ...
- MVC 中集成 AngularJS1
在 ASP.NET MVC 中集成 AngularJS(1) 介绍 当涉及到计算机软件的开发时,我想运用所有的最新技术.例如,前端使用最新的 JavaScript 技术,服务器端使用最新的基于 R ...
- android 模拟微信消息框 BaseAdapter()方法 [2]
在昨天的微信布局的基础上加内容 http://www.cnblogs.com/Seven-cjy/p/6098024.html 项目下/res/layout下创建一个 listview_layout. ...
- linux系统ecshop拿shell方法
Title:linux系统ecshop拿shell方法 --2011-06-08 13:23 最近弄一个站,对ECSHOP拿shell不了解,导致走了很多的弯路. nginx/0.8.54的服务器, ...