Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
While working on the deletedMessageVault, we targeted in MAILBOX-381 a first implementation on top of MailRepositories
That decision was unfortunate as then one can browse the content of the deletedMessageVault vault through webAdmin.
Thus we decided to implement DeletedMessageVault as a separate component.
That component has the following considerations:
- Should have a low storage cost
- Cold storage and delays upon reads are acceptable as one does not expect a restore/export to be fast
- Find an efficient way to implement retention (deleting too old emails) without a full scan
We decided to provide an implementation above the blobStore and a metaData store (cassandra)
Retention will be implemented with object storage buckets (one month = 1 bucket). We could then simply delete a bucket when all the mails it contains are older than the retention period.
Querying the deleteMessageVault will first be done with a full scan. Later enhancement can be done by providing a per-bucket (immutable) Lucene index - once the bucket is no longer the latest one.