私たちはサーバーでEximを使用して、ローカルの自動化されたユーザーからのみ、ルート、cronなどとして電子メールを送信します。
可能なすべてのユーザーを/etc/email-addresses
に指定する必要があります。例えば:
root: [email protected]
cron: [email protected]
backup: [email protected]`
これにより、生成されたすべてのメールを受信できます。
問題は、何らかの理由でユーザーを追加するとき(たとえば、パッケージを追加するとき、一部のユーザーを追加するとき)に、このユーザーを/etc/email-addresses
に追加するのを忘れることです。ほとんどの場合それは問題ではありませんが、これはきれいではありません。そして、全体的な方法はきれいではありません。
すべてのメールを同じ送信元アドレスで送信するようにEximを設定したいと思います。つまり、送信されるすべてのメールは[email protected]
から送信されます
ワイルドカードや正規表現を/etc/email-addresses
に使用する方法も考えられますが、これはサポートされていません。
現在、Eximを理解していないため、これを何らかの方法で変更する方法を理解できません。
理想的には、Eximは最初に/etc/email-addresses
を調べ、一致しない場合は事前定義されたアドレスを使用する必要があります。しかし、これは非常に二次的なものです。
このアドレスが使用される場所は2つあります。
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
に変更します(2行を変更する必要があります)。これにより、ワイルドカードと正規表現を/etc/email-addresses
に使用できるようになります
したがって、/etc/email-addresses
には次のようなものを含めることができます。root: [email protected]
*: [email protected]
ファイルは上から下に処理されます。したがって、メールがrootに送信される場合、実際には[email protected]に送信されます。そして他のすべての電子メールは[email protected]に送信されます
どこかの後にbegin rewrite
(および、beginで始まる次のセクションの前に)これを追加します。* [email protected] Ffrs
ワイルドカードはすべてのアドレスを表します
[email protected]は必要なアドレスです
Ffrsの略:
Fエンベロープの差出人フィールド
f From:ヘッダーを書き換えます
r Reply-To:ヘッダーを書き換えます
sはSender:ヘッダーを書き換えます
これにより、すべての送信者アドレスが置き換えられます。