Replies: 6 comments 2 replies
-
You need to disable the proxy protocol globally and set it on each listener that requires it using proxy.override = true |
Beta Was this translation helpful? Give feedback.
-
That’s what I tried. Didn’t work. That’s why I filed a bug. |
Beta Was this translation helpful? Give feedback.
-
Make sure the |
Beta Was this translation helpful? Give feedback.
-
I used the webadmin to turn off the proxy network. Confirmed it’s not in the config file. Turned of proxy for all listeners Confirmed they’re not in the config file. Turned them all on again and re-added proxy to each in case they’re not in the database. Reloaded, still no joy. Restarted, still no joy.
|
Beta Was this translation helpful? Give feedback.
-
Just checked the code and an array is expected, try with: server.listener.submission.proxy.trusted-networks.0 = "10.0.0.0/8" |
Beta Was this translation helpful? Give feedback.
-
I think this should be filed as a bug; should I make a new one? |
Beta Was this translation helpful? Give feedback.
-
What happened?
Thanks for building this project! I have high hopes of migrating my existing mail to it.
I have a single instance of stalwart running in a k8s cluster. The cluster is behind haproxy and uses an ingress for HTTP/HTTPS and TLS termination. HaProxy sends SMTP, IMAP, et al directly to stalwart (bypassing ingress-nginx), and sends proxy protocol to those.
When I configure stalwart’s listeners to use proxy protocol thusly (with an app restart to make sure it’s loaded):
It ignores the configuration, and when I try to connect, you can see it doesn’t decode the proxy protocol:
Here’s what’s in the log:
If I change the server to use proxy protocol by adding this and restarting:
The connections to most of the listeners work perfectly. But the HTTP listener now expects to use proxy protocol (which is being consumed by ingress-nginx), and there’s nothing I can do to disable proxy protocol on just the HTTP listener (setting
server.listener.http.proxy.override = false
or changing thetrusted-networks
has no effect).So I can either get a functioning HTTP listener, or all the others can work. But not both.
How can we reproduce the problem?
I can reproduce the problem by doing the following steps:
proxy.override
and for the non-http servicesproxy.trusted-networks
Version
v0.9.x
What database are you using?
RocksDB
What blob storage are you using?
RocksDB
Where is your directory located?
Internal
What operating system are you using?
Docker
Relevant log output
No response
Code of Conduct
Beta Was this translation helpful? Give feedback.
All reactions