邮件上网系统构建(二)服务器搭建
来源:互联网 发布:化妆品进销存软件 编辑:程序博客网 时间:2024/05/22 12:57
邮件上网系统构建(二)服务器搭建
2008/07/19
1。就是它-james
本来天真的想自己找找API做个简单的服务器的,又一想,还是原始人的思考方式,什么东东都从头做起,不好不好。于是乎,找到了james,james是apache的一个开源项目。James 是一个企业级的邮件服务器,它完全实现了smtp 和 pops 以及nntp 协议。同时,james服务器又是一个邮件应用程序平台。James的核心是Mailet API,而james 服务齐是一个mailet的容器。它可以让你非常容易的实现出很强大的邮件应用程序。James开源项目被广泛的应用于与邮件有关的项目中。你可以通过它来搭建自己的邮件服务器。我们可以利用Mailet API,编程接口来实现自己所需的业务。James集成了Avalon 应用程序框架以及Phoenix Avalon 框架容器。Phoenix为james 服务器提供了强大的支持。关键点是,1.JAVA 2.过滤器的借口,写个类就可以自动反信了,太合适了。
2。服务器安装
http://james.apache.org/download.cgi到这里下载了最新的james,james-binary-2.3.1.zip,找个地方直接解压。比如俺把他放到F:/james。找到 F:/james/james-2.3.1/bin/run.bat ,双击 run.bat 就可以了。前提是:你的电脑中必须已经安装了 JDK,并且设置了JAVA_HOME环境变量,如果没有设置的话,建议修改一下加到系统变量或者修改一下run.bat,修改run.bat的方法如下(假设你的JDK目录是c:/jdk1.3):
……remrem Determine if JAVA_HOME is set and if so then use itremset JAVA_HOME= c:/jdk1.3if not "%JAVA_HOME%"=="" goto found_java……
启动画面如下,就是正常启动了。
Using PHOENIX_HOME: F:/james/james-2.3.1Using PHOENIX_TMPDIR: F:/james/james-2.3.1/tempUsing JAVA_HOME:Phoenix 4.2James Mail Server 2.3.1Remote Manager Service started plain:4567POP3 Service started plain:110SMTP Service started plain:25NNTP Service started plain:119FetchMail Disabled
3。创建用户
James以telnet 的方式提供了接口用来添加用户。
a.telnet localhost 4555 回车(4555是默认端口这个可以在config.xml中修改)
b.然后输入管理员用户名和密码(user/pwd : root/root 是默认设置这个可以在config.xml中修改)
JAMES Remote Administration Tool 2.3.1Please enter your login and passwordLogin id:rootPassword:rootWelcome root. HELP for a list of commands
c.你可以打help查看所有的命令,这里只提供了几个简单的用户命令。添加用户就是adduser [username] [password]。我们先建立两个测试用户test1和test2,密码都是123456
adduser test1 123456User test1 added Adduser test2 123456User test2 added
d.好了,已经创建成功了,现在你的服务器是只有本机能用。用foxmail创建两个邮箱,然后两个就可以通讯了,地址是test1@127.0.0.1和test2@127.0.0.1。
4。调试外网邮件收发
这一步真是费了好些劲了,网上的资料五花八门啊,就是没有能直接拿来用的。写下来探索过程,供还在探索的同志查看。成功之路分三步,其中的细枝末节就不涂了。
第一步:a.做一下端口映射,因为俺用的是adsl拨号上网,路由器多人共享上网。把路由器的对外端口的SMTP和POP3的端口25和110映射到本机的25和110。这样对于外网请求就可以直接转发到俺的服务器了。
b.对配置文件F:/james/james-2.3.1/apps/james/SAR-INF/config.xml作如下修正:
(注释掉防止第三方转送的保护程序,因为要使用SMTP的authentication)4321 (这个是remotemanager的port,也就是telnet管理登陆的端口,默认的总感觉不安全,还是换个吧)(修改管理员账号密码) true (使用SMTP的authentication,只对收件人是本服务器用户的邮件提供relay服务,其他的不要找我啊)
c.结果,对外发送邮件OK,狂喜了一下。不过使用IP地址的外部邮件发不过来。邮件服务器根本没有受到请求。163邮箱报这个错:
你发送到test1@221.218.xxx.xxx的邮件由于以下原因被退回 : test1@221.218.xxx.xxx DNS query error: 221.218.xxx.xxx
俺们公司的邮箱给这个错:
mail.xxxx.com550 5.7.1... Relaying denied. IP name loopup failed [221.218.xxx.xxx]
第二步:被网上说的没有固定IP不能做邮件服务器吓到了,以为这个构想这么快就要夭折了呢。幸亏没有放弃,咱们用动态域名解决。网上有几个可以域名动态IP绑定的东东吧,不过不是哪个都行,要他们提供支持邮件服务的服务才行。把免费的二级域名绑定到自己asdl拨号的动态IP上,并且把邮件服务用的MX纪录指向二级域名。找到一个希网(http://www.3322.org/),有这个免费动态域名服务,申请了一个abcd.8866.org。绑定域名和MX指向后,再来测试。没成功,被俺的邮件服务器拒绝了,发了一封拒绝relay的信。163信箱:
你发送到test1@abcd.8866.org的邮件由于以下原因被退回 : test1@abcd.8866.org SMTP error, RCPT TO: 530 5.7.1 Authentication Required
俺们公司的邮箱:
The original message was received at Sat, 19 Jul 2008 14:21:04 +0800 (CST)from root@localhost ----- The following addresses had permanent fatal errors -----test1@abcd.8866.org (reason: 530 5.7.1 Authentication Required) ----- Transcript of session follows -----... while talking to abcd.8866.org.:>>> DATA<<< 530 5.7.1 Authentication Required554 5.0.0 Service unavailable<<< 503 5.5.0 No recipients specified
虽然没成功,但是进步了,服务器已经响应了。既然是权限的事目标还是配置文件。
第三步:修改配置文件F:/james/james-2.3.1/apps/james/SAR-INF/config.xml如下:
(取消自动探测服务器名) abcd.8866.org (设置服务器名,这样就可以把xxxx@abcd.8866.org看作自己服务器的用户,提供服务了。)
再来测试,哈哈哈,OK了,从本机到163从163到本机,或者和我们公司的邮件服务器之间,畅通无阻了。
5。服务器准备完毕
服务器准备好了,下面该进入mailet的开发了。
这里声明一点啊,动态IP提供邮件服务是违反国家规定的,邮件服务需要有许可证的。咱们这里只是用来技术学习的,不要想歪主意哦!
- 邮件上网系统构建(二)服务器搭建
- 邮件上网系统构建(一)需求分析和基本方案
- Postfix邮件服务器搭建(二)
- 搭建邮件服务器之SMTP发送服务器(二)
- Redhat7.0下搭建邮件服务器(二)
- RedHat el5.0 搭建 Postfix 邮件服务器系统
- Linux系统邮件服务器的搭建过程解析
- 局域网使用系统自带POP3服务搭建邮件服务器
- 构建网站运行平台 - 搭建本地服务器(二)
- WinMail 搭建邮件服务器。
- 搭建postfix邮件服务器
- 搭建邮件服务器
- 搭建本地邮件服务器
- Postfix搭建邮件服务器
- linux搭建邮件服务器
- sendmail邮件服务器搭建
- postfix邮件服务器搭建
- postfix邮件服务器搭建
- C++怎么学
- 真正中文攻略之狼少女 辛希雅(シンシア)~Sincerely to You
- Wizard中Page显示为空的错误原因
- comodo中国分公司搜索部诚聘资深研发人员
- 邮件上网系统构建(一)需求分析和基本方案
- 邮件上网系统构建(二)服务器搭建
- 请假
- hibernate一对多更新 和无对应的字表记录删除
- 开始吧
- 嵌入式系统的研究方向
- 跨进程获取其他程序的DBGrid内容
- 在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的;
- 取stringgrid数据
- 从数据库提取数据通过jstl显示在jsp页面上