mailu
Mail — Mailu, with its provisioner (the smtp provision) and tools, on the tool runtime.
Settings
A definition names no mesh (novox/hq ADR 0112, ADR 0155), so the values that are this
installation's are settings on the assignment, settings set mailu <file>:
{"domain": "…", "sitename": "…", "website": "https://…", "proxy-address": "…"}
domain is the mail domain (also the provisioner's, for a consumer's address); sitename and
website are shown by the web front; proxy-address is what REAL_IP_FROM trusts a real-IP
header from — the address the proxy forwards with. The front's own hostname is the name of its
web route, told to it by the mesh.
Mail client autoconfiguration
mailu-automx answers what mail clients ask for their settings (Thunderbird, Outlook, Apple) for the domains in
AMX_MAIL_DOMAINS, naming the IMAP and SMTP servers and ports of mailu's environment (AMX_IMAP_ADDRESS,
AMX_IMAP_PORT, AMX_SMTP_ADDRESS, AMX_SMTP_PORT). It is cmd/automx, a Go program of the standard library
only in this module's go.mod (ADR 0480 clauses 1, 2, 9). It runs in the mirrored alpine image the route proxy's
trust step runs, from the program-automx archive mounted read-only at /opt/mesh; the container is restarted
with the archive and with mailu.env, which the program reads at each start. It keeps no database. The file the
Python automx kept in data-automx is left where it is on the machine, not deleted by the mesh (ADR 0480
clause 10). The answers it gave before are the fixtures in cmd/automx/testdata/captured, with how they were
taken (CAPTURED) and what the program answers differently (DIFFERENCES).
Files it does not know
Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).
${dir:mesh-state}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:state}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:grants}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).- the archive
program-automx(${dir:state}/automx): everything in it is the program's; the mesh moves nothing out (ADR 0422 §2). ${dir:data-certs}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-data}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-dkim}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-mail}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-mailqueue}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-filter}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-clamav}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-redis}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-webmail}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-dav}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-fetchmail}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-overrides-nginx}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-overrides-dovecot}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-overrides-postfix}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-overrides-rspamd}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).${dir:data-overrides-roundcube}: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).