Мы используем 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:
Это заменит КАЖДЫЙ адрес отправителя.