前言:
這可能是我寫的文章中為數(shù)不多的有全程完整截圖的、不是在完工后再來回憶的文章,但并不是因?yàn)槲乙婚_始就打算寫這篇教程,而是搭建郵箱這玩意我做了”雙份“——先在我自己的服務(wù)器上面給我自己搭建,確認(rèn)成功了、各項(xiàng)功能都正常了我才在 @gaoice 的服務(wù)器上面搭建,并同時(shí)邊搭建邊截圖,之所以我寫這個(gè),是因?yàn)槲以诮o自己的服務(wù)器搭建的時(shí)候走了太多的彎路,過程太曲折,以至于在完工之后我覺得有必要寫這么一篇文章來記錄這個(gè)過程。但是我并不打算在這篇文章里面詳細(xì)講我走的彎路的具體情況,這篇文章主要還是講搭建這件事本身。
廢話不多說了,現(xiàn)在開始正文部分。寶塔面板上面本來有一個(gè)郵局插件是可以用于搭建郵箱的,但奈何它總能給我整出點(diǎn)新花樣,我便只好選擇放棄它了。首先要把端口給空出來,下面貼出給出的需要的端口列表,我直接把原文貼了過來,如果看不懂請(qǐng)自行找翻譯工具
Ports which are opened by poste.io:
Port number
Purpose
25
SMTP– mostly mails
80
HTTP– to https (see options) and for Let’s encrypt service
110
POP3– for mailbox, is before client auth
143
IMAP– for mailbox, is before client auth
443
HTTPS– access to or webmail client
465
SMTPS– Legacy SMTPs port
587
MSA– SMTP port used for email clients after and auth
993
IMAPS– port for IMAP since
995
POP3S– POP3 since
4190
Sieve– remote sieve
而三個(gè)關(guān)于郵件的協(xié)議以及它們的加密版本使用的7個(gè)端口,寶塔郵局里面的組件至少占了3個(gè)(SMTP的25,IMAP的143,還有pop3的110),在設(shè)置了ssl證書之后占用的端口會(huì)再多出三個(gè)(SMTPs的465,IMAPs的993,還有pop3s的995),由于我是從寶塔郵局轉(zhuǎn)別的郵件,所以得先在寶塔的設(shè)置里面把相關(guān)的服務(wù)先停了
停了之后寶塔這邊會(huì)顯示”已停止“,為了確定是真的停了,在本地用nmap掃一下這些需要用到的端口
顯示”“意思是防火墻或者安全組沒有放通這個(gè)端口,顯示closed的話就是端口已經(jīng)放通了,但是沒有程序在監(jiān)聽這個(gè)端口,然后就按照去設(shè)置docker的鏡像源,設(shè)置成騰訊云的內(nèi)網(wǎng)源
然后通過ssh連接到服務(wù)器上,把需要用到的docker鏡像給pull下來,上一步的設(shè)置鏡像源就是為了在這一步省點(diǎn)時(shí)間,畢竟走騰訊的內(nèi)網(wǎng),會(huì)快很多
然后根據(jù),結(jié)合,根據(jù)自己的需要以及實(shí)際情況,拼湊出完整的一條docker run命令。我這里為了后期更改啟動(dòng)命令方便,我把啟動(dòng)命令設(shè)置成了一個(gè)放在映射目錄中的腳本文件,這樣如果后期我需要更改容器的啟動(dòng)命令,那我只需要更改這個(gè)腳本的內(nèi)容就行了
目前腳本里面的內(nèi)容有點(diǎn)簡陋,就一條命令,不過這是因?yàn)槲視簳r(shí)沒有需要更改它的啟動(dòng)命令,就讓它啟動(dòng)一個(gè)bash先
在腳本放置完畢、啟動(dòng)命令拼湊完成之后,將啟動(dòng)命令粘貼到ssh里面執(zhí)行,執(zhí)行完成之后如果一切順利,用docker ps命令能看到大概這樣的輸出
接著在本地再拿nmap掃一下,跟剛才相對(duì)比,除了那兩個(gè)的端口依舊是之外,其它的端口都由close轉(zhuǎn)為open,open表示端口放通了并且有程序在監(jiān)聽這個(gè)端口
在上面的命令中,我把容器內(nèi)的80端口映射到宿主機(jī)的8000端口并禁用了https,但我并不想放通8000端口,放通的端口越多,潛在的安全風(fēng)險(xiǎn)就越多,所以接下來就該設(shè)置ng的反代了,在寶塔新建一個(gè)網(wǎng)站(由于我這次搭建,映射出來的目錄本身就是在一個(gè)網(wǎng)站下面,網(wǎng)站也事先建好了故跳過這步),PHP版本選擇”純靜態(tài)“,然后到反向代理那里添加一條環(huán)回地址8000端口的反向代理,然后去配置ssl相關(guān)的設(shè)置
在一切都設(shè)置完成之后就可以通過域名訪問剛剛搭建的郵箱,由于是首次使用,所以它會(huì)先跳到首次使用的設(shè)置頁面,設(shè)置好郵件服務(wù)器的主機(jī)名和管理員郵箱的地址與密碼,這里需要注意的是主機(jī)名最好是設(shè)置的跟域名一樣,有條件的給服務(wù)器的IP上ptr記錄會(huì)更好(騰訊這邊的ptr記錄得花錢買,1k5 元/年/5條,這個(gè)價(jià)格令我望而生畏,買不起),不然容易進(jìn)垃圾箱(雖說由于未知原因,這個(gè) @gaoice 的自建郵箱還是逃不過Gmail的垃圾箱,而我自己的就沒事。。。)
在完成初始配置之后去到”virtual domains“設(shè)置里面點(diǎn)你域名右邊的”show“,然后點(diǎn)”create new key“
如果一切順利,它頂部會(huì)顯示”new dkim keys ,update your dns “,并在剛才顯示”create new key“的地方顯示你的dkim記錄
然后去dns服務(wù)提供商那邊按照poste給你的信息去添加一條txt的解析,順帶把spf和dmarc的txt記錄也添加了
在完事之后去驗(yàn)證一下你的dkim等設(shè)置,等這里顯示dkim、spf、dmarc都pass了之后再去那邊測(cè)試
因?yàn)檫@邊免費(fèi)用戶一天只能測(cè)三次,而上面的dkim測(cè)試就沒有限制,故不要因?yàn)閐kim、spf、dmarc等問題導(dǎo)致的意外而浪費(fèi)每天僅有的三次測(cè)試機(jī)會(huì)
最后來一張絕望的Gmail截圖
寫在最后:
我之前在自己服務(wù)器上面搭建的時(shí)候,最開始用的寶塔,在剛開始搭建的時(shí)候是能收到郵件的,那個(gè)時(shí)候我25端口是沒有放通的好像,但是不知道什么時(shí)候開始,突然收不到郵件,我以為是寶塔發(fā)瘋,便上網(wǎng)搜尋其它的類似的組件包,上網(wǎng)搜索過很多資料,最后唯一對(duì)我有用的就是,看了這篇之后考慮過ewomail、、mailcow和poste.io,和ewomail都是丟給你一個(gè)腳本讓你自己在服務(wù)器上面跑,ewomail同時(shí)還是開源的,文檔也很詳細(xì),也免費(fèi)提供一定的技術(shù)支持,而不知道是否開源,文檔也沒怎么詳細(xì)講,最關(guān)鍵似乎不提供官方免費(fèi)技術(shù)支持,網(wǎng)上也沒多少相關(guān)資料,mailcow搞不太懂,最開始是先嘗試的ewomail,結(jié)果最后登不上去,只好再找別的,后來發(fā)現(xiàn)poste.Io的文檔也挺詳細(xì),而且官方支持docker部署,就照著官方文檔結(jié)合網(wǎng)上的一些資料搭建起來了,不過剛搭建好也是收不到郵件,后來找騰訊云的客服才知道,25端口的入方向是得放通的,放通25端口之后,就一切順利了。但是很多IDC是默認(rèn)阻塞掉25端口的出方向的,不過這實(shí)測(cè)并不太影響發(fā)郵件,25端口如果真心想搭建郵件服務(wù)器的話出方向的影響并不大,正如的示例中說所的一樣
Do not use port 25at all as it is for for remote only. Even if it will work you might be by testing and various . Some ISPs also blocks to 25 due with SPAM so it might be to connect to your from various places. to port 465/587 are mostly .翻譯:完全不要使用端口 25,因?yàn)樗鼉H用于遠(yuǎn)程郵件服務(wù)器的通信。即使它會(huì)起作用,您也可能會(huì)受到不必要的連接測(cè)試和各種減速的影響。由于與垃圾郵件的斗爭,一些 ISP 還會(huì)阻止客戶與 25 的出站連接,因此可能無法從各個(gè)地方連接到您的郵件服務(wù)器。大多數(shù)情況下可以容忍連接到端口 465/587。
實(shí)測(cè)在配置了ssl之后,25端口在出方向的阻塞并不影響發(fā)件,但是入方向會(huì)影響收件,不過這個(gè)是在自己的可控范圍內(nèi),因?yàn)?5端口的入站方向是由自己控制的
參考資料:
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。