Apache James使用的方法及相关心得(转)
经过一番的辛苦努力,终于把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
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
- package com.yy.jamesstudy;
- import java.util.Date;
- import java.util.Properties;
- import javax.mail.Authenticator;
- import javax.mail.Message;
- import javax.mail.PasswordAuthentication;
- import javax.mail.Session;
- import javax.mail.Transport;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeMessage;
- public class Mail {
- private String mailServer, From, To, mailSubject, MailContent;
- private String username, password;
- private Session mailSession;
- private Properties prop;
- private Message message;
- // Authenticator auth;//认证
- public Mail() {
- // 设置邮件相关
- username = "kakaxi";
- password = "kakaxi";
- mailServer = "localhost";
- From = "kakaxi@localhost";
- To = "mingren@localhost";
- mailSubject = "Hello Scientist";
- MailContent = "How are you today!";
- }
- public void send(){
- EmailAuthenticator mailauth =
- new EmailAuthenticator(username, password);
- // 设置邮件服务器
- prop = System.getProperties();
- prop.put("mail.smtp.auth", "true");
- prop.put("mail.smtp.host", mailServer);
- // 产生新的Session服务
- mailSession = mailSession.getDefaultInstance(prop,
- (Authenticator) mailauth);
- message = new MimeMessage(mailSession);
- try {
- message.setFrom(new InternetAddress(From)); // 设置发件人
- message.setRecipient(Message.RecipientType.TO,
- new InternetAddress(To));// 设置收件人
- message.setSubject(mailSubject);// 设置主题
- message.setContent(MailContent, "text/plain");// 设置内容
- message.setSentDate(new Date());// 设置日期
- Transport tran = mailSession.getTransport("smtp");
- tran.connect(mailServer, username, password);
- tran.send(message, message.getAllRecipients());
- tran.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- Mail mail;
- mail = new Mail();
- System.out.println("sending......");
- mail.send();
- System.out.println("finished!");
- }
- }
- class EmailAuthenticator extends Authenticator {
- private String m_username = null;
- private String m_userpass = null;
- void setUsername(String username) {
- m_username = username;
- }
- void setUserpass(String userpass) {
- m_userpass = userpass;
- }
- public EmailAuthenticator(String username, String userpass) {
- super();
- setUsername(username);
- setUserpass(userpass);
- }
- public PasswordAuthentication getPasswordAuthentication() {
- return new PasswordAuthentication(m_username, m_userpass);
- }
- }
温馨提示:
GenericMailet 和GenericRecipientMatcher依赖于 apache-mailet-base 以下Maven项
<dependencies><dependency><groupId>org.apache.james</groupId><artifactId>apache-mailet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.james</groupId><artifactId>apache-mailet-base</artifactId><version>3.1.0</version></dependency><!--<dependency>--><!--<groupId>org.apache.james</groupId>--><!--<artifactId>apache-mailet-standard</artifactId>--><!--<version>3.1.0</version>--><!--</dependency>--></dependencies>
import javax.mail.MessagingException; import org.apache.mailet.GenericRecipientMatcher; import org.apache.mailet.MailAddress; public class BizMatcher extends GenericRecipientMatcher { public boolean matchRecipient(MailAddress recipient) throws MessagingException { //只接受邮件地址包含鸣人的邮件 if (recipient.getUser().indexOf("mingren")!=-1) { return true; } return false; } }
GenericRecipientMatcher 是一个针对收件人进行过滤的matcher.
import java.io.IOException; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.mailet.GenericMailet; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; public class BizMaillet extends GenericMailet { public void service(Mail mail) { MailAddress ma = mail.getSender(); System.out.println("sender:"+ma.toInternetAddress().toString()); try { MimeMessage mm = mail.getMessage(); System.out.println("content:"+(String)mm.getContent().toString()); } catch (IOException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }
GenericMailet 是一个mailet的基本实现。
<mailetpackages> <mailetpackage>org.apache.james.transport.mailetsmailetpackage> <mailetpackage>org.apache.james.transport.mailets.smimemailetpackage> mailetpackages> <matcherpackages> <matcherpackage>org.apache.james.transport.matchersmatcherpackage> <matcherpackage>org.apache.james.transport.matchers.smimematcherpackage> matcherpackages>
- <mailetpackages>
- <mailetpackage>com.yy.jamesstudymailetpackage>
- <mailetpackage>org.apache.james.transport.mailetsmailetpackage>
- <mailetpackage>org.apache.james.transport.mailets.smimemailetpackage>
- mailetpackages>
- <matcherpackages>
- <matcherpackage>com.yy.jamesstudy matcherpackage>
- <matcherpackage>org.apache.james.transport.matchersmatcherpackage>
- <matcherpackage>org.apache.james.transport.matchers.smimematcherpackage>
- matcherpackages>
- <mailet match="BizMatcher" class="BizMaillet"/>
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!
总结
转载于:https://www.cnblogs.com/softidea/p/5348057.html
Apache James使用的方法及相关心得(转)相关推荐
- java访问邮箱 apache,apache james使用入门_邮件服务器
一.简介 Apache James(Java Apache Mail Enterprise Server)是Apache组织的子项目之一,完全采用纯Java技术开发,实现了SMTP.POP3与NNTP ...
- 在windows平台使用Apache James搭建邮件服务器以及使用C#向外网发送邮件
首先环境搭建: 1.下载安装JDK,并且配置环境变量 2.下载Apache James ,下载解压之后的目录如图 双击bin下边的run.bat批处理文件安装James 服务,提示如下信息说明安装成功 ...
- Apache james 2.3.2.1启动失败换成2.3.2版本就好
启动方法: 打开文件夹apache-james-2.3.2\james-2.3.2\bin 运行 run.bat James邮件服务器启动失败.Win10系统 看错误提示是文件系统出现错误. 找了很久 ...
- Apache James搭建内网邮件服务器
前言 大概之前两个礼拜的日子,讨论会介绍了关于了.net内网邮件服务器的搭建.所以自己也很有必要来尝试一把邮件服务器的搭建,这里选取的是james这个工具. 为什么要使用内网邮件服务器? a.安全这里 ...
- 2022年集成paypal支付的相关心得
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.paypal是什么? 二.使用步骤 1.准备 :注册一个paypa账号 2.编写paypal后端接口demo 总结 ...
- java怎么控制log文件大小,限制 Apache日志文件大小的方法
限制 Apache日志文件大小的方法 更新时间:2009年04月28日 20:23:53 作者: access.log,件在 WEB 服务器运行一段时间之后会达到几十兆甚至上百兆,如果Apache ...
- php模块是什么,apache php模块安装方法是什么
apache php模块安装方法是什么 发布时间:2020-07-28 09:17:41 来源:亿速云 阅读:107 作者:Leah apache php模块安装方法是什么?针对这个问题,这篇文章详细 ...
- Apache James 搭建自己的邮件服务器
原文 address:http://blog.csdn.net/jwdstef/article/details/39495097 中小企业是否可以免费拥有自己的邮件系统,而不是去购买腾讯,163的企业 ...
- apache解析php的方法
小编给大家分享一下apache解析php的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! 详解配置 Apache 服务器支持 PHP 文件的解析 [说明] 1. 本例 ...
最新文章
- 栖息地环境影响了鸿雁的肠道微生物
- confluence统计用户文章_公众号流量主后台数据查看及统计分析
- 2020年智能车竞赛由预赛赛道拼接成决赛赛道的方案
- Ubuntu下安装配置Open×××
- python实现自动打电话软件_用Python拨打电话
- 波士顿动力机器狗要去切尔诺贝利上班了
- 基于Java Swing的仪表盘实现
- PrintWriter中的write与println方法居然就是这些区别
- BZOJ1861: [Zjoi2006]Book 书架
- 99年毕业设计获优的程序-图书管理程序 续
- 在CDH sandbox中安装并测试livy
- chrome插件推荐
- GD32 startup.s
- 高斯分布4——联合概率分布
- FIR滤波器结合快速卷积滤波
- python087(文件—文件概念以及文本文件和二进制文件的区别)
- 普通母函数模板—hdu1028
- 逐梦的人啊,愿你我在未来都可以舒适的生活,加油~
- 【How2Pwn】DreamHack x64下的ROP问题
- IBM 员工大地震:3万职位面临调整 1万人或被裁
热门文章
- 爬虫学习笔记(十二)—— scrapy-redis(一):基本使用、介绍
- 学习笔记(十九)——Python与数据库交互(mysql、redis)
- MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?
- 关于IDEA 的一些常用设置
- 2021-04-15 深入理解SLAM技术 【2】 SLAM的框架
- python把英语句子成分字母_英语句子成分-谓语讲解 什么是谓语?(
- Matlab实用程序--图形应用-单个轴窗口显示多个图形
- css什么时候用绝对定位,CSS - 使用绝对定位
- linux中的定时,linux中的定时任务
- golang 定义一个空切片_Golang简单入门教程——函数进阶使用