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

Reply via email to