Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

ОБНОВИТЬ:

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

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

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

(2) Вы можете использовать ОСОБЕННОСТЬ (нулевой клиент).

(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 с последующим service sendmail restart.