James简单运行配置java
James:Java Apache Mail Enterprise Server 是一个企业级的JAVA邮件服务器.开源的.
一.配置;
首先将james-binary-2.3.1.zip解压缩下载到你的安装目录。
咱们能够把这个过程理解为安装的过程。我在这里将它解压到c:\.而且把它更名为james.这样咱们的james就安装好了。目录为C:\james。在此以前你得安装JDK,配置JAVA环境变量.mysql
bin目录中的run.bat和run.sh是James的启动程序。只要记住这个重要文件就能够。
启动以后控制台显示以下:sql
Using PHOENIX_HOME: C:\james //james安装目录 Using PHOENIX_TMPDIR: C:\james\temp //james安装目录中的temp目录,用处不详 Using JAVA_HOME: C:\javaJdk //本机安装的JDK目录 James Mail Server 2.3.1 //james版本 Remote Manager Service started plain:4555 //james端口 POP3 Service started plain:110 //pop3 端口,可在config.xml中配置 SMTP Service started plain:25 //smtp 端口,可在config.xml中配置 NNTP Service started plain:119 //nntp 端口,可在config.xml中配置 FetchMail Disabled
Apps 目录下有个james的子目录这个目录是它的核心。
数据库
telnet localhost 4555 回车apache
这里链接到的是本机:localhost这个也是能够在config.xml里配置的,固然,若是配置成其余服务器,则须要将端口映射到本机上,这个能够在路由器里配置:192.168.0.1(具体地址视局域网而定)。服务器
而后输入管理员用户名和密码(user/pwd : root/root 是默认设置这个能够在config.xml中修改)
oracle
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id: root Password: root Welcome root.HELP for a list of commands
添加用户
app
adduser test test User test added Adduser lyle lyle User lyle added
listusers Existing accouts 2 user:lyle user:test
本身项目中的一些配置: sqlserver
更改配置文件:config.xml:测试
更改端口:
pop3server -- <port>201</port> smtpserver -- <port>202</port> nntpserver -- <port>203</port>
更改邮件服务器地址:
servernames -- <servername>whsite.ine.net.cn</servername>或:<servername>127.0.0.1</servername> administrator_accounts -- <account login="lyle" password="lyle"/>
收邮件:
(由于是用pop3.whsite.ine.net.cn收邮件,因此收件人,发件人的邮件地址都必须是这个服务器上的,因此咱们在whsite.ine.net.cn上从新建一个账号,而后给本身发邮件以测试);
一,打开james服务;
1)运行安装目录下bin/run.bat;
2)打开CMD;
telnet whsite.ine.net.cn 4555 //链接到服务端口; JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id: sunyu Password: sunyu Welcome root. HELP for a list of commands adduser sunyu 123456 //添加用户,用户名为sunyu 密码为:123456 quit //断开链接 telnet whsite.ine.net.cn 201 //链接到POP3端口; user sunyu 回车; pass 123456 回车; list //查看邮件列表; retr 1 //查看第一封邮件;
其余命令还有:
1,stat 查询邮箱中的全部邮件的统计信息,通常只有邮件总数和全部邮件占用的字节大小
2,uidl 根据邮件的序号查询该邮件的惟一标志符
3,list 查询邮箱中的全部邮件信息,以列表形式列出,自动生成邮件序号。若是指定某一序号则只显示指定邮件信息
4,retr 指定邮件序号查看某邮件内容
5,dele 指定邮件序号将某封邮件设置删除标记,当执行退出命令 quit时将实际删除全部具备删除标记的邮件
6,rset 清除全部设置了删除标记的邮件的删除标记
7,top 获取某邮件的邮件头和邮件体中的前n行内容,指定邮件序号和n,以空格符隔开
发邮件:
1)链接端口;
telnet whsite.ine.net.cn 202
2)确认身份
ehlo lyle
3)输入发件人;
mail from:<lyle@whsite.ine.net.cn>
4)输入收件人:
rcpt to:<lyle@whsite.ine.net.cn>
5)输入内容:
data hello word! 回车 . 回车
这时候再进入pop3端口便可查看邮件;
默认状况下,发完出的邮件,用户信息,接收的邮件是保存在本地目录中的,默认目录是:
C:\james\apps\james\var\users:用户
C:\james\apps\james\var\mail:邮件,里面有inboxes(收件箱)outgoing(发件箱)以及一些错误信息;
固然,咱们能够选择将邮件和用户信息保存在数据库中.也就是说要将James和数据库链接起来;这个链接是在config.xml里配置的;在config.xml里找到:<users-store></users-store>项,它是用来保存用户信息的;默认时它里面的是:
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> <destination URL="file://var/users/"/> </repository>
意思就是说用户信息存在文件系统中的目录:users里面;
咱们能够对这个设置进行更改;但James提供了现成的配置,只不过被注释掉了.咱们打开注释或手写:
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users"> <sqlFile>file://conf/sqlResources.xml</sqlFile> </repository>
意思就是将用户信息保存在数据库的users表里.具体的SQL是在本地文件系统中的sqlResources.xml中配置的;
而后就是邮件信息的保存:
找到<inboxrepository>项, 默认是<repository destinationurl="file://var/mail/inboxes/" type="mail">
屏蔽掉,在它下面有个例子<repository destinationurl="db://maildb/inbox/" type="mail">,激活它.
而后是spool,找到<spoolrepository>将默认屏蔽掉.
激活<repository destinationurl="db://maildb/spool/spool" type="spool"/>
这时候数据库中会自动建两个表:spool和inbox;spool是临时表,只要经过邮件服务器的邮件,不论是发,收,都会存到这个表里。存入的时候邮件有个状态:message_state,状态的值有几种,transe..span,root等第一个表示正在传,当传完后邮件服务器会自动删除这条邮件(此功能可配置,后面有介绍,经过改删除邮件的SQL可屏蔽此功能);当接收一个邮件时,也是先放在spool表里。而后往inbox表里转存;
因此,这时候咱们又要对数据库进行配置,让James知道是哪一个数据库,在什么地址;
在config.xml里找到<database-connections />项.它就是数据库链接的配置;在根据要链接的数据库的不一样,配置的写法也不一样,文件里有一些数据库写法的提示,如oracle,mysql,mssql:但要注意的是,实际上的最终正确的写法是根据数据驱动的不一样而不一样的.如:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>oracle.jdbc.OracleDriver</driver> <dburl>jdbc:oracle:thin:@192.168.0.55:1521:oracle</dburl> <user>RDNEW</user> <password>123456</password> <max>20</max> </data-source> </database-connections>
上面这个是oracle的.
在链接mssql里,文件里提示的写法是:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>com.inet.tds.TdsDriver</driver> <dburl>jdbc:inetdae7:127.0.0.1?database=James</dburl> <user>sa_james</user> <password>blahblah</password> <max>20</max> </data-source>
但实际上我在配置时的写法是:
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource"> <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver> <dburl>jdbc:sqlserver://192.168.0.120:1433;databaseName=oadb</dburl> <user>sa</user> <password>root</password> <max>20</max> </data-source>
差异主要体如今dburl这一项;
配置完成后将对应的数据驱动的jar放在James安装根目录下的lib目录下便可;这时,运行run.bat.就可.若是在配置的数据库中没有users这个表,它会自动建立这个表;
注意:当更改默认端口后,外网发过来的邮件接收不到.因此仍是用默认的:110 25 为好,同时要在路由器上将这两个端口映射到本机上.成功后的配置文件在网易网盘中.并且这个配置里面邮件和用户新建后是存在数据库中的,由于项目用的是oracle数据库,因此要将oracle数据驱动的jar文件复制到lib文件夹下.运行服务后会自动在数据库里建表:users(用户),spool(邮件),在邮件表里默认是select一次后就自动删除,即:收到邮件并查看后就自动删除.要更的话能够更改:conf/sqlResources.xml里的SQL语句.我是这样改的:
<sql name="removeMessageSQL">DELETE FROM ${table} WHERE message_name = ? AND repository_name = ?</sql>
将上面的这条语句里的问号:?改为123;固然,我这样改了后还有一个例外状况:当上面两个字段都为123时它仍是会被删除,不过这种状况在我当时的项目中貌似不会发生。。。
另外要注意的是:spool表里的数据是邮件服务器的表。咱们通常会在项目中有本身的邮件表,咱们收邮件的时候从spool表里读取数据后应该删除spool里的内容;
若是不删,起码也应该将spool表里数据中message_state这个字段的值改为:
spam默认状况下它的值是:trans..什么的。若是不改为spam,它会每隔一段时间就把这个邮件发送一下。正确的作法是接收完后都删除,不仅是改状态这么简单。由于若是只改了状态会出现一个问题就是接收邮件时,它从数据库读数据,读出邮件,若是你这时候再读,它会重复读取。因此接收完后是确定要删除的。