Re: Catch-all handling - current best practices
Wojtek <[email protected]> Fri, 23 Aug 2024 11:32:18 +0200
| Newsgroups | gmane.comp.jakarta.james.user |
|---|---|
| Message-ID | <[email protected]> |
Thanks. I created one and it works kinda neat! (also API si so nice :) ). But I ran into issue and had to disable `<handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>` -- any negative impact? I would imagine that could cause slight performance problems (more processing needed as whole mailet chain is executed) but other than that? Wojtek On 22/08/2024 21:34, Benoit TELLIER wrote: > Yes correct > > -- > > Best regards, > > Benoit TELLIER > > General manager of Linagora VIETNAM. > Product owner for Team-Mail product. > Chairman of the Apache James project. > > Mail: [email protected] > Tel: (0033) 6 77 26 04 58 (WhatsApp, Signal) > > > On Aug 22, 2024 6:27 PM, from Wojtek Just to make sure, mentioned `SetRecipientLocalPart` and `SetRecipient` are suggested mailets - correct? > > Wojtek > > On 21/08/2024 13:57, Benoit TELLIER wrote: >> Hello Wojtek >> >> So the exact need would be >> >> GIVEN a mail to [email protected] >> THEN after the bounce the emails ends up in [email protected] mailbox >> >> Pros: it enables a review by the admin using standard IMAP tools >> Cons: it is stripped of the SMTP envelope (delivery context) thus can hardly be re-sent. Redelivering them 100% of the time right will be hard. MailRepositories keep the delivery context and allows for this natively. >> >> TLDR the current best practice is to rely on the mailrepository... >> While in a single domain setup Forward, Resent and friends likely can do the job they are overly complex with subtile differences and I would not personnaly use them... >> >> If asked I would rather implement something like: >> >> >>> <processor state="local-address-error" enableJmx="true"> >>> <mailet match="All" class="MetricsMailet"> >>> <metricName>mailetContainerLocalAddressError</metricName> >>> </mailet> >>> <mailet match="All" class="Bounce"> >>> <attachment>none</attachment> >>> </mailet> >>> <mailet match="All" class="SetRecipient"> >>> <recipient>[email protected]</recipient>> </mailet> >>> <mailet match="All" class="LocalDelivery"/> >>> </processor> >> (UNIX philosophy: provide unitary, simple mailet that do one job and one and can be combined....) >> >> For the multi-hosting scenario I bet a SetRecipientLocalPart mailet could make sense. >> >> GIVEN configured with local part catch-all >> WHEN it processes [email protected], [email protected] and [email protected] >> THEN it rewrites recipients to [email protected] and [email protected] >> >> Those two mailets are simple enough and generic enough IMO to lend in mailet/standard might they solve your use case.-- >> >> Best regards, >> >> Benoit TELLIER >> >> General manager of Linagora VIETNAM. >> Product owner for Team-Mail product. >> Chairman of the Apache James project. >> >> Mail: [email protected] >> Tel: (0033) 6 77 26 04 58 (WhatsApp, Signal) >> >> >> On Aug 21, 2024 11:44 AM, from Wojtek Digging more into it, one could use Forward with `forwardto`, Resend with `to` or Redirect with `to` >> but the problem I see - they all require configuring full email address instead of specifying only >> username, which could be somewhat problematic on installations with multiple domains. >> >> Is there a mailet or a configuration that would allow specifying only local mailbox name instead of >> full email? >> >> Wojtek >> >> On 21/08/2024 11:12, Wojtek wrote: >>> Hi all, >>> what is the current best practices to add handling of "catch all" use case (i.e. redirect all >>> messages that do not match - and only those that doesn't match! - existing mailbox to "catch all" >>> mailbox)? >>> >>> I found cwiki.apache.org/confluence/display/JAMES2/ConfigureJamesAsCatchAll but it's from 5 >>> years ago and doesn't even mention version. From the looking at it, it would redirect all messages >>> to "catch-all". >>> >>> OTOH I found github.com/foilen/james-extra-components but it hasn't been update since 5 >>> years as well. >>> >>> Currently we have: >>> ```xml >>> <processor state="transport" enableJmx="true"> >>> … >>> <mailet match="HostIsLocal" class="ToProcessor"> >>> <processor>local-address-error</processor> >>> <notice>550 - Requested action not taken: no such user here</notice> >>> </mailet> >>> … >>> </processor> >>> >>> <processor state="local-address-error" enableJmx="true"> >>> <mailet match="All" class="MetricsMailet"> >>> <metricName>mailetContainerLocalAddressError</metricName> >>> </mailet> >>> <mailet match="All" class="Bounce"> >>> <attachment>none</attachment> >>> </mailet> >>> <mailet match="All" class="ToRepository"> >>> <repositoryPath>file://var/mail/address-error/</repositoryPath> >>> </mailet> >>> </processor> >>> ``` >>> >>> I would assume that changing last mailet (ToRepository with error repository) to some mailet. I >>> looked a the list and mailets in the sources but none of them seems to fit it. >>> >>> Any suggestion how to configure it? >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > >