如何在Ruby on Rails中查询Spamhaus DBL?

时间:2018-08-08 17:58:24

标签: ruby-on-rails ruby database dns

我有一个Rails Web应用程序。我想创建一个使用电子邮件地址的类,例如“ matt@trucksandstuff.com”,解析该域,然后检查是否在Spamhaus DBL中找到了该域。我对他们网站上描述的dig或host命令不满意,并且Charon gem似乎也不适合其示例URL。有什么想法吗?

编辑:这是网站上的内容:

响应“如何测试DBL?”他们说:

  

首先,DBL遵循RFC5782来确定URI区域是否可用于TEST条目。其次,DBL具有用于测试DBL应用程序的特定域:dbltest.com。要测试DBL的功能,请使用host或dig命令进行手动查询。 (如果您需要通过Web在DBL中查找域,请使用“阻止列表删除中心”中的域查找表单。请勿使用自动化工具查询我们的网站。)

我尝试使用Charon gem,我认为它应该和运行一样简单

Charon.query('dbltest.com')

带有删除括号,添加空格等的变体。

也尝试过

resolver = Resolv::DNS.new
name = 'dbltest.com'
resolver.getresources("#{name}.zen.spamhaus.org", Resolv::DNS::Resource::IN::A)

在Rails控制台中。

1 个答案:

答案 0 :(得分:1)

Zen数据库仅用于IP地址。 DBL列表用于主机名。因此,Charon(Zen查询)仅适用于IP地址。要测试主机名,请使用Resolvdbl.spamhouse.org查询主机名:

def is_spammer?(host)
  !Resolv::DNS.new.getresources("#{host}.dbl.spamhaus.org",
                                Resolv::DNS::Resource::IN::A).empty?
end

is_spammer?('dbltest.com')
=> true
is_spammer?('google.com')
=> false