Hey Garry,
please use webarchive or server-user-thread.<x> to download the whole
thread - I already explained the reason why I "somewhat have to" set it
up this way.
Long story short: unix uses local mail as to report output of background
/ service processes. It's up the process how this is done wich results
in an not-uniform combination of <username>@<hostname>.<domain>. James
tries to remote-deliver any mail belong to a domain not listed in
domainlist and fails to treat root1.cryptearth.de - wich is the FQDN -
as <hostname>.<domain> but rather treats it as its own - and every mail
to a user not contained in userlist just gets rejected with "no
user/mailbox".
Solution: unify each mail dropped local, not smtpauth and not specified
manual in some sort of exclusion list.
As it would require huge re-write to make a database solution work - and
I only need one mail excluded - I just "hardwired" this one and rely on
smtpauth otherwise for decide between local and remote-delivery.
It's NOT webmas...@cryptearth.de to local-serv...@cryptearth.de - in
fact these two are excluded as used to remote-delivery - but
<anything>@<hostname> (vm@root1) - <anything>@<hostname>.<domain>
(r...@root1.cryptearth.de) or any maybe not-existing <anything>@<domain>
(u...@cryptearth.de) wich hasn't authed (wich isn't possible for non
exisiting users) to in fact redirect them to
local-serv...@cryptearth.de. It's this non-uniformity paired with how
james behave about recipients not listed in domainlist or userlist
require me to rewrite those "local system mail".
I tested this on a VM - works like a dream - did the same to my root -
fails. I tried to work out where the instance of Mail gets created and
how the initial name is set - but wasn't able to yet. It's like turning
all SMTP stuff inside out to figure out how it works. As james uses
netty I maybe also need to dug into this framework to figure out where
the specific handler is called forming the Mail instance from the read
input after seeing <CRLF>.<CRLF>. So maybe someone can point out where
to start to figure out how/where the initial name is set to determine
why the copy fails on the root although it's pretty much the same system
as in my VM.
Matt
Am 27.05.2019 um 15:36 schrieb Garry Hurley:
Why are you trying to redirect the mail from ‘webmas...@mydomain.com’ to
‘a.randome.u...@mydomain.com’ anyhow? Isn’tthere an alias set up? I was just
configuring postfix on another machine, not my james server, and I noted a
virtualiases configuration for that purpose. I am recalling an aliases file in
the conf directory. Maybe I am wrong or getting my versions mixed up (if not,
maybe it should be that way). I think the rewrite you are trying to do is for
sending from ‘webmas...@mydomain.com’ to ‘my.other.em...@otherdomain.com’ and
is actually overkill for what you are doing.
Sent from my iPhone
On May 26, 2019, at 3:18 PM, cryptearth <cryptea...@cryptearth.de> wrote:
Well, seems it doesn't work in the real world.
The way I mentioned worked in a VM so far - but after I upgraded my root-server
and did the same I know get this issue:
INFO | jvm 1 | 2019/05/26 20:58:02 | INFO 20:58:02,242 |
org.apache.james.protocols.netty.BasicChannelUpstreamHandler | Connection
established from 127.0.0.1
INFO | jvm 1 | 2019/05/26 20:58:02 | INFO 20:58:02,300 |
org.apache.james.domainlist.lib.AbstractDomainList | Local host is: 127.0.0.1
INFO | jvm 1 | 2019/05/26 20:58:02 | INFO 20:58:02,423 |
org.apache.james.smtpserver.SendMailHandler | Successfully spooled mail
Mail1558897082344-b3644bc7-10c4-46a7-b670-75cf4dc9fd94 from
MaybeSender{mailAddress=Optional[cryptea...@root1.cryptearth.de]} on
localhost/127.0.0.1 for [cryptea...@root1.cryptearth.de]
INFO | jvm 1 | 2019/05/26 20:58:02 | INFO 20:58:02,507 |
org.apache.james.protocols.netty.BasicChannelUpstreamHandler | Connection
closed for 127.0.0.1
INFO | jvm 1 | 2019/05/26 20:58:03 | ERROR 20:58:03,024 |
org.apache.james.mailetcontainer.impl.camel.CamelProcessor | Exception calling
Redirect: Unable to create a new message name: too long. Possible loop in
config.xml.
INFO | jvm 1 | 2019/05/26 20:58:03 | javax.mail.MessagingException: Unable
to create a new message name: too long. Possible loop in config.xml.
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.server.core.MailImpl.detectPossibleLoop(MailImpl.java:344)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.server.core.MailImpl.deriveNewName(MailImpl.java:321)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.server.core.MailImpl.duplicate(MailImpl.java:103)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.transport.mailets.redirect.ProcessRedirectNotify.process(ProcessRedirectNotify.java:49)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.transport.mailets.Redirect.service(Redirect.java:475)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.impl.camel.CamelProcessor.process(CamelProcessor.java:81)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder.handleMailet(CamelMailetProcessor.java:178)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor$MailetContainerRouteBuilder.lambda$configure$0(CamelMailetProcessor.java:155)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:715)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:638)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.MulticastProcessor.process(MulticastProcessor.java:248)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.Splitter.process(Splitter.java:130)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.component.direct.DirectBlockingProducer.process(DirectBlockingProducer.java:53)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:186)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.processor.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:86)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:541)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:506)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:369)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:506)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.ProducerCache.send(ProducerCache.java:229)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:144)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:161)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:168)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.impl.camel.CamelMailetProcessor.service(CamelMailetProcessor.java:68)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.lib.AbstractStateCompositeProcessor.service(AbstractStateCompositeProcessor.java:84)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
org.apache.james.mailetcontainer.impl.JamesMailSpooler.lambda$run$0(JamesMailSpooler.java:163)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
INFO | jvm 1 | 2019/05/26 20:58:03 | at
java.lang.Thread.run(Thread.java:748)
INFO | jvm 1 | 2019/05/26 20:58:03 |
INFO | jvm 1 | 2019/05/26 20:58:03 | INFO 20:58:03,025 |
org.apache.james.transport.mailets.ToRepository | Storing mail
fd94-!5647419-!8598886-!8671760-!8516799-!7948334-!6362370-!1064056-!8846222 in
MailRepositoryUrl{value=file://var/mail/error/}
This is the content of the filtered message:
cryptearth@localhost:~/james-server-app-3.3.0/var/mail/error> cat
666439342D21353634373431392D21383539383838362D21383637313736302D21383531363739392D21373934383333342D21363336323337302D21313036343035362D2138383436323232.Repository.FileStreamStore
To: local-serv...@cryptearth.de
Message-ID: <201905261858.x4qiw2wp003...@root1.cryptearth.de>
MIME-Version: 1.0
Received: from localhost (EHLO root1.cryptearth.de) ([127.0.0.1])
by localhost (JAMES SMTP Server ) with ESMTP ID -1238704049
for <cryptea...@root1.cryptearth.de>;
Sun, 26 May 2019 20:58:02 +0200 (CEST)
Received: (from cryptearth@localhost)
by root1.cryptearth.de (8.15.2/8.15.2/Submit) id x4QIw2wp003888;
Sun, 26 May 2019 20:58:02 +0200
Date: Sun, 26 May 2019 20:58:02 +0200
From: "(Cron Daemon)" <cryptea...@root1.cryptearth.de>
Subject: Cron <cryptearth@root1> /home/cryptearth/bin/test.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=4>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/1000>
X-Cron-Env: <DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus>
X-Cron-Env: <LANG=de_DE.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/cryptearth>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=cryptearth>
X-Cron-Env: <USER=cryptearth>
test
cryptearth@localhost:~/james-server-app-3.3.0/var/mail/error>
So, the redirect seems to work as far to change the recipient, but then it
can't be sent to the local user account. I'm unsure if it's maybe some DNS/IP
error as the way I re-installed the system isn't supported by OVH. So maybe I
made an error somewhere. What's bothering me that the hostname sometimes keep
change back to localhost although it's correctly set anywhere.
Maybe I get in touch with OVH support
Matt
Am 24.05.2019 um 01:58 schrieb cryptearth:
Hey there, Matt here again.
Long time since my last update on this topic, but now I got a pretty easy
solution.
On May 22nd OpenSUSE 15.1 was released, and with this new update I again looked at my
"problem" about how to deal with apache and other local mail. Instead of my
initial thoughts I hadn't to implement any myself, but james also comes with anything
needed. The two keywords here are the CompositeMatcher and the Redirect mailet.
To recap: basically I want to filter any local mail to a special service user
except those from authed smtp and apache (wich is set to
webmas...@cryptearth.de in php.ini).
CompositeMatcher offers a way to easy implement this filter rule:
<matcher name="local-service"
match="org.apache.james.mailetcontainer.impl.matchers.And">
<matcher match="RemoteAddrInNetwork=127.0.0.0/8" />
<matcher match="org.apache.james.mailetcontainer.impl.matchers.Not">
<matcher match="SMTPAuthSuccessful" />
</matcher>
<matcher match="org.apache.james.mailetcontainer.impl.matchers.Not">
<matcher match="SenderIs=webmas...@cryptearth.de" />
</matcher>
</matcher>
I guess this speaks for itself, at least I guess anyone subscribed to this
mailing-list should understand what this basic logic does.
One side-note: on start up the code that creates the config only looks for
Matchers and Mailets in org.apache.james.transport.matchers.* - so any other
classes has to be referenced by its FQN.
As I now have all those mails I want to filter into the special mailbox an easy
Redirect does the trick about rewriting the recipient:
<mailet match="local-service" class="Redirect">
<to>local-serv...@cryptearth.de</to>
</mailet>
The very convenient thing for apache is that every outgoing mail is also saved
automatic in SENT as for any existing local user.
I only came up with this as I started to dig my way around the github and
wasn't satisfied with this compilcated way of looking up the API. So I quickly
asked google about creating a complete javadoc - mvn javadoc:aggregate-jar did
it. So I got an easy browsable api-doc.
About placement I inserted it right at top of root processor, even above the
postmaster mailet. As it works it can't be that wrong, but if there is a better
spot than right at top please tell me.
So, this concludes my question about how to combine james with sendmail in a
way sendmail is only the dumb nullclient forwarding all local generated mail to
james. As the Redirect mailet also offers other rewrites of the headers I guess
it could be used to do a bit more with a bit more work on the configs.
Thanks for anyone helped about this topic - a huge help was the last reply from
Benoit about using the RemoteAddrInNetwork class.
So long,
Matt
<truncated>
---------------------------------------------------------------------
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