经过一番的辛苦努力,终于把James 配置搞定啦,好记性不如烂笔头啊,赶紧记下我的成功经过,以备以后查阅!

首先要做的就是配置域名的MX 记录啦:

先添加一条A记录:

mail.abc.com 指向 你的服务器IP!

然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为mail.abc.com).

OK ,域名的配置就完成啦!

接下来安装配置James :

James 不需要编译安装,解压即可以使用,把james 下载来后,必须先启动一下!

进入James 根目录下的bin 目录,启动:

127.0.0.1[bin]$ ./run.sh

Log 如下:

127.0.0.1[bin]$ ./run.sh

Using PHOENIX_HOME: /usr/local/james-2.3.2

Using PHOENIX_TMPDIR: /usr/local/james-2.3.2/temp

Using JAVA_HOME: /home/java/jdk1.6.0_11

Running Phoenix:

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

JVM exiting abnormally. Shutting down Phoenix.

然后按Ctrl+C 停止。

第一次运行后,系统会在 apps 目录下面生成一些初始化的配置文件。如果第一次运行有问题,用 netstat 检查一下是否有系统默认的端口被占用了,比如 110,25 等。

进入配置文件目录修改config.xml 文件:

127.0.0.1 [SAR-INF]$ pwd

/usr/local/james-2.3.2/apps/james/SAR-INF

127.0.0.1 [SAR-INF]$ vi config.xml

查找替换所有的 localhost 为你的域名,比如 abc.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 ,由于我未配置自己的 DNS 服务器,所以使用 Google 的 Public DNS :

<dnsserver> 
        <servers> 
        <server>8.8.8.8</server>

<server>8.8.4.4</server>         
</servers>
</dnsserver>

设置 autodiscover 为 false

注意 ,设置 DNS 这步很重要,发送邮件不成功的问题经常会出在这里!

有些文章说 ping 域名提供商管理设置的域名 DNS 来获得 IP ,我试过,这种方法基本上是不行了,所以我使用 Google 的 Public DNS 。

当然,也可以自己做 DNS 服务器,使用 Bind 则可,但其麻烦程度不敢苟同,不建议新手使用!

配置 smtp server , pop3 server 等 
查找所有 myMailServer, 替换为你的域名。如: 
<helloName autodetect="false">myMailServer</helloName> ,将 myMailServer 修改为你的域名。比如: abc.com

注释以下的语句:

<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
           <processor> relay-denied </processor>
            <notice>550 - Requested action not taken: relaying denied</notice>
         </mailet>

打开 smtp 认证 
<authRequired>true</authRequired>

smtp 认证的作用在于不让未能授权的人使用你的邮件服务器发送垃圾邮件,在 <servername></servername> 里指定哪些域名可以使用这个邮件服务器,如:

<servername>abc.com</servername>

<servername>abc.com.cn</servername>

则当发送人地址为 XXX.abc.com 或者 XXX.abc.com.cn 时才能通过,如果写成 XXX.bbc.com 的话就不会通过验证,这种方式就禁止了不法人士使用啦!

修改 root 口令。 account login="root" password="mypassword"

启动 James( 使用 Phoenix.sh) :

./Phoenix.sh start

最后使用 telnet 添加邮件用户 ( 具体命令在 telnet 后输入 help 查看 ) :

telnet server-name 4555

http://www.iteye.com/topic/777797

http://www.iteye.com/topic/777797

简介
James 是一个企业级的邮件服务器,它完全实现了smtp 和 pops 以及nntp 协议。同时,james服务器又是一个邮件应用程序平台。James的核心是Mailet API,而james 服务齐是一个mailet的容器。它可以让你非常容易的实现出很强大的邮件应用程序。James开源项目被广泛的应用于与邮件有关的项目中。你可以通过它来搭建自己的邮件服务器。我们可以利用Mailet API,编程接口来实现自己所需的业务。James集成了Avalon 应用程序框架以及Phoenix Avalon 框架容器。Phoenix为james 服务器提供了强大的支持。需要说明的是Avalon开源项目目前已经关闭。
   快速上手
安装james
   我这次使用的安装包是james 2.3.1。大家可以从这里下载到http://james.apache.org/download.cgi
 现在让我们开始我们激动人心的james之旅。首先我们将james-binary-2.3.1.zip解压缩下载到你的安装目录。我们可以把这个过程理解为安装的过程。我在这里将它解压到c:\.并且把它改名为james.这样我们的james就安装好了。目录为C:\james。很简单吧!
 
准备知识 - 学习一些必要的知识
在我使用james的时候让我感觉首先理解james的应用程序结构是很重要的。否则你会在使用中感到很困惑。
它的应用程序结构是这样的:
 James
       |_ _apps
       |_ _bin
       |_ _conf
       |_ _ext
       |_ _lib
       |_ _logs
       |_ _tools
我们重点介绍一下两个文件夹bin 和 apps.
bin目录中的run.bat和run.sh是James的启动程序。只要记住这个重要文件就可以。
启动之后控制台显示如下:
Using PHOENIX_HOME:   C:\james
Using PHOENIX_TMPDIR: C:\james\temp
Using JAVA_HOME:      C:\j2sdk1.4.2_02

Phoenix 4.2

James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled

 Apps 目录下有个james的子目录这个目录是它的核心。
               james
|_ _SAR-INF
|_ _conf
|_ _logs
|_ _var
    |_mail
       |_address-error
       |_error
       |_indexes
       |_outgoing
       |_relay-denied
       |_spam
       |_spool
    |_nntp
       |_....
       …
    |_users
SAR-INF 下有一个config.xml是james中的核心配置文件。
Logs 包含了与james有关的Log。调试全靠它了。
Var 包含了一些文件夹通过它们的名字我们大概也能猜测出它们的用途。Mail主要用于存储邮件。nntp主要用于新闻服务器。Users用于存储所有邮件服务器的用户。也就是邮件地址前面的东东。如:pig@sina.com的pig就是所谓用用户。
 
 
创建用户:
 我们在James上建若干用户,用来测试收发邮件。当然如果你不用james本身的用户也可以。James以telnet 的方式提供了接口用来添加用户。下面我来演示一下。
首先使用telnet来连接james的remote manager .
1.telnet localhost 4555 回车
2.然后输入管理员用户名和密码(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
 
3.添加用户
adduser kakaxi kakaxi
User kakaxi added
 
Adduser mingren mingren
User mingren added
 
4.查看添加情况
listusers
Existing accounts 2
user: mingren
user: kakaxi
得到上面的信息说明我们已经添加成功。
 
 
发送器
 这个类主要用来测试我们的邮件服务器,可以不用将其打入包中。
java 代码
<v:shapetype id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" filled="f" stroked="f" coordsize="21600,21600" o:spt="75"> </v:shapetype>

实现-Matcher 和 Mailet编写
     我先解释一下大概的流程:当james 接收到一个smtp请求时首先会交给matcher来进行一系列过滤动作。然后由matcher交给相应的mailet来进行处理。James就相当于一个matcher和mailet的容器。就像tomcat之于servlet。而mailet和servlet很是相似。
     我们这里要完成的功能很简单,就是当james邮件服务器接收到鸣人(人名)后把发送者和邮件正文打印到控制台。我们分析这个需求发现我们需要写一个matcher以及一个mailet.matcher用来过滤而mailet用来将邮件内容打印到控制台。为了简单起见,我这次只是继承了GenericMailet 和GenericRecipientMatcher 两个已经实现的 mailet 和 matcher.具体的Matcher和Mailet的使用我以后会整理成另外一篇文章。
 
Matcher 的实现
GenericRecipientMatcher 是一个针对收件人进行过滤的matcher.
 
Mailet 的实现
GenericMailet 是一个mailet的基本实现。
编译
    我们把这两个java文件的class文件编译成一个名字为:jamesstudy.jar 的jar文件。
 
发布-Matcher 和 Mailet以及config.xml
    1.发布jar文件
            我们把这个jar文件发布到C:\james\apps\james\SAR-INF\lib。
            注意:如果没有找到相关目录,则需要先启动一遍james,相关的文件夹才会被创建。还有一点需要特别说明:lib目录是通过我们手动创建的。
     2.将Matcher 和 Mailet发布到config.xml中,config.xml在james\apps\james\SAR-INF\下
       1)我们首先找到如下内容
      2)加入包声明
 
  3)加入 Matcher 和 Mailet的关联关系
     找到 <processor name="root"></processor> 元素在它的下面加入
xml 代码
Mailet元素代表了一个matcher和一个mailet的组合。Match属性:是指matcher的类名。而class 属性:是指mailet的类名。
 最后别忘了,保存退出。并且重新启动james服务器。
测试- 验证我们的mail应用程序
我们主要通过mail类来测试我们的应用。还记得我们刚才写的那个mail类吗?!在那个类中我们初始化了相关的信息.
                   username = "kakaxi";
                   password = "kakaxi";
                   mailServer = "localhost";
                   From = "kakaxi@localhost";
                   To = "mingren@localhost";
                   mailSubject = "Hello Scientist";
                   MailContent = "How are you today!";
发件人是卡卡西,收件人是mingren.这两个用户我们在前面都已经创建完毕。我们用他们来测试james的邮件收发以及mailet api的应用。
根据需求假设我们发给james 服务器(这里是james的默认配置:localhost)的邮件的收件人是鸣人。那么我们就能通过matcher监测到这封邮件,并且调用相应的mailet来进行处理。由mailet打印出相应的邮件发送者和正文。运行Mail类后得到
Using PHOENIX_HOME:   C:\james
Using PHOENIX_TMPDIR: C:\james\temp
Using JAVA_HOME:      C:\j2sdk1.4.2_02

Phoenix 4.2

James Mail Server 2.3.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled

sender:kakaxi@localhost
content:How are you today!

总结

最终我们看到发送者和正文的信息。That’s all ! 大功告成。
         其实james的功能是非常非常强大的,尤其是它的Mailet API能够帮助我们完成很多与邮件邮件有关的工作如过滤垃圾邮件。用它我们甚至可以搭建我们自己的企业邮件服务器。我们最近的项目中就使用到了。我们通过james接收到的邮件,然后用matcher找到我们想要处理的邮件,然后通过mailet做一些业务上的处理。这篇文章涵盖的面很小。如果大家有兴趣可以研究一下james项目。Config.xml实际上是最重要的文件,如果你把它研究透彻了那么就就算把Mailet API研究透了。以后我可能会写一篇相关的文章,在这就不多说了。希望这篇文章能够对大家有所启发!有所帮助!祝大家工作顺利!
http://www.iteye.com/topic/123845
 
 
 

Apache James使用的方法及相关心得(转)的更多相关文章

  1. sqlplus 配置方法及相关命令

    sqlplus 配置方法及相关命令 1.配置文件 1.1 全局模式什么叫全局模式呢:当我们配置完sqlplus工具加载配置文件后,无论在哪个目录下登陆数据库,您设置[sqlplus提示符样子,在任何目 ...

  2. Apache James搭建内网邮件服务器

    Apache James搭建内网邮件服务器 极客521 | 极客521 2014-08-21 148 阅读 java 大概之前两个礼拜的日子,讨论会介绍了关于了.net内网邮件服务器的搭建.所以自己也 ...

  3. 用 Apache James 搭建邮件服务器来收发邮件实践(一)(转)

    Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写.James 是100%基于Java的电子邮件服务器.它是一种独立的邮件服务 ...

  4. 在windows平台使用Apache James搭建邮件服务器以及使用C#向外网发送邮件

    首先环境搭建: 1.下载安装JDK,并且配置环境变量 2.下载Apache James ,下载解压之后的目录如图 双击bin下边的run.bat批处理文件安装James 服务,提示如下信息说明安装成功 ...

  5. CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL)的方法

    CentOS 6.5安装配置LAMP服务器(Apache+PHP5+MySQL)的方法 准备篇: 1.配置防火墙,开启80端口.3306端口vi /etc/sysconfig/iptables-A I ...

  6. 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    电子邮件服务器,对于很多公司,都是需要的. 虽然现在很多人,使用 QQ .微信进行一对一的工作沟通,使用QQ 群.微信群进行多人沟通,但这些即时聊天工具,与电子邮件相比,仍有很多不足: a. 电子邮件 ...

  7. Apache二级域名配置方法

    下面这个Apache二级域名配置方法是今天在其它BBS看到的,以前我配置是都是配置每个为一个虚拟目录今天正在想如何写没想到找到了. Apache二级域名实现方法介绍 首先,你的拥有一个有泛域名解析的顶 ...

  8. Ubuntu上开启Apache Rewrite功能的方法

    Ubuntu上开启Apache Rewrite功能的方法 本文介绍ubuntn系统中开启apache的urlrewrite功能的方法. 在Windows上开启Apache的urlRewrite非常简单 ...

  9. Apache Derby数据库系统使用方法

    Apache Derby数据库系统使用方法 最近由于项目要求,试用了一下Apache Derby数据库,这里对了解到的内容做一个记录. Apache Derby是一个开源的关系型数据库管理系统,用Ja ...

随机推荐

  1. HDU 4868 Information Extraction(2014 多校联合第一场 H)

    看到这道题时我的内心是奔溃的,没有了解过HTML,只能靠窝的渣渣英语一点一点翻译啊TT. Information Extraction 题意:(纯手工翻译,有些用词可能在html中不是一样的,还多包涵 ...

  2. 拍照图片滤镜sample

    本文章主要介绍拍完照片后对图片的渲染进行处理 可以对拍出的照片进行选择不同的滤镜,令在图片上附有编辑框,供大家对图片进行描述,这是一个可以手动拖动的编辑框,在这里主要介绍下,手指放到控件上什么情况下视 ...

  3. 基于visual Studio2013解决面试题之0203栈实现

     题目

  4. SDUT Fermat’s Chirstmas Theorem(素数筛)

    Fermat's Chirstmas Theorem Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 In a letter ...

  5. sap的示例代码

    sap的示例代码查看1.在SE38环境下的程序名输入栏输入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,好好看看,你会学到很多ABAP功能的实现方法.2.运行“ABAPDOCU”T- ...

  6. QT5静态编译教程,主要针对vs2012(渡世白玉)

    QT5,VS2012静态编译,所有的库准备充分的话qwebkit也可以静态编译通过,但是我编译的版本使用中如果用了QWEBVIEW控件在连接时会出错. 注:我自己编译的环境是:win server 2 ...

  7. Could not find or load main class

    Then add '.' to your $CLASSPATH with CLASSPATH=.:$CLASSPATH or as a paramater with java -classpath . ...

  8. 一次ORA-03113错误解决

    ---------------------------------------------------------------------------- -----------------ORA错误处 ...

  9. Unable to instantiate activity ComponentInfo或java.lang.ClassNotFoundException: com.ibright.herolegen

    不知道怎么回事,在libs中添加了jar包后,无法给jar包附加上源码,于是采取以下措施: 删除自动生成的依赖: 在Android Dependences目录上右击->Build Path -& ...

  10. 使用XML的五种场合,XML基本规则,XML的术语,结构与语法

    在很多研讨会和培训班上我遇到过许多人,他们还不明白为什么要使用XML也不知道如何 在他们的应用中使用XML.一些来自诸如Gartner公司的报告建议说,商业公司不能再做 局外人了,不能对XML置之不理 ...