Bump the version to 2.1.0.
[mailpopbox.git] / README.md
index 8edc7898ec9c06e024577bf9679e2db1e0dd1d05..46f6f1e7f06f92203ced0c84e2b99c72f887f247 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,60 @@
 # 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.
+
+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. 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).
+
+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
+
+This server implements (partially) the following RFCs:
+
+- [Post Office Protocol - Version 3, RFC 1939](https://tools.ietf.org/html/rfc1939)
+- [Simple Mail Transfer Protocol, RFC 5321](https://tools.ietf.org/html/rfc5321)
+- [Message Submission for Mail, RFC 6409](https://tools.ietf.org/html/rfc6409)
+- [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), RFC 3461](https://tools.ietf.org/html/rfc3461)
+- [POP3 Extension Mechanism, RFC 2449](https://tools.ietf.org/html/rfc2449)