У нас есть хост OSX и бродячий экземпляр ubuntu 10.04, работающий на виртуальном боксе. При попытке отправить электронное письмо на адрес emailtests.com (в целях тестирования электронной почты) мы заметили, что DNS не разрешается должным образом.
Итак, мы попытались выполнить следующую команду в OSX и нашем экземпляре Vagrant: dig -tMX emailtests.com
; <<>> 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 не разрешаются таким же образом. Я поискал в Интернете и нашел ответы, в которых нам предлагалось добавить следующий бродячий файл:
config.vm.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
config.vm.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
config.vm.customize ["modifyvm", :id, "--natdnspassdomain1", "on"]
Что у нас уже было. Мы по-прежнему не можем правильно разрешить этот адрес и, вероятно, многие другие адреса. Есть идеи о том, как решить эту проблему или сузить проблему?
Примечание: мы можем отправлять электронную почту в Gmail и пинговать / копать некоторые домены.
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)
Похоже, настроенный DNS-сервер 10.0.2.3 не настроен для выполнения рекурсивного поиска. Вы вообще не получаете ответа. Используйте DNS-сервер, который может выполнять рекурсивный поиск, или настройте свой для этого.
Я наткнулся на это, глядя на ту же проблему сегодня утром, и после долгих поисков в Google и царапин на голове пришел к следующему решению, которое я опубликую для всех, кто столкнется с этой проблемой в будущем и застрянет.
Параметры natdns Vagrantfile, которые работают для нас (Vagrant 1.6.3, протестирован на OSX (с использованием VirtualBox 4.3.14) и Windows8 (с использованием Virtual Box 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 виртуальных боксов для поиска mx кажется некорректным / сломанным / нестабильным - если вы отключите его, vm будет использовать IP-адреса, которые хост использует для DNS, а не пытаться проксировать их через 10.0.2.3 - et voila вы получаете полные mx-записи из DNS (по крайней мере, мы).
(Ради доброты поиска в Google, причина, по которой я пришел ко всему этому, заключалась в том, что электронные письма не отправлялись на определенные домены из бродяги, работающей под управлением Centos 6.5 - мы могли видеть, что sendmail отвечал с ошибкой: 503 "Этот почтовый сервер требует аутентификации при попытке отправить на нелокальный адрес электронной почты ... ", а затем мы обнаружили, что выполняя dig mydomain.com mx
возвращал A-запись домена, а не ожидаемые почтовые MX-записи, что предполагало проблему поиска DNS с Vagrant / VirtualBox).