最近一直在搞郵件這塊,本來我們郵件發送是用的騰訊免費的企業郵箱,郵件功能沒有問題,但是由於郵件的限制,如下: 這些限制導致我們的部分客戶是收不到郵件的,哪怕付費,這樣的固定頻率限制也是無法解決的,可以說我們國內的郵件廠商都是這樣,而國外的卻要收費。 那麼問題來了,如何突破發送郵件的頻率限制? 1. ...
最近一直在搞郵件這塊,本來我們郵件發送是用的騰訊免費的企業郵箱,郵件功能沒有問題,但是由於郵件的限制,如下:
這些限制導致我們的部分客戶是收不到郵件的,哪怕付費,這樣的固定頻率限制也是無法解決的,可以說我們國內的郵件廠商都是這樣,而國外的卻要收費。
那麼問題來了,如何突破發送郵件的頻率限制?
1. 成為該企業用戶的白名單,也就是說有關係,讓郵件廠商後臺開放就行
2. 自己搭建郵件伺服器,其實這個就是最實在的
周末花了兩天時間搭建了郵件伺服器,也走了不少彎路,那麼咱們今天就來說說
我自己搭了兩款,一款是sendMail,這個搭建過程十分簡單,一步一步安裝,然後解析一下功能變數名稱就能發送,sendMail只限於linux部署
而我們做java的接觸的最多的就是apache的各大開源組件,而apache恰恰提供了郵件服務,那就是james
james目前已經更新到了3.0的beta5版本,這個版本不是穩定版的
而且在jdk7+會有bug存在,我也試過的確會報錯
既然3.0還沒有穩定版本並且帶有bug,而我們僅僅只需要收發郵件,那麼使用2.3的穩定版本是當然沒有問題的
好!那我們現在開始使用jame2.3.2的穩定版本來做我們的郵件伺服器:
首先需要在linux上安裝jdk,我們使用的是JDK7(安裝步驟略)
郵件伺服器的smtp使用25埠,必須保證此埠沒有被占用
如果被占用了,關閉即可
使用ftp工具把james-2.3.2的壓縮包上傳至伺服器:
解壓縮並且重命名後:
進入bin目錄,並且運行run.sh
哎喲,發現報錯,沒有這個命令
沒關係,我們給phoenix.sh加上許可權即可
然後伺服器啟動成功!
接下來我們就來進行james的相關配置:
ctrl+c 可以退出運行著的後臺,然後我們進入以下目錄
修改config.xml這個配置文件
找到並且修改這段配置
改為:
autodetct:true 表示自動偵測主機名,設成false會使用指定的server name
autodetectIP:true 表示會為你的servername加上ip,所以直接false就行
servername就改成你所需要的功能變數名稱就行
註釋掉此段代碼
配置DNS Server,查看DNS
再查看主機dns
然後再設置如下:
找到並且註釋這段代碼
然後再修改hosts
然後我們在來優化一下James記憶體使用,修改此目錄下的這個文件
改成此配置即可
最後在bin下的phoenix.sh中添加如下配置
配置完後reboot一下
computer rebooting... ...
重啟完後啟動james,sh run.sh
這個時候啟動完畢,james配置成功。這個時候,我們還是需要用戶的,沒有用戶就不能不收發郵件了
修改用戶名密碼,這個主要用來登錄james進行相關操作的
修改完後保存,這個時候我們就要添加用戶了
先登錄連接上james,但是發現命令不存在
那麼直接安裝一下即可
再次登錄發現成功
james主要提供瞭如下命令,看名字就知道怎麼用,十分簡單
按照命令添加用戶
OK,至此所以配置完畢,我們使用javamail來測試一下吧!
測試發送到163,搜狐,以及qq郵箱,163可以接受,而搜狐和qq不能接受,設置白名單就行
最終受到郵件就是這樣的,紅框匹配james中新增加的用戶以及功能變數名稱
關於發送的郵件被其他郵件廠商當成垃圾郵件,這個暫時沒有解決,如果哪位大俠知道請隨時指點一二!