1

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

4

2 回答 2

1

作为初学者,您基本上应该知道一个功能,gethostbyname.

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

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

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

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

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

于 2012-01-22T06:44:12.683 回答
0

要非常小心。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,很喜欢。很棒的工具。

于 2012-01-22T06:25:16.430 回答