Q0201: How can I arrange that messages larger than some limit are handled by a special router?
A0201: You can use a condition option on the router line this:
condition = ${if >{$message_size}{100K}{yes}{no}}
Q0202: Can I specify a list of domains to explicitly reject?
A0202: Set up a named domain list containing the domains in the first section of the configuration, for example:
domainlist reject_domains = list:of:domains:to:reject
You can use this list in an ACL to reject any SMTP recipients in those domains. You can also give a customized error message, like this:
deny message = The domain $domain is no longer supported domains = +reject_domains
If you also want to reject these domains in messages that are submitted from the command line (not using SMTP), you need to set up a router to do it, like this:
reject_domains: driver = redirect domains = +reject_domains allow_fail data = :fail: The domain $domain is no longer supported
Q0203: How can I arrange to do my own qualification of non-fully-qualified domains, and then pass them on to the next router?
A0203: If you have some list of domains that you want to qualify, you can do this using a redirect router. For example,
qualify: driver = redirect domains = *.a.b data = ${quote:$local_part}@$domain.c.com
This adds .c.com to any domain that matches *.a.b. If you want to do this in conjunction with a dnslookup router, the widen_domains option of that router may be another way of achieving what you want.
Q0204: Every system has a nobody account under which httpd etc run. I would like to know how to restrict mail which comes from that account to users on that host only.
A0204: Set up a first router like this:
fail_nobody: driver = redirect senders = nobody@your.domain domains = ! +local_domains allow_fail data = :fail: Nobody may not mail off-site
This assumes you have defined +local_domains as in the default configuration.
Q0205: How can I get Exim to deliver to me locally and everyone else at the same domain via SMTP to the MX record specified host?
A0205: Create an accept router to pick off the one address and pass it to an appropriate transport. Put this router before the one that does MX routing:
me: driver = accept domains = dom.com local_parts = me transport = local_delivery
In the transport you will have to specify the user option. An alternative way of doing this is to add a condition to the router that does MX lookups to make it skip your address. Subsequent routers can then deliver your address locally. You'll need a condition like this:
condition = \ ${if and {{eq{$domain}{dom.com}}{eq{$local_part}{me}}}{no}{yes}}