Я отображение простого списка сообщений электронной почты с использованием imap_*
функции PHP:PHP imap работает только с IP-адресом, а не с доменным именем - проблема DNS?
$connection = "{mail-server:993/ssl/novalidate-cert}INBOX";
$imap = imap_open($connection, 'my-login', 'my-pass');
$check = imap_check($imap);
$overview = imap_fetch_overview($imap, "1:{$check->Nmsgs}", 0);
foreach ($overview as $msg) {
echo "{$msg->msgno} ({$msg->date}), from {$msg->from}: {$msg->subject}\n";
}
imap_close($imap);
Я подключение к одной и той же машине. Это работает отлично, и я вижу список писем. Однако, в самом низу страницы, уведомление показано:
Примечание: неизвестно: Не удается подключиться к почтовому серверу, 993: Соединение отклонено (errflg = 1) в Unknown в строке 0
Это уведомление отображается, когда я использую свое доменное имя или localhost (!) В качестве почтового сервера. Когда я использую свой IP-адрес или 127.0.0.1, все работает нормально. Я получил эту идею от this question.
Я сделал nslookup как для своего доменного имени, так и для localhost, из самой машины. Оба возвращают правильный IP-адрес, однако оба они также показывают, что это «неавторитетный ответ».
Вот содержание /etc/hosts
:
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Я не понимаю, как nslookup localhost
может дать 127.0.0.1 как не авторитетный ответ, если он находится в файле хостов.
В любом случае, я прав, что PHP, бросающий это уведомление, объясняется тем, что DNS не является авторитетным? Если да, то как я могу это исправить? Если нет, как я могу это исправить?
У меня нет других проблем с DNS. Я могу получить доступ к машине везде, используя свое доменное имя. Также обратите внимание, что PHP на самом деле может подключиться, когда я использую доменное имя - он просто также выплевывает уведомление.
Также нет проблем с использованием thunderbird на удаленном компьютере с использованием того же соединения.
Я запускаю Ubuntu 14.04, PHP 5.5.9 и Dovecot 2.2.9 для сервера IMAP.
@JeremiahWinsley спасибо, что помогает: теперь я могу подключиться с помощью 'localhost'. Однако использование моего доменного имени по-прежнему не работает. Должен ли я добавить запись в файл hosts, потому что теперь он также использует адрес ipv6? Или есть способ настроить dovecot для использования ipv6? Однако я попытался это сделать сейчас с http://efod.se/blog/archive/2008/11/29/dovecot-postfix-ipv6, но это не помогает. Должен ли я разместить мою конфигурацию договетов? – Keelan
@JeremiahWinsley извините, исправление. Включение ipv6 в dovecot с моей конфигурацией должно быть выполнено с помощью http://www.dovecot.org/list/dovecot-cvs/2009-August/014295.html. Я сделал это, и теперь он отлично работает, когда я раскомментирую строку в файле hosts. Хотелось бы написать ответ, чтобы я мог выразить свою признательность? :) – Keelan