sendmail

Implementation of the sendmail command
README

colombe is a little library which wants to implement the SMTP protocol
according RFC5321. It is a low-level library used by some others projects to
implements clients or servers.

The library does not handle properly an email. If you want to generate a
proper email or introspect an email, you should be interested by
mrmime.

As a client

The distribution provides sendmail, sendmail.tls and sendmail-lwt which
are respectively:

  • An agnostic (to the system) implementation of an usual client with
    authentication

  • An agnostic (to the system) implementation of an usual client with
    authentication and STARTTLS extension

  • An LWT implementation of an usual client with authentication

Depending on your context:

  • If you want to communicate with a SMTP server which require a TLS connection
    (like, *:465), sendmail with a scheduler such as LWT or
    ASYNC (or UNIX) should be use. sendmail-lwt is a
    specialization with LWT.

  • If you want to communicate with a SMTP server which handles (and surely
    requires) STARTTLS extension, (like *:587), sendmail.tls which a
    scheduler should be use.

Of course, a client can be more complex and can handle:

  • file attachments

  • a well formed email

  • some usual metadata such as the timezone

If you are interested by that, you should look into facteur which
wants to provide a little binary to send an email with a nice use between
colombe, mrmime and some others MirageOS projects.

As a server

Of course, colombe implements both sides. By this library, you are able to
implement an SMTP server - if you are interested by that, you should look into
ptt.

How to use colombe

As we said, the library wants to be a low-level one. At least, the core does not
handle properly eSMTP extensions or any high mechanisms such the authentication.
It's mostly because the library wants to be used by a server implementation
and a client implementation.

It only ensures a high abstracted interface on top of the low-level of the
communication. The library defines only few parts of the SMTP protocol and a
monadic interface to describe the state-machine while the communication with
an other peer.

sendmail is a good example about how to use colombe. It describes
structurally the SMTP protocol (only what it really needs) and the state machine
to send an email.

Received field

RFC5321 describes the SMTP protocols and some mechanisms such as the Received:
field. The distribution provides a way to introspect Received: fields (and can
produce a graph of them) or generate them from a server configuration.

Install
Published
29 Nov 2020
Sources
colombe-v0.4.0.tbz
sha256=d80258b2c6fdd43ed082818f130168cd907826aa17ffcc85e636049afc88ad85
sha512=d777785f2f33cb628482b679ae7a06939dd3ad7daee00e18129578964b0a1c8fc116eaf2926a0a841cc02f91698c8feaa3e7854143a57774d058f3445d5a2d73
Dependencies
alcotest
with-test
mrmime
>= "0.3.2" & with-test
emile
>= "0.8" & with-test
base64
>= "3.0.0"
tls
< "0.13.0"
colombe
= version
dune
>= "1.8"
ocaml
>= "4.03.0"
Reverse Dependencies
letters
= "0.2.1"
sendmail-lwt
= "0.4.0"