aerogramme.deuxfleurs.fr/content/documentation/design/_index.md

34 lines
1.5 KiB
Markdown
Raw Normal View History

2023-06-02 10:39:25 +00:00
+++
2024-01-22 11:03:09 +00:00
title = "Concepts"
2023-06-02 10:39:25 +00:00
weight = 40
sort_by = "weight"
template = "documentation.html"
+++
2024-01-22 17:05:49 +00:00
## Goals
2024-01-23 09:20:19 +00:00
**Highly resilient** - Multiple instances of Aerogramme can been run in parallel without coordination.
Multi-region support, survive datacenter failures.
**Easy to operate** - Transparently replicate mailbox and solve conflicts. Integrate with your LDAP server. Privacy friendly
**Per-user encryption of mailboxes.**
Can be run as a local proxy to hide your mailbox content from the server.
2024-01-22 17:05:49 +00:00
## Main concepts
2024-01-23 09:20:19 +00:00
[Per-user encryption](@/documentation/design/per-user-encryption.md) - Aerogramme can't persist data in plain text,
instead its whole data model is built upon the idea that a mailbox is a series of encrypted blob. These blobs do not reveal
the mailbox name, the metadata of stored emails or even the flags that have been put on them.
2024-01-22 11:03:09 +00:00
2024-01-23 09:20:19 +00:00
**Continuous Mailbox Merging** - As multiple instances of Aerogramme can be run simultaneously, and that's possible
that 2 instances interact with the same mailbox (over Garage), each process monitors external writes for the mailbox
they track and automatically do the merging [in a correct way](@/documentation/internals/imap_uid.md).
2024-01-22 11:03:09 +00:00
2024-01-22 17:05:49 +00:00
**Modular design** - Login and Mailbox storage is abstracted behind an interface: multiple
implementations are thus possible.
2024-01-23 09:20:19 +00:00
**Microservice** - Aerogramme is stateless and tries to adhere as much as possible to the [12 factor app](https://12factor.net/) principles so it's easy to run in a cluster.