Linux centos7 下使用James3.2.0版本及James2.3.2.1版本邮箱搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/PSY_God/article/details/85037751

因公司的业务需要,需要搭建一个自己的邮箱服务器。选了很多的版本,最后选择了James,并且分为两个James的版本。3版本的和2版本的在以下都会介绍安装配置和使用,以及外网部署的配置。参考别人的博客以及对于James的官网研究了将近三天,最后将两个版本的都测试成功。

一:准备工作(配置好java环境的机器)

准备的工具:①:局域网配置:James的安装包,Linux虚拟机可上网的那种(方便测试对外围发邮件)。虚拟机域名配置(vim /etc/hosts),mysql数据库。mysql的连接jar包(将邮箱的信息存储于数据库中)

                     ②:线上配置:james的安装包,可以上网的域名,并且有域名解析,mysql数据库。mysql对应版本的的连接jar包

二:邮件发送的过程

三:James2.3.2局域网配置

1:下载安装包

扫描二维码关注公众号,回复: 4577571 查看本文章

2:我的虚拟机的域名:

3:使用ftp工具将安装包上传到服务器中,并且解压,进入bin目录下

如果你的不是可运行的脚步,直接 chmod 777 *.sh即可。

4:运行./run.sh 就可以启动james2版本的邮件服务。

如果启动不了,就查看下端口是否被占用  lsof -i:25 查看25占用的情况,并且杀死改进程显示如下效果就说明你已经启动成功了。

启动成功后就会出现如下目录的结构,其中我们要配的就是SAR-INF/目录下的config.xml就可以了。(注意文件路径所在地)

5:修改配置,让其连接mysql数据库(oracle也可以,导入jar包配置地址就行了)

jar包导入后下面配置一下config.xml。其中包含数据库连接,pop3的配置,smtp的配置等相关信息。

我是用winscp工具连接虚拟机,并且用sublime打开文本进行修改。

mysql的配置

 <data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
         <driver>com.mysql.jdbc.Driver</driver>
         <dburl>jdbc:mysql://192.168.0.102:3306/mail?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</dburl>
         <user>root</user>
         <password>123456</password>
         <poolPreparedStatements>true</poolPreparedStatements>
         <max>20</max>
 </data-source>

6:配置好数据库的连接后,需要配置james文件存储方式。james2.3.2默认采用file的方式存储邮件信息和邮件用户的信息。James在其james-2.3.2\apps\james\var\users路径下将用户信息以文件形式存储

邮件数据存储选择,根据xml来看,提供的有3中数据存储方式:

参考连接:https://blog.csdn.net/xiao__jia__jia/article/details/83619404
①.file:// 文件存储
②.db:// 数据库存储
③.dbfile:// 数据文件式存储

全部修改为数据库的存储

找到<users-store>,这个标签内部管理的是存储介质,如下:

在config.xml找到

<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/>  

将其注释,添加如下所示的配置

<spoolrepository destinationURL="db://maildb/spool/spool" type="SPOOL"/>

依旧是config.xml,找到<inboxRepository>的配置,如下:

<inboxRepository>
    <repository destinationURL="file://var/mail/inboxes/" type="MAIL"/>
</inboxRepository>

<!--
<inboxRepository>
    <repository destinationURL="db://maildb/inbox/" type="MAIL"/>
</inboxRepository>
-->

将以文件存储的内容注释掉,将数据库存储的内容去掉注释,结果如下图所示

找到RemoteAddNotINetwork=127.0.0.1注释掉此段代码

 到这里,存储介质的切换就完成了。在数据库中新建数据库mail(数据库的名字可以不是mail)

重启James,再看mail数据库,新建了三张表users,inbox,spool。表users存储的是邮件服务器的用户信息。表inbox存储的是收件箱的内容。表spool存储的是还未查看的邮件,一旦邮件被查看,就会从这张表中删除,转而存储到inbox中。

至此james数据存储形式更改就成功了。下面配置一下pop3和smtp相关的内容。

①:改成自己的虚拟机的域名,邮件管理员的配置

②这里的server配置如下

<!--将两个true改为false,autodetct设为true会自动侦测你的主机名,设成false会用你指定的server name; autodetectIP设为true会为你的servername加上ip。-->

dns服务设置如下图所示

③:配置smtp

<smtpserver enabled="true">
      <port>25</port>
      <handler>
        <!--打开这个注释,开启SMTP AUTH-->
         <authRequired>true</authRequired>
        <!--如果将自己发送邮件服务器的地址配置在下面,则发邮件服务器不需要去进行SMTP AUTH验证,一般不需要修改-->
        <authorizedAddresses>0.0.0.0</authorizedAddresses>
       <!--如果该选项设置为true,则要求在发送邮件时登录用户与发送邮件用户必须是一个域名,且要求发送邮件地址@后面的域名必须与上面配置的servername相同,若为false则无此限制-->
         <verifyIdentity>true</verifyIdentity>
      </handler>
</smtpserver>
<!--james是通过telnet进行添加用户的,下面主要是配置telnet的端口与登录用户名和密码-->

<!--主要配置基本完成,查找autodetect和autodetectIP属性,修改为false,将所有的localhost和myMailServer替换为配置的域名,如标签里的内容 -->

这里有pop3的设置也是一样的,smtp也是一样。至此配置已经结束。

7:下面测试一下本地发邮件的效果。

①启动james新加用户,可以输入help查看命令,下面是添加两个用户到邮件服务器中

同时mysql数据库中也有两个用户了,然后测试用火狐的客户端登录邮箱测试邮件的发送(如果发现登录不了,尝试关闭防火墙就可以了

点击手动设置(这个火狐其实有创建账户其实有歧义的,其实就是登录邮箱)

同时可以对外网进行发送。前提是你的虚拟机能够联网,同时(例如qq邮箱) 要将test.com设置白名单域名,否则会在垃圾箱中。

数据库中也存有邮件的信息

到这里james局域网的邮件配置就完成了。功能就是可以给其他邮箱发邮件,自己服务器的内部可以互相收取邮件。缺少接受外网邮件的功能。

四:james2.3.2外网的配置主要是域名解析的配置。

1:域名的配置解析

2:将邮件服务器移到域名所指的ip服务器中,同时修改config.xml中的域名(将test.com替换成你的域名),修改数据库的配置

3:启动项目,同样的添加用户。telnet localhost 4555 同样的操作。(启动邮件的时候:./run.sh &退出可以继续运行),或者新开一个shell窗口进行添加操作。

4:用qq邮箱进行测试,发送过后点击火狐客户端的拉取按钮进行拉取邮箱信息。

5:打开火狐客户端的邮箱 点击收取按钮

我的邮件回复是电脑原因。正常都是可以回复成功的。(此处针对本片文章可以忽略)

至此james2.3.2接收外网发邮件的功能已经成功结束。

五:james3.2.0邮件的内外网配置(先记录内网的配置,而后记录外网配置)

1:同样的将安装包下载下来,上传到服务器中,配置好java环境。由于是zip包,所有需要服务器安装unzip的命令。

安装包下载可以从我

james3版本和2版本的区别就是,配置文件分开了,而且3比较完善一点。同时数据库的表名称更改了,3版本默认的页数文件存储信息。

下面针对每个配置文件进行说明

配置其实还是一样的,找到对应的节点,按照2.3.2的配置方式进行配置。 

1:dnsservice.xml

<dnsservice>
   <servers>

        <server>192.168.0.1</server>       
        <server>114.114.114.114</server>

   </servers>
   <autodiscover>false</autodiscover>
   <authoritative>false</authoritative>

   <!-- Maximum number of entries to maintain in the DNS cache -->
   <maxcachesize>50000</maxcachesize>

</dnsservice>

2:domainlist.xml


      
              

3:imapserver.xml

 其中几个重要的点就是 autodetect ="false" 一定要设置为false,并且helloName一定要打开。如上图所示。

还有pop3也是一样的配置。

smtp.xml设置比较重要

4:数据库的配置

5:mailetcontainer.xml

 将下面的代码注释了

6:mangerservice.xml

7:配置mailetcontainer.xml:(一定要按照下面的方式去修改存储方式)

  1.     postmaster 修改为管理员邮箱,可以为 postmaster@yourDomain
  2.     repositoryPath 同时存在文件存储(file://)、数据库存储(db://) 的,将默认的文件存储注释掉,并释放数据库存储;对于只存在文件存储的,不进行释放。分别如下图所示:(转自https://blog.csdn.net/hjnth/article/details/82931569

 至此james3.2.0内网的的基本配置就完了。可以测试一下了。启动james。并且添加用户,发送邮件。

8:测试发送邮件:启动后数据库中含有表了。出现如下的表示启动成功了(忽略中间报错的过程,外网不存在的。)

进入bin目录,客户端。添加新的用户 

命令是:sh james-cli.sh -h localhost -p 9999 AddUser [email protected] 123456

               sh james-cli.sh -h localhost -p 9999 AddUser [email protected] 123456

数据库中也有两个用户了

局域网的用户发送邮件测试。当然也可以发送给QQ邮箱邮件。我这里因为电脑的原因,测试不了。有兴趣的可以测一下。

 六:james3.2.0邮件的外网配置

1:将james3.2.0的安装包放入域名所对应的服务器中进行启动。

1:同2.3.2版本一样的,按照内网的修改方式修改对应的数据库。配置好域名的解析。各种服务的域名等。

2:安装邮件服务器的域名服务器地址用netstat -rn查看配置。

3:直接测试外网的邮件服务器。

外网邮件服务启动成功

下面测试用qq发邮件的过程。

后台打印了日志

登陆火狐客户端,点击收取按钮,邮件已到账。 

 七:james邮箱信息的存储

james2.3.2邮箱的新存储在inbox表中,其中详细信息如下图

 随便找一个解码一下。发现就是这个内容,具体的表结构,大家可以仔细研究。

感谢大家的支持,文笔有限,如果按照本文没能成功搭建服务,请参考其他信息,官方文档等方式。 

猜你喜欢

转载自blog.csdn.net/PSY_God/article/details/85037751
今日推荐