1. 程式人生 > >Linux centos7 下使用James3.2.0版本及James2.3.2.1版本郵箱搭建

Linux centos7 下使用James3.2.0版本及James2.3.2.1版本郵箱搭建

 

 

因公司的業務需要,需要搭建一個自己的郵箱伺服器。選了很多的版本,最後選擇了James,並且分為兩個James的版本。3版本的和2版本的在以下都會介紹安裝配置和使用,以及外網部署的配置。參考別人的部落格以及對於James的官網研究了將近三天,最後將兩個版本的都測試成功。

一:準備工作(配置好java環境的機器)

準備的工具:①:區域網配置:James的安裝包,Linux虛擬機器可上網的那種(方便測試對外圍發郵件)。虛擬機器域名配置(vim /etc/hosts),mysql資料庫。mysql的連線jar包(將郵箱的資訊儲存於資料庫中)

                     ②:線上配置:james的安裝包,可以上網的域名,並且有域名解析,mysql資料庫。mysql對應版本的的連線jar包

二:郵件傳送的過程

 

三:James2.3.2區域網配置

1:下載安裝包

2:我的虛擬機器的域名:

3:使用ftp工具將安裝包上傳到伺服器中,並且解壓,進入bin目錄下

如果你的不是可執行的腳步,直接 chmod 777 *.sh即可。

4:執行./run.sh 就可以啟動james2版本的郵件服務。

如果啟動不了,就檢視下埠是否被佔用  lsof -i:25 檢視25佔用的情況,並且殺死改程序顯示如下效果就說明你已經啟動成功了。

啟動成功後就會出現如下目錄的結構,其中我們要配的就是SAR-INF/目錄下的config.xml就可以了。(注意檔案路徑所在地)

5:修改配置,讓其連線mysql資料庫(oracle也可以,匯入jar包配置地址就行了)

jar包匯入後下面配置一下config.xml。其中包含資料庫連線,pop3的配置,smtp的配置等相關資訊。

我是用winscp工具連線虛擬機器,並且用sublime開啟文字進行修改。

mysql的配置

 <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
         <driver>com.mysql.jdbc.Driver</driver>
         <dburl>jdbc:mysql://192.168.0.102:3306/mail?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</dburl>
         <user>root</user>
         <password>123456</password>
         <poolPreparedStatements>true</poolPreparedStatements>
         <max>20</max>
 </data-source>

6:配置好資料庫的連線後,需要配置james檔案儲存方式。james2.3.2預設採用file的方式儲存郵件資訊和郵件使用者的資訊。James在其james-2.3.2\apps\james\var\users路徑下將使用者資訊以檔案形式儲存

郵件資料儲存選擇,根據xml來看,提供的有3中資料儲存方式:

參考連線:https://blog.csdn.net/xiao__jia__jia/article/details/83619404
①.file:// 檔案儲存
②.db:// 資料庫儲存
③.dbfile:// 資料檔案式儲存

全部修改為資料庫的儲存

找到<users-store>,這個標籤內部管理的是儲存介質,如下:

在config.xml找到

<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/>  

將其註釋,新增如下所示的配置

<spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>

依舊是config.xml,找到<inboxRepository>的配置,如下:

<inboxRepository>
    <repository destinationURL="file://var/mail/inboxes/" type="MAIL"/>
</inboxRepository>

<!--
<inboxRepository>
    <repository destinationURL="db://maildb/inbox/" type="MAIL"/>
</inboxRepository>
-->

將以檔案儲存的內容註釋掉,將資料庫儲存的內容去掉註釋,結果如下圖所示

找到RemoteAddNotINetwork=127.0.0.1註釋掉此段程式碼

 到這裡,儲存介質的切換就完成了。在資料庫中新建資料庫mail(資料庫的名字可以不是mail)

重啟James,再看mail資料庫,新建了三張表users,inbox,spool。表users儲存的是郵件伺服器的使用者資訊。表inbox儲存的是收件箱的內容。表spool儲存的是還未檢視的郵件,一旦郵件被檢視,就會從這張表中刪除,轉而儲存到inbox中。

至此james資料儲存形式更改就成功了。下面配置一下pop3和smtp相關的內容。

①:改成自己的虛擬機器的域名,郵件管理員的配置

②這裡的server配置如下

<!--將兩個true改為false,autodetct設為true會自動偵測你的主機名,設成false會用你指定的server name; autodetectIP設為true會為你的servername加上ip。-->

dns服務設定如下圖所示

③:配置smtp

<smtpserver enabled="true">
      <port>25</port>
      <handler>
        <!--開啟這個註釋,開啟SMTP AUTH-->
         <authRequired>true</authRequired>
        <!--如果將自己傳送郵件伺服器的地址配置在下面,則發郵件伺服器不需要去進行SMTP AUTH驗證,一般不需要修改-->
        <authorizedAddresses>0.0.0.0</authorizedAddresses>
       <!--如果該選項設定為true,則要求在傳送郵件時登入使用者與傳送郵件使用者必須是一個域名,且要求傳送郵件地址@後面的域名必須與上面配置的servername相同,若為false則無此限制-->
         <verifyIdentity>true</verifyIdentity>
      </handler>
</smtpserver>
<!--james是通過telnet進行新增使用者的,下面主要是配置telnet的埠與登入使用者名稱和密碼-->

<!--主要配置基本完成,查詢autodetect和autodetectIP屬性,修改為false,將所有的localhost和myMailServer替換為配置的域名,如標籤裡的內容 -->

這裡有pop3的設定也是一樣的,smtp也是一樣。至此配置已經結束。

7:下面測試一下本地發郵件的效果。

①啟動james新加使用者,可以輸入help檢視命令,下面是新增兩個使用者到郵件伺服器中

同時mysql資料庫中也有兩個使用者了,然後測試用火狐的客戶端登入郵箱測試郵件的傳送(如果發現登入不了,嘗試關閉防火牆就可以了

點選手動設定(這個火狐其實有建立賬戶其實有歧義的,其實就是登入郵箱)

同時可以對外網進行傳送。前提是你的虛擬機器能夠聯網,同時(例如qq郵箱) 要將test.com設定白名單域名,否則會在垃圾箱中。

資料庫中也存有郵件的資訊

到這裡james區域網的郵件配置就完成了。功能就是可以給其他郵箱發郵件,自己伺服器的內部可以互相收取郵件。缺少接受外網郵件的功能。

四:james2.3.2外網的配置主要是域名解析的配置。

1:域名的配置解析

2:將郵件伺服器移到域名所指的ip伺服器中,同時修改config.xml中的域名(將test.com替換成你的域名),修改資料庫的配置

3:啟動專案,同樣的新增使用者。telnet localhost 4555 同樣的操作。(啟動郵件的時候:./run.sh &退出可以繼續執行),或者新開一個shell視窗進行新增操作。

4:用qq郵箱進行測試,傳送過後點選火狐客戶端的拉取按鈕進行拉取郵箱資訊。

5:開啟火狐客戶端的郵箱 點選收取按鈕

我的郵件回覆是電腦原因。正常都是可以回覆成功的。(此處針對本片文章可以忽略)

至此james2.3.2接收外網發郵件的功能已經成功結束。

五:james3.2.0郵件的內外網配置(先記錄內網的配置,而後記錄外網配置)

1:同樣的將安裝包下載下來,上傳到伺服器中,配置好java環境。由於是zip包,所有需要伺服器安裝unzip的命令。

安裝包下載可以從我

james3版本和2版本的區別就是,配置檔案分開了,而且3比較完善一點。同時資料庫的表名稱更改了,3版本預設的頁數檔案儲存資訊。

下面針對每個配置檔案進行說明

配置其實還是一樣的,找到對應的節點,按照2.3.2的配置方式進行配置。 

1:dnsservice.xml

<dnsservice>
   <servers>

        <server>192.168.0.1</server>       
        <server>114.114.114.114</server>

   </servers>
   <autodiscover>false</autodiscover>
   <authoritative>false</authoritative>

   <!-- Maximum number of entries to maintain in the DNS cache -->
   <maxcachesize>50000</maxcachesize>

</dnsservice>

2:domainlist.xml


      
              

3:imapserver.xml

 其中幾個重要的點就是 autodetect ="false" 一定要設定為false,並且helloName一定要開啟。如上圖所示。

還有pop3也是一樣的配置。

smtp.xml設定比較重要

4:資料庫的配置

 

5:mailetcontainer.xml

 將下面的程式碼註釋了

6:mangerservice.xml

7:配置mailetcontainer.xml:(一定要按照下面的方式去修改儲存方式)

  1.     postmaster 修改為管理員郵箱,可以為 [email protected]
  2.     repositoryPath 同時存在檔案儲存(file://)、資料庫儲存(db://) 的,將預設的檔案儲存註釋掉,並釋放資料庫儲存;對於只存在檔案儲存的,不進行釋放。分別如下圖所示:(轉自https://blog.csdn.net/hjnth/article/details/82931569

 至此james3.2.0內網的的基本配置就完了。可以測試一下了。啟動james。並且新增使用者,傳送郵件。

8:測試傳送郵件:啟動後資料庫中含有表了。出現如下的表示啟動成功了(忽略中間報錯的過程,外網不存在的。)

進入bin目錄,客戶端。新增新的使用者 

命令是:sh james-cli.sh -h localhost -p 9999 AddUser [email protected] 123456

               sh james-cli.sh -h localhost -p 9999 AddUser [email protected] 123456

資料庫中也有兩個使用者了

區域網的使用者傳送郵件測試。當然也可以傳送給QQ郵箱郵件。我這裡因為電腦的原因,測試不了。有興趣的可以測一下。

 六:james3.2.0郵件的外網配置

1:將james3.2.0的安裝包放入域名所對應的伺服器中進行啟動。

1:同2.3.2版本一樣的,按照內網的修改方式修改對應的資料庫。配置好域名的解析。各種服務的域名等。

2:安裝郵件伺服器的域名伺服器地址用netstat -rn檢視配置。

3:直接測試外網的郵件伺服器。

外網郵件服務啟動成功

 

下面測試用qq發郵件的過程。

後臺列印了日誌

登陸火狐客戶端,點選收取按鈕,郵件已到賬。 

 七:james郵箱資訊的儲存

james2.3.2郵箱的新儲存在inbox表中,其中詳細資訊如下圖

 隨便找一個解碼一下。發現就是這個內容,具體的表結構,大家可以仔細研究。

 

感謝大家的支援,文筆有限,如果按照本文沒能成功搭建服務,請參考其他資訊,官方文件等方式。