See attached. I sorta hacked it into it, and allowed a new config option to
use MXlookups for the first SMTP server address.

Thoughts?



On Mon, May 14, 2012 at 1:40 AM, Eric Charles <[email protected]> wrote:

> Hi,
>
> To achieve this, you will need to develop your own custom MailetDelivery
> mailet based on [1].
>
> The current implementation allows you to define multiple gateways.
> Quoted from javadoc: " a String containing a comma separated list of
> patterns defining the gateway servers to be used to - deliver mail
> regardless of the recipient address. If multiple gateway servers are
> defined, each will be tried in definition order - until delivery is
> successful. If none are successful, the mail is bounced"
>
> This doesn't map your requirement, but you could implement your own logic
> to balance the traffic between your internal MTAs.
>
> Hopes this helps,
>
> Eric
>
>
> [1] https://svn.apache.org/repos/**asf/james/server/trunk/**
> mailets/src/main/java/org/**apache/james/transport/**
> mailets/RemoteDelivery.java<https://svn.apache.org/repos/asf/james/server/trunk/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java>
>
>
> On 05/11/2012 02:53 PM, Cole Ferrier wrote:
>
>> Think about this usecase:
>>
>> Internally, we have many servers responsible for relaying mail. (multiple
>> data centers). Also, they have the concept of servers that are lower
>> priority, in case all the primary ones have a failure.
>>
>> Also, we can not directly send mail outside the firewall, so all mail must
>> go through this infrastructure to be sent. (So we must have
>> smarthost/gateway turned on)
>>
>> They can setup/change the list of MX records for the network name we are
>> supposed to transport mail through whenever they want.
>>
>> Thoughts?
>>
>> Thanks,
>>
>> Cole
>>
>> On Fri, May 11, 2012 at 1:24 AM, Eric Charles<[email protected]>  wrote:
>>
>>  If you specify explicitly a mail gateway, MX record usage does not make
>>> any sense.
>>>
>>> You must see the mail gateway you define as 'hard-coding' the MTA you
>>> want
>>> to use, that skips any usage of dynamically defined MX record.
>>>
>>> Thx, Eric
>>>
>>>
>>> On 05/10/2012 06:28 PM, Cole Ferrier wrote:
>>>
>>>  Ahh, i think i've figured out the problem..
>>>>
>>>> We have a requirement to smarthost (transfer all mail through an
>>>> internal
>>>> mail relay). so we have set the Mail Gateway up in our remotedelivery
>>>> mailet.
>>>>
>>>> org.apache.james.transport.****mailets.RemoteDeliverydeliver.**
>>>> **deliver(Mail
>>>>
>>>> mail,
>>>> Session session)
>>>>
>>>> then in the mailet:
>>>>
>>>>             if (gatewayServer == null) {
>>>>                 MailAddress rcpt = (MailAddress)
>>>> recipients.iterator().next();
>>>>                 String host = rcpt.getHost();
>>>>
>>>>                 //Lookup the possible targets
>>>>                 targetServers =
>>>> getMailetContext().****getSMTPHostAddresses(host);
>>>>
>>>>                 if (!targetServers.hasNext()) {
>>>>                     log("No mail server found for: " + host);
>>>>                     StringBuffer exceptionBuffer =
>>>>                         new StringBuffer(128)
>>>>                         .append("There are no DNS entries for the
>>>> hostname
>>>> ")
>>>>                         .append(host)
>>>>                         .append(".  I cannot determine where to send
>>>> this
>>>> message.");
>>>>                     return failMessage(mail, new
>>>> MessagingException(****exceptionBuffer.toString()), false);
>>>>                 }
>>>>             } else {
>>>>                 targetServers = getGatewaySMTPHostAddresses(**
>>>>
>>>> gatewayServer);
>>>>             }
>>>>
>>>> we have a gateway server so it goes into the else clause of this block,
>>>> because it doesn't have to find the mail servers responsible for the
>>>> domains of the recipients, and it just calls
>>>> getGatewaySMTPHostAddresses(****gatewayServer);
>>>>
>>>>
>>>> which returns an iterator that just loops through
>>>>
>>>> final InetAddress[] ips =
>>>> org.apache.james.dnsserver.****DNSServer.getAllByName(****nextGateway);
>>>>
>>>>
>>>> which are just all the DNS entries (not MX records) for the gateway
>>>> server.
>>>>
>>>> This is why when i turned up logging to DEBUG on the DNSServer
>>>> component,
>>>> i
>>>> didn't get any meaningful data.
>>>>
>>>> So it looks like i have a requirement that i still want MX records to be
>>>> evaluated while using a mail gateway. Does that make sense?
>>>>
>>>> Could i just change this block of code to always call the
>>>>
>>>> //Lookup the possible targets
>>>>                 targetServers =
>>>> getMailetContext().****getSMTPHostAddresses(host);
>>>>
>>>>
>>>> method?
>>>>
>>>> Or?
>>>>
>>>> Thoughts?
>>>>
>>>> Cole
>>>>
>>>>
>>>>
>>>> On Thu, May 10, 2012 at 3:40 AM, Eric Charles<[email protected]>   wrote:
>>>>
>>>>  Quick addon if finally the issue is in james code, and further to
>>>> Ioan's
>>>>
>>>>> point on JIRA, the patch to backport on 2.3 could be
>>>>>
>>>>> http://svn.apache.org/viewvc/******james/server/trunk/****
>>>>> dnsservice-**<http://svn.apache.org/viewvc/****james/server/trunk/**dnsservice-**>
>>>>> <http://svn.**apache.org/viewvc/**james/**server/trunk/dnsservice-**<http://svn.apache.org/viewvc/**james/server/trunk/dnsservice-**>
>>>>> >
>>>>> dnsjava/src/main/java/org/******apache/james/dnsservice/**
>>>>> dnsjava/DNSJavaService.java?******r1=1035437&r2=1035436&**pathrev=**
>>>>> **1035437<http://svn.apache.****org/viewvc/james/server/trunk/****
>>>>> dnsservice-dnsjava/src/main/****java/org/apache/james/**
>>>>> dnsservice/dnsjava/****DNSJavaService.java?r1=**
>>>>>
>>>>> 1035437&r2=1035436&pathrev=****1035437<http://svn.apache.org/**
>>>>> viewvc/james/server/trunk/**dnsservice-dnsjava/src/main/**
>>>>> java/org/apache/james/**dnsservice/dnsjava/**DNSJavaService.java?r1=**
>>>>> 1035437&r2=1035436&pathrev=**1035437<http://svn.apache.org/viewvc/james/server/trunk/dnsservice-dnsjava/src/main/java/org/apache/james/dnsservice/dnsjava/DNSJavaService.java?r1=1035437&r2=1035436&pathrev=1035437>
>>>>> >
>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> Thx, Eric
>>>>>
>>>>>
>>>>> On 05/10/2012 11:30 AM, Stefano Bagnara wrote:
>>>>>
>>>>>  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?
>>>>>>>
>>>>>>>
>>>>>>>  I think you have issues at DNS level.
>>>>>>
>>>>>> AFAIK james 2.3 had some bug in MX ordering but I remember only two of
>>>>>> them, and they do not break priority the way you see.
>>>>>> 1) If james is a relay server for a domain it doesn't take care to
>>>>>> only relay to "lower priority" servers resulting into loops if the
>>>>>> high priority servers are not available (this is not your case).
>>>>>> 2) James does sort MX hosts, but uses a comparator that is not
>>>>>> "consistent with equals"
>>>>>> (http://docs.oracle.com/******javase/1.4.2/docs/api/java/**<http://docs.oracle.com/****javase/1.4.2/docs/api/java/**>
>>>>>> <**http://docs.oracle.com/****javase/1.4.2/docs/api/java/**<http://docs.oracle.com/**javase/1.4.2/docs/api/java/**>
>>>>>> >
>>>>>> util/Comparator.html<http://****docs.oracle.com/javase/1.4.2/****<http://docs.oracle.com/javase/1.4.2/**>
>>>>>> docs/api/java/util/Comparator.****html<http://docs.oracle.com/**
>>>>>> javase/1.4.2/docs/api/java/**util/Comparator.html<http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Comparator.html>
>>>>>> >
>>>>>>
>>>>>>
>>>>>>>
>>>>>> ).
>>>>>> This is not necessarily a bad thing as it will correctly sort results
>>>>>> using the priority but often will return servers with the same
>>>>>> priority "not shuffled": more often than not, MX are already shuffled
>>>>>> on the DNS side so this doesn't have a big impact (and is not your
>>>>>> case).
>>>>>>
>>>>>> So check what DNS servers your james is using and make sure that very
>>>>>> specific DNS servers have updated informations.
>>>>>>
>>>>>> Stefano
>>>>>>
>>>>>>  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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>  ------------------------------******--------------------------**
>>>>>>>> --**
>>>>>>>>
>>>>>>> --**---------
>>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.******
>>>>>> apache.org<
>>>>>> server-user-**unsubscribe@**james.apache.org<[email protected]>
>>>>>> <server-user-**[email protected]<[email protected]>
>>>>>> >
>>>>>>
>>>>>>>
>>>>>>>  For additional commands, e-mail: [email protected].**
>>>>>> ****org<
>>>>>> server-user-help@james.**apach**e.org <http://apache.org><
>>>>>> server-user-help@james.**apache.org<[email protected]>
>>>>>> >
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>  --
>>>>>>
>>>>> eric | http://about.echarles.net | @echarles
>>>>>
>>>>> ------------------------------******--------------------------**--**
>>>>> --**---------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.******apache.org
>>>>> <
>>>>> server-user-**unsubscribe@**james.apache.org<[email protected]>
>>>>> <server-user-**[email protected]<[email protected]>
>>>>> >
>>>>>
>>>>>>
>>>>>>  For additional commands, e-mail: [email protected].**
>>>>> ****org<
>>>>> server-user-help@james.**apach**e.org <http://apache.org><
>>>>> server-user-help@james.**apache.org<[email protected]>
>>>>> >>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>  --
>>> eric | http://about.echarles.net | @echarles
>>>
>>> ------------------------------****----------------------------**
>>> --**---------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.****apache.org<
>>> server-user-**[email protected]<[email protected]>
>>> >
>>> For additional commands, e-mail: [email protected].****org<
>>> server-user-help@james.**apache.org <[email protected]>>
>>>
>>>
>>>
>>
> --
> eric | http://about.echarles.net | @echarles
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail: 
> server-user-unsubscribe@james.**apache.org<[email protected]>
> For additional commands, e-mail: 
> [email protected].**org<[email protected]>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to