[ 
http://issues.apache.org/jira/browse/JAMES-358?page=comments#action_12330658 ] 

Arjan Veenstra commented on JAMES-358:
--------------------------------------

RFC 3974 suggest these step:

   (6)  For each of the addresses, loop over steps (7) to (9).

   (7)  Try to make a TCP connection to the destination's SMTP port
        (25).  The client needs to follow timeouts documented in RFC
        2821 section 4.5.3.2.  If successful, go to step (9).

   (8)  If unsuccessful and there is another available address, try the
        next available address.  Go to step (7).  If all addresses are
        not reachable and if a list of MX records is being traversed,
        try the next MX record (go to step (3)).  If there is no list of
        MX records, or if the end of the list of MX records has been
        reached, raise a temporary email delivery failure.  Finish.

   (9)  Attempt to deliver the email over the connection established, as
        specified in RFC 2821.  If a transient failure condition is
        reported, try the next MX record (go to step (3)).  If an error
        condition is reported, raise a permanent email delivery error,
        and do not try further MX records.  Finish.  If successful, SMTP
        delivery has succeeded.  Finish.

Never trying more then one IP adress per MX is likely to cause a few extra 
failures, especialy when delivering to domains with just 1 MX. And even more 
(in the future) when both IPv6 and IPv4 are used. A situation where a host  has 
both IPv4 and IPv6 adresses in DNS is not unlikely, running into a situation 
where just one of then is actually reachable over the net is not very unlikely 
as well. So i think the above steps are sensible. 

The actual 'load' of just trying to connect is not high at all, running 
sufficient delivery threads should keep mail delivery going even when one of 
them is waiting for a connection to time-out. 

Moving on to the next MX on a temporary failure is extremely logical when 
multiple adresses for a host all point to the same machine, your example above 
allready shows this is not allways true. Perhaps it's possible to maintain a 
list af actual addresses tried so they can be skipped when they show up a 
second time?
                }


> Too many RemoteDelivery attempts with many mx and many ip
> ---------------------------------------------------------
>
>          Key: JAMES-358
>          URL: http://issues.apache.org/jira/browse/JAMES-358
>      Project: James
>         Type: Improvement
>   Components: DNSServer
>     Versions: 2.2.0
>     Reporter: Stefano Bagnara
>     Assignee: Stefano Bagnara
>     Priority: Minor
>      Fix For: 2.3.0
>  Attachments: DNSServer.java.singleIPperMX.diff, 
> james-config.xml.singleIPperMX.diff
>
> Take a domain with 5 mx servers each one with 6 associated ips. James 
> currently try to connect to each MX server even if the first server say 
> "5.1.1 user unknown", but even worst, james try to connect to each IP of each 
> MX server.
> I think that james should only check each MX server once, at a random IP 
> address from the IP list for that mx hostname.
> The permanent user error issue would be only a further optimization but the 
> IP issue is probably against the RFC specifications.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to