Возможный дубликат:
Как настроить 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
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
.