A Smart Host is an SMTP server that will accept mail from another server and then deliver the mail for that server. For example, server1 is setup to use server2 as a smart host. Anytime someone sends e-mail on server1 it is automatically relayed to server2 regardless of the MX entries for the domain. Server2 then accepts this message, looks up the proper delivery host/IP and attempts to deliver the message to that host. While the Received: headers will reveal the path of the message having bounced through server2, the entire process is seamless for both the sender and the receiver.
To configure a smart host, create /etc/exim.conf.local on the source server (server1 in this example) and add the following lines. Be sure to change to the hostname or IP of the smart host server.
@ROUTERSTART@ smart_route: driver = manualroute domains = !+local_domains transport = remote_smtp route_list = * host.name.of.smart.host.server
Assuming this server (server1) is a cPanel server, next run
/scripts/buildeximconf and then
/scripts/restartsrv_exim. If not, simply restart your Exim server using normal init scripts.
Assuming you're installing the yum version of Exim on a CentOS/RHEL server, you'll need to make two configuration changes. The first is to allow the IP of the mailserver to relay through the smarthost. Open the configuration at /etc/exim/exim.conf, find the line referenced below and edit it replacing x.x.x.x with your mailserver IP.
hostlist relay_from_hosts = 127.0.0.1 : x.x.x.x
Second, you'll need to tell Exim not to listen only on the localhost address for incoming mail, which is the default. Again find the configuration line below and add a hash (#) in front of it to comment it out.
local_interfaces = <; 127.0.0.1 ; ::1
Save the modified config file and restart Exim on this server.
That's it; watch the logs for a bit to make sure it's working! The easiest way is to just
tail -f /var/log/exim_mainlog on both servers and then send a message from server1 to a remote host, and watch for the mail to travel out server2!