Dovecot 2.4.1 last-login configuration pattern: Unknown setting: pattern (dict_map_key_field_pattern or dict_map_key_field_service_pattern not found either.)
Hello,
I am trying to configure last-login plugin for dovecot 2.4.1 and
getting the following error.
doveconf -n
2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
Pigeonhole version 2.4.1-4 (0a86619f)
doveconf: Fatal: Error in configuration file
/etc/dovecot/conf.d/30-lastlogin.conf line 24: pattern: Unknown
setting: pattern (dict_map_key_field_pattern or
dict_map_key_field_service_pattern not found either.)
I am using the example config from the dovecot 2.4 documentation.
https://doc.dovecot.org/2.4.0/core/plugins/last_login.html#mysql-example
Is this a bug in the config parser or in the example config?
doveconf -n output with pattern lines in 30-lastlogin.conf commented:
2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
Pigeonhole version 2.4.1-4 (0a86619f)
OS: Linux 6.12.27-amd64 x86_64 Debian 13.0
Hostname: debian.dg4yfa.org
4 default setting changes since version 2.4.0
dovecot_config_version = 2.4.0 auth_mechanisms = plain login auth_username_format = %{user|username|lower} dovecot_storage_version = 2.4.0 first_valid_uid = 1000 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes imapsieve_url = sieve://127.0.0.1:4190 language_filters = normalizer-icu snowball stopwords language_tokenizers = generic email-address last_valid_uid = 65530 lda_mailbox_autocreate = yes mail_driver = maildir mail_inbox_path = ~/Maildir/.INBOX mail_path = ~/Maildir mail_plugins { virtual = yes fts = yes fts_flatcurve = yes quota = yes } mail_privileged_group = mail protocols { imap = yes lmtp = yes sieve = yes pop3 = yes } quota_storage_size = 1G sieve_execute_bin_dir = /usr/share/dovecot-pigeonhole/sieve sieve_global_extensions { vnd.dovecot.pipe = yes vnd.dovecot.execute = yes } sieve_pipe_bin_dir = /usr/share/dovecot-pigeonhole/sieve sieve_plugins = sieve_imapsieve sieve_extprograms passdb pam { } userdb passwd { result_failure = return-fail result_success = continue } userdb passwd-file { auth_username_format = %{user | username} passwd_file_path = /etc/dovecot/users driver = passwd-file result_failure = return-ok result_internalfail = continue } namespace inbox { inbox = yes mailbox Drafts { special_use = "\\Drafts" } mailbox Entw&APw-rfe { special_use = "\\Drafts" } mailbox Junk { special_use = "\\Junk" } mailbox Spam { special_use = "\\Junk" } mailbox Trash { special_use = "\\Trash" quota_storage_extra = 100M } mailbox Sent { special_use = "\\Sent" } mailbox "Sent Messages" { special_use = "\\Sent" } } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } service submission-login { inet_listener submission { } inet_listener submissions { } } service lmtp { unix_listener lmtp { } } service imap { } service pop3 { } service submission { } service auth { unix_listener auth-userdb { } } service auth-worker { } service dict { unix_listener dict { } } ssl_server { cert_file = /etc/dovecot/private/dovecot.pem key_file = /etc/dovecot/private/dovecot.key } protocol lda { mail_plugins { sieve = yes } } namespace virtual { mail_driver = virtual mail_path = ~/Maildir/virtual prefix = virtual. separator = . } protocol imap { mail_plugins { imap_sieve = yes virtual = yes imap_quota = yes last_login = yes } } protocol lmtp { auth_username_format = %{user | username | lower} mail_plugins { sieve = yes } } service managesieve-login { inet_listener sieve { port = 4190 } inet_listener sieve_deprecated { port = 2000 } } service managesieve { } last_login { key = # hidden, use -P to show it precision = ms dict proxy { name = sql } } dict_server { dict sql { sql_driver = mysql mysql localhost { dbname = vmail password = # hidden, use -P to show it user = vmail } dict_map "shared/last-login/$service/$user/$remote_ip" { sql_table = last_login dict_map_value_field last_access { type = uint } dict_map_key_field service { } dict_map_key_field userid { } dict_map_key_field last_ip { } } } } language de { filters = lowercase snowball } language en { default = yes filters = lowercase snowball english-possessive stopwords } fts flatcurve { substring_search = yes } quota "User quota" { driver = count quota_warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } quota_warning warn-80 { quota_storage_percentage = 80 execute quota-warning { args = 80 %{user} } } } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = dovecot unix_listener quota-warning { user = Debian-exim } } sieve_script personal { active_path = ~/.dovecot.sieve driver = file path = ~/sieve } sieve_script default { driver = file name = default path = /etc/dovecot/sieve/default/ type = default } mailbox Spam { sieve_script report-spam { cause = copy path = /usr/lib/dovecot/sieve/report-spam.sieve type = before } } imapsieve_from Spam { sieve_script report-ham { cause = copy path = /usr/lib/dovecot/sieve/report-ham.sieve type = before } }
Thank you, Michael
-- Michael Borgelt Email: mborgelt@borgelt.org
participants (1)
-
Michael Borgelt