自建外網郵件伺服器

81—1發表於2020-08-25

大家好,我是無人機。

同志們都管我叫程式老中醫。

簡介

工作過程中經常需要外網郵箱接收系統的測試郵件,常見的郵件平臺基本都有很長很長的身份驗證流程,以及十分嚴格的數量限制。對於我們只是臨時用的來說,很憋屈,氣的心突突跳,寶貝憋紫黑。瞭解分析了郵件伺服器的工作原理和組成後,藉助開源工具自己擼個外網郵件伺服器,方便自己及同事的使用。

架構解析

從圖上可以看到,郵件服務使用的是開源的hMailServer,系統資料儲存在本地的mysql。其中因為需要外網可通,我使用了我的公網雲伺服器作為轉發機,把內網的郵件服務進行了穿透對映。

由上可知,架設一個外網郵件伺服器,一個公網IP和公網域名是必不可少的。另外實際使用過程發現,公網域名必須是備案的,不然大部分的郵件伺服器(qq、163)都會攔截給我們發的郵件。

安裝步驟

下載hMailServer

開源的東西還是官方網站下載比較穩妥:https://www.hmailserver.com/download

安裝hMailServer

流程不長,一路next即可,要記住自己設定的管理密碼,每次進後臺都會用到。
最後安裝完成後進入後臺管理頁面如下:

新增郵箱使用者

進入Domains > 域名 > Accounts > Add

這裡的密碼輸入後,失焦就看不到了,注意記錄。

其它的高階配置先不動。

外網伺服器開通25埠

很多廠商的雲伺服器25埠預設是關閉的,我們需要用到,騰訊雲可以自己申請開啟。路徑為:騰訊雲控制檯 > 頭像下拉框 > 安全管控 https://console.cloud.tencent.com/secctrl/smtp, 選中自己的伺服器申請解封25埠,即時可用。

內網穿透

我是的windows是內網機器,需要能在外網收郵件需要讓其他人也能檢索到我們的服務,這就需要做個內網穿透了。我使用的是frp ,很好的開源的軟體,下載地址:https://github.com/fatedier/frp/releases

簡單介紹下我的配置,frp分為兩個端:server、client。

公網服務端

配置檔案:

# frps.ini
[common]
bind_port = 7000

先啟動server端:

$ sudo ./frps -c frps.ini 

這裡因為後面客戶端繫結的埠都是短號,需要管理員許可權才能正常啟動

winodws客戶端

下載對應的windows版本的frp
配置檔案:

# frpc.ini
[common]
server_addr = 45.40.xxx.xx
server_port = 7000

[tcp110]
type = tcp
local_ip = 127.0.0.1
local_port = 110
remote_port = 997

[tcp25]
type = tcp
local_ip = 127.0.0.1
local_port = 25
remote_port = 25

[tcp143]
type = tcp
local_ip = 127.0.0.1
local_port = 143
remote_port = 1439

[tcp1429]
type = tcp
local_ip = 127.0.0.1
local_port = 587
remote_port = 1429

啟動clinet端:

cmd> frpc -c frpc.ini 

看到客戶端日誌如下,就是穿透服務架設成功了。

2020/08/25 09:34:18 [I] [service.go:282] [7cf98eeece2ffe93] login to server success, get run id [7cf98eeece2ffe93], server udp port [0]
2020/08/25 09:34:18 [I] [proxy_manager.go:144] [7cf98eeece2ffe93] proxy added: [tcp25 tcp143 tcp1429 tcp110]
2020/08/25 09:34:18 [I] [control.go:179] [7cf98eeece2ffe93] [tcp25] start proxy success
2020/08/25 09:34:18 [I] [control.go:179] [7cf98eeece2ffe93] [tcp143] start proxy success
2020/08/25 09:34:18 [I] [control.go:179] [7cf98eeece2ffe93] [tcp1429] start proxy success
2020/08/25 09:34:18 [I] [control.go:179] [7cf98eeece2ffe93] [tcp110] start proxy success

郵件客戶端配置

我以foxmail為例,對應上面的穿透服務提供的遠端埠,郵件客戶端配置如下:

至此我們已經可以給外網郵箱傳送郵件了,可能會進人家的垃圾箱,自己試試吧。
但我們還無法收到外網給我們發的郵件,還需要給域名配置下解析規則。

配置外網域名的郵件服務解析

這裡其實最主要就是mx記錄的解析,並且要保證你的25埠是通的,試過換成其它的埠,內網自己可用,但其它郵件伺服器不認。
下圖以主機屋的域名配置為例:

mx記錄不是立即就生效的,最長要等4小時。實際我等了幾分鐘左右

結語

至此我們自己的公網郵件伺服器已架設完成,賬號要多少有多少,再也不用找朋友借郵箱測試了,兩個肺透亮透亮的。親測了可以用來註冊linked賬號,各家伺服器限制不同,自己去試試吧。

相關文章