PHP mail () не удается отправить на внутренние адреса - PullRequest
1 голос
/ 13 июля 2011

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

Спасибо!

Ответы [ 4 ]

1 голос
/ 13 июля 2011

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

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

1 голос
/ 13 июля 2011

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

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

0 голосов
/ 25 марта 2018

Это то, что происходит в ПО администрирования сервера PLESK от Parellels.

Найдите файл конфигурации main.cf для PostFix, который для CentOS 6 расположен по адресу

 /etc/postfix/main.cf
* 1005.* Если вы не можете его найти, выполните команду
 which postfix

SSH, чтобы хотя бы увидеть, где находится Postfix на вашем сервере.

Затем откройте файл в текстовом редакторе,или в оболочке Linux, и сделайте эти строки (должно быть в конце файла, вокруг строки 677):

virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox

закомментировано так:

#virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
#virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
#virtual_mailbox_maps = hash:/var/spool/postfix/plesk/vmailbox

Затем,перезапустите сервис Postfix

sudo service postfix restart

Apache, пока вы на нем (не больно), и вуаля!Ваш адрес электронной почты должен получать эти письма сейчас.Это также не влияет ни на ваши обычные электронные письма, ни на что-либо еще.

0 голосов
/ 18 июня 2012

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

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

  • 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...