Laravel предлагает конфигурацию mail.from
, позволяющую указать глобальный адрес / адрес по умолчанию From
.Это вызывает setFrom
внутри Swift-Message и устанавливает « Header From », который отображается в почтовом клиенте получателя.Однако затем сообщение также отправляется с Return-Path / Envelope-From этого значения из-за getReversePath
, которое выводит это значение From какникакая другая опция ( Отправитель / обратный путь ) не была установлена.
Сайт работает на многопроектном хосте с Exim4, работающим локально, поэтому нет никаких ограничений для установки этих адресовкак если бы я использовал что-то вроде Gmail SMTP.Laravel настроен на использование sendmail
.
Предположим, что имя хоста машины - webX.hosts.our-company-intern.com
, а выполняемый на нем проект принадлежит поддомену customer-brand.com
.Электронные письма должны отправляться с «основного домена» (без части поддоменов), например, noreply@customer-brand.com
.customer-brand.com.
не разрешает на машине, где размещается проект поддомен.
Я хотел бы отправить письмо с адресом конверта моего фактического имени хоста (лучше: сохранить значение по умолчанию Envelope-From / Return-Path Exim / Sendmail будет использовать), как appname@webX.hosts.our-company-intern.com
и имеет только From: noreply@customer-brand.com
.
Причина в том, что я хотел бы иметь действительный Return-Path указание, с какого хоста оно действительно пришло.SPF также является причиной, но не основной;мы контролируем домен customer-brand.com
и можем просто добавить адрес нашего хоста, я все же хотел бы по возможности его избежать и использовать наш домен, в котором уже есть все наши хосты в их записи SPF.
Когда я помещаюследующая строка в методе класса поставщика Laravel Mailer::send
:
$message->sender('appname@webX.hosts.our-company-intern.com');
Это дает желаемый результат, но, конечно, я не могу просто отредактировать его в коде поставщика. Где я могу настроить это правильно (возможно, с помощью обратного вызова, который выполняется для каждого сообщения)?Или такой опции нет, и я должен написать проблему в пакете Laravel / Mail?
Я также попытался вставить -f
в команду sendmail: /usr/sbin/sendmail -bs -f"appname@webX.hosts.our-company-intern.com"
- однако это уже не удаетсяна _establishProcessConnection()
.В CLI вызывается ошибка:
exim: несовместимые параметры или аргументы командной строки
Версии:
- Laravel 5.4.36
- Swiftmailer 5.4.9
- Exim 4.89-2 + deb9u2
Конфиг mail.php
:
'from' => [
'address' => 'noreply@customer-brand.com',
'name' => 'Customer Brand',
],
Tinker-ShellТестовый код:
Mail::raw('Text to e-mail', function($message) {
$message->to('my-personal-email-for-testing@domain.com');
})
Текущие заголовки почты:
Received: from webX.hosts.our-company-intern.com (xxx.xxx.xxx.xxx) by ...
Received: from appname (helo=[127.0.0.1])
by webX.hosts.our-company-intern.com with local-smtp (Exim 4.89)
(envelope-from <noreply@customer-brand.com>) // this should change
...
From: Customer Brand <noreply@customer-brand.com>
Return-Path: noreply@customer-brand.com // this should change