【问题标题】:DNS query using C++使用 C++ 进行 DNS 查询
【发布时间】:2012-02-16 01:52:54
【问题描述】:

我已经开始研究电子邮件中的垃圾邮件过滤,我需要为此编写一个模块来查询 DNS 以获取被列入黑名单的 IP。作为初学者,任何人都可以建议我阅读有关 DNS 并使用 C++ 对其进行查询的好书吗? .我四处寻找,但无法找到一个很好的来源。 提前致谢

【问题讨论】:

  • 尝试谷歌搜索“c++ dns 库”
  • 请用具体的术语输入“查询 DNS 以获取被列入黑名单的 IP”。你到底是什么意思?
  • @Frunsi:我不知道确切的知识,但我需要查询 DNSBL,以检查给定 IP 是否被列入黑名单,以便过滤垃圾邮件。
  • @Piyush:好的,DNSBL 是流行语。现在学习了解 DNSBL - 它是什么,它是如何工作的。我不知道。但是这个流行语真的应该是你问题的基本部分!
  • @Piyush:可能从en.wikipedia.org/wiki/DNSBL开始

标签: c++ dns email-spam dnsbl


【解决方案1】:

要非常小心。 DNS 一直是可利用代码的一个非常有成果的地方。编写易受攻击的 DNS 软件非常容易。

大多数情况下,您会希望使用异步解析器,以便缓慢或无响应的 DNS 服务器无法无限期地停止您的应用程序。您只希望它停止发送单个特定邮件。为 Ubuntu 打包了一些库:

libadns1-dev - Asynchronous-capable DNS client library and utilities
libc-ares-dev - library for asyncronous name resolves (development files)
libc-ares2 - library for asyncronous name resolves
firedns - Runtime binaries for firedns, an asynch. dns resolver library
libares-dev - asynchronous dns resolver library
libares0 - asynchronous dns resolver library
libfiredns-dev - Development files for firedns, an asynch. dns resolver library
libfiredns0.9 - Runtime libraries for firedns, an asynch. dns resolver library
libfiredns-dev - Development files for firedns, an asynch. dns resolver library
libfiredns0.9 - Runtime libraries for firedns, an asynch. dns resolver library
libowfat-dev - A reimplementation of libdjb
libudns-dev - async-capable DNS stub resolver library, development files

我从来没有使用过这些,所以我不能在这里给出建议。对不起。

您可能希望运行本地递归解析器来缓存查找结果。这可以减少您必须编程的智能量,并使您的软件更加简单。我以前使用过pdns-recursor 并喜欢它。很棒的工具。

【讨论】:

    【解决方案2】:

    作为一个初学者,你基本上应该知道一个函数,gethostbyname

    如果您想检查8.8.4.4zen.spamhaus.org,请致电

    gethostbyname ("4.4.8.8.zen.spamhaus.org")
    

    (注意颠倒的八位字节)。

    如果返回非 NULL,则列出 IP。

    现在这是一种非常原始的方法,有许多缺点,但它确实有效,您应该在继续使用更复杂的方法之前尝试一下。

    【讨论】:

    • 这是主机查询,不是 DNS 查询。
    • @Leo:这是试图解决 OP 提出的一个非常具体的问题。欢迎您提出更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 2019-03-15
    • 2012-02-14
    相关资源
    最近更新 更多