This document provides an overview of the Apache James email server project. It discusses James' support for common email protocols like SMTP, IMAP, and the newer JMAP standard. It also describes James' architecture, including its use of mailets and processors to customize email processing. The document recommends James for its flexibility, extensibility, and support for observability through structured logs and metrics.
3. 3/
About Linagora Vietnam
Office in Vietnam since 2015
Offers alternative for collaborative suites.
Why ? => Digital sovereignty through OpenSource
TMail
4. 4/
About Apache James
Apache project since 2007
→ Implements multiple Email standards: SMTP, IMAP, JMAP, etc…
→ Scaling infrastucture available
(Cassandra, S3, OpenSearch, RabbitMQ)
→ Flexibility: Extensions, and toolbox to assemble your own email server.
5. 5/
What’s in a mail?
Date: Tue, 03 Jan 2017 16:05:01 +0100
From: sender <sender@james.org>
MIME-Version: 1.0
To: David DOLCIMASCOLO <david.ddo@linagora.com>
Subject: Re: [Internet] Rendez-vous
References: <9b6a4271-69fb-217a-5c14-c68c68375d96@linagora.com>
In-Reply-To: <d5c6f1d6-96e7-8172-9fe6-41fa6c9bd6ec@linagora.com>
X-Gie-Attachments: none
Cc:
Content-type: multipart/mixed; boundary="----------=_1483455916-7086-3"
This is a multi-part message in MIME format...
------------=_1483455916-7086-3
Content-Type: multipart/alternative; boundary="------------060506070600060108040700"
This is a multi-part message in MIME format.
--------------060506070600060108040700
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
/blabla/
*bloblo*
--------------060506070600060108040700
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
<i>blabla</i>
<b>bloblo</b>
--------------060506070600060108040700--
------------=_1483455916-7086-3
Content-ID: <14672787885774e5c4d4cee471352039@linagora.com>
Content-Type: text/plain; charset="iso-8859-1"; name="avertissement.txt"
Content-Disposition: inline; filename="avertissement.txt"
Content-Transfer-Encoding: binary
inline attachment
------------=_1483455916-7086-3--
Mime stucture:
- header / body
- single body VS multipart
- Each part have its header
- Nested multiparts
Parsing this can QUICKLY
become a mess!
CTRL + U in
thunderbird
6. 6/
Reminder about email protocols
MTA MX
DNS
MX MDA
proxy
IMAP
SMTPS
Bob’s MUA
Webmail
Alice MUA
Thunderbird
Open standards (RFCs)
No vendor lock in.
SMTP
(opportunistic
STARTTLS upgrade)
SMTPS
(authenticated)
SMTPS
MX record
lookup
Vocabulary:
- MTA: Mail Transfer Agent
- MX: Mail eXchange
- MDA: Mail Delivery Agent
- MUA: Mail User Agent
- SMTP: Simple Mail Transport Protocol
- IMAP: Internet Message Access Protocol
7. 7/
JMAP: The new kid in town
MX MDA
JMAP
SMTPS
Bob’s MUA
Webmail
Open standards (RFCs)
No vendor lock in
https://jmap.io/
SMTP
(opportunistic
STARTTLS upgrade)
→ Newly standardized
→ HTTP + JSON
→ Native Push and synchronization
→ Unifies IMAP and SMTP
→ Easy and efficient to use!
13. 13/
James Mail Processing
Vocabulary:
- Mailet: Action
- Matcher:Condition
- Processor: list of mailet and
matcher
The way mailetcontainer is
arranged is fully defined in
mailetcontainer.xml
Many pre-existing mailet / matchers.
14. 14/
Custom mailet / matchers
- Loaded from external JAR
- Can use on James components
- Extensions can also inject their
own components.
15. 15/
Security
- Sender address spoofing!
- Reverse DNS lookups
- SPF checks
- DKIM checks
All those are implemented in
Apache James
16. 16/
James: Other places where behavior can be overriden
Feedback to an anti-spam
Transfer user attachments to third party apps
REST API, arbitrary operations.
EG email expiracy...
Checks
before the
mail queue
17. 17/
James: A word of observability
- Orchestrable: Helm charts available
- Structured logs with applicative context
(JSON)
- Metrics (Prometheus)
18. www.linagora.com
Facebook : LINAGORA - Twitter : @linagora
Tour Franklin 31ème étage
100 Terrasse Boieldieu
92042 PARIS LA DEFENSE FRANCE
Tél. : +33 (0)1 46 96 63 63 - Fax : +33 (0)1 46 96 63 64
Thank you for your attention
CONTACT
Benoit TELLIER
Ingénieur Logiciel
btellier@linagora.com
+33 (0)6 77 26 04 58
Mobile, Signal, Whatsapp