Bump the version to 2.1.0.
[mailpopbox.git] / README.md
index 4b21e7af8f393eabd648694d393553df5342581a..46f6f1e7f06f92203ced0c84e2b99c72f887f247 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,27 +1,50 @@
 # mailpopbox
 
-Mailpopbox is a combination delivery SMTP server and POP mailbox. The purpose is to act as a
-catch-all delivery server for an MX domain. All messages that it receives are deposited into a
-single mailbox, which can then be accessed using the POP3 protocol.
+Mailpopbox is a single-user mail server with SMTP and POP facilities. Its purpose is to provide
+privacy through anonymity by acting as a catch-all, wildcard email server for an entire domain name.
+Any message addressed to an account at the configured domain will be deposited into a single
+mailbox, which can then be accessed using the POP3 protocol.
 
-## TLS Support
-
-TLS is recommended in production environments. To facilitate live-reloading of certificates, you can
-send a running instance SIGHUP.
+The usage scenario is to configure your primary email provider (e.g.,
+[Gmail](https://support.google.com/mail/answer/7104828)) or client to POP messages off the
+server. Any time you need to provide an email address, you can give out
+`arbitrary-string@domain.com`, allowing you to use site/service/person-specific email addresses.
+Mail is collected into a single maildrop that can be POP'd out into your normal mailbox.
 
 ## Send-As SMTP
 
+Mailpopbox also provides a way to reply to messages from an arbitrary email address at the domain.
 Since mailpopbox is designed as a catch-all mail server, it would be impractical to administer SMTP
-accounts to enable replying from any address handled by the server. The SMTP server instead
-provides a way to send messages from arbitrary addresses by authenticating as the mailbox@DOMAIN
-user. Any valid SMTP MAIL FROM is supported after authentication, but mail clients will typically
-use the mailbox@DOMAIN user or the From header. The SMTP server's feature is that if the message's
-Subject header has a special "[sendas:ANYTHING]" string, the server will alter the From message
-header to be from ANYTHING@DOMAIN.
+accounts to enable replying from any address handled by the server. Instead, the SMTP authenticates
+a single *mailbox* user, and if the message's Subject header has a special `[sendas:ADDRESS]`
+string, the server will alter the From message header to be from ADDRESS@DOMAIN.
+
+## Installation
+
+Installation requires a server capable of binding on port 25 for SMTP and 995 for POP3. A TLS
+certificate is also required to have a secure connection for authenticating to the server. See the
+[installation guide](docs/install.md) for a full set of steps.
+
+## Building
+
+Building mailpopbox only requires [Go](https://golang.org) and git. Clone the repository and type
+`go build`. Cross-compilation is supported since the server is written in pure Go.
+
+## Contributing
+
+[![CI](https://github.com/rsesek/mailpopbox/workflows/CI/badge.svg)](https://github.com/rsesek/mailpopbox/actions?query=workflow%3ACI)
+
+The canonical home for the repository is on
+[src.bluestatic.org](https://src.bluestatic.org/?p=mailpopbox.git), but it is also hosted on
+[Github](https://github.com/rsesek/mailpopbox) to enable collaboration.
+
+Issues should be reported on the [Github issue tracker](https://github.com/rsesek/mailpopbox/issues).
 
-Practically, this means configuring an outbound mail client to send mail as mailbox@DOMAIN and
-authenticate to the SMTP server as such. And in order to change the sending address as perceived by
-the recipient, edit the subject with [sendas:ADDRESS].
+Contributions are welcome. Please:
+- Ensure tests pass and that new changes have adequate code coverage (`make coverage`)
+- Code is formatted with `go fmt`
+- Commit history is clean (one logical change per commit)
+- Commit message is well-formatted
 
 ## RFCs
 
@@ -33,5 +56,5 @@ This server implements (partially) the following RFCs:
 - [SMTP Service Extension for Secure SMTP over Transport Layer Security, RFC 3207](https://tools.ietf.org/html/rfc3207)
 - [SMTP Service Extension for Authentication, RFC 2554](https://tools.ietf.org/html/rfc2554)
 - [The PLAIN Simple Authentication and Security Layer (SASL) Mechanism, RFC 4616](https://tools.ietf.org/html/rfc4616)
-- [Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs)](https://tools.ietf.org/html/rfc3461)
+- [Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs), RFC 3461](https://tools.ietf.org/html/rfc3461)
 - [POP3 Extension Mechanism, RFC 2449](https://tools.ietf.org/html/rfc2449)