您的位置:首页 > 编程语言 > Java开发

<html xmlns:v="urn:schemas-microsoft-com:vml"Java软件制作全过程-----------------------工具installAnyWhere

2008-09-18 13:14 791 查看
第一步:

第一步:













第二部分









TOSOA $USER_INSTALL_DIR$$/$tosoa





启动服务---------------Call
"$USER_INSTALL_DIR$/Tomcat5.5/bin/startup.bat"





启动服务:





Entity





停止服务:

Call
"$USER_INSTALL_DIR$/Tomcat5.5/bin/shutdown.bat"





生成安全证书:





停止服务









执行cer安全证书:





RegSvr32 E:/OfficeControl.ocx

作者按:本文只介绍服务器的安装与设置,有关企业邮件服务器的使用,请继续关注下篇文章,谢谢大家支持.

WebEasyMail是一个基于Windows平台,并服务于中、小型网站及企业的internet(英特网)和intranet(企业局域网)Web邮件服务器。除具有EasyMail的所有功能外,还提供完整的Web接口,支持Web管理和直接使用浏览器收、发电子邮件,提供九个对象近百种方法及属性,以支持高级用户针对WebEasyMail系统进行的相关Asp程序开发,登录时密码验证(可选)。

首先在安装邮件服务器之间,我先交代一下如果要在企业内部创建邮件服务器,必须要做好事前的准备工作。

1、服务器容量的要求:

由于邮件服务器不光要作为邮件存储器,还需要存储大量的附件等内容,所有计算机的硬盘要求就比较高了。根据企业规模大小和人数的多少来决定硬盘的大小,一般来说一个上百人的企业,邮件附件限定的2M范围内,邮件服务器不用来存储其它什么内容的话,400G的硬盘空间可以使用一年,也就是服务器空间清理可以在一年的时间做一次。当然如果没有那么大的硬盘,我们可以多准备几块小硬盘,甚至可以使用磁盘阵列,以扩大磁盘容量和提高稳定性,这些事前可以根据实际需要来定。

2、安全性的要求:

企业邮件服务器,往往都保存了很多机密内容,为了达到安全效果和容错性能,那我们就要在事先做和防护措施了。为了防止病毒感染我们可以打好补丁,装好防火墙。为了达到很好的容错功能,我们可以使用动态磁盘中的raid-5卷,或采用镜像卷(这种方式有点浪费空间了)。

所有的准备工作做好后我们就可以准备安装WebEasyMail了。现在我们就来看看具体的操作步骤和需要注意的事项。

安装WebEasyMail很简单我们就直接按照向导一步步的点击就可以了。如图一





图一

WebEasyMail这款软件是由马坚开发的,当安装完成之后,我们找到开始菜单(或双击桌面快捷方式)启动该软件,然后我们可以在任务栏中看到它如图二所示。





图二

为了邮件服务器的安全,我们还可以安装一些杀毒软件,防止邮件病毒的传播,比如安装KV2004,不过在这我们要注意的是,安装KV2004并按WEBEASYMIAL帮助内容设定,使KV2004与WEBEASYMAIL联合起到邮件杀毒作用(将KV2004更新到最新版本,最好限制其只能杀WEBEASYMAIL/TEMP目录),从而可以防止病毒借助邮件传播。

软件安装好了,怎么样才能让我们的软件正常的工作呢?接下来我们就多软件做一些基本的设置吧。

1[/b]、帐户设置[/b]

为了服务器的安全,用户帐号也是非常重要的,我们给予安装WebEasyMail的盘符以及父目录以Internet来宾帐户(Iuse_*)然后对其授权.授予该帐号[读取/运行/列出文件夹目录] 的权限就可以了,另外对于WEBEASYMAIL的安装目录,INTERNET访问帐号完全控制, 给予[超级用户/SYSTEM]在安装盘和目录中[完全控制]权限,重启IIS以保证设定生效。

2[/b]、对垃圾邮件的防止和保护功能的设置[/b]

在服务器上点击右下角图标,然后在弹出菜单的“系统设置”-->“收发规则”中选中“启用SMTP发信认证功能”项(如图三所示),然后再点击“防护”选项卡,“启用外发垃圾邮件自动过滤功能”项,然后再启用其设置中的“允许自动调整”项,邮件的防护设置都是在这里完成的(如图四所示)在“防护”选项卡中我们主要可以设置:“拒绝来自指定IP或服务器的连接有和邮件”、“外发垃圾邮件和自动过滤功能”、“关键字过滤”、“攻击保护”、“邮件附件名过滤”、“邮件内容过滤”的设置。这样设置就可以有效的防范外发垃圾邮件,和保护邮件的功能。





图三





图四

3[/b]、收件人数的的限制[/b]

这项设置仍然是在服务器上点击右下角图标,然后在弹出菜单的“系统设置”-->“收发规则”中设置“最大收件人数”-----> 默认是“10”。不过我们需要根据企业内部的具体人数来设定人数。(如图三所示)

4[/b]、邮箱管理[/b]

[/b]在服务器上点击右下角图标,然后在弹出菜单的“工具”-->“邮箱管理” (如图五所示)

在这里我们主要可以对“域名”和“邮箱空间”等内容的设置





图五

5[/b]、“高级”设置[/b]

[/b]在服务器上点击右下角图标,然后在弹出菜单的“高级”(如图六所示)。





图六

在这里我们可以对“用户”[/b]选项卡设置,用户选项卡主要功能是,对垃圾帐户进行清理,比如说,有人注册了帐号但是长期不使用,我们就可以让系统自动的在一定的时间范围内,把长期没有使用的帐号给清楚掉,以释放用户空间;“邮件”[/b]选项卡设置,邮件选项卡主要功能是,定期删除或转移一定时间范围内的邮件;“监控”[/b]选项卡设置,监控选项卡主要功能是,对一些有反动宣传和恶意攻击别人的用户帐号进行监控; “安全”[/b]选项卡设置,安全选项卡主要功能是,对信任域邮件接受和对垃圾邮件过滤等功能;另外在这还可以对“邮件列别”、“web”等内容的设置。

5[/b]、“高级”设置[/b]

在服务器上点击右下角图标,然后在弹出菜单的“高级”(如图七所示)。





图七

域名管理主要是实现域名添加和删除,比如现在我在窗口中创建了“xbx.com”域,如果要是想让我们新建的域生效,我们好要与“邮箱管理”(图五)结合,进行“转换”域名。这样一来我们新建的域名才能够生效和使用。

6[/b]、其它[/b]

除了上面那些基本设置之外还有很多其它需要注意的问题,比如附加大小设置、系统备份、常见错误解决等等,在这里我无法把邮件服务器很详细的给大家介绍,只能把一些常规设置给大家说说。如果大家在使用WebEasyMail过程中遇到什么问题欢迎大家与我交流。

JAMES

Using PHOENIX_HOME: C:/Downloads/james-binary-2.3.1/james-2.3.1

Using PHOENIX_TMPDIR:
C:/Downloads/james-binary-2.3.1/james-2.3.1/temp

Using JAVA_HOME: C:/Java/jdk1.5.0_06

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

5、 帐号管理

James的账号管理是通过telnet完成的,登录命令为:

telnet unitname 4555
其中unitname也可以换成IP,4555是端口号。登录时需要用户名和密码,初始的用户名和密码均为root。若登录成功,提示如下:

JAMES Remote Administration Tool 2.1

Please enter your login and password

Login id:

Password:

Welcome root. HELP for a list of commands
需要注意的是,所有敲入的命令都不显示在屏幕上。

输入help,将出现命令的帮助,信息如下:

JAMES Remote Administration Tool 2.1

Please enter your login and password

Login id:

Password:

Welcome root. HELP for a list of commands

Currently implemented commands:

help
display this help

listusers
display existing
accounts

countusers
display the number of existing accounts

adduser [username]
[password] add a
new user

verify
[username]
verify if specified user exist

deluser [username]
delete existing user

setpassword [username] [password] sets a
user's password

setalias [alias]
[user]
locally forwards all email for 'alias' t

o 'user'

unsetalias
[alias]
unsets an alias

setforwarding [username] [emailaddress] forwards a user's email to another
email

address

unsetforwarding
[username]
removes a forward

user
[repositoryname]
change to another user repository

shutdown
kills the current JVM (convenient when J

ames is run as a daemon)

quit
close connection
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 代码

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);

}

}

实现-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 的实现

package com.yy.jamesstudy;

import javax.mail.MessagingException;

import org.apache.mailet.GenericRecipientMatcher;

import org.apache.mailet.MailAddress;

/**

* System jamesstudy

* Package com.yy.jamesstudy

*

* @author Yang Yang

* Created on 2007-9-14下午02:17:07

*/

public class BizMatcher extends GenericRecipientMatcher {

public boolean matchRecipient(MailAddress recipient) throws MessagingException {

//只接受邮件地址包含鸣人的邮件

if (recipient.getUser().indexOf("mingren")!=-1) {

return true;

}

return false;

}

}

GenericRecipientMatcher 是一个针对收件人进行过滤的matcher.

Mailet 的实现

package com.yy.jamesstudy;

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;

/**

* System jamesstudy

* Package com.yy.jamesstudy

*

* @author Yang Yang

* Created on 2007-9-14下午02:16:31

*/

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的基本实现。

编译

我们把这两个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)我们首先找到如下内容

<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>

2)加入包声明

<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>

3)加入 Matcher 和 Mailet的关联关系

找到 元素在它的下面加入

xml 代码

<mailet match="BizMatcher" class="BizMaillet"/>

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研究透了。以后我可能会写一篇相关的文章,在这就不多说了。希望这篇文章能够对大家有所启发!有所帮助!祝大家工作顺利!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐