一、安裝:
1. 環境要求:
已安裝Java平臺,版本為j2sdk1.4.2,環境變量JAVA_HOME設為C:"j2sdk1.4.2;
2. 下載與運行:
從Apache網站上下載得到一個壓縮的文件james-2.1-bin.zip,大小為4.44M,將此包解壓到C:"James"james-2.1下。
運行分為兩種方式:前臺直接運行、作為后臺服務運行;
1>前臺直接運行:
在C:"James"james-2.1"bin下運行run.bat
這是會出現:
Using PHOENIX_HOME: C:"James"james-2.1
Using PHOENIX_TMPDIR: C:"James"james-2.1"temp
Using JAVA_HOME: C:"j2sdk1.4.2
Phoenix 4.0.1
James 2.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service Disabled
Fetch POP Disabled
這是就表示James郵件服務以開啟,不過Window下不能關閉控制臺窗口,否者郵件服務會停止。如要克服此缺點必須使James郵件服務作為作為后臺服務運行。
停止前臺運行按Ctrl+C,會出現:
JVM exiting abnormally. Shutting down Phoenix.
終止批處理操作嗎(Y/N)?
2>后臺服務運行:
將C:"James"james-2.1"conf目錄下的wrapper.conf拷貝到C:"James"james-2.1"bin即包含wrapper.exe的目錄下,運行:
wrapper.exe -i C:"James"james-2.1"bin"wrapper.conf
然后在控制面板中開啟服務或重啟即可。
卸載后臺服務:
到C:"James"james-2.1"bin即包含wrapper.exe的目錄下,運行:
wrapper.exe -r C:"James"james-2.1"bin"wrapper.conf
3.
二、配置:
1>服務器端配置(郵件服務器的名字假設叫EmailServer,服務器管理員名Admin)
首先停止已開啟的James郵件服務,然后打開文件C:"James"james-2.1"apps"james"SAR-INF"config.xml。
Ø 在config.xml文件中,找到Postmaster@localhost,把此項改為Admin@EmailServer,同時,找到位于
<!-- By default, the servername 'localhost' is specified. This can be removed, if required. -->
- <!--
-->
- <!-- Warning: If you are using fetchpop it is important to include the -->
- <!-- fetched domains in the server name list to prevent looping. -->
- <servernames autodetect="true" autodetectIP="true">
- <!-- CONFIRM?
-->
<servername> localhost </servername>
</servernames>
的localhost,把此項改為EmailServer。這樣就可以讓其它機器也能訪問郵件系統。
Ø DNS配置:找到同上文件中<dnsserver>段中的如下程序段:
- <dnsserver>
- <servers>
- <!-- CONFIRM? -->
- <!-- Enter ip address of your DNS server, one IP address per server -->
- <!-- element. The default configuration assumes a DNS server on the localhost. -->
<server>127.0.0.1</server>
</servers>
<authoritative>false</authoritative>
</dnsserver>
將127.0.0.1的位置填入DNS服務器的IP地址;
Ø 修改管理員密碼:
找到同上文件中的<administrator_accounts>段,如下程序段
- <administrator_accounts>
- <!-- CHECKME!
-->
- <!-- Change the default login/password.
-->
<account login="root" password="root" />
</administrator_accounts>
將默認用戶名root與密碼root修改為需要的值
Ø 修改telnet管理程序登錄端口 :(默認為4555)
找到同上文件中的<remotemanager>段下的port如下程序段
- <remotemanager>
<port>4555</port>
- <!-- Uncomment this if you want to bind to a specific inetaddress
-->
- <!--
將<port>4555</port>之間的端口號4555改為需要的端口。
2> 客戶端配置:(略)
3>帳號管理
James的賬號管理是通過telnet完成的,登錄命令為:
telnet EmailServer 4555
其中EmailServer也可以換成IP,4555是端口號。登錄時需要用戶名和密碼,開始默認的用戶名和密碼均為root。若登錄成功,提示如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
此時輸入root用戶名,然后會出現:
Password:
輸入密碼root
注意:在有些操作系統如Windows2000上,用戶輸入均不顯示。
telnet命令列表:
help
|
顯示幫助
|
Listusers
|
列出目前存在的賬戶
|
Countusers
|
顯示目前存在的賬戶的數量
|
addusers [用戶名] [密碼]
|
添加新用戶
|
verify [用戶名]
|
驗證特定用戶是否存在
|
deluser [用戶名]
|
刪除已存在用戶
|
setpassword [用戶名] [密碼]
|
設置某一用戶的密碼
|
setalias [別名] [用戶名]
|
從本地將[別名]的所有郵件轉寄[用戶名]
|
unsetalias [別名]
|
取消setalias設置
|
setforwarding [用戶名] [email地址]
|
將[用戶名]的郵件轉寄指定[email地址]
|
unsetforwarding [用戶名]
|
取消setforwarding設置
|
user [資源]
|
變為另一用戶的資源
|
shutdown
|
停止當前James郵件服務的JVM程序(對于James為后臺服務時,用此命令很方便)
|
Quit
|
斷開telnet連接
|
4>用戶信息的數據庫存儲
James郵件用戶的用戶信息默認保存在apps"james"var"users目錄下,通過修改配置文件apps"james"SAR-INF"config.xml,可以把用戶信息保存到數據庫中,配置方法如下:
假設使用的是MySQL數據庫:
第一步:首先將MySQL的驅動程序(例如:mysql-connector-java-3.1.6-bin.jar)考到james的lib目錄下(例如:D:"james"lib)
第二步:在MySQL中新建一個數據庫mail;
第三步:打開config.xml,找到<users-store>這一項,此面默認的內容為:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
|
需要修改為:
<repository name="LocalUsers"
class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users">
<sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>
|
其實如不修改也行,因為文件下面也有實例,不過是用<!-- 和 --> 注釋掉的,打開即可;記住把
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
用<!-- 和 --> 注釋掉;
通過修改,我們就把用戶信息的存儲介質從file改成了db,<sqlFile>是指明了在db中的數據表結構及相關數據庫信息。
第四步:仍然是config.xml,找到<data-sources>項,默認內容為空,把此項內容修改為:
<data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource">
<driver>org.gjt.mm.mysql.Driver</driver>
<dburl>jdbc:mysql://127.0.0.1/mail</dburl>
<user>root</user>
<password></password>
<max>20</max>
</data-source>
|
或打開文件下面實例的<!-- 和 --> 注釋
<driver>是指MySQL的JDBC驅動,注意這個默認的<driver>是有問題的,要改成MySQL的驅動程序中Driver.class的路徑,即:
<driver>com.mysql.jdbc.Driver</driver>
<dburl>指數據庫的訪問路徑,IP后的mail即MySQL中新建數據庫名,接下來是用戶名、密碼及最大連接數。
再次啟動時,james將在mail數據庫中自動創建有關用戶的表格。
至此,數據庫配置完成,啟動James,若正常無誤,請通過telnet添加一個新用戶,比如adduser holen 123456,然后檢查MySQL中的mail數據庫,下面將有一個表users,這是James根據file://conf/sqlResources.xml的內容創建的。
通過以上配置,James的用戶信息就可以保存在數據庫中了。
注:修改以前的賬戶會丟失!
一、FAQ
1、在啟動james時,提示POP3或SMTP不能使用?
請檢查一下,看“管理工具—>服務”里面,是不是啟動了別的郵件服務器,已將110或25端口占用了。
實例:
james前臺直接運行時出錯:
ERROR 2005-08-25 08:58:38.642 [Phoenix.] (): Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).
ERROR 2005-08-25 08:58:38.652 [Phoenix.] (): There was an error running phase "startup" for Block named "smtpserver". (Reason: Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).).
org.apache.excalibur.containerkit.lifecycle.LifecycleException: Component named "smtpserver" failed to pass through the Initialization stage. (Reason: Java.net.BindException: Address already in use: JVM_Bind).
原因:
james默認設置不允許在同一臺機器上跑兩個郵件服務器進程。必須關掉另一個!
檢測方法:
console界面下:
d:> telnet 主機名 25(或110)
如果可以登錄,出現
220 主機名 Microsoft ESMTP MAIL Service, Version: 6.0.2600.1106 ready at Thu,
25 Aug 2005 14:14:36 +0800
則說明此機器上已有一臺郵件服務器在運行。
解決:
檢查Windows上運行服務:
跨網傳輸電子郵件的服務Simple Mail Transfer Protocol (SMTP),是否啟動
如啟動關閉之!
2、 JAVA_HOME找不到?
請在run.bat中指定JAVA_HOME,若還不行,請在“我的電腦—>系統—>高級—>環境變量”中添加一項JAVA_HOME。
3、服務器啟動正常,但客戶端不能收發郵件?
請檢查客戶端配置是否正常,參照前面所講,另外,請檢查james下的config.xml,是否把localhost改成了機器名。
4、修改為數據庫儲存后,james啟動出錯:
一般是數據庫驅動有錯。檢查一下
<data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource">
<driver>org.gjt.mm.mysql.Driver</driver>
<dburl>jdbc:mysql://127.0.0.1/mail</dburl>
<user>root</user>
<password></password>
<max>20</max>
</data-source>
的<driver>org.gjt.mm.mysql.Driver</driver>是否對
posted on 2007-10-16 16:42
周銳 閱讀(1885)
評論(0) 編輯 收藏 所屬分類:
Apache 、
Java