package facteur

  1. Overview
  2. Docs
Tool to send an email

Install

Dune Dependency

Authors

Maintainers

Sources

facteur-v0.1.0.tbz
sha256=56e9eb6cbfff8bf9788913ce2c549b1d57731f77b4f3cbc7849d343748ae2cac
sha512=a25b26d5b5b9efb6ec0178d7a604ef2449f5831ea26433e63ec545056febdb018ef4b6f42bc387cbd7c8dad756c1f737b259abf3b903d47c89992585d56db7c7

Description

Tool to send an email in OCaml according RFC4409 [SUBMIT]

Published: 05 Aug 2019

README

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]colombe (RFC 5321) and [mrmime]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 a Content-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)!

Dependencies (14)

  1. conf-libmagic
  2. dune >= "1.3"
  3. emile >= "0.5" & < "0.7"
  4. x509 >= "0.7.0" & < "0.10.0"
  5. domain-name >= "0.3.0"
  6. cmdliner
  7. fpath
  8. astring
  9. fmt
  10. logs
  11. sendmail-lwt
  12. colombe >= "0.1.0"
  13. mrmime >= "0.1.0"
  14. ocaml >= "4.08.0"

Dev Dependencies

None

Used by

None

Conflicts

None