Hi, I know that a lot of work has been done regarding doveadm server, but I'm still experiencing easily reproducible segfault crashes of doveadm-server with 2.1.16 when running the following command in a 4 node director/mailbox cluster:
/usr/bin/doveadm -c /etc/dovecot-director/dovecot-director.conf -D purge -A The dovecot-error.log shows the following errors (addresses anonymized): Apr 29 15:45:14 10.129.3.233 dovecot: doveadm: Error: purge: invalid option -- '' Apr 29 15:45:14 10.129.3.233 dovecot: doveadm(x.xxx...@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.233 dovecot: doveadm: Error: purge: invalid option -- '�' Apr 29 15:45:14 10.129.3.233 dovecot: doveadm(x.xxx...@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- '�' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(x.xxx...@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- 'r' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(x.xxx...@xxx-xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'e' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xx...@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'g' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xx...@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- 'e' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xx...@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm: Error: purge: invalid option -- '-' Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xx...@xxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.249 dovecot: doveadm: Error: purge: invalid option -- '' Apr 29 15:45:14 10.129.3.249 dovecot: doveadm(xxxxxxx...@xxxxxxxxxx.xx): Error: doveadm purge: Client sent unknown parameter: ? Apr 29 15:45:14 10.129.3.213 dovecot: doveadm(xx...@xxxxxx.xx): Fatal: master: service(doveadm): child 6316 killed with signal 11 (core dumped) There seems to something wrong with the doveadm command parser: # gdb /usr/lib/dovecot/doveadm-server /var/tmp/6316 (gdb) bt full #0 0x00007f52f0dc7cca in ?? () from /lib/libc.so.6 No symbol table info available. #1 0x00007f52f0dc8dab in ?? () from /lib/libc.so.6 No symbol table info available. #2 0x00007f52f0dc8e18 in getopt () from /lib/libc.so.6 No symbol table info available. #3 0x00000000004138ce in doveadm_mail_cmd_server_parse (conn=0xe09ad0) at client-connection.c:69 getopt_args = 0xdfa6b8 "AS:u:" c = <value optimized out> cmd = 0xe062c8 add_username_header = false #4 client_handle_command (conn=0xe09ad0) at client-connection.c:223 ctx = 0xe0dae0 flags = <value optimized out> cmd_name = <value optimized out> input = {module = 0x0, service = 0x4210f0 "doveadm", username = 0xdfa59a "xxxx...@xxxxxxxx.xx", session_id = 0x0, local_ip = {family = 0, u = {ip6 = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, remote_ip = {family = 0, u = {ip6 = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, ip4 = {s_addr = 0}}}, local_port = 0, remote_port = 0, userdb_fields = 0x0, flags_override_add = 0, flags_override_remove = 0, no_userdb_lookup = 0} argc = <value optimized out> #5 client_connection_input (conn=0xe09ad0) at client-connection.c:326 args = <value optimized out> _data_stack_cur_id = 3 line = <value optimized out> ok = <value optimized out> #6 0x00007f52f10e6166 in io_loop_call_io (io=0xe097e0) at ioloop.c:379 ioloop = 0xe026a0 t_id = 2 #7 0x00007f52f10e71ef in io_loop_handler_run (ioloop=<value optimized out>) at ioloop-epoll.c:213 ctx = 0xe054f0 event = 0xe05560 list = 0xe09950 io = 0xdfa5c8 tv = {tv_sec = 2147483, tv_usec = 0} msecs = <value optimized out> ret = <value optimized out> i = 0 call = false #8 0x00007f52f10e6108 in io_loop_run (ioloop=0xe026a0) at ioloop.c:398 No locals. #9 0x00007f52f10d15a3 in master_service_run (service=0xe02550, callback=0) at master-service.c:544 No locals. #10 0x0000000000414111 in main (argc=1, argv=0xe02370) at main.c:90 set_roots = {0x422780, 0x0} error = 0x0 Regards Daniel -- https://plus.google.com/103021802792276734820
# 2.1.16: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-46-server x86_64 Ubuntu 10.04.4 LTS auth_cache_negative_ttl = 0 auth_cache_size = 10 M auth_cache_ttl = 1 mins auth_verbose = yes auth_verbose_passwords = sha1 deliver_log_format = mailbox: deliver: msgid=%m from=%f: %$ dict { quota = mysql:/etc/dovecot/conf.d/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no doveadm_password = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa imapc_features = rfc822.size imapc_host = local-mailbox imapc_port = 18143 instance_name = dovecot-mailbox lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes login_greeting = Mailbox login_log_format = mailbox: login: %$: %s login_trusted_networks = 10.129.3.0/24 mail_debug = yes mail_fsync = always mail_gid = vmail mail_home = /mail/dovecot/%d/%n mail_location = mdbox:~/mail mail_log_prefix = "mailbox: mail: %s(%u): <%{session}>: " mail_plugins = quota stats mail_privileged_group = vmail mail_uid = vmail managesieve_implementation_string = Sieve managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave vnd.dovecot.duplicate mdbox_rotate_interval = 1 weeks mdbox_rotate_size = 50 M mmap_disable = yes namespace { inbox = yes location = mailbox Archives { special_use = \Archive } mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = separator = / type = private } passdb { args = /etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } plugin { quota = dict:User quota::proxy::quota quota_rule = *:storage=10G quota_rule2 = Trash:storage=+100M quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_extensions = +vnd.dovecot.duplicate stats_refresh = 30 secs stats_track_cmds = yes } protocols = imap pop3 lmtp sieve service auth { unix_listener auth-userdb { group = dovecot user = dovecot } } service dict { unix_listener dict { group = vmail mode = 0660 } } service doveadm { inet_listener doveadm-server { port = 19000 } } service imap-login { inet_listener imap { port = 19143 } } service imap-postlogin { executable = script-login /usr/local/bin/dovecot-postlogin user = $default_internal_user } service imap { executable = imap imap-postlogin } service lmtp { inet_listener lmtp-without-quota { address = * port = 19025 } inet_listener lmtp { address = * port = 19024 } } service managesieve-login { inet_listener sieve { port = 19200 } } service pop3-login { inet_listener pop3 { port = 19110 } } service pop3-postlogin { executable = script-login /usr/local/bin/dovecot-postlogin user = $default_internal_user } service pop3 { executable = pop3 pop3-postlogin } service quota-warning { executable = script /usr/local/bin/quota-warning extra_groups = dovecot unix_listener quota-warning { user = vmail } user = vmail } service stats { fifo_listener stats-mail { mode = 0600 user = vmail } } ssl = no syslog_facility = local1 userdb { driver = prefetch } userdb { args = /etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } verbose_proctitle = yes protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep mail_plugins = quota stats imap_quota imap_stats } protocol lmtp { mail_plugins = quota stats sieve }
# 2.1.16: /etc/dovecot-director/dovecot-director.conf # OS: Linux 2.6.32-46-server x86_64 Ubuntu 10.04.4 LTS auth_verbose = yes auth_verbose_passwords = sha1 base_dir = /var/run/dovecot-director deliver_log_format = director: deliver: msgid=%m from=%f: %$ director_doveadm_port = 20000 director_mail_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190 director_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190 director_user_expire = 2 days disable_plaintext_auth = no doveadm_password = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa doveadm_proxy_port = 19000 instance_name = dovecot-director lmtp_proxy = yes login_greeting = Mail Balancer login_log_format = director: login: %$: %s login_trusted_networks = 10.129.3.0/24 mail_debug = yes mail_fsync = always mail_gid = vmail mail_home = /mail/dovecot/%d/%n mail_location = mdbox:~/mail mail_log_prefix = "director: mail: %s(%u): <%{session}>: " mail_max_userip_connections = 20 mail_privileged_group = vmail mail_uid = vmail managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave mmap_disable = yes passdb { args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext driver = sql } protocols = imap pop3 lmtp sieve service auth { unix_listener auth-userdb { user = dovecot } } service director { fifo_listener login/proxy-notify { mode = 0666 } inet_listener { port = 9090 } unix_listener director-userdb { mode = 0600 } unix_listener login/director { mode = 0666 } } service doveadm { executable = doveadm-server director inet_listener doveadm-server { port = 20000 } } service imap-login { executable = imap-login director inet_listener imap { port = 20143 } inet_listener imaps { port = 20993 ssl = yes } } service ipc { unix_listener ipc { user = dovecot } } service lmtp { inet_listener lmtp-without-quota { address = * port = 20025 } inet_listener lmtp { address = * port = 20024 } } service managesieve-login { executable = managesieve-login director inet_listener sieve { port = 20200 } } service pop3-login { executable = pop3-login director inet_listener pop3 { port = 20110 } inet_listener pop3s { port = 20995 ssl = yes } } ssl_cert = </etc/certs/wildcard.net.crt ssl_key = </etc/certs/wildcard.net.key syslog_facility = local2 userdb { driver = prefetch } userdb { args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext driver = sql } verbose_proctitle = yes protocol lmtp { auth_socket_path = director-userdb } protocol sieve { auth_socket_path = director-userdb } protocol doveadm { auth_socket_path = director-userdb } protocol imap { imap_client_workarounds = delay-newmail tb-extra-mailbox-sep }