Chapter 8. The Routers

Routers handle addresses whose domains are not local, and typically (though not necessarily) set up deliveries to remote hosts. The different routers use different methods to obtain a list of relevant hosts for the domain of the address they are handling. The hosts’ IP addresses must also be looked up. Some examples of the lookuphost and domainlist routers appear in previous chapters, but there are also other routers. In this chapter, we discuss each of the following in detail:


A router that routes remote domains using locally supplied information.


A router that handles “IP literal” addresses such as user@[]. These are relics of the early Internet that are no longer in common use.


A router that looks up remote domains in the DNS.


A router that runs an external program in order to route a domain.

First, however, we cover some additional generic options that apply only to routers (and not to directors).

Timeouts While Routing

If a router times out while trying to look up an MX record or an IP address for a host, it normally causes delivery of the address to be deferred. However, if pass_on_timeout is set, the address is instead passed on to the next router, overriding no_more. This may be helpful for systems that are intermittently connected to the Internet, or those that want to pass to a smart host any messages that cannot be delivered immediately, as in this example:

lookuphost: driver = lookuphost transport ...

Get Exim: The Mail Transfer Agent now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.