|
|
@@ -46,6 +46,22 @@ test('Compose delegates public IMAP and POP3 ports to rootless Dovecot', () => {
|
|
|
assert.match(compose, /doveadm service status imap-login pop3-login/);
|
|
|
});
|
|
|
|
|
|
+test('MailHub app healthcheck allows slow production startup before Dovecot depends on it', () => {
|
|
|
+ assert.match(appService, /healthcheck:[\s\S]*interval: 30s/);
|
|
|
+ assert.match(appService, /healthcheck:[\s\S]*retries: 4/);
|
|
|
+ assert.match(appService, /healthcheck:[\s\S]*start_period: 120s/);
|
|
|
+ assert.match(dovecotService, /condition: service_healthy/);
|
|
|
+});
|
|
|
+
|
|
|
+test('Dovecot and app defaults stay modest on low-resource mail hosts', () => {
|
|
|
+ assert.match(appService, /UV_THREADPOOL_SIZE: \$\{UV_THREADPOOL_SIZE:-2\}/);
|
|
|
+ assert.match(envExample, /^UV_THREADPOOL_SIZE=2$/m);
|
|
|
+ assert.match(mailConfig, /service imap-login \{[\s\S]*process_min_avail = 1/);
|
|
|
+ assert.match(mailConfig, /service imap-login \{[\s\S]*process_limit = 24/);
|
|
|
+ assert.match(mailConfig, /service pop3-login \{[\s\S]*process_min_avail = 0/);
|
|
|
+ assert.match(mailConfig, /service pop3-login \{[\s\S]*process_limit = 8/);
|
|
|
+});
|
|
|
+
|
|
|
test('Dovecot uses Lua passdb, a static rootless userdb, and Maildir storage', () => {
|
|
|
assert.match(authConfig, /passdb lua \{/);
|
|
|
assert.match(authConfig, /SUBMISSION_TLS_CERT = %\{env:SUBMISSION_TLS_CERT\}/);
|