郵件協議(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服務器注銷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM