Write installation guide and clean up README.md.
[mailpopbox.git] / README.md
1 # mailpopbox
2
3 Mailpopbox is a single-user mail server, providing SMTP and POP facilities. It acts as a catch-all,
4 wildcard email server for an entire domain name. Any message addressed to an account at the
5 configured domain will be deposited into a single mailbox, which can then be accessed using the POP3
6 protocol.
7
8 The usage scenario is to configure your primary email provider (e.g.,
9 [Gmail](https://support.google.com/mail/answer/7104828)) or client to POP messages off the
10 server. Any time you need to provide an email address, you can give out
11 *\<arbitrary-string@domain.com\>*, allowing you to use site/service/person-specific email addresses.
12 Mail is collected into a single maildrop that can be POP'd out into your normal mailbox.
13
14 ## Installation
15
16 Installation requires a server capable of binding on port 25 for SMTP and 995 for POP3. A TLS
17 certificate is also required to have a secure connection for authenticating to the server. See the
18 [installation guide](docs/install.md) for a full set of steps.
19
20 ## Building
21
22 To build mailpopbox for a Linux server, you need [Go](https://golang.org) and git:
23
24 $ git clone https://src.bluestatic.org/mailpopbox.git
25 $ cd mailpopbox
26 $ GOOS=linux GOARCH=amd64 go build
27
28 The `GOOS` and `GOARCH` environment variables are only needed when cross-compiling (e.g. on a Mac).
29
30 ## Send-As SMTP
31
32 Mailpopbox also provides a way to reply to messages from an arbitrary email address at the domain.
33 Since mailpopbox is designed as a catch-all mail server, it would be impractical to administer SMTP
34 accounts to enable replying from any address handled by the server. Instead, the SMTP authenticates
35 a single *mailbox* user, and if the message's Subject header has a special `[sendas:ADDRESS]`
36 string, the server will alter the From message header to be from ADDRESS@DOMAIN.
37
38 ## RFCs
39
40 This server implements (partially) the following RFCs:
41
42 - [Post Office Protocol - Version 3, RFC 1939](https://tools.ietf.org/html/rfc1939)
43 - [Simple Mail Transfer Protocol, RFC 5321](https://tools.ietf.org/html/rfc5321)
44 - [Message Submission for Mail, RFC 6409](https://tools.ietf.org/html/rfc6409)
45 - [SMTP Service Extension for Secure SMTP over Transport Layer Security, RFC 3207](https://tools.ietf.org/html/rfc3207)
46 - [SMTP Service Extension for Authentication, RFC 2554](https://tools.ietf.org/html/rfc2554)
47 - [The PLAIN Simple Authentication and Security Layer (SASL) Mechanism, RFC 4616](https://tools.ietf.org/html/rfc4616)
48 - [Simple Mail Transfer Protocol (SMTP) Service Extension for Delivery Status Notifications (DSNs)](https://tools.ietf.org/html/rfc3461)
49 - [POP3 Extension Mechanism, RFC 2449](https://tools.ietf.org/html/rfc2449)