blob: d2100d52f6e4430135a42163ad1dbaef47d61363 [file] [log] [blame]
= Apache James Core Concepts
:navtitle: Concepts
The core domain of Apache James is intimately related to email communications.
Therefore this section is divided into topics that deal with the various
aspect of email systems.
* <<emails>>
* <<protocols>>
* <<mailbox>>
* <<processing>>
[#emails]
== Email Messages
Electronic Mail (often written as "e-mail" or "email") is a means of
exchanging messages over a data network. In our context, it is obvious
that we mean "electronic mail" and not "postal mail", so we usually just
write "mail".
xref:mail/index.adoc[Email messages] are based on a few specifications
that are not easy to digest, so we make an effort to provide a simplified
model.
[#protocols]
== Transmission Protocols
Emails are only useful because people can communicate with each other.
To allow for this, obviously there must be a means of transmitting messages
from one user to another. A number of different protocols have emerged to
handle the various different requirements of using email in a practical
manner. The most common xref:protocols/index.adoc[transmission protocols]
are SMTP, POP, and IMAP. More recently JMAP is an interesting protocol
that merits attention.
[#mailbox]
== Mailbox and Email Storage
Email would not be very useful if, like in https://www.youtube.com/watch?v=0TiqXFssKMY[Mission Impossible],
a message would self-destruct immediately after being read.
For those of us who are not secret agents, we generally prefer to keep
a record of those messages that we receive. For this reason we need a means
of xref:storage/index.adoc[storing messages].
[#processing]
== Email Processing
There are many ways to peel a potato. James has its own particular
xref:processing/index.adoc[model for processing mail],
based mostly on the concept of a "Mailet". The idea of Mailet-based
processing was heavily inspired by the https://en.wikipedia.org/wiki/Java_servlet[Servlet]
concept.