Re: [exim] address rewrite not working

Top Page
Delete this message
Reply to this message
Author: W B Hacker
Date:  
To: exim users
Subject: Re: [exim] address rewrite not working
Nigel Metheringham wrote:
> On 22 Dec 2010, at 12:31, Johann Spies wrote:
>
>> Please help me to understand and maybe a practical situation will make
>> it clear.
>>
>> On our campus there several mailservers for which we relayed mail. Then
>> it happens that one or more of them cease to exist and the mail have to
>> be delivered at another place (e.g. exchange).
>>
>> How would you, without rewriting the email, handle that situation. What
>> we did was to rewrite it:
>
> There is no need to rewrite in this case. Standard routing would get the
> email there OK - router given below.
>
> However there might be a case to rewrite to ensure that replies (if the
> sender addresses were in the deprecated domain), or reply-alls go direct
> to their destination rather than via the deprecated domain.
>
> This does have other disadvantages - it is changing mail (which may well
> have legal implications) and may break digital signatures. Rewriting is
> generally best avoided for these reasons.
>
>> Say the mail serves akad and addresses had the pattern:
>> user@???
>>
>> We rewrote it to user@???.
>
> You could have a router like:-
>
> redirect_deprecated:
>    driver = redirect
>    domains = akad.sun.ac.za
>    data = ${quote_local_part:$local_part}@???

>
> That would handle the delivery. Any rewriting is cosmetic to that.
>
>     Nigel.


ACK. That router should JFW, and can be expanded to handle longer lists or
lookups, eg: 'universal' going forward.

OTOH - '....legal implications'......

IF/AS/WHEN there is a strong(er) need to get the new address or other info onto
the screen of the senders AND NOT transparently redirect?

One can 'force' the change back upstream by rejecting with a custom error message:

   # RCPT_4A: IF for former old_example.com THEN advise of change
   #
   deny
     message = Change domain from old_example.com to new_example.com, try again
     condition   = ${if eq{$domain}{old_example.com}}
     log_message = Caller for old_example.com advised of new_example.com


Multiple-line messages, or even a URI with detailed explanation, disclaimer, and
per-user custom messages from $local_part lookups also possible.

Taken as given that no all Luser will read and heed a DSN / error message, os
'best effort' only.

Bill