facteur
facteur
is a little tool (experimental) to easily send a mail. It is a
milestone of several projects to implement the SMTP stack on MirageOS:
mrmime: is the main library which can parse and produce a mail
according several RFCs. It support multipart and multiple encoding (when it
uses as a parser).colombe: is the core library about SMTP protocol (without extension
but can be extended) as decoder and encoder.sendmail: is an implementation of the Submission RFC over TLS or
with STARTTLS extension. This library is an example to implement several
extension on top of colombe.emile: is a little library to parse a mail address according RFCs and
provide a [cmdliner][cmdliner] helper. It uses as a cross representation of a
mail address between colombe (RFC 5321) and mrmime (RFC
5322).
Of course, facteur
uses several libraries. mrmime uses
rosetta to decode any encoding to Unicode. It uses base64
or pecu as encoder/decoder of bodies. Or angstrom as the
main library to describe (a)BNF of emails.
Internal libraries
facteur
needs libmagic
to be able to recognize kind of your files. It
implements a C stubs and depends on an UNIX environment. In other side,facteur
has an other internal library, rfc2183
which wants to emit aContent-Disposition
field. This library is on top of mrmime.
SMTP details
facteur
wants to use two ways to send an email. The first one wraps entirely a
SMTP flow with TLS (with [ocaml-tls][ocaml-tls]). The second way is to start a
SMTP flow and try to establish a TLS flow with STARTTLS.
Of course, the first way is better than the second. If both are not available,
we are not able to send an email.
Experimental
As we said, this library is really experimental and should not be used in
production where it deserves mostly a deep work about API on mrmime or
colombe mainly.
However, it works (mostly)!
sha256=56e9eb6cbfff8bf9788913ce2c549b1d57731f77b4f3cbc7849d343748ae2cac
sha512=a25b26d5b5b9efb6ec0178d7a604ef2449f5831ea26433e63ec545056febdb018ef4b6f42bc387cbd7c8dad756c1f737b259abf3b903d47c89992585d56db7c7
>= "1.3"
>= "0.5" & < "0.7"
>= "0.7.0" & < "0.10.0"
>= "0.3.0"
>= "0.1.0"
>= "0.1.0"
>= "4.08.0"