Exim interface IP address
Introduction
In a cPanel/WHM server, Exim is the default Mail Transfer Agent (MTA) responsible for sending and receiving emails. By default, Exim uses the server’s main IP address for outbound email delivery. However, in some cases—such as improving email deliverability, IP reputation management, or separating mail traffic—you may need to change the interface IP used by Exim. This configuration is typically done at the WHM level or through Exim’s advanced configuration settings.
Prerequisites
Before changing the Exim interface IP, ensure the following:
- Root access to the server (WHM/root SSH access)
- Active cPanel/WHM server with Exim installed (default setup)
- At least one additional valid and configured IP address on the server
- Proper reverse DNS (PTR record) configured for the new IP
- Firewall allows outbound SMTP traffic (port 25, 465, 587 as needed)
IMPLEMENTATION
How to change exim interface IP in cPanel?
You can change the interface IP address for exim mail server in the exim configuration file (exim.conf).
1) Open the configuration file of exim.
vi /etc/exim.conf
2) Check for the following parameters.
remote_smtp:
driver = smtp
interface=
Change to like this:
remote_smtp:
driver = smtp
interface=x.x.x.x
NB: Replace x.x.x.x with your IP address.
3) Restart the mail service using the following command.
/etc/init.d/exim restart
++++++++++++++++++++
Anyone running a shared hosting server is probably now accustomed to dealing with constant complaints about blacklisting. It’s exim’s default setup on a cPanel server to use the shared IP of the server to send email, which means that all your clients on one server are sending out email on the same IP. All it takes is for one spammer to send out a mailing list or one customer to get hacked and run a Darkmailer script, and suddenly everyone on your server seems to be complaining about getting their mail bounced.
You can change the server’s IP address for sending email. Assuming you already have an IP set up on your server with a valid PTR, you probably already saw on the cPanel forums or some other location that you can simply change the interface lines in your /etc/exim.conf file and restart exim:
remote_smtp:
driver = smtp
interface = ${if exists {/etc/mailips}{${lookup{$sender_address_domain}lsearch*{/etc/mailips}{$value}{}}}{}}
helo_data = ${if exists {/etc/mailhelo}{${lookup{$sender_address_domain}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}{$primary_hostname}}
dk_remote_smtp:
driver = smtp
interface = ${if exists {/etc/mailips}{${lookup{$sender_address_domain}lsearch*{/etc/mailips}{$value}{}}}{}}
helo_data = ${if exists {/etc/mailhelo}{${lookup{$sender_address_domain}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}{$primary_hostname}}
dk_private_key = “/var/cpanel/domain_keys/private/${dk_domain}”
dk_canon = nofws
dk_selector = default
In the above example, all you’d do is comment out the interface lines and replace them with:
interface = xx.xx.xx.xx
However, this tends to be a band-aid fix, as a cPanel update or any change made in WHM’s Exim Configuration Editor will regenerate the Exim config and overwrite your change. To make this more permanent, you’ll want to use the /etc/mailips file.
To set this up initially, go into WHM > Exim Configuration and enable this option:
** Send outgoing mail from the ip that matches the domain name in /etc/mailips (*: IP can be added to the file to change the main outgoing interface) [?]
Or, in /etc/exim.conf.localopts, add/change this line:
per_domain_mailips=1
Then run
/scripts/buildeximconf
service exim restart
*The /etc/mailips file should be root:exim, chmod 440 if it doesn’t already exist.
chattr +i /etc/mailips
Now for actually changing the IP:
Changing the IP Globally
If you want everyone on the server to send out on the same IP, just add the following to /etc/mailips:
*: xxx.xxx.xxx.xxx
Then add the IP and it’s matching PTR to /etc/mail_reverse_dns:
xxx.xxx.xxx.xxx hostname.tld
This will tell Exim to use that IP for any sender on the server.
Changing the IP Per Domain
If you want your users with dedicated IP addresses to be able to use those IPs to send email as well, you can add them to /etc/mailips. cPanel actually now has documentation on how to do this properly:
http://docs.cpanel.net/twiki/bin/view/AllDocumentation/WHMDocs/EximDifferentIps
If you have multiple dedicated IP domains already, I’ve devised a simple loop you can use to populate /etc/mailips automatically:
while read line ; do DOMAIN=`echo -e $line |awk ‘{print $2}’` && IP=`echo -e $line |awk ‘{print $1}’ |cut -d: -f1` && echo “$DOMAIN: $IP” >> /etc/mailips ;done < /etc/domainips
You’ll always want the wildcard line to be in there to account for any domain not listed in the file, whether it is the main server’s IP or another that you have assigned for email:
*: xxx.xxx.xxx.xxx
Then:
cp /etc/domainips /etc/mail_reverse_dns
This will set all the existing sites on dedicated IPs to send out mail on those IPs.
CONCLUSION
Changing the Exim interface IP in cPanel/WHM is a useful practice for managing email reputation and controlling outbound mail flow. When done correctly, it can improve email deliverability and isolate mail traffic from the main server IP. However, it is important to ensure proper DNS and reverse DNS configuration to avoid emails being marked as spam or rejected. Always apply changes carefully and test email delivery after updating the configuration.
