james安装与配置一、安装: 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.1Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service DisabledFetch 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.conf3. 二、配置: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 >- <!-- 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.1Please enter your login and passwordLogin 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的用户信息就可以保存在数据库中了。注:修改以前的账户会丢失! 一、FAQ1、 在启动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>是否对
james安装与配置一、安装:
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.1Remote Manager Service started plain:4555POP3 Service started plain:110SMTP Service started plain:25NNTP Service DisabledFetch 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.conf3. 二、配置: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 >- <!-- 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.1Please enter your login and passwordLogin 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的用户信息就可以保存在数据库中了。注:修改以前的账户会丢失! 一、FAQ1、 在启动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>是否对