Hi Fortigate users, are you aware that the fortigate drops email under certain conditions ??. If you are sending mail and the primary MX of the receiving domain is down the chances are that your mail sender will never switch to the secondary MX of the receiving domain. Its because the Fortigate completes the smtp handshake before establishing that the receiving MX is actually available. The same happens in reverse, if your primary MX is down for receiving, the Fortigate will complete the connection with the sender and you will never get your mail !
Fortinet say this is " working as designed" , I say its bad design at best and a full on code bug. ! Maybe you have wondered why 5% of your mail is not delivered or received.
This is Fortinet supports comment:
Problem is due to both the Fortigate SMTP transparent proxy server (used for AV scanning and spamfiltering) and SMTP client understanding of a failed exchange.
When the SMTP client wants to start a transaction with domain A.com, it firsts issues a DNS request to retrieve the MX record for A.com.
In case MX record contains several entries, it starts a TCP connection to the first entry (best priority), with the FGT acting as tranparent proxy.
The 3-way handshake is like :
Client Server
__________________________________
---SYN---> FGT
<--s_ack-- FGT ---SYN--->
--ack--> FGT
FGT <--s_ack--
FGT ---ack--->
Due to the asymetry in the above exchange, even if the server is not replying,
3-way handshake always succeed on the client side.
For a SMTP client to skip to a secondary MX entry, the SMTP transaction to the
main server must have failed. However, not all the mail servers (SMTP client)
have the same definition of a failed transaction.
- Some consider that a successful TCP establishment (3-way handshake) is a proof of remote server reachability and keep on retrying this server.
- Other consider that only a " 250-Mail transfer completed" SMTP response is a proof of server readiness, and will switch to a secondary MX even if TCP session
was established.
Unfortunately, Qmail seems to belong to the first family and hosting it behind a Fortigate makes it stick to the first MX record, even if the remote server is unreachable.
I would like to have some more comment from out there, if you have the same problem we can pressure Fortinet to fix the issue.
Thanks