邮件服务器James搭建企业邮件系统

news/2024/10/17 23:23:29/

        中小企业是否可以免费拥有自己的邮件系统,而不是去购买腾讯,163的企业邮箱。答案是肯定的,可以,Java开源的邮件系统很多,经过筛选,调研最终我们选择用James来搭建自己的邮件系统。接下来我们来看看window7环境下如何用James来搭建邮件系统:

       Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。

前期准备

1.Jdk1.6 需要配置Java环境变量,这个就不在这里详细介绍如何配置了。

2.James运行文件,下载地址http://james.apache.org/download.cgi



下载完成后直接解压,解压后找到D:\X-EI\apache-james-2.3.2\james-2.3.2\bin目录下的run.bat文件,就可以启动james邮件服务器了。

         ps:如果James用到的端口被占用,可能启动的时候会报错,然后一闪而过,这个时候我们可以去修改James的POP3,SMTP,NNTP协议的端口,他们三个默认的端口为110,25,119.这三个协议我们可能见的比较多,但是你是否了解他们都代表什么意思呢,既然我们提到了这三个协议,那么我们就来看看这三个协议代表什么意思。

  • POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件
  • SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件
  • NNTP(Network News Transport Protocol),中文释义:(RFC-977)网络新闻传输协议。这是一个主要用于阅读和张贴新闻文章(俗称为“帖子”,比较正式的是“新闻组邮件”)到Usenet上的Internet应用协议,也负责新闻在服务器间的传送。NNTP用于向Internet上NNTP服务器或NNTP客户(新闻阅读器)发布网络新闻邮件的协议,提供通过Internet使用可靠的基于流的新闻传输,提供新闻的分发、查询、检索和投递。NNTP还专门设计用于将新闻文章保存在中心数据库的服务器上,这样用户可以选择要阅读的特定条目,还提供过期新闻的索引、交叉引用和终止。

归纳下就是pop3是收邮件的协议,smtp是发邮件的协议,nntp是新闻协议。

如何修改James这几个协议的端口

找到目录D:\X-EI\apache-james-2.3.2\james-2.3.2\apps\james\SAR-INF底下的config.xml文件,用editplus或者其他编辑器打开文件,ctrl+f搜索pop3
  <pop3server enabled="true"><!-- POP3协议端口 --><port>1130</port><handler><helloName autodetect="false">jwdstef.com</helloName><connectiontimeout>120000</connectiontimeout></handler></pop3server>
      我这里把原来的110端口修改成1130端口了,其他的两个端口修改也一样。
<smtpserver enabled="true"><!-- SMTP协议端口 --><port>25</port><handler>     <helloName autodetect="false">jwdstef.com</helloName><connectiontimeout>360000</connectiontimeout><authRequired>true</authRequired><authorizedAddresses>192.168.0.0/255.255.255.0,127.0.0.0/8</authorizedAddresses><maxmessagesize>0</maxmessagesize></handler></smtpserver>

 <nntpserver enabled="true"><!-- NNTP协议端口 --><port>119</port><handler><helloName autodetect="false">jwdstef.com</helloName><connectiontimeout>120000</connectiontimeout><authRequired>false</authRequired></handler></nntpserver>

我们修改完这个几个端口后,就可以顺利启动James服务了。



配置服务


默认配置启动James服务,只能给内网发送邮件,我们的要求是可以给外网的其他邮箱发邮件,比如163,qq,sina等邮箱发送邮件,那么我们必须修改James默认配置,接下来我们就来看看如何修改
在D:\X-EI\apache-james-2.3.2\james-2.3.2\apps\james\SAR-INF下打开config.xml文件,找到
<postmaster>Postmaster@localhost</postmaster><servernames autodetect="true" autodetectIP="true"><servername>localhost</servername></servernames>
修改localhost为你自己的域名,假如我们的域名是jwdstef.com,那么修改完成为:
<postmaster>Postmaster@jwdstef.com</postmaster><servernames <span style="color:#cc0000;">autodetect="false" autodetectIP="false"</span>><servername>jwdstef.com</servername></servernames>
修改dns服务,打开cmd,执行ipconfig /all 找到自己的DNS服务


<servers><!--Enter ip address of your DNS server, one IP address per server --><!-- element. --><server>mail.126.com</server><server>smtp.163.com</server><server>202.106.195.68</server><server>192.168.1.98</server><server>jwdstef.com</server></servers><autodiscover>false</autodiscover><authoritative>false</authoritative>
找到
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor> <notice>550 - Requested action not taken: relaying denied</notice> 
</mailet>

将其注释掉。并且开启SMTP Server 身份验证,打开
<span style="font-family:Microsoft YaHei;"><authRequired>true</authRequired></span>
打开后邮箱访问需要帐号验证,这样保证邮箱的安全性。
James 邮件用户的用户信息默认保存在apps\james\var\users 目录下,通过修改配置文件apps\james\SAR-INF\config.xml,可以把用户信息保存到数据库中,
配置方法如下
找到
 <users-store><repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"><destination URL="file://var/users/"/></repository>

改为
<users-store><repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://intouch/users"><sqlFile>file://conf/sqlResources.xml</sqlFile></repository></users-store>

通过修改用户的存储介质从file变成了db,db://intouch/users 中intouch是数据库的名字,users是邮件系统存储用户的表名
然后我们需要让邮件信息也保存在数据库,邮件信息的保存需要修改

找到<inboxrepository>项, 默认是<repository destinationurl="file://var/mail/inboxes/" type="mail"> 
屏蔽掉,在它下面有个例子<repository destinationurl="db://maildb/inbox/" type="mail">,激活它.
然后是spool,找到<spoolrepository>将默认屏蔽掉.   
激活<repository   destinationurl="db://maildb/spool/spool"   type="spool"/>  
这时候数据库中会自动建两个表:spool和inbox;spool是临时表,只要通过邮件服务器的邮件,不管是发,收,都会存到这个表里。存入的时候邮件有个状态:message_state,状态的值有几种,transe..span,root等第一个表示正在传,当传完后邮件服务器会自动删除这条邮件(此功能可配置,后面有介绍,通过改删除邮件的SQL可屏蔽此功能);当接收一个邮件时,也是先放在spool表里。然后往inbox表里转存;

我这里使用的数据库是Mysql,首先我在mysql里面创建好数据库intouch,找到<data-source>
<data-source name="intouch" class="org.apache.james.util.dbcp.JdbcDataSource"><driver>com.mysql.jdbc.Driver</driver><dburl>jdbc:mysql://localhost/intouch?autoReconnect=true</dburl><user>root</user><password>123</password><max>20</max></data-source>
配置好数据库连接。然后将对应数据库的jar包放到D:\X-EI\apache-james-2.3.2\james-2.3.2\lib下
这样James的数据库连接就配置好了,启动James服务,我们会看到mysql数据库intouch库里面多了一个users表。

我们还需要配置一个地方,修改c:/windows/system32/drivers/etc/hosts 文件,增加一个地址映射。
127.0.0.1 jwdstef.com

以上配置完成后,James邮箱所有配置完成。

接下来我们需要登录邮件服务器,去增加用户,发送邮件,接收邮件。

执行CMD,打开命令窗口,执行命令telnet jwdstef.com 4555,
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

这里的4555端口是默认的,为了安全,我们最好修改下这个端口,还有登录的用户名和密码,最好也修改了。修改的位置
<remotemanager enabled="true"><!--服务连接端口--><port>4555</port><handler><helloName autodetect="false">jwdstef.com</helloName><administrator_accounts><!--服务连接管理员帐号密码--><account login="root" password="root"/></administrator_accounts><connectiontimeout> 60000 </connectiontimeout>


登录成功后,我们可以添加用户,命令如下:
adduser 帐号 密码



完成配置后,我们增加了用户,但是如何收发邮件呢,通过命令去收发邮件肯定不可能,所以我们需要一个webmail来收发邮件,我们可以自己搭建一个webmail客户端应用,也可以使用foxmail等邮件客户端软件。

我们先看看如何配置foxmail,使其可以连接到我们刚才搭建的邮件服务器,完成邮件的收发。

打开foxmail进入设置页面,添加账号


jwdstef这个用户是我在James服务后台通过命令 adduser jwdstef jd1增加的。配置完成后,我们就可以收发邮件了。我们来试试给163的邮箱发一封邮件



登录163邮箱



收到邮件,说明我们的邮件服务器配置成功了!

如果还不能成功发送,接收,采取如下暴力配置:

①、查找替换所有的 localhost为域名

②、查找所有autodetect属性,修改为false。autodetectIP也设为false.

查找所有myMailServer,替换为域名。

附件大小配置

整合了mysql,james 对附件大小的限制是使用mysql对行记录的限制来实现的。mysql在默认配置配置情况下默认是1M

修改mysql所在安装目录的my.ini 增加max-allowed-packet=64M(附件大小) 

收附件的时候,会遇到收不到超过10m附件的情况,一个是前面说的mysql字段大小限制,还有一个会有jvm虚拟内存的限制,因为默认16m的虚拟内存是不够的,要在james中修改。这里有两种修改方法: 


1)在run.bat中加入set JAVA_OPTS=“-Xms32m -Xmx512m -Xss512m” 并启动 
2)在conf/wrapper.conf修改并通过服务启动

wrapper.java.initmemory=64 
wrapper.java.maxmemory=512

如果想正常收发邮件,请确保好helo或ehlo名,并对自己的mx地址做好dns反向解析,就可以基本保证全网收发.

James用户密码的加密方式

james 用户密码所用的加密方式是sha加密

/*** 可以用于 md5 或者 sha 加密* * @param pass*            要加密的明文* @param algorithm*            加密方式 (md5或 sha)* @return* @throws NoSuchAlgorithmException*/public static String digestString(String pass, String algorithm) throws NoSuchAlgorithmException {MessageDigest md;ByteArrayOutputStream bos;try {md = MessageDigest.getInstance(algorithm);byte[] digest = md.digest(pass.getBytes("iso-8859-1"));bos = new ByteArrayOutputStream();OutputStream encodedStream = MimeUtility.encode(bos, "base64");encodedStream.write(digest);return bos.toString("iso-8859-1");} catch (IOException ioe) {throw new RuntimeException("Fatal error: " + ioe);} catch (MessagingException me) {throw new RuntimeException("Fatal error: " + me);}}


webmail配置

下来我们看看,如何搭建自己的邮件web端应用,经过调研筛选,这里我选择了Java开源的claros intouch2作为web端。

下载claros intouch2,地址:http://www.claros.org/web/showProduct.do-id=1.html



下载完成后我们把war包部署到tomcat6底下,启动tomcat,关于tomcat的安装和配置,这里我就不介绍了,大家自己去g.cn。

需要修改D:\Program Files\apache-tomcat-6.0.28\apache-tomcat-6.0.28\webapps\intouch2\WEB-INF\config目录下的config.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<claros-config><!-- COMMON PARAMETERS --><common-params><charset>utf-8</charset><!-- the timezone is not functional at 2.0 --><server-timezone>Europe/Istanbul</server-timezone><!-- this directory must be writable (e.g. run a chmod 777 on it) --><tmp-dir>/tmp</tmp-dir> <!-- th e following two is in MB's--><max-attachment-size>5</max-attachment-size><max-mail-size>10</max-mail-size><title>Claros inTouch 2.1</title><!-- We recommend running spamassasin. --><spam-check-enabled>false</spam-check-enabled><!-- valid values are: da, de, en, fr, it, pt_br, pl, sk, tr, vi, zh_cn_utf8 --><default-lang>en</default-lang><!-- this is the default rss feed. users can set their own --><rss-feed>http://rss.cnn.com/rss/cnn_topstories.rss</rss-feed></common-params><!-- CHAT SERVER SETUP --><!-- if you have a jabber server with transports running such as the MSN, yahoo, icq, aol transports the following transport domains must be set. If you don't have your own jabber serveror not running transports omit the following settings.--><chat><default-domain>claros.org</default-domain><msn-transport>msn.claros.org</msn-transport><yahoo-transport>yahoo.claros.org</yahoo-transport><icq-transport>icq.claros.org</icq-transport><aol-transport>aol.claros.org</aol-transport></chat><!-- MAIL SERVER SETUP -->	<servers><server><!-- give any name you desire --><shortname>jwdstef.com</shortname><!-- your imap/pop3 server ip/dns --><fetch-server>jwdstef.com</fetch-server><fetch-server-port>1130</fetch-server-port>  <fetch-protocol>pop3</fetch-protocol>  <fetch-ssl>false</fetch-ssl>  <smtp-server>jwdstef.com</smtp-server>  <smtp-server-port>25</smtp-server-port>  <smtp-authenticated>true</smtp-authenticated>  <smtp-ssl>false</smtp-ssl>  <folder-namespace></folder-namespace></server></servers><!-- THE DATABASE SETUP --><!-- Please note that DB setup is essential to work. There is a intouch-mysql file in the SQL directoryof the zip file. Please create a database and dump the sql file to the db. mysqladmin -u root -p create intouchmysql -u root -p intouch < intouch-mysql.sql--><db-config><db><!-- do not change the term file!!! --><id>file</id><!-- the connection url for the JDBC connection --><database>jdbc:mysql://localhost:3306/intouch</database><!-- the connection class --><driver>com.mysql.jdbc.Driver</driver><!-- the user with read/write/delete/update/select permission to the database  --><login>root</login><!-- the plain text password --><password>123</password></db></db-config>
</claros-config>

启动后我们访问Intouch。

访问成功!这样我们的web客户端也搭建完成。



http://www.ppmy.cn/news/581110.html

相关文章

企业邮局和邮件服务器

公司以前是使用租用的虚拟主机邮件服务器 ,现在准备筹备自己的 .所以让我找一下 ,然后对比一下优势 .我收集了一下资料 ,贴下来如下 什么叫"企业邮局"&#xff1f; 所谓企业邮局&#xff0c;是一种类似于虚拟主机的服务&#xff0c;将一台邮件服务器划分为若干区域&…

自建邮件服务器or租用企业邮箱,如何选择?

企业邮箱不仅作为企业员工间的交流工具&#xff0c;也是企业对外沟通的载体。企业邮箱主要分为两种方式&#xff0c;一种是租用第三方企业邮箱&#xff0c;另一种则是企业自建邮件服务器。这两种方式各有各的好处&#xff0c;但是也都存在自己的局限性。那么哪种方式能满足企业…

中小企业服务器配置方案(邮件服务器) Sendmail服务器 Qmail服务器

中小企业服务器配置方案(邮件服务器) 2001-06-05 12:29 发布者&#xff1a;netbull 阅读次数&#xff1a;155 汤海京 (投稿) 第四章 邮件服务器 第一节 Sendmail服务器 & 1.1 简介 邮件服务是用户所需要的最重要的网络服务。Web的通信量很大&#xff0c;但邮件主要用于个人…

如何搭建企业邮箱服务器

在当今企业信息化时代&#xff0c;无论是初创的企业还是中大型的企业&#xff0c;企业邮箱都已经成为企业日常运作不可或缺的应用。企业邮箱不仅有助于企业建立高效的内部沟通渠道&#xff0c;而且还是企业对外联络的重要沟通工具之一。那么&#xff0c;如何搭建属于自己的企业…

企业邮箱设置,企业邮箱服务器怎么设置?

TOM企业邮箱新注册的用户3折。除了随心邮&#xff0c;还有邮件撤回&#xff0c;邮件备份&#xff0c;来信分类&#xff0c;自动回复&#xff0c;异地登录提醒等特色功能。今天注册跟大家讲一下&#xff0c;企业邮箱在客户端服务器的设置方法~ 企业邮箱服务器客户端设置&#x…

FJ集团企业级邮件服务器——IRedMail服务器安装与配置

一、iRedMail安装之前的准备工作&#xff1a; 1&#xff09;检查服务器FQDN &#xff1a; 2&#xff09;检查2个hostname文件&#xff1a; 3&#xff09;yum源构建&#xff1a; 将/etc/yum.repos.d/下的所有yum仓库开启&#xff08;.repo扩展名的文件&#xff09;&#xff0c;即…

企业邮箱及邮件服务器架设

新手入门:企业邮箱及邮件服务器架设 电子邮件是互联网最基本、但却是最重要的组成部分&#xff0c;通过电子邮件进行方便、快捷的信息交流&#xff0c;已经逐渐成为企业工作中不可或缺的行为习惯。企业邮箱是指以企业的域名作为后缀的电子邮件地址&#xff0c;通常一个企业经常…

23. 数据结构之位图

前言 之前在讲散列表的时候&#xff0c;提到过位图的概念。位图&#xff08;Bitmap&#xff09;作为一种特殊的数据结构&#xff0c;它使用一系列位来表示数据&#xff0c;每个位只有两个状态&#xff08;0或1&#xff09;。由于它的高效性和节省空间的特性&#xff0c;位图在…