邮件上网系统构建(二)服务器搭建

 邮件上网系统构建(二)服务器搭建
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):

……
rem
rem Determine if JAVA_HOME is set and if so then use it
rem
set JAVA_HOME= c:/jdk1.3
if not "%JAVA_HOME%"=="" goto found_java
……

启动画面如下,就是正常启动了。

Using PHOENIX_HOME:   F:/james/james-2.3.1
Using PHOENIX_TMPDIR: F:/james/james-2.3.1/temp
Using JAVA_HOME:

Phoenix 4.2

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

3。创建用户
    James以telnet 的方式提供了接口用来添加用户。
    a.telnet localhost 4555 回车(4555是默认端口这个可以在config.xml中修改)
    b.然后输入管理员用户名和密码(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

    c.你可以打help查看所有的命令,这里只提供了几个简单的用户命令。添加用户就是adduser [username] [password]。我们先建立两个测试用户test1和test2,密码都是123456

adduser test1 123456
User test1 added
 
Adduser test2 123456
User test2 added

    d.好了,已经创建成功了,现在你的服务器是只有本机能用。用foxmail创建两个邮箱,然后两个就可以通讯了,地址是[email protected][email protected]

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邮箱报这个错:

你发送到[email protected]的邮件由于以下原因被退回 : 
[email protected] DNS query error: 221.218.xxx.xxx

              俺们公司的邮箱给这个错:

mail.xxxx.com
550 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信箱:

你发送到[email protected]的邮件由于以下原因被退回 : 
[email protected] 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 -----
[email protected]
    (reason: 530 5.7.1 Authentication Required)
   ----- Transcript of session follows -----
... while talking to abcd.8866.org.:
>>> DATA
<<< 530 5.7.1 Authentication Required
554 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
  
  (设置服务器名,这样就可以把[email protected]看作自己服务器的用户,提供服务了。)

再来测试,哈哈哈,OK了,从本机到163从163到本机,或者和我们公司的邮件服务器之间,畅通无阻了。

5。服务器准备完毕
        服务器准备好了,下面该进入mailet的开发了。
这里声明一点啊,动态IP提供邮件服务是违反国家规定的,邮件服务需要有许可证的。咱们这里只是用来技术学习的,不要想歪主意哦!

猜你喜欢

转载自blog.csdn.net/langzitianya/article/details/2678114
今日推荐