Stay in control of your email and keep email decentralized!
Complete email solution
For sending and receiving email. With support for IMAP4, SMTP, SPF, DKIM, DMARC, MTA-STS, DANE and DNSSEC, reputation-based and content-based junk filtering, Internationalization (IDNA), automatic TLS with ACME and Let's Encrypt, account autoconfiguration, webmail.
Quick & easy
Use the quickstart command to set up mox for your domain(s) within 10 minutes. You'll get a secure mail server with a modern protocol stack. Upgrades are mostly a matter of downloading the new version and restarting. Maintenance via web interface (easy) or config file (powerful). No dependencies.
High quality and secure
Mox has a modern Go code base with plenty of automated tests, automated integration tests, is manually tested against popular mail server and client software, and is fuzz-tested. The code is well-documented and cross-referenced with the relevant standards (RFC's).
Homepage
Download
Recent Releases
0.0.1329 Nov 2024 02:25
minor feature:
lt;p gt;This release TLS interoperability with incoming deliveries from Microsoft lt;br gt;.
Servers by disabling TLS session. If you have MTA-STS and/or DANE lt;br gt;
Enabled, TLS is required for successful delivery, and updating to v0.0.13 is lt;br gt;
Required to receive messages from Microsoft again. TLS session may be lt;br gt;
Enabled again in a future release, possibly per port/service. lt;/p gt;
lt;h1 gt;Improvements lt;/h1 gt;.
lt;ul gt;.
lt;li gt;In the IMAP server, for the "bodystructure" response item to a "FETCH" lt;br gt;.
Command, add the content-type parameters for multiparts so IMAP clients will lt;br gt;
Get the MIME boundary without having to parse the message themselves. ( lt;br gt;
lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2554177621" data-permission-text="Title is private" data-url="https://github.com/mjl-/mox//217" data-hovercard-type="" data-hovercard-url="/mjl-/mox//217/hovercard" href="https://github.com/mjl-/mox//217" gt;#217 lt;/a gt;, lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/8fa197b19dfea22f3215e1768e8d90001f0ded06/hovercard" href="https://github.com/mjl-/mox/commit/8fa197b19dfea22f3215e1768e8d90001f0ded06" gt; lt;tt gt;8fa197b lt;/tt gt; lt;/a gt;) lt;/li gt;.
lt;li gt;Add an HTTP handler for the acme http-01 validiation mechanism to all plain lt;br gt;.
Http (non-tls) webservers (ports), not only to the one listening on port 80. lt;br gt;
lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/0fbf24160c65f8dd8855533cfaa2b485ee6764d9/hovercard" href="https://github.com/mjl-/mox/commit/0fbf24160c65f8dd8855533cfaa2b485ee6764d9" gt; lt;tt gt;0fbf241 lt;/tt gt; lt;/a gt;) lt;/li gt;.
lt;li gt;Properly link to matrix room so users can find it. ( lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2586712273" data-permission-text="Title is private" data-url="https
0.0.1226 Nov 2024 12:05
minor feature:
lt;h1 gt;Improvements lt;/h1 gt;.
lt;ul gt;.
lt;li gt;webmail: Change many inline styles to using css classes, and add dark mode. lt;br gt;.
lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2270545348" data-permission-text="Title is private" data-url="https://github.com/mjl-/mox//163" data-hovercard-type="pull_request" data-hovercard-url="/mjl-/mox/pull/163/hovercard" href="https://github.com/mjl-/mox/pull/163" gt;#163 lt;/a gt; by mattfbacon, lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/a16c08681b7181d7d3eb04246caa9132348bc035/hovercard" href="https://github.com/mjl-/mox/commit/a16c08681b7181d7d3eb04246caa9132348bc035" gt; lt;tt gt;a16c086 lt;/tt gt; lt;/a gt;) lt;/li gt;.
lt;li gt;webmail: In compose window, merge amp;amp; cancel button, and align buttons on lt;br gt;.
The right. ( lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/4d28a02621f248df0d8f2a35c594fe4f9cbcb3ac/hovercard" href="https://github.com/mjl-/mox/commit/4d28a02621f248df0d8f2a35c594fe4f9cbcb3ac" gt; lt;tt gt;4d28a02 lt;/tt gt; lt;/a gt;) lt;/li gt;
lt;li gt;mox backup: Add hint about systemd ReadWritePaths if hardlinking fails on lt;br gt;.
Linux due to cross-device link. ( lt;a class="-link js--link" data-error-text="Failed to load title" data-id="2282444156" data-permission-text="Title is private" data-url="https://github.com/mjl-/mox//170" data-hovercard-type="" data-hovercard-url="/mjl-/mox//170/hovercard" href="https://github.com/mjl-/mox//170" gt;#170 lt;/a gt; by rdelaage, lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/44a6927379cd7b674f9d06e7fe28fc7cdfb3366d/hovercard" href="https://github.com/mjl-/mox/commit/44a6927379cd7b674f9d06e7fe28fc7cdfb3366d" gt; lt;tt gt;44a6927 lt;/tt gt; lt;/a gt;) lt;/li gt;
lt;li gt;mox backup: Clarify behaviour with destination directory, and exit
0.0.1101 May 2024 09:45
minor feature:
lt;h1 gt;New features lt;/h1 gt;.
lt;ul gt;.
lt;li gt;Improve queue management ( lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/40ade995a5e5cc40bc8cf8fb3b94e4e508079097/hovercard" href="https://github.com/mjl-/mox/commit/40ade995a5e5cc40bc8cf8fb3b94e4e508079097" gt; lt;tt gt;40ade99 lt;/tt gt; lt;/a gt;).
lt;ul gt;.
lt;li gt;Add option to put messages in the queue "on hold", preventing delivery lt;br gt;.
Attempts until taken off hold again. lt;/li gt;
lt;li gt;Add "hold rules", to automatically mark some/all submitted messages as "on lt;br gt;.
Hold", e.g. from a specific account or to a specific domain. lt;/li gt;
lt;li gt;Add operation to "fail" a message, causing a DSN to be delivered to the lt;br gt;.
Sender. previously we could only drop a message from the queue. lt;/li gt;
lt;li gt;Update admin page amp;amp; add new cli tools for these operations, with new lt;br gt;.
Filtering rules for selecting the messages to operate on. In the admin lt;br gt;
Interface, add filtering and checkboxes to select a set of messages to operate lt;br gt;
on. lt;/li gt;
lt;/ul gt;.
lt;/li gt;.
lt;li gt;Add a webapi and webhooks for a simple HTTP/JSON-based API, helps with lt;br gt;.
Sending transactional email. (for lt;a class="-link js--link" data-error-text="Failed to load title" data-id="1709756597" data-permission-text="Title is private" data-url="https://github.com/mjl-/mox//31" data-hovercard-type="" data-hovercard-url="/mjl-/mox//31/hovercard" href="https://github.com/mjl-/mox//31" gt;#31 lt;/a gt; by cuu508, lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/09fcc492234ea494b66f6508ebb63486670e3647/hovercard" href="https://github.com/mjl-/mox/commit/09fcc492234ea494b66f6508ebb63486670e3647" gt; lt;tt gt;09fcc49 lt;/tt gt; lt;/a gt;)
lt;ul gt;.
lt;li gt;Webapi allows submitting messages without having to compose the message lt;br gt;.
Yourself, and with
0.0.1012 Mar 2024 03:15
minor feature:
lt;h1 gt;New features lt;/h1 gt;.
lt;ul gt;.
lt;li gt;Implement SMTP "FUTURERELEASE" extension in SMTP server. For submitting a lt;br gt;.
Message for delivery from the queue at a time in the future, e.g. tomorrow lt;br gt;
Morning 9:00. ( lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/93c52b01a02d9f4558a0c9eb29b8accc21b6da66/hovercard" href="https://github.com/mjl-/mox/commit/93c52b01a02d9f4558a0c9eb29b8accc21b6da66" gt; lt;tt gt;93c52b0 lt;/tt gt; lt;/a gt;) lt;/li gt;
lt;li gt;Delivery from the queue to multiple recipients in a single SMTP transaction, lt;br gt;.
Transferring data only once. This is only done for recipients with the same lt;br gt;
Recipient domain. The maximum recipients limit from the RFC 9422 SMTP LIMITS is lt;br gt;
Honored and mox now announces its own limit. ( lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/47ebfa81526cb87bd44f4452fcb080fda1be515a/hovercard" href="https://github.com/mjl-/mox/commit/47ebfa81526cb87bd44f4452fcb080fda1be515a" gt; lt;tt gt;47ebfa8 lt;/tt gt; lt;/a gt;) lt;/li gt;
lt;li gt;Allow configuring DNS blocklists (DNSBLs) only for monitoring, without using lt;br gt;.
Them for incoming email. Previously, mox would only monitor DNSBLs that are lt;br gt;
Used for incoming connections. But it is useful to know if your IPs are on a lt;br gt;
Blocklist, unrelated to whether you're using the blocklist. ( lt;a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/mjl-/mox/commit/15e450df61173701fbbf2be52bf2e944cbe4b0f7/hovercard" href="https://github.com/mjl-/mox/commit/15e450df61173701fbbf2be52bf2e944cbe4b0f7" gt; lt;tt gt;15e450d lt;/tt gt; lt;/a gt;) lt;/li gt;
lt;/ul gt;.
lt;h1 gt;Improvements lt;/h1 gt;.
lt;ul gt;.
lt;li gt;Mox has a separate website now, lt;a href="https://www.xmox.nl" rel="nofollow" gt;https://www.xmox.nl lt;/a gt;. It should be more lt;br gt;.
Frien
0.0.908 Mar 2024 14:11
minor feature:
New features
Per-account disk space quota. Mox now tracks the total size of messages in an account (overhead from the message index database or file system is not included). A maximum disk usage can be configured globally and/or per account.
If configured, the maximum allowed disk usage is enforced. By default, no maximum is configured. Setting quota for accounts can prevent a single account from filling up the disks. (d73bda7)
When suggesting CAA DNS records (specifying which Certificate Authorities are allowed to sign certificates for a domain), suggest variants that bind to the ACME account ID, and restricts the validation methods to those used by mox. Should prevent MitM close to a machine from requesting TLS certificates through ACME as seen on the internet recently. (db3fef4)
Add config file fields for ACME external account binding (EAB). Some ACME providers require EAB to link an ACME account with a non-ACME account at the provider. With EAB, more ACME providers can be used with mox. (ee1094e)
Implement the PLUS-variants of the SCRAM authentication mechanisms: SCRAM-SHA-256-PLUS and SCRAM-SHA-1-PLUS. The PLUS variants add TLS channel binding: Authentication only succeeds if the client and server are on the same TLS connection. Authentication will fail if there is a MitM (that has a valid TLS certificate). (e7478ed)
Use a mail. CNAME for the SMTP (submission) and IMAP servers of a domain, pointing to the mail server host name. Before, clients were instructed to configure the mail server host name directly, but that makes it harder to migrate the domain to another mail server in the future: All clients would need to update their settings. A CNAME can be pointed to a new server without requiring changes to client settings. (da3ed38)