When storing mail, the target account and folder are passed in to one of the three mail-store mailets.  If the folder doesn't exist on the target account, it makes sense that this folder be created automatically.  I don't have a problem with that.  However, if the target account doesn't exist, a completely new target account mailbox is created even though there is not a matching user account.  Granted, in a perfect world, a non-existent target account should not be passed in.  But it is happening (a lot). I plan to track back and figure that out next.  But currently, I have over 1000 new mailboxes created, mostly from spammers.

MailBoxAppender immediately tries to create the mailbox if it doesn't exist.  StoreMailBoxManager checks for a valid mailbox name, but does NOT check to see if an account exists for this mailbox.  It then creates the mailbox and downstream code dutifully stores the requested email in this 'orphan' mailbox that has no way to be accessed.

Question: I assume that there is no reason a mailbox should be created for "wearespamm...@spammers.com" just because some upstream code asked for it.  I assume that MailBoxAppender 'should' receive an exception in this case.  Is this correct?

Question 2: Assuming I am correct in my assumption, I can fix it by adding a check if there is an actual user matching the mailbox.  But with all of the implementation variations, I don't know the best 'abstract' way of checking if a user name is valid that will work across all variations.  So if someone can tell me the correct way to check a user name, I'll make the change.

In the meantime, for users who can't find mail.... (Mark Gordon, et al) should check to see if you have a bunch of orphaned mailboxes in your database.

BTW.... This could explain why I was getting 'Read-only' mailbox errors which was actually 'mailbox doesn't exist'.  I was only getting those errors when there was a capitalization error in the account name.  I suspect that somehow mailbox names are case-normalized and the create failed because the normalized mailbox name existed.  But when the appender tried to write to the mailbox, it was case-sensitive, so the mailbox it was seeking still didn't exist.  However, when the create-mailbox was for a completely random account name, the create worked, and there was no error.

Still a problem with upstream sending in mixed case target account names that don't match users.  I'll look into that soon.

Jerry


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to