Ретранслятор почты PHP через удаленный сервер smtp [дубликат]

Возможный дубликат:
Как настроить php.ini с удаленным SMTP?

У нас есть приложение php, работающее в Linux, которое отправляет электронные письма этим пользователям. В настоящее время его настройки, такие как php.ini, настроены для отправки через локальный сервер sendmail, но у нас есть отдельный почтовый сервер для нашей организации для этого домена. Я хочу отправлять электронные письма приложения php через этот удаленный сервер smtp, чтобы эти электронные письма могли иметь правильные записи SPF и подписываться через DKIM.

Но я не видел такой опции в php.ini, чтобы указать адрес удаленного хоста для пересылки писем на него, только для Windows.

Я видел сообщение, в котором предлагалось phpMailer , но я не мог найти, как это настроить, чтобы все наши приложения php могли отправлять через наш удаленный SMTP.

1
задан 13 April 2017 в 15:14
2 ответа

Я бы установил nullmailer и настройте его для пересылки писем на ваш сервер ретрансляции. Дистрибутив linux, который вы используете, скорее всего, имеет пакеты nullmailer, так что двоичный файл sendmail (совместимый с командной строкой) устанавливается в нужное место.

Если вы не хотите устанавливать nullmailer, это можно сделать с помощью sendmail тоже. Если хотите, я обновлю ответ.

ОБНОВЛЕНИЕ:

Если вы хотите сделать это в sendmail, у вас есть несколько вариантов:

(1) В sendmail.mc определите SMART_HOST как ваш почтовый сервер ретрансляции:

define(SMART_HOST, `smtp:[relay.server]')dnl

(2) Вы можете использовать FEATURE (nullclient) .

(3) Для этого измените набор правил 0. В sendmail.mc добавьте следующие строки:

LOCAL_RULE_0
R$* < @ $* . > $*       $#esmtp $@ [relay.server] $: $1 < @ $2 . > $3

Не копируйте и не вставляйте приведенный выше фрагмент кода, поскольку левая часть отделена от правой табуляцией, а не пробелами.

После того, как вы закончите редактирование sendmail.mc вам нужно скомпилировать sendmail.cf и перезапустить sendmail. В Debian для этого нужно запустить sendmailconfig . В CentOS для этого нужно запустить / etc / mail / make , а затем перезапустить службу sendmail .

1
ответ дан 3 December 2019 в 19:05

Сначала выполните поиск, этот вопрос уже задавался ранее (например, в Как настроить php.ini с удаленным SMTP? ).

PHP mail () Функция всегда использует sendmail (в Linux / Unix). Невозможно изменить это с помощью php.ini. Осталось два других средства:

  • Для одного приложения вы можете заменить все вызовы функции mail () с вызовами альтернативной библиотеки (например, PHPMailer).
  • В качестве более общего решения вы можете настроить локальный sendmail (или любую другую программу, предоставляющую команду sendmail ), чтобы она действовала правильно, т.е. почтовый сервер в качестве smarthost.
2
ответ дан 3 December 2019 в 19:05

Теги

Похожие вопросы