Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm trying to setup an email server so it has the capability to send email from multiple IP addresses, so our marketing system can send email from multiple domains, while keeping the reverse DNS lookups consistent. IE, domain1.com resolves to 10.0.0.1, domain2.com resolves to 10.0.0.2, etc.

Ideally, the mail server would check the from domain in the headers, then choose the correct IP address from a pool, using that for the actual sending. Right now, we're using Exim, and I was thinking that one solution would be to run multiple instances of Exim on different interfaces, then write an SMTP proxy that would do the header checking and forward the email to the correct Exim instance, but I'm thinking there may be a simpler solution than that.

Just so everyone knows, this doesn't involve spamming, and we own all the domains and IP addresses we would be using.

share|improve this question

2 Answers 2

up vote 6 down vote accepted

If I understand you, you have the mail on a server, and that server has, say, 4 IP addresses configured on it. You would like you mail server, when sending to the internet, to use one of those four IPs as the outbound interface. If this is the wrong interpretation, please let me know.

The Exim SMTP transport can be configured to send email via different interfaces. In a hard coded manner you could do this:

routers:

send_domaina_com:
  driver = dnslookup
  domains = domaina.com
  transport = domaina_com_smtp

send_domainb_com:
  driver = dnslookup
  domains = domainb.com
  transport = domainb_com_smtp

send_domainc_com:
  driver = dnslookup
  domains = domainc.com
  transport = domainc_com_smtp

send_domaind_com:
  driver = dnslookup
  domains = domaind.com
  transport = domaind_com_smtp

TRANSPORTS:

domaina_com_smtp:
  driver = smtp
  interface = 10.0.0.1

domainb_com_smtp:
  driver = smtp
  interface = 10.0.0.2

domainc_com_smtp:
  driver = smtp
  interface = 10.0.0.3

domaind_com_smtp:
  driver = smtp
  interface = 10.0.0.4

I'm 99.99% the above will work, though it's obviously ugly. I think everything you need it to be handled dynamically is there ("interface" is expandable).

share|improve this answer

To maintain route integrity, I'm thinking you would have to bind different instances of exim to different interfaces (as you say)

the proxy isn't really required, you can simply use a router (per domain/from: match) with a condition set to dictate which 'host' to relay through.

never tried this. would be interested to know if it works..

share|improve this answer

Your Answer

 
discard

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.