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

在java中使用RBL服务器(中国反垃圾邮件联盟的CBL+使用)

2015-12-11 17:01 309 查看
  这是06年写的,不知道现在RBL改了没,不过恢复过来做记录,以后可能需要。
  实时黑名单(RBL)实际上是一个可供查询的IP地址列表,通过DNS的查询方式来查找一个IP地址的A记录是否存在来判断其是否被列入了该实时黑名单中。基于这条原理,那么要写客户端就比较容易了。

使用JNDI查询

DirContext ictx = new InitialDirContext();
Attributes a = ictx.getAttributes("dns://cblplus.anti-spam.org.cn/80.241.134.80.cblplus.anti-spam.org.cn", new String[] { "A" });
返回内容如下:
A: 127.0.8.6
说明IP80.134.241.80在CBL+服务器中(这个IP是我在里面找来的,应该返回如上内容)
其中DNS的URL表示格式如下:
dns://dnsserver:port/domain
  当port未指定时,将使用默认的端口(53,一般来说,DNS Server都是使用此端口,所以一般都不用指定)而dnserver不指定时,将使用运行此程序的操作系统的设置来定,由于要使用中国反垃圾邮件联盟的CBL+服务(其它几项服务如CBL、CDL、CBL-都是类似的,只是返回值不一样,见附表),所以一定要将CBL+的服务器设置为DNS Server进行查询。

关于JNDI/DNS部份说明,请参考:http://java.sun.com/j2se/1.5.0/docs/guide/jndi/jndi-dns.html

使用DatagramPacket进行信息查询
  建立DatagramSocket连接后,向CBL+服务器发送DatagramPacket数据报,然后解析返回的数据就可以得到正确的结果,我以前就是使用这种方法(因为以前不知道可以通过JNDI查询),这种方法可以允许开发人员灵活定制请求及相应的内容,这是优点,缺点是要写好多代码,呵呵,这里就不多说了。

  一般对于RBL而言,可能存在许多种返回值(中国反垃圾邮件联盟的没有,只有一种返回值),如sbl-xbl.spamhaus.org就提供了许多种服务,一般提供服务的网站都会有介绍,对于邮件接收量不是很大或速度要求不是很高的用户推荐多使用几个RBL服务器,对于sbl-xbl.spamhaus.org是一个非常优秀的服务站点,建议大家使用一下。

中国反垃圾邮件联盟提供的服务器地址及返回码:

名称地址测试地址返回状态码
CBLcbl.anti-spam.org.cn2.0.0.127.cbl.anti-spam.org.cn.127.0.8.2
CDLcdl.anti-spam.org.cn0.0.0.240.cdl.anti-spam.org.cn.127.0.8.4
CBL+cblplus.anti-spam.org.cn2.0.0.127.cblplus.anti-spam.org.cn.127.0.8.6
CBL-cblless.anti-spam.org.cn2.0.0.127.cblless.anti-spam.org.cn.127.0.8.5
好了,写完收工。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: