搭建一个邮件服务器 James claros inTouch 就发送不了邮件到外网,下面的是James的log

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建一个邮件服务器 James claros inTouch 就发送不了邮件到外网,下面的是James的log相关的知识,希望对你有一定的参考价值。

04/09/10 23:58:19 INFO dnsserver: DNS Server is: byzh.com
04/09/10 23:58:19 INFO dnsserver: DNS Server is: smtp.163.com
04/09/10 23:58:36 WARN dnsserver: Query error!
java.net.PortUnreachableException
at sun.nio.ch.DatagramDispatcher.read0(Native Method)
at sun.nio.ch.DatagramDispatcher.read(DatagramDispatcher.java:25)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.DatagramChannelImpl.read(DatagramChannelImpl.java:324)
at org.xbill.DNS.UDPClient.recv(UDPClient.java:49)
at org.xbill.DNS.UDPClient.sendrecv(UDPClient.java:70)
at org.xbill.DNS.SimpleResolver.send(SimpleResolver.java:256)
at org.xbill.DNS.ExtendedResolver$Resolution.start(ExtendedResolver.java:93)
at org.xbill.DNS.ExtendedResolver.send(ExtendedResolver.java:359)
at org.apache.james.dnsserver.DNSServer.rawDNSLookup(DNSServer.java:337)
at org.apache.james.dnsserver.DNSServer.lookup(DNSServer.java:291)
at org.apache.james.dnsserver.DNSServer.findMXRecordsRaw(DNSServer.java:202)
at org.apache.james.dnsserver.DNSServer.findMXRecords(DNSServer.java:237)
at org.apache.james.dnsserver.DNSServer$1.<init>(DNSServer.java:427)
at org.apache.james.dnsserver.DNSServer.getSMTPHostAddresses(DNSServer.java:426)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:134)
at $Proxy0.getSMTPHostAddresses(Unknown Source)
at org.apache.james.James.getSMTPHostAddresses(James.java:860)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.avalon.phoenix.components.application.BlockInvocationHandler.invoke(BlockInvocationHandler.java:134)
at $Proxy9.getSMTPHostAddresses(Unknown Source)
at org.apache.james.transport.mailets.RemoteDelivery.deliver(RemoteDelivery.java:452)
at org.apache.james.transport.mailets.RemoteDelivery.run(RemoteDelivery.java:1139)
at java.lang.Thread.run(Thread.java:619)
04/09/10 23:58:36 INFO dnsserver: Couldn't resolve MX records for domain sina.com.
04/09/10 23:58:51 WARN dnsserver: Query error!

参考技术A claros inTouch 全是漏洞,妈个嗨。claros inTouch漏洞太多, 都被我重做了。 参考技术B 好像你的SMTP协议设置的有问题!

手动搭建apache james邮件服务器,实现邮件功能

最近一直在搞邮件这块,本来我们邮件发送是用的腾讯免费的企业邮箱,邮件功能没有问题,但是由于邮件的限制,如下:

这些限制导致我们的部分客户是收不到邮件的,哪怕付费,这样的固定频率限制也是无法解决的,可以说我们国内的邮件厂商都是这样,而国外的却要收费。

那么问题来了,如何突破发送邮件的频率限制?

1. 成为该企业用户的白名单,也就是说有关系,让邮件厂商后台开放就行

2. 自己搭建邮件服务器,其实这个就是最实在的

周末花了两天时间搭建了邮件服务器,也走了不少弯路,那么咱们今天就来说说

我自己搭了两款,一款是sendMail,这个搭建过程十分简单,一步一步安装,然后解析一下域名就能发送,sendMail只限于linux部署

而我们做java的接触的最多的就是apache的各大开源组件,而apache恰恰提供了邮件服务,那就是james

james目前已经更新到了3.0的beta5版本,这个版本不是稳定版的

而且在jdk7+会有bug存在,我也试过的确会报错

既然3.0还没有稳定版本并且带有bug,而我们仅仅只需要收发邮件,那么使用2.3的稳定版本是当然没有问题的

好!那我们现在开始使用jame2.3.2的稳定版本来做我们的邮件服务器:

首先需要在linux上安装jdk,我们使用的是JDK7(安装步骤略)

邮件服务器的smtp使用25端口,必须保证此端口没有被占用

如果被占用了,关闭即可

 

推荐如下命令:

#service postfix stop
#chkconfig postfix off

 

 

使用ftp工具把james-2.3.2的压缩包上传至服务器:

解压缩并且重命名后:

进入bin目录,并且运行run.sh

哎哟,发现报错,没有这个命令

 没关系,我们给phoenix.sh加上权限即可

 

然后服务器启动成功!

接下来我们就来进行james的相关配置:

ctrl+c 可以退出运行着的后台,然后我们进入以下目录

修改config.xml这个配置文件

 

找到并且修改这段配置

改为:

autodetct:true 表示自动侦测主机名,设成false会使用指定的server name

autodetectIP:true 表示会为你的servername加上ip,所以直接false就行

servername就改成你所需要的域名就行

注释掉此段代码

配置DNS Server,查看DNS

再查看主机dns

然后再设置如下:

 

找到并且注释这段代码

然后再修改hosts

然后我们在来优化一下James内存使用,修改此目录下的这个文件

 改成此配置即可

 

最后在bin下的phoenix.sh中添加如下配置

配置完后reboot一下

computer rebooting... ...

 

重启完后启动james,sh run.sh

这个时候启动完毕,james配置成功。这个时候,我们还是需要用户的,没有用户就不能不收发邮件了

修改用户名密码,这个主要用来登录james进行相关操作的

修改完后保存,这个时候我们就要添加用户了

先登录连接上james,但是发现命令不存在

那么直接安装一下即可

再次登录发现成功

 james主要提供了如下命令,看名字就知道怎么用,十分简单

 

按照命令添加用户

OK,至此所以配置完毕,我们使用javamail来测试一下吧!

测试发送到163,搜狐,以及qq邮箱,163可以接受,而搜狐和qq不能接受,设置白名单就行

最终受到邮件就是这样的,红框匹配james中新增加的用户以及域名

关于发送的邮件被其他邮件厂商当成垃圾邮件,这个暂时没有解决,如果哪位大侠知道请随时指点一二!

 

以上是关于搭建一个邮件服务器 James claros inTouch 就发送不了邮件到外网,下面的是James的log的主要内容,如果未能解决你的问题,请参考以下文章

James搭建邮件服务器

搭建james邮件服务器

搭建Apache James邮件服务

手动搭建apache james邮件服务器,实现邮件功能

james邮件服务器部署

JavaMail