mox/webaccount
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
..
account.go improve http request handling for internal services and multiple domains 2024-05-11 11:13:14 +02:00
account.html add a webapi and webhooks for a simple http/json-based api 2024-04-15 21:49:02 +02:00
account.js make most fields of junk filter configurable by account itself 2024-05-09 22:45:16 +02:00
account.ts make most fields of junk filter configurable by account itself 2024-05-09 22:45:16 +02:00
account_test.go make most fields of junk filter configurable by account itself 2024-05-09 22:45:16 +02:00
api.json make most fields of junk filter configurable by account itself 2024-05-09 22:45:16 +02:00
api.ts make most fields of junk filter configurable by account itself 2024-05-09 22:45:16 +02:00
import.go replace packages slog and slices from golang.org/x/exp with stdlib 2024-02-08 14:49:01 +01:00