Поиск и проверка записи MX

Мне нужно создать инструмент, который будет проверять живые mx-записи доменов на соответствие тому, что следует ожидать (у нас были проблемы с некоторыми нашими сотрудниками, которые возились с ними и вызывали перенаправление всей входящей почты в пустоту)

Не буду врать, я совсем не грамотный программист! Я уже около 40 страниц "погружаюсь в Python" и могу читать и понимать самый простой код. Но я готов учиться, а не просто получить ответ.

Так может ли кто-нибудь предложить, какой язык я должен использовать?

Я думал об использовании python и начал с чего-то вроде использования 0s.system() для выполнения (dig +nocmd domain.com mx +noall +answer) для извлечения записей, затем я немного запутался в том, как чтобы сравнить это с существующим набором записей.

Извините, если все это звучит как ерунда!

Спасибо Крис


person Christopher Long    schedule 02.12.2010    source источник


Ответы (2)


С модулем [dnspython][1] (не встроенным, его необходимо pip install):

>>> import dns.resolver
>>> domain = 'hotmail.com'
>>> for x in dns.resolver.resolve(domain, 'MX'):
...     print(x.to_text())
...
5 mx3.hotmail.com.
5 mx4.hotmail.com.
5 mx1.hotmail.com.
5 mx2.hotmail.com.
person Paulo Scardine    schedule 02.12.2010
comment
Следует отметить, что для этого нужен модуль dnspython. - person Michael; 02.12.2010
comment
Для Python 3 используйте dnspython3 - person Tushar Sadhwani; 26.07.2020
comment
Комментарий @TusharSadhwani устарел — согласно странице dnspython3 на PyPI: dnspython3 был заменен обычным комплектом dnspython, который теперь поддерживает как Python 2, так и Python 3. - person Artemis; 21.09.2020
comment
Мне пришлось использовать query вместо resolve: for x in dns.resolver.query(domain, 'MX'):... - person eddygeek; 20.04.2021

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

person Wooble    schedule 02.12.2010
comment
Я не пробовал. 2.4 или более поздняя версия, как правило, не означает того, на что это похоже, но я полагаю, что это возможно. - person Wooble; 02.12.2010
comment
Теперь он совместим с python3, из pip это пакет dnspython3 - person Jocelyn delalande; 25.08.2014