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