This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

2configs.mailserver: complete dovecot 2.4 migration

The previous translation of the dovecot 2.3 plugin/namespace blocks didn't
survive doveconf parsing or the runtime check for virtual namespaces:

- `acl = vfile` is a named-list-filter in 2.4. The driver moved to
top-level `acl_driver`, and per-identifier defaults live in
`acl <identifier> { acl_rights = ...; }` filters keyed on the ACL id
(owner/anyone/user=...). The filter name itself is parsed by
acl_identifier_parse, which is why earlier attempts with `acl vfile`
or `acl primary` failed with "Invalid identifier".
- `acl_shared_dict` was removed; the bot subscribes to shared paths
explicitly so we don't need it.
- Per-namespace `location = "driver:path:opts"` was split into separate
mail_driver / mail_path / mail_index_path settings.
- The virtual namespace also needs `mailbox_list_layout = fs` to override
the global Maildir++ - otherwise dovecot 2.4 refuses to initialise the
namespace, which broke both LMTP delivery and IMAP login.

Verified on neoprism with `doveconf -n` and a live LMTP delivery.

+18 -5
+18 -5
2configs/mailserver.nix
··· 224 224 acl = true; 225 225 }; 226 226 227 - # ACL plugin settings (top-level since dovecot 2.4) 228 - acl = "vfile"; 229 - acl_shared_dict = "file:/var/vmail/shared-mailboxes.db"; 227 + # ACL plugin (dovecot 2.4): `acl_driver` is top-level; per-identifier 228 + # default rights live in `acl <identifier> { acl_rights = ...; }` named 229 + # filters where <identifier> is owner/anyone/authenticated/user=.../etc. 230 + # `acl_shared_dict` was removed; the bot accesses shared mail via 231 + # explicit subscriptions. 232 + acl_driver = "vfile"; 233 + "acl owner" = { 234 + acl_rights = "lrwstipekxa"; 235 + }; 230 236 237 + # In dovecot 2.4 the per-namespace `location = "driver:path:opts"` was 238 + # replaced by separate mail_driver / mail_path / mail_index_path settings. 231 239 "namespace shared" = { 232 240 type = "shared"; 233 241 separator = "."; 234 242 prefix = "shared.%{user | username}."; 235 - location = "maildir:/var/vmail/lassul.us/%{user | username}/mail:LAYOUT=Maildir++"; 243 + mail_driver = "maildir"; 244 + mail_path = "/var/vmail/lassul.us/%{user | username}/mail"; 236 245 subscriptions = false; 237 246 list = "children"; 238 247 }; ··· 240 249 "namespace virtual" = { 241 250 prefix = "virtual."; 242 251 separator = "."; 243 - location = "virtual:/var/vmail/virtual-config:INDEX=/var/vmail/virtual-indexes/%{user}"; 252 + mail_driver = "virtual"; 253 + mail_path = "/var/vmail/virtual-config"; 254 + mail_index_path = "/var/vmail/virtual-indexes/%{user}"; 255 + # virtual storage doesn't support maildir++ layout, override the global 256 + mailbox_list_layout = "fs"; 244 257 subscriptions = false; 245 258 "mailbox Unread".auto = "subscribe"; 246 259 "mailbox All".auto = "subscribe";