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

Exim: отправка всех писем с предопределенным отправителем

Мы используем Exim на наших серверах для отправки писем только от локальных автоматических пользователей, таких как root, cron и т. Д.

Мы должны указать всех возможных пользователей в /etc/email-addresses. Например:

root: alert@example.com  
cron: alert@example.com  
backup: alert@example.com` 

Это позволяет нам получать каждое созданное электронное письмо.

Проблема в том, что когда мы добавляем пользователя по какой-либо причине (например, когда мы добавляем пакет, некоторые добавляют пользователя), мы можем забыть добавить этого пользователя в /etc/email-addresses. В большинстве случаев это не проблема, но это не чисто. И общий метод не чистый.
Мы хотели бы настроить Exim для отправки всех писем с одним и тем же исходным адресом. то есть каждое отправленное письмо приходит от alert@example.com

Один из способов - использовать подстановочный знак или регулярное выражение в /etc/email-addresses но это не поддерживается.
В настоящее время я недостаточно понимаю Exim, чтобы понять, как это изменить тем или иным образом.
В идеале Exim должен изучить /etc/email-addresses сначала, и если совпадений нет, используется предопределенный адрес. Но это очень второстепенно.

Есть два места, где используется этот адрес:
1. когда Exim отправляет FROM: команда для SMTP-сервера
2. внутри шапки

редактировать:
Раздел перезаписи является оригинальным от Debian

begin rewrite  
.ifndef NO_EAA_REWRITE_REWRITE  
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses} \  
{$value}fail}" Ffrs  
*@ETC_MAILNAME "${lookup{${local_part}}lsearch{/etc/email-addresses} \
{$value}fail}" Ffrs  
.endif

Намного лучший подход:

Изменить раздел перезаписи: изменить lsearch по wildlsearch (нужно изменить две строки). Это позволяет использовать подстановочные знаки и регулярные выражения в /etc/email-addresses

Так что /etc/email-addresses может содержать такие вещи:
root: root@example.com
*: alert@example.com

Файл обрабатывается сверху вниз. Итак, если электронное письмо отправлено root, оно действительно отправлено на root@example.com. И все остальные электронные письма отправляются на alert@example.com

Где-то после begin rewrite (и перед следующим разделом, начинающимся с начала) добавьте это:
* name@domain.tld Ffrs

Подстановочный знак для каждого адреса
name@domain.tld - это адрес, который вы хотите
Ffrs означает:
F переписать конверт из поля
f перепишите заголовок From:
r перепишите заголовок Reply-To:
s перепишите заголовок Sender:

Это заменит КАЖДЫЙ адрес отправителя.