Hi,
While migrating my config from 2.3 to 2.4, I found out that if
instance_name is set to any value (including the default 'dovecot') and I
run "dovecot reload" twice, I get a segmentation fault.
syslog:
dovecot[18272]: segfault at 7fdd23b51442 ip 00007fdd237c4ac6 sp
00007ffd0420caa8 error 4 in libc-2.33.so[7fdd23742000+15e000]
my config:
2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
Pigeonhole version 2.4.1-4 (0a86619f)
OS: Linux 5.15.161-array x86_64 Slackware 15.0
Hostname: my.host.name
dovecot_config_version = 2.4.1
acl_defaults_from_inbox = yes
acl_driver = vfile
acl_globals_only = yes
auth_cache_negative_ttl = 1 hour
auth_cache_ttl = 1 hour
auth_failure_delay = 3 secs
auth_master_user_separator = *
auth_mechanisms = plain login
auth_socket_path = /var/run/dovecot/auth-userdb
auth_username_chars =
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@*
auth_verbose = yes
base_dir = /var/run/dovecot/
debug_log_path = syslog
default_client_limit = 640
default_process_limit = 128
default_vsz_limit = 256M
deliver_log_format = %{message} [msgid=%{msgid}, size=%{size}]
dovecot_storage_version = 2.4.1
first_valid_gid = 10000
first_valid_uid = 10000
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags
imap_logout_format = [session=<%{session}>, in=%{input}, out=%{output}]
imap_max_line_length = 64k
info_log_path = syslog
last_valid_gid = 10999
last_valid_uid = 10999
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
listen = *
login_greeting = IMAP/POP3 daemon
login_log_format = %{message} %{elements}
login_log_format_elements = [user=<%{user}> rip=%{remote_ip}
lip=%{local_ip} session=<%{session}> method=%{mechanism} %{secured}]
mail_log_prefix = "%{service}(%{user}): "
mail_temp_scan_interval = 1 week
mailbox_list_index_very_dirty_syncs = yes
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_logout_format = [session=<%{session}>, in=%{input}, out=%{output}]
pop3_uidl_duplicates = rename
protocols = imap lmtp pop3
rejection_reason = Your message to <%t> was automatically rejected:%n%r
rejection_subject = Rejected: %s
sieve_execute_bin_dir = /var/lib/dovecot/sieve
sieve_global_extensions {
vnd.dovecot.pipe = yes
vnd.dovecot.execute = yes
}
sieve_max_script_size = 1M
sieve_pipe_bin_dir = /var/lib/dovecot/sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_redirect_envelope_from = sender
sql_driver = mysql
ssl_min_protocol = TLSv1
verbose_proctitle = yes
ssl_server {
cert_file = /etc/ssl/certs/server.pem
cert_username_field = commonName
dh_file = /var/lib/dovecot/dh.pem
key_file = /etc/ssl/private/server.key
prefer_ciphers = client
request_client_cert = no
require_crl = yes
}
namespace inbox {
mail_driver = maildir
mail_inbox_path = /srv/vhosts/%{user | domain}/mail/%{user}/INBOX
mail_path = /srv/vhosts/%{user | domain}/mail/%{user}
mailbox_list_layout = fs
hidden = no
inbox = yes
list = yes
prefix =
separator = /
subscriptions = yes
type = private
mailbox INBOX/* {
acl "user=sysadmin@my.host.name" {
rights = lrwstipekxa
}
}
}
maildir {
broken_filename_sizes = yes
copy_with_hardlinks = yes
empty_new = no
stat_dirs = no
very_dirty_syncs = no
}
mbox {
dirty_syncs = yes
dotlock_change_timeout = 2 mins
lazy_writes = yes
lock_timeout = 5 mins
md5 = all
min_index_size = 0
read_locks = fcntl
very_dirty_syncs = no
write_locks = dotlock fcntl
}
mdbox {
preallocate_space = no
rotate_interval = 0
rotate_size = 10M
}
service imap-login {
process_min_avail = 0
restart_request_count = 1
user = $SET:default_login_user
vsz_limit = 256M
inet_listener imap {
port = 143
listen = 127.0.0.1
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
process_min_avail = 0
restart_request_count = 1
user = $SET:default_login_user
vsz_limit = 256M
inet_listener pop3 {
port = 110
listen = 127.0.0.1
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0666
user = postfix
}
}
service imap {
process_limit = 256
vsz_limit = 256M
}
service pop3 {
process_limit = 256
vsz_limit = 256M
}
service auth {
client_limit = 640
user = $SET:default_internal_user
unix_listener auth-userdb {
mode = 0666
}
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
}
service auth-worker {
user = $SET:default_internal_user
}
mysql 127.0.0.1 {
dbname = vhosts
password = # hidden, use -P to show it
user = services
}
passdb sql {
default_password_scheme = CRYPT
driver = sql
query = SELECT u
.password
AS password
, '/srv/vhosts/%{user |
domain }/mail/%{user}' AS userdb_home
, u
.domain
AS userdb_uid
,
u
.domain
AS userdb_gid
FROM users
AS u
LEFT JOIN domains
AS
d
ON u
.domain
= d
.id
WHERE u
.user
= '%{user}' AND
u
.enabled
= '1' AND FIND_IN_SET('U_%{protocol}', u
.permissions
)
AND d
.enabled
= '1' AND FIND_IN_SET('U_%{protocol}', d
.permissions
)
}
passdb passwd:backup {
auth_username_format = %{user}
default_password_scheme = CRYPT
driver = passwd-file
passwd_file_path = /etc/dovecot/auth/passwd:backup
}
passdb passwd:master {
auth_username_format = %{user}
default_password_scheme = CRYPT
driver = passwd-file
master = yes
result_success = continue
passwd_file_path = /etc/dovecot/auth/passwd:master
}
userdb sql {
driver = prefetch
}
userdb passwd:backup {
auth_username_format = %{user}
passwd_file_path = /etc/dovecot/auth/passwd:backup
driver = passwd-file
}
userdb passwd:master {
auth_username_format = %{user}
passwd_file_path = /etc/dovecot/auth/passwd:master
driver = passwd-file
fields {
master_user = %{user}
}
}
protocol imap {
mail_max_userip_connections = 10
mail_plugins {
acl = yes
}
}
protocol pop3 {
mail_max_userip_connections = 10
mail_plugins {
acl = yes
}
}
protocol lda {
mail_plugins {
sieve = yes
}
}
protocol lmtp {
mail_plugins {
sieve = yes
}
}
sieve_script backup {
driver = file
path = /var/lib/dovecot/sieve/backup_%{user | username }.sieve
type = personal
}
mailbox INBOX/Spam {
sieve_script spam {
cause = copy
path = /var/lib/dovecot/sieve/learn_spam.sieve
type = before
}
}
imapsieve_from INBOX/Spam {
sieve_script ham {
cause = copy
path = /var/lib/dovecot/sieve/learn_ham.sieve
type = before
}
}
mailbox INBOX/Junk {
sieve_script spam {
cause = copy
path = /var/lib/dovecot/sieve/learn_spam.sieve
type = before
}
}
imapsieve_from INBOX/Junk {
sieve_script ham {
cause = copy
path = /var/lib/dovecot/sieve/learn_ham.sieve
type = before
}
}
auth_policy {
check_after_auth = no
check_before_auth = yes
hash_mech = sha256
hash_nonce = # hidden, use -P to show it
hash_truncate = 12
log_only = no
reject_on_fail = no
report_after_auth = no
request_attributes {
device_id = %{client_id}
fail_type = %{fail_type}
login = %{requested_username}
protocol = %{protocol}
pwhash = %{hashed_password}
remote = %{remote_ip}
session_id = %{session}
}
server_url = http://127.0.0.1/authpolicy/
}
Thanks, Bogdan