新聞中心
一、背景

公司主營(yíng)業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出西豐免費(fèi)做網(wǎng)站回饋大家。
smtp 是一種常見的服務(wù),提供了程序自動(dòng)化郵件外發(fā)的可能。不光是用于產(chǎn)品向客戶的通知服務(wù);更多的是用在企業(yè)內(nèi)部的信息工具,比如我們就有 sentry / confluence / zulip 等等非常多的開源工具,都需要配置 smtp 來實(shí)現(xiàn)內(nèi)部信息的聯(lián)動(dòng)。
當(dāng)前最簡(jiǎn)單的郵箱使用方式是使用開放的郵箱服務(wù),比如現(xiàn)在很多小型企業(yè)在使用的企業(yè)郵箱,可以配置一個(gè)專門的賬號(hào)來提供發(fā)信服務(wù)。但是,這種方式存在非常大的安全隱患。
二、問題
直接使用公開的賬號(hào),很容易帶來安全問題:
- 自動(dòng)化發(fā)信的程序需要用戶名和密碼,這些信息需要存儲(chǔ)在代碼或者配置中
- 有經(jīng)驗(yàn)的程序員知道將敏感信息分離,并且存儲(chǔ)在代碼庫(kù)外;然而新員工,或者安全意識(shí)不強(qiáng)的同事很容易將這些信息入庫(kù)
- 更糟糕的是,即使三令五申,有些程序員還是會(huì)無意的把代碼放到 github 上,這些是公開可以訪問的
- 然后就炸了
當(dāng)郵箱賬號(hào)一泄露(一般 smtp 賬號(hào)同樣能登陸郵件賬戶或者使用 pop3 協(xié)議),郵件里面隱藏的一些敏感信息(尤其是 confluence 的通知郵件)會(huì)帶來更多的泄露,嚴(yán)重的可能會(huì)影響到我們競(jìng)選總統(tǒng)。
一種解決方案是,加強(qiáng)所謂的安全流程,同時(shí)通過一些工具來驗(yàn)證輔助(比如大家都在做的 github 掃描),但這種方式過于被動(dòng),而且無法從根本上來解決問題。技術(shù)上的問題,還得尋求技術(shù)方案來解決。
三、解決方案
其實(shí)傳統(tǒng)的工具就可以解決這個(gè)問題,我們就采用了 postfix 作 smtp 中轉(zhuǎn):
??
??
- 配置 postfix 作為 smtp replay 服務(wù),將發(fā)信方與真正的郵件服務(wù)器隔離開來
- 發(fā)信方與 postfix 使用公司內(nèi)部賬號(hào)(甚至無賬號(hào))進(jìn)行內(nèi)網(wǎng)通信,這樣即使賬號(hào)泄露,也無法用來登陸郵箱獲取信息;同時(shí),由于 postfix 是內(nèi)部的服務(wù),可以更靈活的配置防火墻
- postfix 和 smtp 服務(wù)之間仍然使用 smtp 賬號(hào),但這里只有系統(tǒng)管理員才需要知道賬戶,相對(duì)安全。另外,還需要進(jìn)行自動(dòng)刪信,禁用 pop3,微信登陸等手段來加強(qiáng),這個(gè) 163 郵箱,qq 郵箱都有不同的配置,請(qǐng)自行設(shè)置
說白了,就是靠代理解耦來解決問題。熟悉我們的人估計(jì)一看就明白,因?yàn)槲覀兒芏鄦栴}都是靠這種方式來解決。下面簡(jiǎn)要描述下配置供參考。
sudo vim /etc/postfix/main.cf
#####以下是main.cf配置內(nèi)容
relayhost = [$SMTP_HOST]:25
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
#配置重寫規(guī)則,強(qiáng)制修改發(fā)送郵件地址,防止smtp服務(wù)拒收郵件
ender_canonical_maps = pcre:/usr/local/etc/postfix/sender_canonical_map
#####以上是main.cf配置內(nèi)容
sudo vim /etc/postfix/sender_canonical_map
#####以下是main.cf配置內(nèi)容
/.*/ 發(fā)信smtp用戶名
#####以上是main.cf配置內(nèi)容
sudo vim /etc/postfix/sasl_passwd
#####以下是sasl_passwd配置內(nèi)容
[$SMTP_HOST]:25 用戶名:密碼
#####以下是sasl_passwd配置內(nèi)容
sudo postmap /etc/postfix/sasl_passwd
sudo service postfix resart
# done
四、自動(dòng)化集成
添加自己的 smtp 中轉(zhuǎn)服務(wù),還可以配置無賬號(hào)登陸的方式,這樣在命令行中調(diào)用服務(wù)將更加簡(jiǎn)單,這也是我們搭建 postfix 的另外一個(gè)原因。這里介紹兩種方式:
1. 通過 curl 命令發(fā)送郵件
最新版的 curl 命令支持 smtp / smtps , 不過發(fā)型版自帶的比較老,需要自己下載最新版本進(jìn)行編譯安裝,使用的話相對(duì)簡(jiǎn)單。
/usr/local/bin/curl -s -v --url "smtp://xxxx:25" --mail-from "[email protected]" --mail-rcpt "[email protected]" --upload-file mail.txt
# content of mail.txt
From:[email protected]
To:[email protected]
Subject: curl發(fā)送郵件標(biāo)題
xxxxx
2. 通過傳統(tǒng)的mailx命令來發(fā)送郵件
其實(shí)依舊是相對(duì)傳統(tǒng)的命令,比如 mailx 就能滿足我們的需要。不過安裝起來略顯麻煩,需要在每個(gè)發(fā)行版找各自合適的包,比如 ubuntu 就應(yīng)該安裝 heirloom-mailx ,使用起來則更加簡(jiǎn)單:
echo "test" |mail -S smtp=xxxx -r [email protected] -s subject [email protected]
上面一條命令就可以將信息通過郵件進(jìn)行發(fā)送。
我們更加傾向于采用第二種,因?yàn)楸容^簡(jiǎn)單:這使得我們?cè)诖罅康哪_本中能很方便的集成郵件通知功能。
五、總結(jié)
本文描述了通過 postfix 做 smtp relay 的方式來解決賬號(hào)泄露的風(fēng)險(xiǎn),這也再一次驗(yàn)證了兩點(diǎn):
- 代理是王道,幫懶人快速解決問題。
- 技術(shù)遇到的問題必須用技術(shù)來解決,這比所謂的架構(gòu) / 流程要靠譜的多。
【本文是專欄機(jī)構(gòu)“豈安科技”的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過微信公眾號(hào)(bigsec)聯(lián)系原作者】
??
??
??戳這里,看該作者更多好文??
網(wǎng)頁(yè)名稱:適用于初創(chuàng)公司的超輕量級(jí)smtp服務(wù)配置
文章來源:http://fisionsoft.com.cn/article/dpojjsh.html


咨詢
建站咨詢
