Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a few e-mail aliases that forward to external hosts. Currently, if the external host rejects a message, Exim generates a bounce message and sends it to the original sender. This is bad because if the external host rejects the message as spam (a common case), then I'm a source of backscatter spam.

Thus, if the sender is non-local, I'd like to send the bounce to postmaster (me) instead. Alternately, sending all bounces to postmaster would be good enough.

The Exim documentation hints that this can be done ("when a message fails to be delivered ... Exim sends a message to the original sender, or to an alternative configured address", emphasis added), but I couldn't find how.

For example, here is a log excerpt showing a backscatter spam being created (in this case, the purported source server isn't accepting connections). is the purported sender of a spam e-mail to, which then forwards to; GMail then rejects the message and my server creates a bounce to I want that bounce to go to instead. (Usernames obfuscated; the rest of the log is verbatim.)

2011-10-03 12:03:08 1RAkyw-0000cj-45 <= H=( [] P=esmtp S=33927 id=000e01cc51a7$ceee1700$
2011-10-03 12:03:09 1RAkyw-0000cj-45 ** <> R=dnslookup T=remote_smtp: SMTP error from remote mail server after end of data: host []: 552-5.7.0 Our system detected an illegal attachment on your message. Please\n552-5.7.0 visit to\n552 5.7.0 review our attachment guidelines. i3si13239001yhk.107
2011-10-03 12:03:09 1RAkyz-0000cm-H5 <= <> R=1RAkyw-0000cj-45 U=Debian-exim P=local S=35124
2011-10-03 12:03:09 1RAkyw-0000cj-45 Completed
2011-10-03 12:03:30 1RAkyz-0000cm-H5 [] Connection timed out
2011-10-03 12:03:30 1RAkyz-0000cm-H5 == R=dnslookup T=remote_smtp defer (110): Connection timed out

Here is the relevant router:

  debug_print = "R: dnslookup for $local_part@$domain"
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  same_domain_copy_routing = yes
  # ignore private rfc1918 and APIPA addresses
  ignore_target_hosts = : : :\
               : : :\
share|improve this question

Some rules are dumb because they cause more harm than good! And people advocating and creating them know that. I would care more about postmaster ethics than the dumb rules. And I hate dumb rules and obviously the people setting those rules. If you are like me, aware of consequences (see above) and want to screw the rules then sure,

1) Establish sender and recipient verification to secure yourself OR

2) Fail or freeze all null postmaster bounces. Do it with an exim system filter

system_filter = /etc/exim/screwtherules.exim
vi /etc/exim/screwtherules.exim
if $sender_address is ""
if ${lookup{${extract{2}{@}{$recipients}}}lsearch{/etc/localdomains}{yes}{no}} is "no"
fail text "Delayed bounce message ignored"
seen finish

3) OR create an ACL at acl_smtp_data check time to forward, fail or freeze the null bounce emails being sent to or not to specific hosts. You can extract received header info as described in

share|improve this answer

Your approach violates RFC 5321 where you must deliver or bounce back to sender. There are only very limited exceptions:

So you have three options

  1. Deliver all bounces to postmaster
    This is invalid. No exceptions. Because there are situations where you discard legitimate bounces (quota exceeded, disk errors, ...) for all senders. Legitimate clients and evil Spammers.
  2. Deliver bounces from relayed mail to postmaster
    This is legitimate. But it leaves a hole where you discard bounces that are not related to content violations (Spam, viruses) but user unknown, mailbox full and the like.
  3. Deliver bounces from relayed mail that indicate content violations to postmaster
    Perfect solution but introduces extended configuration.

Go for option 3. But better would be to disallow forwarding mails or increase Spam filtering before forwarding these mails.

share|improve this answer
I'm a lot more concerned about being a backscatter spam vector than I am about following the RFCs; see – Reid Oct 9 '11 at 21:26
@Reid Yes I got it. And I support that! So option 3 would fit for pro RFC and against backscatter. – mailq Oct 9 '11 at 21:28
@Reid - postmaser must follow RFC, Standard Track - without any excuse – Lazy Badger Oct 10 '11 at 6:47
@LazyBadger Very extreme statement. The RFC 5321 makes exceptions as linked. So his approach is covered in the RFC if you tweak the exceptions a bit. – mailq Oct 10 '11 at 8:54
@mailq - I disagee and was angry only on statement in common "I'm a lot more concerned about ... than I am about following the RFCs". I hate rfc-ignorant posmasters – Lazy Badger Oct 10 '11 at 9:16
up vote 0 down vote accepted

The way to do this is with the errors_to directive in the router. I believe Exim also supports some conditionals to do it selectively.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.