Exim: Change sender address when sending mails out of local network
We have a working exim setup at a site, where users can send and receive mails. We are trying to setup a server to send some warnings and errors using email to an address that is outside the local network.
The problem is:
The program that sends the mails sends them using the username it runs under and the local hostname of the server. This cause the mails to have a sender of format: [email protected]. Exim sends these mails to the ISP's SMTP server, which rejects the mails as they have an illegal or unverifiable sender (the internal address).
I'm thinking I should configure exim to rewrite the sender when:
- sender's domain is on the local network
- receiver's domain is outside the local network
I tried setting some kind of rewriting in the exim config, but did not manage to get it to work. I'd show what I have tried, but I ran out of time on the last visit to the site, and had to revert to the original version losing all the changes I tried.
Solution 1:
begin rewrite
[email protected] [email protected] SFfrs
The flags have the following meanings:
- S - Do all rewriting at SMTP time. This means that all of the following flags are done immediately as the data they apply to is coming in, not delayed until later.
- F - Rewrite the envelope from field.
- f - Rewrite the From: header field.
- r - Rewrite the Reply-To: header field.
- s - Rewrite the Sender-To: header field.
Read Chapter 31 of the Exim Specification for more detail on message rewriting
Solution 2:
The file /etc/email-addresses
should handle the problem. This is a standard part of the Exim distribution. You will need to configure one record for each local user sending email.
Try a line to /etc/email-addresses
like:
myapp: [email protected]
On your MX server add an alias like:
donotreply: :blackhole:
Use a Reply-to:
header to allow the recipient to reply to the message.
The file /etc/email-addresses
is used the following rewrite code, which should be at the start of the rewrite
section of the configuration file.
*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
{$value}fail}" Ffrs