Apache james 安装配置手册
杨亮 2010年7月28日
1 Apache james安装
James的安装配置过程非常简单。
第一步:安装JDK
请使用JDK1.5以上版本(推荐使用JDK1.5),假设安装在c:jdk1.5。
第二步:下载James,并解压
到Apache网站上下载James2.3.2,下载将得到一个压缩文件apache-james-2.3.2.zip,大小为7.5M,将此包解压到D:james。
第三步:直接运行或需要配置JAVA_HOME
这时,可以尝试直接双击D:jamesbinrun.bat,若启动无误,将提示如下:
Using PHOENIX_HOME: D:james
Using PHOENIX_TMPDIR: D:jamestemp
Using JAVA_HOME: C:Program FilesJavajdk1.5.0_06
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
2 Apache james配置
2.1 参数配置
第一次运行bin下的run.bat,会在apps下生成james文件夹,打开SAR-INF下的config.xml,该文件包含对james邮件服务器参数的配置,其中包括邮件服务器名,DNS,邮件用户和邮件文件夹的数据库配置等。
2.2 基本配置
修改config.xml
①、 查找替换所有的localhost为你的域名(jx-safety.com)
②、查找所有autodetect属性,修改为false。
autodetectIP也设为false.
③、注释掉
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor>
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
④、配置DNS Server
用ipconfig /all查看你的DNS配置,添加到列表中
<dnsserver>
<servers>
<server>222.172.200.68</server>
</servers>
</dnsserver>
⑤、配置smtp server,pop3 server等
查找所有myMailServer,替换为你的域名。如:
<helloName autodetect="false">myMailServer</helloName>,将myMailServer修改为你的域名(jx-safety.com)。
2.2.1 收件夹配置
收件夹可以指定在james的文件下,也可以指定存放到数据库,或两者都存放。
1.将收件夹下的邮件存放在james目录下的文件里
<inboxRepository>
<repository destinationURL="file://var/mail/inboxes/" type="MAIL"/>
</inboxRepository>
2.将收件夹下的邮件存放在数据库里
<inboxRepository>
<repository destinationURL="db://maildb/inbox/" type="MAIL"/>
</inboxRepository>
3.收件夹下的邮件同时存放在数据库和文件里
<inboxRepository>
<repository destinationURL="dbfile://maildb/inbox/" type="MAIL"/>
</inboxRepository>
将收件夹指定到数据库,需要引入数据库的jdbc driver,将jdbc放到james的根目录下的lib里。同时需要配置数据源<data-sources>,以oracle为例,先在oracle数据库建立表空间和用户(用户名:llr,密码:llr),配置如下:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>oracle.jdbc.driver.OracleDriver</driver>
<dburl>jdbc:oracle:thin:@192.168.1.199:1521:linewell</dburl>
<user>llr</user>
<password>llr</password>
<max>20</max>
</data-source>
如果是mysql数据库,先建一个假设以james为名的数据库,配置如下:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>org.gjt.mm.mysql.Driver</driver>
<dburl>jdbc:mysql://localhost/james</dburl>
<user>root</user>
<password></password>
<max>20</max>
</data-source>
2.2.2 临时邮件文件夹
<spoolRepository>
<repository destinationURL="db://maildb/spool/spool" type="SPOOL"/>
</spoolRepository>
2.2.3 用户数据存储的配置<users-store>
1.使用数据库存储
<repository
name="LocalUsers"
class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users">
<sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>
2.使用james本地文件存储
<repository
name="LocalUsers"
class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
<users-store>的配置是当用户修改好配置,第二次起动后,用conf文件夹下的Resources.xml在数据库里生成users, inbox, spool表,即表的初始化。
james 附件大小设置
<!-- This sets the maximum allowed message size (in kilobytes) for this -->
<!-- SMTP service. If unspecified, the value defaults to 0, which means no limit. -->
<maxmessagesize>0</maxmessagesize>
3 Apache james后台使用
3.1 创建邮件帐号
创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。
现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:
C:Documents and Settingsdb2admin>telnet localhost 4555
C:Documents and Settingsdb2admin>telnet localhost 4555
将进入
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:
JAMES Remote Administration Tool 2.3.1
Please enter your login and password
Login id:
Password:
Welcome root. HELP for a list of commands
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id: Password: Welcome root. HELP for a list of commands
创建新用户的命令是:adduser username password
3.2 命令使用介绍
help display this help 显示帮助信息
listusers display existing accounts 显示现有账户
countusers display the number of existing accounts 显示现有账户数量
adduser [username] [password] add a new user 添加一个新用户
verify [username] verify if specified user exist 核实指定用户是否存在
deluser [username] delete existing user 删除存在的用户
setpassword [username] [password] sets a user's password 设置用户密码
setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名
showalias [username] shows a user's current email alias 显示别名
unsetalias [user] unsets an alias for 'user' 删除用户别名
setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址
showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
unsetforwarding [username] emoves a forward 删除转发
user [repositoryname] change to another user repository 改变另一个用户库
shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务
quit close connection 关闭telnet连接
4问题解答
a.内网邮件收发正常,外网邮件只能收,不能发?
问题出在网络环境,没有DNS服务器或者配置不对,和apache james的配置没有关系。
b.james的后台管理
james后台管理通过telnet端口实现,用命令操作邮件服务器。
c.james的客户端选择
James可选择outlook,foxmail,一些客户端的邮件系统,如卡尔罗斯等。客户端的配置也会影响邮件的发送,由于客户端的配置相对简单,这里不再赘述。