mox/mox-
Mechiel Lukkien 614576e409
improve http request handling for internal services and multiple domains
per listener, you could enable the admin/account/webmail/webapi handlers. but
that would serve those services on their configured paths (/admin/, /,
/webmail/, /webapi/) on all domains mox would be webserving, including any
non-mail domains. so your www.example/admin/ would be serving the admin web
interface, with no way to disabled that.

with this change, the admin interface is only served on requests to (based on
Host header):
- ip addresses
- the listener host name (explicitly configured in the listener, with fallback
  to global hostname)
- "localhost" (for ssh tunnel/forwarding scenario's)

the account/webmail/webapi interfaces are served on the same domains as the
admin interface, and additionally:
- the client settings domains, as optionally configured in each Domain in
  domains.conf. typically "mail.<yourdomain>".

this means the internal services are no longer served on other domains
configured in the webserver, e.g. www.example.org/admin/ will not be handled
specially.

the order of evaluation of routes/services is also changed:
before this change, the internal handlers would always be evaluated first.
with this change, only the system handlers for
MTA-STS/autoconfig/ACME-validation will be evaluated first. then the webserver
handlers. and finally the internal services (admin/account/webmail/webapi).
this allows an admin to configure overrides for some of the domains (per
hostname-matching rules explained above) that would normally serve these
services.

webserver handlers can now be configured that pass the request to an internal
service: in addition to the existing static/redirect/forward config options,
there is now an "internal" config option, naming the service
(admin/account/webmail/webapi) for handling the request. this allows enabling
the internal services on custom domains.

for issue #160 by TragicLifeHu, thanks for reporting!
2024-05-11 11:13:14 +02:00
..
admin.go use shorter smtp.NewAddress() instead of smtp.Address{...} 2024-05-09 21:26:22 +02:00
cid.go add basic webserver that can do most of what i need 2023-02-28 22:19:24 +01:00
config.go improve http request handling for internal services and multiple domains 2024-05-11 11:13:14 +02:00
dir.go mox! 2023-01-30 14:27:06 +01:00
dkimsign.go expose fewer internals in packages, for easier software reuse 2023-12-14 15:39:36 +01:00
doc.go mox! 2023-01-30 14:27:06 +01:00
fill.go add a webapi and webhooks for a simple http/json-based api 2024-04-15 21:49:02 +02:00
forkexec_unix.go replace packages slog and slices from golang.org/x/exp with stdlib 2024-02-08 14:49:01 +01:00
forkexec_windows.go fix build for windows 2024-01-01 16:08:50 +01:00
ip.go mox! 2023-01-30 14:27:06 +01:00
lastknown.go mox! 2023-01-30 14:27:06 +01:00
lifecycle.go switch to slog.Logger for logging, for easier reuse of packages by external software 2023-12-14 13:45:52 +01:00
lifecycle_test.go add funtionality to import zip/tgz with maildirs/mboxes to account page 2023-02-16 09:57:27 +01:00
limitauth.go change mox to start as root, bind to network sockets, then drop to regular unprivileged mox user 2023-02-27 12:19:55 +01:00
localserve.go add a webapi and webhooks for a simple http/json-based api 2024-04-15 21:49:02 +02:00
lookup.go add aliases/lists: when sending to an alias, the message gets delivered to all members 2024-04-24 19:15:30 +02:00
msgid.go fix bug with concurrent math/rand.Rand.Read 2023-11-09 17:17:26 +01:00
rand.go don't expose functions on the prng that aren't mutex-protected 2024-03-07 10:05:35 +01:00
recvid.go mox! 2023-01-30 14:27:06 +01:00
safeheaders.go improve http request handling for internal services and multiple domains 2024-05-11 11:13:14 +02:00
sleep.go mox! 2023-01-30 14:27:06 +01:00
tlsrecv.go replace packages slog and slices from golang.org/x/exp with stdlib 2024-02-08 14:49:01 +01:00
webappfile.go show goversion and goos/goarch on admin page 2024-03-11 08:58:40 +01:00