James邮箱服务器简单运行配置
James简单运行配置
James:Java Apache Mail Enterprise Server 是一个企业级的JAVA邮件服务器.开源的.
一.配置;
首先将james-binary-2.3.1.zip解压缩下载到你的安装目录。
我们可以把这个过程理解为安装的过程。我在这里将它解压到c:\.并且把它改名为james.这样我们的james就安装好了。目录为C:\james。在此之前你得安装JDK,配置JAVA环境变量.
james的应用程序结构
apps,bin,conf,ext,lib,logs,tools
文件夹bin
bin目录中的run.bat和run.sh是James的启动程序。只要记住这个重要文件就可以。
启动之后控制台显示如下:
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
Apps 目录下有个james的子目录这个目录是它的核心。
- SAR-INF 下有一个config.xml是james中的核心配置文件。
- Logs 包含了与james有关的Log。调试全靠它了。
- Var 包含了一些文件夹通过它们的名字我们大概也能猜测出它们的用途。Mail主要用于存储邮件。nntp主要用于新闻服务器。Users用于存储所有邮件服务器的用户。也就是邮件地址前面的东东。如:pig@sina.com的pig就是所谓用用户。
创建用户
在James上建若干用户,用来测试收发邮件。当然如果你不用james本身的用户也可以。James以telnet 的方式提供了接口用来添加用户。下面我来演示一下。
首先使用telnet来连接james的remote manager
telnet localhost 4555 回车
这里连接到的是本机:localhost这个也是可以在config.xml里配置的,当然,如果配置成其他服务器,则需要将端口映射到本机上,这个可以在路由器里配置:192.168.0.1(具体地址视局域网而定)。
然后输入管理员用户名和密码(user/pwd : root/root 是默认设置这个可以在config.xml中修改)
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
添加用户
adduser test test User test added Adduser lyle lyle User lyle added
查看添加情况
listusers Existing accouts 2 user:lyle user:test
更改配置文件: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,它会每隔一段时间就把这个邮件发送一下。正确的做法是接收完后都删除,不只是改状态这么简单。因为如果只改了状态会出现一个问题就是接收邮件时,它从数据库读数据,读出邮件,如果你这时候再读,它会重复读取。所以接收完后是肯定要删除的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
优秀互联网高级测试工程师应该具备的能力
概述 在之前写的互联网高级测试工程师至少具备的能力一文中,提到了测试工程师至少具备的能力,但是并没有提到优秀测试工程师应该具备的能力,下文简单的谈一谈。当然这些全部都是我的个人理解。 能发现问题,还能定位问题,而且能给研发解释得清楚 在实际的工作中,你可能会遇到很多测试人员在测试功能模块的时候,一遇到问题,马上就来找开发,由开发来定位问题。测试人员发现功能不对,我们可以理解为【开发人员研发的系统的功能跟产品经理的需求不一致】,属于【发现问题了】。这个没问题,但是测试人员能不能静下心来,自己先研究一下发生问题的原因呢?相信很多开发人员经常会遇到,测试人员提的bug其实跟代码没关系,而是环境问题或者数据问题等。 可能有人会问,怎么定位呀?其实手段多得很,例如,看日志、抓包、看代码、debug代码、分析数据、分析业务流程、分析请求走过的节点等等,进行多方面的求证。如果实在找不到原因,才来找开发。 如果测试人员找到原因后,还能跟开发人员解释清楚,那就非常了不起了。因为这里除了涉及到专业能力外,还涉及到测试人员的沟通表达能力。 提一个自描述的BUG 你没有遇到这种情况,测试人员提的bug单里,只...
- 下一篇
Activiti流程设计器实现自定义勾选办理人、候选人、候选组
实现效果: 版本声明:Activiti 5.22.0 需求:Activiti对接业务数据库后,使用自定义的用户和角色表代替Activiti原生用户、角色组等功能(实现详情见这篇文章:https://www.jianshu.com/p/45341b440316) 后,其在线流程设计器在设置任务节点的办理人时,如果能做到直接勾选自定义库的办理人、候选人、候选组,其体验相信会上升一个台接。下面将介绍下实现思路: 1、重写设定办理人界面: <div style="width:100%;height:100%;" class="modal" ng-controller="KisBpmAssignmentPopupCtrl"> <div style="width:80%;height:100%;" class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题