我已经开始在电子邮件中的垃圾邮件过滤工作,我需要写一个模块,可以查询列入黑名单的IP的域名系统。作为一个初学者,谁可以建议我一个很好的阅读关于域名系统和查询它使用C++?我到处找,但没能找到一个很好的来源。提前感谢
发布于 2012-01-22 14:44:13
作为初学者,您基本上应该了解一个函数,即gethostbyname。
然后,如果希望根据zen.spamhaus.org检查8.8.4.4,则调用
gethostbyname ("4.4.8.8.zen.spamhaus.org")(注意反转的二进制八位数)。
如果返回非空,则列出该IP。
这是一种非常原始的方法,有很多缺点,但它是有效的,在你转向更复杂的方法之前,你应该先尝试一下。
发布于 2012-01-22 14:25:16
慎重其事。对于可利用的代码来说,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,我很喜欢它。非常棒的工具。
https://stackoverflow.com/questions/8959366
复制相似问题