2011年3月24日

            由于項目需要部署在Linux上,而又使用到Apache James作郵件服務(wù)器,因此總結(jié)了一下在Linux上部署Apache James的步驟,寫得比較凌亂。

          在Linux上部署Apache James

          前提工作:

          1)由于Apache James郵件服務(wù)需要用到1024以下的端口,因此請用root用戶登錄進行部署。

          2)需要先安裝JDK1.5或以上版本,部署前請確保您的JDK環(huán)境變量如JAVA_HOME等已經(jīng)設(shè)置好。

          3)James 啟動時,其SMTP 服務(wù)默認在 25 端口啟動,POP3 服務(wù)默認在 110 端口啟動, NNTP 服務(wù)默認在 119 端口啟動, 請確保這些端口未被占用。Linux下查過這些端口是否被占用的命令是:lsof -i:端口號,例如:

          [root@nhslj-app ~]# lsof -i:25

          COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME

          sendmail 3268 root    4u  IPv4   8650       TCP nhslj-app:smtp (LISTEN)

          這表示25端口正在被sendmail服務(wù)占用。

          關(guān)閉SendMail服務(wù):

          一般RedHat的系統(tǒng)安裝時都會默認安裝了sendmail郵件服務(wù),因此在部署Apache James時,需要把sendmail關(guān)閉。可以通過以下方法來關(guān)閉sendmail,以防止系統(tǒng)重啟時又自動啟動sendmail服務(wù)。

          1)用chkconfig --list sendmail命令查看sendmail的情況:

          [root@susun177 ~]# chkconfig --list sendmail

          sendmail        0:關(guān)閉  1:關(guān)閉  2:啟用  3:關(guān)閉  4:啟用  5:啟用  6:關(guān)閉

          2)通過chkconfig sendmail off命令來關(guān)閉sendmail的啟動:

          [root@susun177 ~]# chkconfig sendmail off

          3)這時再用chkconfig --list sendmail命令可以查看到sendmail的所有啟動級別都已經(jīng)關(guān)閉了:

          [root@susun177 ~]# chkconfig --list sendmail

          sendmail        0:關(guān)閉  1:關(guān)閉  2:關(guān)閉  3:關(guān)閉  4:關(guān)閉  5:關(guān)閉  6:關(guān)閉

          這樣,即使重新啟動Linux系統(tǒng),sendmail服務(wù)也不會自動啟動了。

          前期工作做完了,接下來就是部署Apache  James了。

          1)解壓Apache James包(apache-james-2.3.2.tar.gz):

          [root@susun177 local]# tar zxvf apache-james-2.3.2.tar.gz

          解壓后,會多了一個目錄james-2.3.2

          2)進入james-2.3.2/bin目錄,運行run.sh,生成james的配置文件config.xml:

          [root@susun177 bin]# sh run.sh

          run.sh: line 37: /usr/local/james-2.3.2/bin/phoenix.sh: 權(quán)限不夠

          權(quán)限不夠(估計是解壓后run.sh文件沒有賦予執(zhí)行權(quán)限),可以執(zhí)行以下命令:

          [root@susun177 bin]# chmod +x run.sh phoenix.sh

          然后再次運行run.sh命令:

          [root@susun177 bin]# sh run.sh

          Using PHOENIX_HOME:   /usr/local/james-2.3.2

          Using PHOENIX_TMPDIR: /usr/local/james-2.3.2/temp

          Using JAVA_HOME:      /usr/java/jdk1.5.0

          Running Phoenix:

          Phoenix 4.2

          James Mail Server 2.3.2

          Remote Manager Service started plain:4555

          POP3 Service started plain:110

          SMTP Service started plain:25

          NNTP Service started plain:119

          FetchMail Disabled

          說明James啟動成功。

          3)按Ctrl + C退出James,編輯config.xml文件。生成的config.xml放置在../james-2.3.2/apps/james/SAR- INF目錄下。關(guān)于James的config.xml的修改,網(wǎng)上很多資料,請自行查閱。在這里,只寫關(guān)鍵的修改:

          A)找到<servernames autodetect="true" autodetectIP="true"> 設(shè)成        

                   autodetect="false" autodetectIP="false"

                   autodetct設(shè)為true會自動偵測你的主機名,設(shè)成false會用你指定的server name。

                   autodetectIP設(shè)為true會為你的servername加上ip。

          B)設(shè)置servername 將默認的為localhost改成你的server名字 如king.cn:

          <servername>king.cn</servername>

          然后修改Linux的hosts主機設(shè)置文件:

          [root@susun177 SAR-INF]# vi /etc/hosts

          在打開的文件添加一行,然后保存:

          192.168.1.177           king.cn   king

          注意:第一個為IP地址  第二個為主機域名  第三個為主機名稱

          提示:名字后面應(yīng)該要加上.com或者.cn這樣163等郵件服務(wù)器才不會拒絕的。

          C)注釋掉

                   <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor>

                       <processor> relay-denied </processor>

                       <notice>550 - Requested action not taken: relaying denied</notice>

                   </mailet>

          D)配置DNS Server,先通過netstat命令查看dns配置

          [root@susun177 SAR-INF]# netstat -rn

          Kernel IP routing table

          Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

          192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

          169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

          找到<dnsserver>,在<servers>里最前面添加一行: <server>192.168.1.0</server> ,                同時設(shè)置autodiscover為false。

             <dnsserver>

                <servers>

                   <!--Enter ip address of your DNS server, one IP address per server -->

                   <!-- element. -->

                   <!--

                    <server>127.0.0.1</server>

                   -->

                     <server>10.168.0.10</server>         

                </servers>

                <!-- Change autodiscover to false if you would like to turn off autodiscovery -->

                <!-- and set the DNS servers manually in the <servers> section -->

                <autodiscover>false</autodiscover>

                <authoritative>false</authoritative>

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

                <maxcachesize>50000</maxcachesize>

             </dnsserver>

          E)修改James數(shù)據(jù)庫連接字符串:

                <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">

                   <driver>oracle.jdbc.driver.OracleDriver</driver>

                   <dburl>jdbc:oracle:thin:@192.168.1.17:1521:hello</dburl>

                   <user>hello</user>

                   <password>kitty</password>

                   <keep-alive>select 1 from dual</keep-alive>

                   <testOnBorrow>true</testOnBorrow>

                   <testOnReturn>true</testOnReturn>

                   <max>50</max>

                </data-source>

          以上用的是oracle數(shù)據(jù)庫,如果是其他數(shù)據(jù)庫,則需要修改為對應(yīng)的數(shù)據(jù)庫連接驅(qū)動,以及數(shù)據(jù)庫用戶信息。

          注意:一定要記得配置<keep-alive>,該參數(shù)的意思是,在使用連接池的連接之前,是否需要驗證該連接是否有效。之前,我沒有設(shè)置該參數(shù),結(jié)果總是出現(xiàn)收不到郵件的問題。

          4)優(yōu)化一下James內(nèi)存,在../james-2.3.2/bi/phoenix.sh加入:

          # Set Heap Size 2007-0818,fix OutOfMemory bug while transporting big mail

          PHOENIX_JVM_OPTS="$PHOENIX_JVM_OPTS -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M"

          修改../james-2.3.2/conf/wrapper.conf的jvm配置,設(shè)置初始內(nèi)存128M,最大內(nèi)存512M

                             # Initial Java Heap Size (in MB)

                             #wrapper.java.initmemory=16

                             wrapper.java.initmemory=128

                  

                             # Maximum Java Heap Size (in MB)

                             #wrapper.java.maxmemory=64

                             wrapper.java.maxmemory=512

          5) 復(fù)制數(shù)據(jù)庫驅(qū)動到../james-2.3.2/lib目錄下,我用的是oracle數(shù)據(jù)庫,驅(qū)動包為:ojdbc14.jar

          6)重啟Apache James服務(wù)。

          7)最后,進入郵件系統(tǒng)全局管理,將系統(tǒng)的域名改為上述的server name。

          8)如無意外一切OK。

          posted @ 2011-03-24 20:35 別昨非 閱讀(5012) | 評論 (0)編輯 收藏
           
          1. Map<String,String> map = new HashMap<String,String>();  
          2. for(Map.Entry<String, String> entry : map.entrySet()){  
          3.     String value = entry.getValue();  
          4.     String key = entry.getKey();  
          5. }
          posted @ 2011-03-24 11:08 別昨非 閱讀(353) | 評論 (0)編輯 收藏
           
          主站蜘蛛池模板: 彰武县| 成安县| 临澧县| 米泉市| 沐川县| 青冈县| 浦北县| 南溪县| 图片| 林甸县| 龙山县| 龙里县| 开阳县| 玉田县| 长春市| 大同县| 耿马| 碌曲县| 紫金县| 云南省| 民权县| 襄城县| 沭阳县| 临夏县| 嘉禾县| 江源县| 报价| 金寨县| 米泉市| 泰和县| 宜君县| 怀仁县| 邳州市| 项城市| 丹寨县| 调兵山市| 怀化市| 蕉岭县| 年辖:市辖区| 太仓市| 张家口市|