Thanks for replying. As stated above, there are zero (0) connections, yet Axigen continues to think that there are 100 connections and blocks webmail. I’m running inside of Kubernetes. Traefik (proxy server) receives traffic on port 443 for mail.monach.us and mailadmin.monach.us and then forwards it to the axigen-0 pod on port 80 (which appears to get redirected to 443, which is hyper inefficient, but whatever).
In its failed state (now), any request to Axigen on port 80 redirects to 443 and then gets rejected by Axigen without sending a TLS cert. It just hangs up:
# This is from the proxy server pod
/ $ wget -S 10.76.0.7
Connecting to 10.76.0.7 (10.76.0.7:80)
HTTP/1.1 301 Moved Permanently
Server: Axigen-Webmail
Location: https://10.76.0.7:443
Connecting to 10.76.0.7:443 (10.76.0.7:443)
ssl_client: 10.76.0.7: handshake failed: No error information
wget: error getting response: Connection reset by peer
I went ahead and installed netstat into the Axigen container:
root@axigen-0:/# netstat -an | grep EST | grep ":443" | wc -l
0
root@axigen-0:/# netstat -an | grep EST | grep ":80" | wc -l
0
This appears as the following behavior from outside of the cluster:
➤ openssl s_client -connect mail.monach.us:443 -servername mail.monach.us
Connecting to 104.237.153.229
CONNECTED(00000005)
40AC0EEE01000000:error:0A000126:SSL routines::unexpected eof while reading:ssl/record/rec_layer_s3.c:701:
---
no peer certificate available
---
No client certificate CA names sent
Negotiated TLS1.3 group: <NULL>
---
SSL handshake has read 0 bytes and written 1552 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Protocol: TLSv1.3
This TLS version forbids renegotiation.
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---
40AC0EEE01000000:error:0A000197:SSL routines:SSL_shutdown:shutdown while in init:ssl/ssl_lib.c:2834:
Meanwhile, Axigen logs this:
root@axigen-0:/axigen/var/log# grep WEBMAIL everything.txt | tail -n 10
2026-01-21 17:03:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPController: (simultaneous peer) limits broken for address [10.76.0.206] (limits:{n=100/100,ndt=43/600,dt=47/60})
2026-01-21 17:03:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPListener[0.0.0.0:443]: connection from [10.76.0.206:55422] rejected due to listener-level broken limits
2026-01-21 17:04:27 +0000 04 axigen-0 WEBMAIL:00000000: TCPController: (simultaneous peer) limits broken for address [10.76.0.206] (limits:{n=100/100,ndt=43/600,dt=47/60})
2026-01-21 17:04:27 +0000 04 axigen-0 WEBMAIL:00000000: TCPListener[0.0.0.0:443]: connection from [10.76.0.206:38380] rejected due to listener-level broken limits
2026-01-21 17:04:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPController: (simultaneous peer) limits broken for address [10.76.0.206] (limits:{n=100/100,ndt=43/600,dt=47/60})
2026-01-21 17:04:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPListener[0.0.0.0:443]: connection from [10.76.0.206:41498] rejected due to listener-level broken limits
2026-01-21 17:04:58 +0000 04 axigen-0 WEBMAIL:00000000: TCPController: (simultaneous peer) limits broken for address [10.76.0.206] (limits:{n=100/100,ndt=43/600,dt=47/60})
2026-01-21 17:04:58 +0000 04 axigen-0 WEBMAIL:00000000: TCPListener[0.0.0.0:443]: connection from [10.76.0.206:46846] rejected due to listener-level broken limits
2026-01-21 17:05:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPController: (simultaneous peer) limits broken for address [10.76.0.206] (limits:{n=100/100,ndt=43/600,dt=47/60})
2026-01-21 17:05:34 +0000 04 axigen-0 WEBMAIL:00000000: TCPListener[0.0.0.0:443]: connection from [10.76.0.206:57682] rejected due to listener-level broken limits
So we have zero connections to port 80/443, but axigen thinks there are 100 active connections and rejects everything from the proxy server (10.76.0.206). I can restart Axigen, and it takes ~3h for this queue to fill up and block again.
This was not a problem until I upgraded to 10.6 from 10.5. I’ve been running Axigen for years in this exact same configuration:
➤ k get sts
NAME READY AGE
axigen 1/1 3y364d
After restarting Axigen, the behavior looks like this:
From the proxy-server:
(Note that the IP changed because I restarted axigen. First pass fails because of CN mismatch in cert. This is not the issue, as without this in earlier test, it just dropped the connection instead of showing the error.)
/ $ wget -S 10.76.0.252
Connecting to 10.76.0.252 (10.76.0.252:80)
HTTP/1.1 301 Moved Permanently
Server: Axigen-Webmail
Location: https://10.76.0.252:443
Connecting to 10.76.0.252:443 (10.76.0.252:443)
ssl_client: 10.76.0.252: name `10.76.0.252' not present in server certificate
wget: error getting response: Connection reset by peer
# providing host header resolves CN mismatch
/ $ wget -S --header "Host: mail.monach.us" 10.76.0.252
Connecting to 10.76.0.252 (10.76.0.252:80)
HTTP/1.1 301 Moved Permanently
Server: Axigen-Webmail
Location: https://mail.monach.us:443
Connecting to mail.monach.us:443 (104.237.153.229:443)
HTTP/1.1 200 OK
Server: Axigen-Webmail
Date: Wed, 21 Jan 2026 17:18:59 GMT
Referrer-Policy: no-referrer
Cache-Control: no-cache, no-store, must-revalidate, proxy-revalidate
Pragma: no-cache
Last-Modified: Wed, 21 Jan 2026 17:18:59 GMT
Expires: Wed, 14 Jan 2026 17:18:59 GMT
Content-Type: text/html; charset=utf-8
X-Frame-Options: sameorigin
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
Content-Security-Policy: default-src 'self'; img-src 'self' data:; script-src 'self' 'unsafe-inline' 'unsafe-eval' 'nonce-AXI-SCRIPT-1199624' 'strict-dynamic'; style-src 'self' 'unsafe-inline'
Connection: Close
From the axigen log:
2026-01-21 17:18:59 +0000 08 axigen-0 WEBMAIL:00000021: [10.76.0.252:443] connection accepted from [10.76.0.206:42262]
2026-01-21 17:18:59 +0000 08 axigen-0 WEBMAIL:00000021: <> GET / HTTP/1.1 u= code=200 time=0
2026-01-21 17:18:59 +0000 08 axigen-0 WEBMAIL:00000021: connection closed with [10.76.0.206:42262]
2026-01-21 17:19:36 +0000 08 axigen-0 WEBMAIL:00000029: [10.76.0.252:443] connection accepted from [10.76.0.206:55950]
2026-01-21 17:19:36 +0000 08 axigen-0 WEBMAIL:00000029: <> GET / HTTP/1.1 u= code=200 time=0
2026-01-21 17:19:36 +0000 08 axigen-0 WEBMAIL:00000029: connection closed with [10.76.0.206:55950]
From axigen itself:
root@axigen-0:/# netstat -an | grep EST | grep -E ":(80|443)" | wc -l
1
From the outside:
➤ openssl s_client -connect mail.monach.us:443 -servername mail.monach.us
Connecting to 104.237.153.229
CONNECTED(00000005)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=R13
verify return:1
depth=0 CN=mail.monach.us
verify return:1
---
Certificate chain
0 s:CN=mail.monach.us
i:C=US, O=Let's Encrypt, CN=R13
a:PKEY: RSA, 4096 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Dec 1 22:50:00 2025 GMT; NotAfter: Mar 1 22:49:59 2026 GMT
1 s:C=US, O=Let's Encrypt, CN=R13
i:C=US, O=Internet Security Research Group, CN=ISRG Root X1
a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
v:NotBefore: Mar 13 00:00:00 2024 GMT; NotAfter: Mar 12 23:59:59 2027 GMT
---
In three hours there will be zero (0) real connections to axigen, axigen will report 100 connections in its log, and webmail will be down again.