Hi again, I took a look at the code in James 3 to see if there are ig changes and I have found https://issues.apache.org/jira/browse/JAMES-913 . Take a look and see if this will help you.
Bye, 2012/5/10 Eric Charles <[email protected]>: > Quick note; the behavior in 3.0 should be the same than in 2.3 (except if it > has been updated since then, didn't take time to check this.). > > @Coley > From the code Ioan pointed, it seems that the priority should be managed, > and for a same priority, we should have randomization. If this is not the > expected or effective behavior, please open a JIRA. The fix would be for > 3.0, but you could easily fix the 2.3 without having to recompile everything > (simply declaring your own class). > > Thx, Eric > > > > On 05/10/2012 10:32 AM, Ioan Eugen Stan wrote: >> >> Hi again, >> >> >> First have a look at RemoteDelivery mailet that sends the email (check >> the deliver method). It calls getGatewaySMTPHostAddresses which calls >> the stuff from DNSServer.java. >> >> >> http://svn.apache.org/repos/asf/james/server/branches/v2.3/src/java/org/apache/james/transport/mailets/RemoteDelivery.java >> >> If you read the javadoc you should notice some randomization in the MX >> records. >> >> 2012/5/10 Ioan Eugen Stan<[email protected]>: >>> >>> Hi Cole, >>> >>> I have no experience with 2.3 branch but the code responsible for >>> routing is loacated in: >>> >>> http://svn.apache.org/repos/asf/james/server/branches/v2.3/src/java/org/apache/james/dnsserver/DNSServer.java >>> . Namely: getSMTPHostAddresses, findMXRecords and findMXRecordsRaw. >>> The javadoc for findMXRecords shows: >>> >>> Sorting is done in findMXRecordsRaw: >>> >>> public List findMXRecordsRaw(String hostname) { >>> Record answers[] = lookup(hostname, Type.MX); >>> List servers = new ArrayList(); >>> if (answers == null) { >>> return servers; >>> } >>> >>> MXRecord mxAnswers[] = new MXRecord[answers.length]; >>> for (int i = 0; i< answers.length; i++) { >>> mxAnswers[i] = (MXRecord)answers[i]; >>> } >>> >>> Arrays.sort(mxAnswers, mxComparator); >>> >>> for (int i = 0; i< mxAnswers.length; i++) { >>> servers.add(mxAnswers[i].getTarget ().toString ()); >>> getLogger().debug(new StringBuffer("Found MX record >>> ").append(mxAnswers[i].getTarget ().toString ()).toString()); >>> } >>> return servers; >>> } >>> >>> >>> MX sorting and randomization is done via: >>> >>> /* RFC 2821 section 5 requires that we sort the MX records by their >>> * preference, and introduce a randomization. This Comparator does >>> * comparisons as normal unless the values are equal, in which case >>> * it "tosses a coin", randomly speaking. >>> * >>> * This way MX record w/preference 0 appears before MX record >>> * w/preference 1, but a bunch of MX records with the same preference >>> * would appear in different orders each time. >>> * >>> * Reminder for maintainers: the return value on a Comparator can >>> * be counter-intuitive for those who aren't used to the old C >>> * strcmp function: >>> * >>> *< 0 ==> a< b >>> * = 0 ==> a = b >>> *> 0 ==> a> b >>> */ >>> private static class MXRecordComparator implements Comparator { >>> private final static Random random = new Random(); >>> public int compare (Object a, Object b) { >>> int pa = ((MXRecord)a).getPriority(); >>> int pb = ((MXRecord)b).getPriority(); >>> return (pa == pb) ? (512 - random.nextInt(1024)) : pa - pb; >>> } >>> } >>> >>> >>> Most likely the problems come from here. Hope this helps, >>> >>> Cheers, >>> >>> 2012/5/9 Cole Ferrier<[email protected]>: >>>> >>>> Recycle of James did not work, it is still equally using all 6 of the >>>> mail >>>> servers, even though they are at a different preference levels. >>>> >>>> Any Ideas? >>>> >>>> Cole >>>> >>>> On Tue, May 8, 2012 at 3:03 PM, Cole Ferrier<[email protected]> >>>> wrote: >>>> >>>>> talking with our internal mail system people, all 6 servers had a >>>>> priority >>>>> of 10 the last time apache James was restarted. >>>>> >>>>> Does James cache this data for the life of it running? or is there a >>>>> time >>>>> to live? or? >>>>> >>>>> I will schedule a recycle of james to see if it stops using the servers >>>>> that now have a lower preference. >>>>> >>>>> Let me know if you have any ideas in the mean time. >>>>> >>>>> Cole >>>>> >>>>> >>>>> On Tue, May 8, 2012 at 9:42 AM, Cole Ferrier<[email protected]> >>>>> wrote: >>>>> >>>>>> We have an internal mail system that has 6 MX records 3 at priority 10 >>>>>> (new servers recently added) and 3 at priority 20 (old servers that >>>>>> where >>>>>> previously at 10). >>>>>> >>>>>> and it appears that apache james 2.3 is sending mail to all of them >>>>>> about >>>>>> equally? >>>>>> >>>>>> i was instructed that it should only connect to the 20's when all of >>>>>> the >>>>>> 10s are unavailable? >>>>>> >>>>>> any help would be appreciated? >>>>>> >>>>>> (or is there any need to restart James? aka, how long does it cache >>>>>> its >>>>>> data about the MX preferences?) >>>>>> >>>>>> Cole >>>>>> >>>>> >>>>> >>> >>> >>> >>> -- >>> Ioan Eugen Stan >>> http://ieugen.blogspot.com/ *** http://bucharest-jug.github.com/ *** >> >> >> >> > > -- > eric | http://about.echarles.net | @echarles > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > -- Ioan Eugen Stan http://ieugen.blogspot.com/ *** http://bucharest-jug.github.com/ *** --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
