从DNS服务器拉MX记录 [英] Pulling MX record from DNS server
问题描述
我写就是要我的MX记录做一个DNS查找的应用程序。我不知道,如果任何人有经验做这种工作,但如果你这样做,任何帮助,将AP preciated。
I am writing an application that is requiring me to do a DNS lookup for an MX record. I'm not sure if anyone has had experience doing this kind of work but if you do, any help would be appreciated.
编辑:
我要去的事情是,将发送一封电子邮件警报的应用程序。问题是我需要让应用程序能够查找的MX记录的域。
The thing that I'm going for is an application that will send an e-mail alert. The problem is I need to have the application be able to lookup the MX record for a domain.
推荐答案
最简单的方法是简单地使用常用的工具。
The simplest method is to simply use commonly available tools.
基本挖命令将通过该查询返回的记录,您:
The basic "dig" command will return the records to you via this query:
dig mx example.com
如果你只想与MX记录的行...
If you want just the lines with the mx records...
dig mx example.com | grep -v '^;' | grep example.com
挖可在大多数Linux / Unix服务器。
dig is available on most linux / unix boxes.
如果你在Windows中可以使用nslookup
If you're on windows you can use nslookup
nslookup -type=mx example.com
然后就解析这些常用工具的输出。
Then just parse the output of these common tools.
既然你把C作为一个标签,我猜你正在寻找源$ C $ C做使用原始套接字MX查找。我复制这从<一个href=\"http://www.developerweb.net/forum/showthread.php?t=3550\">http://www.developerweb.net/forum/showthread.php?t=3550.这可能是更你在找什么?
Since you put "C" as a tag, I guess you're looking for source code to do MX lookups using raw sockets. I copied this from http://www.developerweb.net/forum/showthread.php?t=3550. It may be more what you're looking for?
#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);
}
这篇关于从DNS服务器拉MX记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!