PHP mail () не может отправлять внутренние адреса

Я пытаюсь отправить ссылки сброса пароля, когда пользователи забывают пароль для входа в систему, которую я создаю. Проблема в том, что smtp-сервер предположительно не настроен на сервере, на котором размещена моя система. Поэтому всякий раз, когда я пытаюсь использовать функцию php mail () для отправки электронной почты на внутренний адрес электронной почты, электронные письма не могут отправить, но внешний адрес электронной почты (проверенный с помощью учетной записи gmail), электронные письма проходят. Я считаю, что это связано с тем, что мой сервер отправляет прямо в Интернет вместо того, чтобы проходить через внутренний smtp-сервер, чтобы разрешить отправку электронных писем домена. Мне было интересно, знает ли кто-нибудь, как настроить это на Xserve, или если они знали, как конкретно указать функцию php mail (), где первоначально отправлять электронное письмо. Любая помощь или указание в правильном направлении были бы чрезвычайно полезными.

Спасибо!

mail () не отправляет почту, она просто передает вещи локальному SMTP-серверу. Он не обращается к серверу получателя для доставки почты. В реальных условиях почта () идет по вашему письму по улице и бросает его в почтовый ящик района. После этого он не имеет ничего общего с доставкой почты.

Проверьте журналы локального сервера SMTP, чтобы узнать, почему локальные письма не доставляются. Должна быть строка или две, говорящие, почему она зарегистрирована. Возможно, местный агент MTA (агент передачи почты, так называемый «почтовый человек») настроен неправильно.

Вы можете управлять mail() с помощью своих настроек .

Это может не решить вашу общую проблему, но, надеюсь, это полезно. Этот связанный ответ содержит больше информации .

Мы просто рассматривали эту проблему внутри страны. Надеюсь, это поможет вам.

Наше окружение:

  • Ubuntu 12.04 LTS
  • PHP 5.3.10

Мы могли бы подключиться к нашему SMTP-серверу и отправить почту с нашего веб-сервера, так что это не проблема. При попытке отправить почту извне все работает отлично. При попытке отправить почту внутренне, тихий сбой.

Наш PHP использует sendmail, который по умолчанию пытается перенаправить почту на 127.0.0.1. Направьте это на свой SMTP-сервер, отредактировав /etc/mail/sendmail.cf. Обновите строку:

 # "Smart" relay host (may be null) DS 

в

 # "Smart" relay host (may be null) DSyour.smtp.server.com 

Перезапустите sendmail и попробуйте отправить себе электронное письмо через PHP.