SMTP loop issue with HAProxy and Exim

eximhaproxy

I have set up a HAProxy server which is proxying all emails to my email server. That was done for security purposes.

External IPs:

Proxy server (HAProxy 1.3.26): 192.168.0.1
Mail server (Exim 4.63): 192.168.0.2
Both servers are CentOS 5.8.

Here is a part of my HAProxy config:

defaults
    mode        tcp
    log         global
    option      dontlognull
    option      httpclose
    option      tcplog
    option      forwardfor
    option      redispatch
listen smtp 192.168.0.1:25
    server mail0 192.168.0.2:25 maxconn 5000
listen imap 192.168.0.1:143
    server mail0 192.168.0.2:143 maxconn 5000

Here is the problem:

2012-09-13 22:47:04 1TCERM-0000aP-1A => admin@example.com R=dnslookup T=remote_smtp H=example.com [192.168.0.1] X=TLSv1:AES256-SHA:256 DN="/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=example.com/emailAddress=webmaster@example.com" C="250 OK id=1TCERM-0000aS-IJ"
2012-09-13 22:47:04 1TCERM-0000aP-1A Completed
2012-09-13 22:47:04 1TCERM-0000aS-IJ ** admin@example.com: Too many "Received" headers - suspected mail loop
2012-09-13 22:47:04 1TCERM-0000aU-KD <= <> R=1TCERM-0000aS-IJ U=exim P=local S=9409 from <> for test@example.net
2012-09-13 22:47:04 1TCERM-0000aS-IJ Completed

There are number of such entries in the Exim logs. You see that I am sending from test@example.net to admin@example.com
The email is received by the HAProxy server and proxied to the mail server. The problem is the email is gettied looped afterwards. And I can't understand where the problem is.

MX record of my domain example.com is pointed to 192.168.0.1. Mailboxes were created on the 192.168.0.2 server.

Here is a part of the bounced email header (those sections are repeated many times):

Received: from example.com ([192.168.0.1] helo=example.com) by
dc.example.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63)
(envelope-from ) id 1TCDdv-0007PI-Jf for
root@dc.example.comt; Thu, 13 Sep 2012 21:55:59 +0400 Received: from
example.com ([192.168.0.1]) by dc.example.com with smtp (Exim 4.63)
(envelope-from ) or root@dc.example.comt; Thu, 13
Sep 2012 21:55:59 +0400 test1

I would be very grateful if someone helps me on this issue. Let me know if you need some details, logs, etc.

Best Answer

it's because you forget to setup local delivery for domain! in result...

mail sent to domain going over proxy/firewall to destination/local server, and then from destination/local server going back to proxy/firewall server, because exim with this domain using remote mail delivery and checking mx records which pointed to firewall! and that is why you getting loop!

as always sorry for my "russian" :))