I agree organizing weddings is a hell of a mess, having been recently gone through this process myself...
> (I have filmed over 600 weddings across nearly 18 years... so > the maildb is huge. Searching is not trivial) Well, scanning search sounds like a hell yes. However hopefully some other options are available. James 3.x releases includes some advanced search engines that should be relyable and efficient up to a few million emails. Lucene is the de-facto indexing choice we made for JPA Guice. It's also available in Spring (indexer.xml file). Searching large DBs should not be a problem. > I figure I could just do > a search on the entire maildb each time looking for any mail that > matches any of 20+ email addresses. I'd argue you'll end up with a functional issue: what if one the previous bride gets a mum and emails you for marrying her daughter? :-) You could: - assign a custom mail header / custom flags upon the mailet pipeline for a mail you correlated with a wedding - Rely on multi-mailbox search using aforementioned (not yet implemented) RFC-6237. Cheers, Benoit On 15/10/2019 10:52, Jerry Malcolm wrote: > Hi Benoit, > > When I'm talking with my own software clients, my standard line to the > client is "don't tell me your recommended solution.... start with what > the problem is that you want to solve, and we'll work together on the > best solution." And here I find myself telling you what I think the > solution is when there might be a totally different and much better way > already architected into James to solve the problem.... So I'm hitting > 'reset'. Here's the actual problem I want to solve. > > Totally separate from my software development and hosting businesses, I > also have a wedding and event video business. When I book a wedding, I > start having to deal with bride, groom, planner, Mother of Bride, Mother > of Groom, etc. etc. Over the months before and after the wedding, I get > a bunch of emails from each of these people. And to make matters worse, > after the wedding, the bride often changes her email address if she > changes her last name. In my CRM I have an entry for the "Smith/Jones > Wedding". I have an "email history" log that is crucial to keeping up > with all correspondence between me, my employees, and about 20 different > email addresses for everyone I'm dealing with related to this wedding. > I have mailets that monitor all outbound and inbound mail. If I find > one to/from any of the email addresses I have on record associated with > this wedding, I log an entry in the CRM email history log for this > wedding. I want to be able to retrieve and open the email directly from > the CRM log. My current implementation works fine until I need to clean > up mail folders and archive older mail which loses the links to be able > to open those emails since the paths change. I figure I could just do > a search on the entire maildb each time looking for any mail that > matches any of 20+ email addresses. But that seems to be a performance > nightmare (I have filmed over 600 weddings across nearly 18 years... so > the maildb is huge. Searching is not trivial). So I keep a separate > log and 'try' to keep the entries pointed to the mail's location in > james so I can access the email item on demand. > > So if there's a better way to create 'groups' for all mail in the entire > email account for 20+ random email addresses and get a list > (efficiently) of all matching to/from emails, I'm ready to learn a > different way. > > Thx as always. > > Jerry > > On 10/14/2019 10:09 PM, Tellier Benoit wrote: >> Hi Jerry, >> >> First I'd begin with a quick thought that might save you some consequent >> development and configuration time. >> >> What exactly are the features of your bookmark? >> >> Because it sounds to me search and custom flags might be enough. >> >> RFC-6237 "IMAP4 Multimailbox SEARCH Extension" might also be a must read >> for your feature. (not yet implemented in James but should be easy) >> >> Such an approach would avoid external state tracking (brittle) at the >> cost of a simple IMAP extension development. If you don't have new >> features in your "bookmark" application, then this might be the "most >> standard way to go". >> >> That being said, I'll answer your other questions: >> >> 1) A bit of warning first: ToRecipientFolder is deprecated. The way to >> do that is combining WithStorageDirective and LocalDelivery mailets. >> >> 2) Yes, a sample implementation is "random UUID" >> >> However some little dev might be required for JPA to persist messageId >> (I just looked through the code) >> >> We wrote this tutorial >> http://james.apache.org/howTo/custom-listeners.html for helping users >> and devs write their own listener, this might be a good starting point >> for you. >> >>> It looks like my next step is going to be moving to Guice. >> Yeah!!! >> >> Cheers, >> >> Benoit >> >> On 15/10/2019 05:20, Jerry Malcolm wrote: >>> Hi Benoit, >>> >>> Thanks for the response. I'm all for extensions mechanisms rather than >>> using db schemas. If I understand what you are describing, and I can >>> make it work, it's going to be a much simpler solution than the hack I >>> put together a few years ago for my v3b5 installation. >>> >>> Just to make sure I'm hearing you correctly... >>> >>> 1) I recognize (in a "ToFolder mailet") that a particular email is one >>> that I have a need to track and locate later. >>> >>> 2) I use the MessageId property on that email and externally store that >>> MessageId: "abc" is stored in mail account folder "xxx/yyy". (and "abc" >>> is a universally unique id across my James installation, correct?) >>> >>> 3) I write and register a MailboxListener to monitor all mailbox folders >>> for this account >>> >>> 4) The user decides to move message "abc" to folder >>> "/archive2019/xxx/yyy" >>> >>> 5) My listener recognizes the id and updates my external registry that >>> "abc" is now in a different folder. >>> >>> I've got to dig in and learn about writing a MailboxListener. But >>> assuming my assumptions for the steps above are valid, I can make it >>> happen. If I don't have the steps correct, please set me straight. >>> >>> It looks like my next step is going to be moving to Guice. >>> >>> Jerry >>> >>> On 10/13/2019 10:11 PM, Tellier Benoit wrote: >>>> Hi Jerry, >>>> >>>> Globally, we expect users to rely on extensions mechanisms James >>>> provides, and not on DB schemas (that might change in the future!) >>>> >>>> I would advise you to rely on MailboxListeners (that receives events >>>> from users mailboxes) >>>> >>>> The Added event is here the one that interest you. You can rely on the >>>> "MessageId" property to correlate with your bookmark content and thus >>>> being able to update it. >>>> >>>> MailboxListener is only supported by Guice... >>>> >>>> Best regards, >>>> >>>> Benoit Tellier >>>> >>>> On 12/10/2019 11:50, Jerry Malcolm wrote: >>>>> I need a little more education... I understand that fundamentally IMAP >>>>> and all mail storage is pretty much 'top down'. The user starts at >>>>> the >>>>> top folder and drills down through sub folders until they locate the >>>>> email in question. And there are search engines that basically do >>>>> the >>>>> same drilling down and find matching emails. Let's say I need to >>>>> return >>>>> to a specific email often, so I set up an external 'bookmark' that >>>>> references the account and folder path of this email, and via IMAP >>>>> I can >>>>> easily access this email at any time. No problems whatsoever with >>>>> that. The problem happens when the user decides to clean out a folder >>>>> and move the mail to an "Archived Mail - 2019" folder. From what I >>>>> can >>>>> tell, it's a new sunrise for that email in its new location with no >>>>> way >>>>> to back link it to my previously bookmarked folderPath. Is that >>>>> correct? Is there any unique database information for that mail >>>>> record >>>>> that I could save and subsequently use to find it again once it has >>>>> changed folders? I'm simply looking for a guaranteed unique UID that >>>>> would allow me to keep track of an email as long as it is somewhere in >>>>> the database. This doesn't have to be something exposed in IMAP. I >>>>> have no problem going straight to the database and finding a record >>>>> with >>>>> this 'possible' UID if that is necessary in order to update my >>>>> 'bookmark'. Is there any UID already available that persists for the >>>>> life of the email I've totally missed? Or is this just something I >>>>> need >>>>> to live with for now? >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >>>>> For additional commands, e-mail: server-dev-h...@james.apache.org >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >>>> For additional commands, e-mail: server-dev-h...@james.apache.org >>>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >>> For additional commands, e-mail: server-dev-h...@james.apache.org >>> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org >> For additional commands, e-mail: server-dev-h...@james.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org > For additional commands, e-mail: server-dev-h...@james.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org