DNS-запрос с использованием C ++ - PullRequest
1 голос
/ 22 января 2012

Я начал работать над фильтрацией спама в электронной почте, для которой мне нужно написать модуль, который будет запрашивать у DNS IP-адреса, находящиеся в списке.Как новичок, можете ли вы предложить мне хорошее чтение о DNS и сделать запрос к нему с помощью C ++?,Я искал вокруг, но не смог найти очень хороший источник.Заранее спасибо

Ответы [ 2 ]

1 голос
/ 22 января 2012

Как новичок, вы должны знать об одной функции, gethostbyname.

Тогда, если вы хотите проверить 8.8.4.4 против zen.spamhaus.org, позвоните

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

(обратите внимание на обратные октеты).

Если это возвращает не NULL,IP-адрес указан в списке.

Теперь это очень примитивный метод с рядом недостатков, но он работает, и вам следует попробовать его, прежде чем переходить к более сложным методам.

0 голосов
/ 22 января 2012

Будь очень осторожен. 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 раньше и мне это нравилось. Фантастический инструмент.

...