一、安裝:
1. 環(huán)境要求:
已安裝Java平臺(tái),版本為j2sdk1.4.2,環(huán)境變量JAVA_HOME設(shè)為C:"j2sdk1.4.2;
2. 下載與運(yùn)行:
從Apache網(wǎng)站上下載得到一個(gè)壓縮的文件james-2.1-bin.zip,大小為4.44M,將此包解壓到C:"James"james-2.1下。
運(yùn)行分為兩種方式:前臺(tái)直接運(yùn)行、作為后臺(tái)服務(wù)運(yùn)行;
1>前臺(tái)直接運(yùn)行:
在C:"James"james-2.1"bin下運(yùn)行run.bat
這是會(huì)出現(xiàn):
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郵件服務(wù)以開(kāi)啟,不過(guò)Window下不能關(guān)閉控制臺(tái)窗口,否者郵件服務(wù)會(huì)停止。如要克服此缺點(diǎn)必須使James郵件服務(wù)作為作為后臺(tái)服務(wù)運(yùn)行。
停止前臺(tái)運(yùn)行按Ctrl+C,會(huì)出現(xiàn):
JVM exiting abnormally. Shutting down Phoenix.
終止批處理操作嗎(Y/N)?
2>后臺(tái)服務(wù)運(yùn)行:
將C:"James"james-2.1"conf目錄下的wrapper.conf拷貝到C:"James"james-2.1"bin即包含wrapper.exe的目錄下,運(yùn)行:
wrapper.exe -i C:"James"james-2.1"bin"wrapper.conf
然后在控制面板中開(kāi)啟服務(wù)或重啟即可。
卸載后臺(tái)服務(wù):
到C:"James"james-2.1"bin即包含wrapper.exe的目錄下,運(yùn)行:
wrapper.exe -r C:"James"james-2.1"bin"wrapper.conf
3.
二、配置:
1>服務(wù)器端配置(郵件服務(wù)器的名字假設(shè)叫EmailServer,服務(wù)器管理員名Admin)
首先停止已開(kāi)啟的James郵件服務(wù),然后打開(kāi)文件C:"James"james-2.1"apps"james"SAR-INF"config.xml。
Ø 在config.xml文件中,找到Postmaster@localhost,把此項(xiàng)改為Admin@EmailServer,同時(shí),找到位于
<!-- 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,把此項(xiàng)改為EmailServer。這樣就可以讓其它機(jī)器也能訪問(wèn)郵件系統(tǒng)。
Ø 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服務(wù)器的IP地址;
Ø 修改管理員密碼:
找到同上文件中的<administrator_accounts>段,如下程序段
- <administrator_accounts>
- <!-- CHECKME!
-->
- <!-- Change the default login/password.
-->
<account login="root" password="root" />
</administrator_accounts>
將默認(rèn)用戶名root與密碼root修改為需要的值
Ø 修改telnet管理程序登錄端口 :(默認(rèn)為4555)
找到同上文件中的<remotemanager>段下的port如下程序段
- <remotemanager>
<port>4555</port>
- <!-- Uncomment this if you want to bind to a specific inetaddress
-->
- <!--
將<port>4555</port>之間的端口號(hào)4555改為需要的端口。
2> 客戶端配置:(略)
3>帳號(hào)管理
James的賬號(hào)管理是通過(guò)telnet完成的,登錄命令為:
telnet EmailServer 4555
其中EmailServer也可以換成IP,4555是端口號(hào)。登錄時(shí)需要用戶名和密碼,開(kāi)始默認(rèn)的用戶名和密碼均為root。若登錄成功,提示如下:
JAMES Remote Administration Tool 2.1
Please enter your login and password
Login id:
此時(shí)輸入root用戶名,然后會(huì)出現(xiàn):
Password:
輸入密碼root
注意:在有些操作系統(tǒng)如Windows2000上,用戶輸入均不顯示。
telnet命令列表:
help |
顯示幫助 |
Listusers |
列出目前存在的賬戶 |
Countusers |
顯示目前存在的賬戶的數(shù)量 |
addusers [用戶名] [密碼] |
添加新用戶 |
verify [用戶名] |
驗(yàn)證特定用戶是否存在 |
deluser [用戶名] |
刪除已存在用戶 |
setpassword [用戶名] [密碼] |
設(shè)置某一用戶的密碼 |
setalias [別名] [用戶名] |
從本地將[別名]的所有郵件轉(zhuǎn)寄[用戶名] |
unsetalias [別名] |
取消setalias設(shè)置 |
setforwarding [用戶名] [email地址] |
將[用戶名]的郵件轉(zhuǎn)寄指定[email地址] |
unsetforwarding [用戶名] |
取消setforwarding設(shè)置 |
user [資源] |
變?yōu)榱硪挥脩舻馁Y源 |
shutdown |
停止當(dāng)前James郵件服務(wù)的JVM程序(對(duì)于James為后臺(tái)服務(wù)時(shí),用此命令很方便) |
Quit |
斷開(kāi)telnet連接 |
4>用戶信息的數(shù)據(jù)庫(kù)存儲(chǔ)
James郵件用戶的用戶信息默認(rèn)保存在apps"james"var"users目錄下,通過(guò)修改配置文件apps"james"SAR-INF"config.xml,可以把用戶信息保存到數(shù)據(jù)庫(kù)中,配置方法如下:
假設(shè)使用的是MySQL數(shù)據(jù)庫(kù):
第一步:首先將MySQL的驅(qū)動(dòng)程序(例如:mysql-connector-java-3.1.6-bin.jar)考到james的lib目錄下(例如:D:"james"lib)
第二步:在MySQL中新建一個(gè)數(shù)據(jù)庫(kù)mail;
第三步:打開(kāi)config.xml,找到<users-store>這一項(xiàng),此面默認(rèn)的內(nèi)容為:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> |
需要修改為:
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users"> |
其實(shí)如不修改也行,因?yàn)槲募旅嬉灿袑?shí)例,不過(guò)是用<!-- 和 --> 注釋掉的,打開(kāi)即可;記住把
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
用<!-- 和 --> 注釋掉;
通過(guò)修改,我們就把用戶信息的存儲(chǔ)介質(zhì)從file改成了db,<sqlFile>是指明了在db中的數(shù)據(jù)表結(jié)構(gòu)及相關(guān)數(shù)據(jù)庫(kù)信息。
第四步:仍然是config.xml,找到<data-sources>項(xiàng),默認(rèn)內(nèi)容為空,把此項(xiàng)內(nèi)容修改為:
<data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource"> |
或打開(kāi)文件下面實(shí)例的<!-- 和 --> 注釋
<driver>是指MySQL的JDBC驅(qū)動(dòng),注意這個(gè)默認(rèn)的<driver>是有問(wèn)題的,要改成MySQL的驅(qū)動(dòng)程序中Driver.class的路徑,即:
<driver>com.mysql.jdbc.Driver</driver>
<dburl>指數(shù)據(jù)庫(kù)的訪問(wèn)路徑,IP后的mail即MySQL中新建數(shù)據(jù)庫(kù)名,接下來(lái)是用戶名、密碼及最大連接數(shù)。
再次啟動(dòng)時(shí),james將在mail數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建有關(guān)用戶的表格。
至此,數(shù)據(jù)庫(kù)配置完成,啟動(dòng)James,若正常無(wú)誤,請(qǐng)通過(guò)telnet添加一個(gè)新用戶,比如adduser holen 123456,然后檢查MySQL中的mail數(shù)據(jù)庫(kù),下面將有一個(gè)表users,這是James根據(jù)file://conf/sqlResources.xml的內(nèi)容創(chuàng)建的。
通過(guò)以上配置,James的用戶信息就可以保存在數(shù)據(jù)庫(kù)中了。
注:修改以前的賬戶會(huì)丟失!
一、FAQ
1、在啟動(dòng)james時(shí),提示POP3或SMTP不能使用?
請(qǐng)檢查一下,看“管理工具—>服務(wù)”里面,是不是啟動(dòng)了別的郵件服務(wù)器,已將110或25端口占用了。
實(shí)例:
james前臺(tái)直接運(yùn)行時(shí)出錯(cuò):
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默認(rèn)設(shè)置不允許在同一臺(tái)機(jī)器上跑兩個(gè)郵件服務(wù)器進(jìn)程。必須關(guān)掉另一個(gè)!
檢測(cè)方法:
console界面下:
d:> telnet 主機(jī)名 25(或110)
如果可以登錄,出現(xiàn)
220 主機(jī)名 Microsoft ESMTP MAIL Service, Version: 6.0.2600.1106 ready at Thu,
25 Aug 2005 14:14:36 +0800
則說(shuō)明此機(jī)器上已有一臺(tái)郵件服務(wù)器在運(yùn)行。
解決:
檢查Windows上運(yùn)行服務(wù):
跨網(wǎng)傳輸電子郵件的服務(wù)Simple Mail Transfer Protocol (SMTP),是否啟動(dòng)
如啟動(dòng)關(guān)閉之!
2、 JAVA_HOME找不到?
請(qǐng)?jiān)?/span>run.bat中指定JAVA_HOME,若還不行,請(qǐng)?jiān)?#8220;我的電腦—>系統(tǒng)—>高級(jí)—>環(huán)境變量”中添加一項(xiàng)JAVA_HOME。
3、服務(wù)器啟動(dòng)正常,但客戶端不能收發(fā)郵件?
請(qǐng)檢查客戶端配置是否正常,參照前面所講,另外,請(qǐng)檢查james下的config.xml,是否把localhost改成了機(jī)器名。
4、修改為數(shù)據(jù)庫(kù)儲(chǔ)存后,james啟動(dòng)出錯(cuò):
一般是數(shù)據(jù)庫(kù)驅(qū)動(dòng)有錯(cuò)。檢查一下
<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>是否對(duì)