Я пытаюсь отправить электронное письмо с PHP, используя mail()
. У меня есть полный доступ к обоим серверам. Нет ничего необычного iptables
правила для любого (ничего не блокирует установку по умолчанию sendmail
)
Я установил sendmail
на одном сервере пару лет назад (Ubuntu 10.10), и он отлично отправляет почту с PHP. Новый сервер (Ubuntu 10.04, настроен на этой неделе) не будет отправлять почту - или он пытается, но каждый получатель отказывается получать.
Я проверил sendmail
регистрируется на новом сервере и показывает, что все MX-серверы доменов-получателей Connection refused
...
Нет никаких различий в настройке этих серверов. У них по умолчанию sendmail
установить. Стандарт Стек ЛАМП. Они полностью находятся на разных IP-адресах, но работают в одном домене (хотя, очевидно, на разных машинах в домене).
Единственное, что я могу думать, это то, что обратный DNS, настроенный для нового сервера, не принимается фильтром спама на MX-серверах получателя. Это возможно? Я уже отправил запрос на изменение обратного DNS на что-то более подходящее для домена нового сервера.
Старый сервер находится за NAT маршрутизатор, поэтому IP-адрес, с которого создается электронное письмо при отправке со старого сервера, разрешается в доменное имя, которое `` правильно '' представляет сервер ... но IP-адрес нового сервера привязан непосредственно к серверу, но текущий rDNS разрешается в совершенно другой домен.
Что еще мне могло не хватать?
ОБНОВИТЬ:
Образец /var/log/mail.log
строка:
Jan 11 12:16:03 ernesto sm-mta[1177]: q071CKnQ002371:
to=<xxx@xxx.xxx>, ctladdr=<www-data@my.server.com> (33/33), delay=4+11:03:43,
xdelay=00:00:00, mailer=esmtp, pri=58080351, relay=aspmx3.googlemail.com.,
dsn=4.0.0, stat=Deferred: Connection refused by aspmx3.googlemail.com.
Решено! Выяснилось, что у хостинг-провайдера были заблокированы пробные аккаунты, чтобы предотвратить злоупотребления. По-видимому, они обычно отменяются, когда новые клиенты проходят аутентификацию (что я сделал), но этого не произошло. К счастью, теперь они были, и я могу отлично отправлять электронную почту.
Итак, урок здесь: ничего не предполагайте! Вернитесь к своему провайдеру первый чтобы узнать у них, не мешает ли что-нибудь тому, что вы делаете.
Простите, что побеспокоил вас, прекрасные люди. Спасибо за все ваши предложения. Все они в конце концов помогли найти ответ :)
Проверьте исходящее соединение, попытавшись подключиться к внешнему почтовому серверу вручную. Самый простой способ, наверное, запустить telnet aspmx.l.google.com 25
и посмотрите, войдете ли вы в контакт.
Если это сработает, то дело в настройке sendmail.
Поскольку это Ubuntu, я бы очень хотел apt-get install postfix
, выберите правильный вариант из мастера, и пусть он сам разберется! Если у вас нет веской причины использовать sendmail (они почти на 100% совместимы с точки зрения CLI, PHP и т.д.), установите Postfix.
Это проблема сети. «В соединении отказано» означает, что в соединении отказано. Так что ничего с программным обеспечением, а с сетью.
Начните с проверки сетевых проблем. На ум приходят ping, traceroute, telnet, route, iptables и другие. Первый запуск: подключен ли сетевой кабель?