У нас есть хост OSX и экземпляр ubuntu 10.04 vagrant, работающий на virtualbox. При попытке отправить письмо на emailtests.com (для тестирования электронной почты) мы заметили, что DNS не разрешается должным образом.
Итак, мы попробовали выполнить следующую команду на OSX и нашем экземпляре Vagrant:dig -tMX emailtests.com
OSX
; <<>> DiG 9.8.3-P1 <<>> -tMX emailtests.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39364
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 3
;; QUESTION SECTION:
;emailtests.com. IN MX
;; ANSWER SECTION:
emailtests.com. 300 IN MX 10 litmus-smtp-in-392690123.us-east-1.elb.amazonaws.com.
;; AUTHORITY SECTION:
emailtests.com. 172711 IN NS ns-1596.awsdns-07.co.uk.
emailtests.com. 172711 IN NS ns-215.awsdns-26.com.
emailtests.com. 172711 IN NS ns-1288.awsdns-33.org.
emailtests.com. 172711 IN NS ns-964.awsdns-56.net.
;; ADDITIONAL SECTION:
ns-964.awsdns-56.net. 158810 IN A 205.251.195.196
ns-1288.awsdns-33.org. 158499 IN A 205.251.197.8
ns-1596.awsdns-07.co.uk. 72461 IN A 205.251.198.60
;; Query time: 74 msec
;; SERVER: 184.73.189.33#53(184.73.189.33)
;; WHEN: Mon Sep 9 13:15:02 2013
;; MSG SIZE rcvd: 282
бродяга
; <<>> DiG 9.7.0-P1 <<>> -tMX emailtests.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2227
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;emailtests.com. IN MX
;; Query time: 104 msec
;; SERVER: 10.0.2.3#53(10.0.2.3)
;; WHEN: Mon Sep 9 13:09:42 2013
;; MSG SIZE rcvd: 32
Как вы видите, записи MX не разрешаются одинаково. Я поискал в интернете и нашел ответы, в которых говорилось, что нужно добавить следующее в файл vagrant:
config.vm.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
config.vm.customize ["modifyvm", :id, "--natdnspassdomain1", "on"]
Который у нас уже был. Мы все еще не можем правильно разрешить этот адрес и, вероятно, многие другие адреса. Есть идеи, как решить это или сузить проблему?
Примечание: мы можем отправлять электронную почту на Gmail и можем пинговать/копать некоторые домены.
ОБНОВЛЕНИЕ, ifconfig от vagrant
eth0 Link encap:Ethernet HWaddr 08:00:27:36:71:5f
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe36:715f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:38137 errors:0 dropped:0 overruns:0 frame:0
TX packets:26845 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:18987844 (18.9 MB) TX bytes:6605246 (6.6 MB)
eth1 Link encap:Ethernet HWaddr 08:00:27:80:07:aa
inet addr:192.168.42.3 Bcast:192.168.42.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe80:7aa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8294812 errors:0 dropped:0 overruns:0 frame:0
TX packets:4509692 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1871276346 (1.8 GB) TX bytes:1268188839 (1.2 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:815216 errors:0 dropped:0 overruns:0 frame:0
TX packets:815216 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:371105283 (371.1 MB) TX bytes:371105283 (371.1 MB)
решение1
Похоже, настроенный DNS-сервер 10.0.2.3 не настроен на выполнение рекурсивных поисков. Вы вообще не получаете ответа. Используйте DNS-сервер, который может выполнять рекурсивные поиски, или настройте свой так, чтобы он мог это делать.
решение2
Я наткнулся на это, когда сегодня утром искал решение той же проблемы, и после долгих поисков и размышлений нашел следующее решение, которое я опубликую для тех, кто столкнется с этой проблемой в будущем и застрянет.
Настройки Vagrantfile natdns, которые у нас работают (Vagrant 1.6.3, протестировано на OSX (с использованием VirtualBox 4.3.14) и Windows8 (с использованием VirtualBox 4.3.15 r95286 — у моего коллеги была другая, не связанная с этим проблема при использовании 4.3.14 с Windows8, поэтому он использует бета-сборку, которая, похоже, работает правильно с Vagrant)
config.vm.customize ["modifyvm", :id, "--natdnsproxy1", "off"]
config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "off"]
config.vm.customize ["modifyvm", :id, "--natdnspassdomain1", "off"]
(определенно первая строка, следующие две вам могут не понадобиться, я включил их на всякий случай, если вы включили их во время эксперимента — я только что --natdnsproxy1
и --natdnshostresolver1
в своем Vagrantfile отключил обе).
Причина, по-видимому, в том, что Vagrant по умолчанию --natdnsproxy1
включен, а прокси-DNS Virtualbox для поиска mx выглядит неисправным/сломанным/ненадежным. Если вы отключите его, виртуальная машина будет использовать IP-адреса, используемые хостом для DNS, а не пытаться проксировать их через 10.0.2.3. И вуаля, вы получаете полные записи mx из DNS (или, по крайней мере, мы это делаем).
(Чтобы немного погуглить, скажу, что причина, по которой я пришел ко всему этому, заключалась в том, что электронные письма не отправлялись на определенные домены с Vagrant под управлением Centos 6.5 — мы могли видеть, что Sendmail отвечал с ошибкой: 503 «Этот почтовый сервер требует аутентификации при попытке отправки на нелокальный адрес электронной почты...», а затем мы обнаружили, что выполнение a dig mydomain.com mx
возвращало запись A домена, а не ожидаемые записи MX, что указывало на проблему поиска DNS с Vagrant / VirtualBox).