mox/testdata/web/domains.conf
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

36 lines
732 B
Text

Domains:
mox.example:
LocalpartCaseSensitive: false
ClientSettingsDomain: mail.mox.example
MTASTS:
PolicyID: 1
Mode: enforce
MaxAge: 24h
other.example: nil
Accounts:
mjl:
Domain: mox.example
Destinations:
mjl@mox.example: nil
WebDomainRedirects:
redir.mox.example: mox.example
WebHandlers:
-
LogName: static
Domain: mox.example
PathRegexp: ^/static/
DontRedirectPlainHTTP: true
WebStatic:
StripPrefix: /static/
# This is run from the http package.
Root: ../testdata/web/static
ListFiles: true
ResponseHeaders:
X-Test: mox
-
LogName: adminoverride
Domain: mox.example
PathRegexp: ^/admin/
DontRedirectPlainHTTP: true
WebRedirect:
BaseURL: http://redirect.example