Hi Garry, To answer your previous email:
At Linagora we rely on "LDAP user repository". Yes, we are currently limited to "a mailAddres" -> "a mailbox account". Shared mailboxes is not supported so far. That being said "RecipientRewrite tables" successfully enables concepts like "Alias", "Mail forwarding", "Groups", "Domain redirection". The mailAddress<->mailAccount mapping is done at that level. Note that no implementation of LDAP based RRT is implemented so far, but such a component would make perfect sense and could be implemented/contributed in the future. I don't understand the "either we are moving away from file-based repos or we aren't". All components have data-base alternatives. For the example of the mailQueue that you took, there is an old-fashion file implementation that I'd personally like to deprecate along with all the other file-based-storages implemented in James. But an ActiveMQ implementation is available as well as a RabbitMQ one. "Dead letter" concept for "Mail processing" is implemented via Mail-Repositories (/var/mail/error) and full support for reprocessing is granted (at least in guice products). (And you are right, we miss a JPA MailRepository implementation... This sounds like a nice proposal of contribution!) So I really do think that we are, as a project, moving forward to newer tech. If you think we are missing something, then this should of course be discussed. And of course, on all these topics, all contributions are welcomed ;-) Cheers, Benoit TELLIER On 1/31/19 11:18 AM, Garry Hurley wrote: > A couple of questions. First, what is your usersrepository? If you store user > info in the database, yes, you would have to store each user in there. If you > store it in LDAP, you could store each entry as an inetOrgPerson object, or a > subclass of that, with a mailbox entry for that person. Then when you > authenticate against LDAP, you get the mailbox for delivery. The LDAP is > easier to maintain, but harder to work with and adds complexity if you don’t > already use it for something else. What seems like a trivial thing - a user > to mailbox mapping - to be implemented in the database is missing. Even an > ‘entity’ to mailbox mapping so that you could link a mailbox to a group or an > individual is missing. Also missing from the database is a dead letter queue, > which is still file-based. I can understand the tradeoff of security for > compliance with old-school tech, but either we are moving away from > file-based repos or we aren’t. > > Sent from my iPhone > >> On Jan 30, 2019, at 11:00 PM, Benoit Tellier <btell...@linagora.com> wrote: >> >> Hello Matt, >> >> So as far as I understand your main need would be: >> >> ``` >> WHEN I send an email >> THEN it is stored in *myMagicRecipient* INBOX >> Regardless of original recipients >> ``` >> >> Quite surprisingly such a "Overwrite envelop" feature is missing... >> >> Here is the JIRA: https://issues.apache.org/jira/browse/MAILET-163 Don't >> hesitate to PR this ;-) >> >> (Combined with a "not RemoteHostIs" you would achieve the rewritting you >> need) >> >> Cheers, >> >> Benoit TELLIER >> >>> On 1/30/19 4:13 PM, cryptearth wrote: >>> Hello Benoit, >>> >>> let me try to re-phrase my goal: >>> >>> I've set up a clean install of opensuse 15.0 on my test-rig, named it >>> glados, assigned it to my domain cryptearth.de, set sendmail as >>> nullclient along with james 3.2.0 and want to collect any mail dropped >>> by sendmail into a specific mailbox. The catch: As I also want to use >>> sendmail to support mail() command for php, e-mails dropped in by >>> apache should be routed extern. >>> >>> So: sendmail dropps in mails depending on wich service calls it. Cron >>> for example uses gla...@glados.cryptearth.de - apache instead >>> wwwrun@localhost - and my guess is that other services might use other >>> combinations as well. >>> >>> Goal: When a mail is dropped by apache, wich is set to >>> webmas...@cryptearth.de by using -f parameter in php.ini, these mails >>> should go out as normal to they recipient. Any other mail should get >>> collected into a special user, for example >>> local-servi...@cryptearth.de or so. >>> >>> What I disconvered yet: When the domain wich is used by sendmail is >>> not in the domain-list, james thinks it's an external domain and tries >>> remote delivery. If the domain is in the domain-list, but not the user >>> name - it fast fails to "no user". And if the user for the domain is >>> also added it gets delivered into inbox without double in sent. It's >>> that last one I want, but without adding any specific user for each >>> services wich may use sendmail to try to local-deliver status-mails, >>> wich sendmail usual would drop into /var/mail or ~/mail (or what ever >>> it is default to). >>> >>> I dug through mailets and recipient rewrite and got some hints, but >>> couldn't figure out some working yet. One think I come up with is add >>> some to mailetcontainer wich re-writes recipient based on remote-host, >>> wich for sendmail is localhost. Other idea I had: use some >>> re-write-rule based on local hostname, but you recommended against >>> using this way. >>> >>> Another possible what someone come up with: add my own few lines into >>> source and re-build - but I don't know where to add as it's all very >>> abstract and I'm not that pro of Java. >>> >>> Thanks to anyone in advance, >>> >>> Matt >>> >>>> Am 30.01.2019 um 05:15 schrieb Benoit Tellier: >>>> Hi Matt, >>>> >>>> I read the all thread but feel quite confuse about what you try to >>>> achieve. >>>> >>>> Could you describe it again? (`When ... Then ...` syntax can really >>>> help!) >>>> >>>> Don't be using regex rewrites - I guess nobody understand what it does. >>>> >>>> Maybe you are interested by domain rewrites? Or do you want that all >>>> mail received, whatever the recipient, goes to the same mailbox? >>>> >>>> Cheers, >>>> >>>> Benoit TELLIER >>>> >>>>> On 1/28/19 9:57 AM, cryptearth wrote: >>>>> Hey there, Matt here again. >>>>> >>>>> So, I think a found a possible solution without any source-file mods >>>>> but >>>>> only clever mailet-config in mailetcontainer.xml. >>>>> >>>>> As I dug through the source I found the standard mailets for >>>>> RecipientIsLocal. Then I found RecipientIsRegex (I might need some help >>>>> here). Also there is something called RewriteTable. >>>>> >>>>> I set up a fresh opensuse leap 15 - cron sends mails as >>>>> <user>@<hostname>.<domain> - so I set up a small test-script and looked >>>>> at log while running james in console mode: when the domainlist doesn't >>>>> contain <hostname>.<domain> but only <domain> james thinks that >>>>> <hostname>.<domain> is external and tries RemoteDelivery. So I added >>>>> <hostname>.<domain> to domainlist. As I just had the domain, but not >>>>> the >>>>> user, the mail is denied as user doesn't exists for the domain. When I >>>>> add the user as <localuser>@<hostname>.<domain> it gets local delivered >>>>> without additional copy in sent folder. So as I don't want to set up a >>>>> user for each localuser, but also want to avoid fastfail I come up >>>>> with: >>>>> What if I could early check for <whatever>@<hostname>.<domain> and >>>>> could >>>>> just re-write it to an existing account in form of <user>@<domain>? >>>>> When >>>>> recipient is re-written before RecipientIsLocal is checked, then this >>>>> should trigger and just deliver any local mail from what ever >>>>> service to >>>>> the mailbox I want to. >>>>> >>>>> So I search through the source tree - but couldn't find anything to >>>>> alter the recipient by mailet. All I found was the >>>>> recipientrewritetable.xml file and the AddRegexMapping command >>>>> available >>>>> in james-cli.sh. The xml-config doesn't seem to help, but the >>>>> AddRegexMapping command looks good, but I don't understand the command >>>>> parameters: >>>>> >>>>> AddRegexMapping <user> <domain> <regex> >>>>> >>>>> Can someone get me some hint how to use this command? Or where/how I >>>>> can >>>>> setup the recipient-rewrite before RecipientIsLocal is checked? >>>>> >>>>> Thanks in advance, >>>>> >>>>> Matt >>>>> >>>>>> Am 27.01.2019 um 15:20 schrieb cryptearth: >>>>>> So, as far as I dug through the code, it seems to come down to >>>>>> MailetContext.isLocalEmail(MailAddress) wich is checked by >>>>>> RecipientIsLocal (wich I guess also involve somehow a check of >>>>>> isLocalServer(Domain). In transport-processor there is the line >>>>>> >>>>>> <mailet match="RecipientIsLocal" class="LocalDelivery" /> >>>>>> >>>>>> I looked into LocalDelivery.java, but I guess when this matches it's >>>>>> to late to perform the test I want to about where the mail comes from >>>>>> and where it should send. JamesMailetContext looks good, as it >>>>>> contains isLocalServer(Domain), wich should also used to check >>>>>> SenderIsLocal (wich shouldn't matter, as this test is performed by >>>>>> source 127.0.0.1). As far as I yet could identify, it all comes down >>>>>> to somehow tell the config, that whatever domain sendmail uses (it's >>>>>> either hostname or hostname.domain) is considered as localServer. The >>>>>> wild-card alias shouldn't be any harder to find or figure out as I >>>>>> simply have to rewrite anything that comes from local and is for >>>>>> local, but isn't in localUserList, is re-written to whatever address I >>>>>> want. >>>>>> >>>>>> I'll report back when I found the lines to alter. >>>>>> >>>>>> Matt >>>>>> >>>>>>> Am 26.01.2019 um 22:57 schrieb cryptearth: >>>>>>> Currently I'm just using out-of-the-box after clean build. I'll have >>>>>>> a look at the mentioned class and the mailetcontainer. Maybe I'll >>>>>>> find my way around. Good James is written in Java - the one language >>>>>>> I really know. >>>>>>> >>>>>>> Thanks for the point in a possible direction. I'll report back when I >>>>>>> got something usefull. >>>>>>> >>>>>>> Matt >>>>>>> >>>>>>> ---- Garry Hurley schrieb ---- >>>>>>> >>>>>>> Matt, are you using a custom mailet, or working out of the box? Take >>>>>>> a look at the source for LocalDelivery.java >>>>>>> <http://LocalDelivery.java>, and the configuration for local mail in >>>>>>> your mailetcontainer.xml <http://mailetcontainer.xml> file. You may >>>>>>> have to override some functionality to get the processing you want. >>>>>>> >>>>>>> Sent from my iPhone >>>>>>> >>>>>>>> On Jan 26, 2019, at 9:36 AM, cryptearth <cryptea...@cryptearth.de >>>>>>> <mailto:cryptea...@cryptearth.de>> wrote: >>>>>>>> Hey there, Matt here. >>>>>>>> >>>>>>>> So I got sendmail working with james now (tried postfix, but it >>>>>>> always complains forwarding to localhost isn't supported as there is >>>>>>> no option to ignore false loopback detection), and when used from >>>>>>> apache with additional -f parameter all works good. But as there're >>>>>>> other services might drop mail into local queue (crontab specificly) >>>>>>> I noticed, that I'm still missing something. My goal is somesort of >>>>>>> wildcard alias so that no matter from wich user sendmail gets a >>>>>>> message, except the one I use for apache, it should redirect them >>>>>>> internally to one of the user-accounts inside james itself. I guess >>>>>>> there would be a simple solution if would like all mails to get >>>>>>> forwareded, but I don't think there is a blacklist syntax so that >>>>>>> mails from specific services with non-local recipients got send out. >>>>>>>> Currently I'm using 3.2.0 <tel:3.2.0> final release commit. I also >>>>>>> looked into the mailetcontainer.xml <http://mailetcontainer.xml> file >>>>>>> and I guess it's possible in there to specify this rule: >>>>>>>> redirect anything local, except address set in apache config, to >>>>>>> user X, otherwise when from apache with non-local target -> transport >>>>>>>> Could anyone maybe give me a hint? >>>>>>>> Other solution: redirect anything local from sendmail to processing >>>>>>> and with another task process the mails like some short lines of >>>>>>> additional Java. >>>>>>>> Matt >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org >>>>>>> <mailto:server-user-unsubscr...@james.apache.org> >>>>>>> For additional commands, e-mail: server-user-h...@james.apache.org >>>>>>> <mailto:server-user-h...@james.apache.org> >>>>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org >>>>> For additional commands, e-mail: server-user-h...@james.apache.org >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org >>>> For additional commands, e-mail: server-user-h...@james.apache.org >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org >>> For additional commands, e-mail: server-user-h...@james.apache.org >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org >> For additional commands, e-mail: server-user-h...@james.apache.org >> > --------------------------------------------------------------------- > To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org > For additional commands, e-mail: server-user-h...@james.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org For additional commands, e-mail: server-user-h...@james.apache.org