У нас есть рабочая установка exim на сайте, где пользователи могут отправлять и получать почту. Мы пытаемся настроить сервер для отправки некоторых предупреждений и ошибок по электронной почте на адрес, который находится за пределами локальной сети.
Проблема в:
Программа, которая отправляет письма, отправляет их, используя имя пользователя и локальное имя сервера. Это приводит к тому, что письма имеют отправителя в формате: myapp@myserver.mydomain. Exim отправляет эти письма на SMTP-сервер провайдера, который отклоняет письма, поскольку они имеют нелегального или непроверяемого отправителя (внутренний адрес).
Я думаю, мне следует настроить exim для перезаписи отправителя, когда:
- домен отправителя находится в локальной сети
- домен получателя находится за пределами локальной сети
Я попытался установить какое-то переписывание в конфигурации exim, но мне не удалось заставить его работать. Я бы показал, что я пробовал, но у меня не хватило времени при последнем посещении сайта, и мне пришлось вернуться к исходной версии, потеряв все изменения, которые я пытался.
^
в начале правила должно быть , какS
исключает регулярное выражениеSender:
" заголовок не "Sender-To:
" (и это слишком маленькое изменение, чтобы редактировать сообщение)Файл
/etc/email-addresses
должен решить проблему. Это стандартная часть дистрибутива exim. Вам нужно будет настроить одну запись для каждого локального пользователя, отправляющего электронную почту.Попробуйте строку, чтобы
/etc/email-addresses
понравиться:На вашем сервере MX добавьте псевдоним:
Используйте
Reply-to:
заголовок, чтобы получатель мог ответить на сообщение.В файле
/etc/email-addresses
используется следующий код перезаписи, который должен находиться в началеrewrite
раздела файла конфигурации.источник
/etc/email-addresses
не существует на моем сервере. Могу ли я просто создать его, или это означает, что чего-то не хватает?email-addresses
или проверьте ваш файл конфигурации для раздела перезаписи. Возможно, это не было настроено в вашем дистрибутиве.grep
,locate
и посмотрел на несколькоman
-pages, но ничего не нашел. Должен ли файл быть определен вexim.conf
?exim.conf
. Если оно отсутствует, добавьте его. Убедитесь, что переменнаяlocal_domains
включает ваш домен./etc/email-addresses
удобно, когда вам нужно связать только один адрес электронной почты с именем пользователя. Однако, если вашему пользователю необходимо отправлять электронные письма с несколькими адресами, вам придется/etc/email-addresses
каждый раз вносить изменения , и вы неизбежно будете использовать неправильный адрес.Другой подход заключается в отправке электронного письма с помощью
exim4
команды и ее-f
опции:Обратите внимание, что для того,
-f
чтобы опция работала, вам нужно, чтобы ваш пользователь входил в число доверенных пользователей exim, или exim, чтобы принять его как разрешенного ненадежного отправителя.В моем случае последний был по умолчанию, благодаря этому шаблону в
/etc/exim4/conf.d/main/02_exim4-config_options
:Другое решение состоит в том, чтобы добавить следующую строку
/etc/exim4/conf.d/main/00_local_settings
(при условии, что exim-конфигурация разбита, и создать ее, если она еще не существует):Оба варианта требуют перезагрузки конфигурации exim. Под Debian:
источник