gpt4 book ai didi

c - 从 DNS 服务器拉取 MX 记录

转载 作者:IT王子 更新时间:2023-10-29 00:09:47 25 4
gpt4 key购买 nike

我正在编写一个应用程序,要求我为 MX 记录执行 DNS 查找。我不确定是否有人有过从事此类工作的经验,但如果您有任何帮助,我们将不胜感激。

编辑:我想要的是一个可以发送电子邮件警报的应用程序。问题是我需要让应用程序能够查找域的 MX 记录。

最佳答案

最简单的方法是简单地使用常用工具。

基本的“dig”命令将通过此查询将记录返回给您:

dig mx example.com

如果您只想要带有 mx 记录的行...

dig mx example.com | grep -v '^;' | grep example.com

dig 在大多数 linux/unix 机器上都可用。

如果你在 Windows 上,你可以使用 nslookup

nslookup -type=mx example.com

然后只需解析这些常用工具的输出即可。

编辑:网络套接字的简单 C 示例

由于您将“C”作为标记,我猜您正在寻找使用原始套接字进行 MX 查找的源代码。我从 http://www.developerweb.net/forum/showthread.php?t=3550 复制了这个.这可能是您正在寻找的更多内容?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <resolv.h>

int main (int argc, char *argv[])
{
u_char nsbuf[4096];
char dispbuf[4096];
ns_msg msg;
ns_rr rr;
int i, j, l;

if (argc < 2) {
printf ("Usage: %s <domain>[...]\n", argv[0]);
exit (1);
}

for (i = 1; i < argc; i++) {
l = res_query (argv[i], ns_c_any, ns_t_mx, nsbuf, sizeof (nsbuf));
if (l < 0) {
perror (argv[i]);
} else {
#ifdef USE_PQUERY
/* this will give lots of detailed info on the request and reply */
res_pquery (&_res, nsbuf, l, stdout);
#else
/* just grab the MX answer info */
ns_initparse (nsbuf, l, &msg);
printf ("%s :\n", argv[i]);
l = ns_msg_count (msg, ns_s_an);
for (j = 0; j < l; j++) {
ns_parserr (&msg, ns_s_an, j, &rr);
ns_sprintrr (&msg, &rr, NULL, NULL, dispbuf, sizeof (dispbuf));
printf ("%s\n", dispbuf);
}
#endif
}
}

exit (0);
}

关于c - 从 DNS 服务器拉取 MX 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1093410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com