通過xmail構建本地電子郵件測試環境

2021-09-12 03:41:09 字數 2683 閱讀 3955

作者 root

在涉及到郵件功能測試時,由於測試環境比較雜亂,各種有效無效的郵件位址隨處可見無法辨別。當我們需要測試傳送郵件時,這些無效位址也會被一併放入傳送列表,這會傳送失敗率增加,對於傳送網域名稱的信譽是有影響的,同時,如果也會導致一些郵件被錯誤的傳送出去,甚至傳送給了實際的使用者。

為了方便郵件的測試,我們需要在測試環境中的收件人與生產環境的獲取機制是類似的,可以通過相同的方法從資料庫或者**中獲取。 在不改動現有**以及資料庫連線機制的情況下, 可以使用私有smtp伺服器往這些郵箱位址傳送郵件。

我們可以在測試環境中,假設乙個內部的smtp伺服器,在這個環境中存在與生產環境一樣的使用者郵箱位址結構,並設定登陸私有smtp伺服器的密碼。這樣我們就可以在私有的郵件伺服器上進行各種郵件相關測試和確認,而這個測試的環境是和生產環境完全分離的。

經過一些調研,我們使用xmail來作為測試環境smtp伺服器, 為了方便使用xmail選擇在docker中安裝.

from scratch

add ubuntu-bionic-core-cloudimg-amd64-root.tar.gz /

env tz=asia/shanghai lang=en_us.utf-8

run useradd -m -s /bin/bash ubuntu && apt-get update && apt-get install -y locales g++ sudo vim make libssl-dev tzdata&&\

apt-get autoclean && apt-get clean all&& locale-gen en_us.utf-8 &&\

usermod -ag sudo ubuntu &&\

ln -snf /usr/share/zoneinfo/$tz /etc/localtime && echo $tz > /etc/timezone

add sudoers /etc/

user ubuntu

workdir /home/ubuntu

wget 

tar zxf xmail-1.27.tar.gz

mv xmail-1.27 /var/mailroot

sudo docker run -itd --name local-smtp -v /var/mailroot:/var/mailroot smtpserver /bin/bash

sudo docker attach local-smtp

cd /var/mailroot

make -f makefile.lnx

sudo cp xmail /etc/init.d && sudo chmod +x /etc/init.d/xmail

shopt -s extglob

cp bin/!(*.o) mailroot/bin

rm -rf !(mailroot)

mv mailroot/* .

rm -rf mailroot

sudo docker commit -m='install xmail' smtpserver

sudo docker run -itd --name local-smtp -p 110:110 -p 25:25 -v /var/mailroot:/var/mailroot smtpserver /bin/bash

# xmail 配置檔案中均是 分隔

cd /var/mailroot

sed -i 's/xmailserver.test/example.com/g' server.tab # 網域名稱配置

xmcrypt password # 加密 password

echo -e '"admin"\t"15041616120a1701"' > ctrlaccounts.tab # 設定管理員賬號及密碼, 密碼是上一步的加密結果

sudo /etc/init.d/xmail start

ctrlclnt -s localhost -u admin -p password domainadd example.com # 新增網域名稱

sudo /etc/init.d/xmail restart

ctrlclnt -s localhost -u admin -p password useradd example.com test01 test01 u # 新增 test 使用者

ctrlclnt -s localhost -u admin -p password useradd example.com test02 test02 u

可以為這台機器分配乙個網域名稱,比如 smtp.example.com。然後使用python的smtplib庫傳送測試郵件傳送,

使用者可以使用outlook等郵箱客戶端登陸自己的郵箱檢視郵件。

一般來說,預設使用者只能儲存大約十幾m的郵件,在xmail中可以修改使用者的user.tab中 mailmbsize值來改變這值的大小。

除了xmail這個方案之外,mailslurper這個專案也是很有意思,它可以提供乙個本地的smtp伺服器,所有發給這個伺服器的信件不是實際傳送出去而是儲存在乙個資料庫中,mailslurper提供了乙個web介面讓開發人員可以檢查這些郵件。不過mailslurper目前的開發狀態還不是十分完備,比如存在不支援郵件伺服器的認證,以及傳送附件時會存在bug等等,尚不能完美模擬我們的線上傳送需求。​ ​

在本地電腦安裝SVN for JMVC

1.sc create svnjmvc binpath d program files subversion bin svnserve service r e svn jmvc 2 啟動服務 我的電腦 管理 服務 svnjmvc 3 svnadmin create e svn jmvc 4 將你的工...

如何檢視本地電腦ip

1.快捷鍵 win r開啟命令視窗 輸入 ipconfig檢視你電腦的ip 2.輸入netstat an 檢視當前所有連線埠,顯示所有的有效連線資訊列表,包括已建立的連線 established 也包括監聽連線請求 listening 的那些連線 3.netstat b 該引數可顯示在建立網路連線和...

將本地電腦做外網對映

很多小夥伴應該都想過這個問題,我們能不能將自己的電腦做成伺服器,然後其他人可以通過網路訪問到我們得電腦。當然,這個問題的答案是肯定可以的。今天我就給大家總結一下,怎麼將本地ip對映到外網。準備這裡我們用到了乙個免費的外網對映工具 sunny ngrok 當然線上也有很多類似這種的工具,如花生殼等。這...