У нас есть рабочая установка exim на сайте, где пользователи могут отправлять и получать почту. Мы пытаемся настроить сервер для отправки предупреждений и ошибок по электронной почте на адрес, находящийся за пределами локальной сети.
Проблема в:
Программа, которая отправляет письма, отправляет их, используя имя пользователя, под которым она работает, и локальное имя хоста сервера. Это приводит к тому, что письма имеют отправителя в формате: myapp@myserver.mydomain. Exim отправляет эти письма на SMTP-сервер провайдера, который отклоняет письма, поскольку у них есть нелегальный или непроверяемый отправитель (внутренний адрес).
Я думаю, мне нужно настроить exim для перезаписи отправителя, когда:
Я пробовал установить какую-то переписывание в конфиге exim, но не смог заставить его работать. Я бы показал то, что пробовал, но при последнем посещении сайта у меня закончилось время, и мне пришлось вернуться к исходной версии, потеряв все изменения, которые я пробовал.
Файл /etc/email-addresses
должен решить проблему. Это стандартная часть дистрибутива exim. Вам нужно будет настроить одну запись для каждого локального пользователя, отправляющего электронную почту.
Попробуйте линию, чтобы /etc/email-addresses
лайк:
myapp: donotreply@example.com
На вашем сервере MX добавьте псевдоним, например:
donotreply: :blackhole:
Использовать Reply-to:
заголовок, чтобы получатель мог ответить на сообщение.
Файл /etc/email-addresses
используется следующий код перезаписи, который должен быть в начале rewrite
раздел конфигурационного файла.
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs
begin rewrite
myapp@myserver.mydomain legal.user@myserver.mydomain SFfrs
Флаги имеют следующие значения:
Читать Глава 31 спецификации Exim для получения более подробной информации о перезаписи сообщений.
/etc/email-addresses
удобно, когда вам нужно только связать один адрес электронной почты для каждого имени пользователя. Однако, если вашему пользователю нужно отправлять электронные письма с несколькими адресами, вам придется изменить /etc/email-addresses
каждый раз, и вы неизбежно будете использовать неправильный адрес.
Другой подход - отправить электронное письмо с помощью exim4
команда и ее -f
вариант:
$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com
Обратите внимание, что для -f
для работы, вам нужно, чтобы ваш пользователь был в списке доверенных пользователей exim или exim, чтобы принять его как разрешенного ненадежного отправителя.
В моем случае последнее было по умолчанию, благодаря этому подстановочному знаку в /etc/exim4/conf.d/main/02_exim4-config_options
:
untrusted_set_sender = *
Другое решение - добавить следующую строку в /etc/exim4/conf.d/main/00_local_settings
(предполагая разделенную конфигурацию exim, и создайте ее, если она еще не существует):
MAIN_TRUSTED_USERS = yourusername
Оба варианта требуют перезагрузки конфигурации eximʻa. Под Debian:
# dpkg-reconfigure exim4-config