summaryrefslogtreecommitdiff
path: root/docs/index.rst
blob: a2133f4898ab6129e9cecc5c49dcf1188589a736 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
.. leap.mail documentation master file, created by
   sphinx-quickstart on Mon Aug 25 19:19:48 2014.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

leap.mail
=========

*decentralized and secure mail delivery and synchronization*

This is the documentation for the ``leap.mail`` module. It is a `twisted`_
package that allows to receive, process, send and access existing messages using
the `LEAP`_ platform.

One way to use this library is to let it launch two standard mail services,
``smtp`` and ``imap``, that run as local proxies and interact with a remote
``LEAP`` provider that offers *a soledad syncronization endpoint* and receives 
the outgoing email. This is what `Bitmask`_ client does.

From the release 0.4.0 on, it's also possible to use a protocol-agnostic email
public API, so that third party mail clients can manipulate the data layer. This
is what the awesome MUA in the `Pixelated`_ project is using.

.. _`twisted`: https://twistedmatrix.com/trac/
.. _`LEAP`: https://leap.se/en/docs
.. _`Bitmask`: https://bitmask.net/en/features#email
.. _`Pixelated`: https://pixelated-project.org/

How does this all work?
-----------------------

All the underlying data storage and sync is handled by a library called
`soledad`_, which handles encryption, storage and sync. Based on `u1db`_,
documents are stored locally as local ``sqlcipher`` tables, and syncs against
the soledad sync service in the provider.

OpenPGP key generation and keyring management are handled by another leap
python library: `keymanager`_.

See :ref:`the life cycle of a leap email <mail_journey>` for an overview of the life cycle
of an email through ``LEAP`` providers.

.. _`Soledad`: https://leap.se/en/docs/design/soledad
.. _`u1db`: https://en.wikipedia.org/wiki/U1DB
.. _`keymanager`: https://github.com/leapcode/keymanager/


Data model
----------
.. TODO clear document types documentation.

The data model at the present moment consists of several *document types* that split email into
different documents that are stored in ``Soledad``. The idea behind this is to
keep clear the separation between *mutable* and *inmutable* parts, and still being able to
reconstruct arbitrarily nested email structures easily.

Documentation index
===================

..
.. Contents:
.. toctree::
   :maxdepth: 2

   hacking

..   intro
..   tutorial


API documentation
-----------------

If you were looking for the documentation of the ``leap.mail`` module, you will
find it here.

Of special interest is the `public mail api`_, which should remain relatively
stable across the next few releases.

.. _`public mail api`: api/mail.html#module-mail


.. toctree::
   :maxdepth: 2

   api/leap.mail



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`