mirror of
https://github.com/mjl-/mox.git
synced 2025-07-15 16:04:36 +03:00
add config option to disable rate limiting for the webserver, and take a reverse proxy into account when finding the ip to use for webserver ratelimting
another approach i looked at was enabling/disabling rate limiting per web handler. but we want to apply the rate limit as early as possible (not after we've already done quite some work for the request), and with per-handler rate limits on/off the code would be sprinkled with calls to rate limiting. this is probably good enough for now. other protocols are less likely to need this. we were always using the ip address of the connection for rate limiting. but some setups have a reverse proxy in front. if any handler on a http/https port is marked as "forwarded" (with a reverse proxy), we use the ip address from the x-forwarded-for header (like we already did for authentication requests over http). for issue #346
This commit is contained in:
@ -209,12 +209,14 @@ type Listener struct {
|
||||
NonTLS bool `sconf:"optional" sconf-doc:"If set, plain HTTP instead of HTTPS is spoken on the configured port. Can be useful when the mta-sts domain is reverse proxied."`
|
||||
} `sconf:"optional" sconf-doc:"Serve MTA-STS policies describing SMTP TLS requirements. Requires a TLS config."`
|
||||
WebserverHTTP struct {
|
||||
Enabled bool
|
||||
Port int `sconf:"optional" sconf-doc:"Port for plain HTTP (non-TLS) webserver."`
|
||||
Enabled bool
|
||||
Port int `sconf:"optional" sconf-doc:"Port for plain HTTP (non-TLS) webserver."`
|
||||
RateLimitDisabled bool `sconf:"optional" sconf-doc:"Disable rate limiting for all requests to this port."`
|
||||
} `sconf:"optional" sconf-doc:"All configured WebHandlers will serve on an enabled listener."`
|
||||
WebserverHTTPS struct {
|
||||
Enabled bool
|
||||
Port int `sconf:"optional" sconf-doc:"Port for HTTPS webserver."`
|
||||
Enabled bool
|
||||
Port int `sconf:"optional" sconf-doc:"Port for HTTPS webserver."`
|
||||
RateLimitDisabled bool `sconf:"optional" sconf-doc:"Disable rate limiting for all requests to this port."`
|
||||
} `sconf:"optional" sconf-doc:"All configured WebHandlers will serve on an enabled listener. Either ACME must be configured, or for each WebHandler domain a TLS certificate must be configured."`
|
||||
}
|
||||
|
||||
|
@ -514,6 +514,9 @@ See https://pkg.go.dev/github.com/mjl-/sconf for details.
|
||||
# Port for plain HTTP (non-TLS) webserver. (optional)
|
||||
Port: 0
|
||||
|
||||
# Disable rate limiting for all requests to this port. (optional)
|
||||
RateLimitDisabled: false
|
||||
|
||||
# All configured WebHandlers will serve on an enabled listener. Either ACME must
|
||||
# be configured, or for each WebHandler domain a TLS certificate must be
|
||||
# configured. (optional)
|
||||
@ -523,6 +526,9 @@ See https://pkg.go.dev/github.com/mjl-/sconf for details.
|
||||
# Port for HTTPS webserver. (optional)
|
||||
Port: 0
|
||||
|
||||
# Disable rate limiting for all requests to this port. (optional)
|
||||
RateLimitDisabled: false
|
||||
|
||||
# Destination for emails delivered to postmaster addresses: a plain 'postmaster'
|
||||
# without domain, 'postmaster@<hostname>' (also for each listener with SMTP
|
||||
# enabled), and as fallback for each domain without explicitly configured
|
||||
|
Reference in New Issue
Block a user