dovecot/lmtp dumps core when proxying to multiple recipients via protocol=smtp
Hello,
when trying to set up a migration scenario from my old mailbox-servers to my new dovecot-cluster, I get a coredump from dovecot/lmtp when proxying mail-delivery to more than one recipient on the old mailbox-server.
My setup:
3 director-hosts (Debian stretch) are proxying to a pair of replicator-hosts and during migration also to the old mailbox-server. For migration the not-migrated user-addresses are included via a passwd-file with entries like:
grtest1@hrz.uni-marburg.de:::::::director_tag=hrz protocol=smtp user=grtest1 grtest2@hrz.uni-marburg.de:::::::director_tag=hrz protocol=smtp user=grtest2 ...
The director_tag points to the old mailbox-server, with 'protocol=smtp' SMTP is used for delivery, as the old machine is not capable of LMTP.
The setup works fine for imap-proxying and for mail-delivery to single recipients. But if a mail is addressed to more than one recipient, lmtp produces a coredump after delivering to all recipients.
The error-message in the log is:
Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): Connect from 127.0.0.1 Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): 206UIrlNZVyX/AAAGwthQA: Sent message to <grtest2> at 137.248.xxx.yyy:25: 250 2.0.0 x1EBF5Ro016092 Message accepted for delivery (1/2 at 79 ms) Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): 206UIrlNZVyX/AAAGwthQA: Sent message to <grtest2> at 137.248.xxx.yyy:25: 250 2.0.0 x1EBF5Ro016092 Message accepted for delivery (2/2 at 79 ms) Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): Fatal: master: service(lmtp): child 64663 killed with signal 11 (core dumped)
The backtrace from the coredump is:
Reading symbols from /usr/lib/dovecot/lmtp...(no debugging symbols found)...done. [New LWP 64663] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `dovecot/lmtp'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f347fc7a2c0 in ?? () from /usr/lib/dovecot/libdovecot.so.0 (gdb) bt full #0 0x00007f347fc7a2c0 in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #1 0x00007f347fc77d73 in smtp_client_command_fail_reply () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #2 0x00007f347fc77fbe in smtp_client_commands_list_fail_reply () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #3 0x00007f347fc7c8dc in smtp_client_connection_disconnect () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #4 0x00007f347fc7cf19 in smtp_client_connection_unref () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #5 0x00007f347fc7e35d in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #6 0x00007f347fd1f5d5 in io_loop_call_io () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #7 0x00007f347fd20fd9 in io_loop_handler_run_internal () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #8 0x00007f347fd1f6e6 in io_loop_handler_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #9 0x00007f347fd1f8f8 in io_loop_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #10 0x00007f347fc93d43 in master_service_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #11 0x00005613fcbc1f70 in main () No symbol table info available. (gdb)
doveconf -n gives:
# 2.3.4.1 (3c0b8769e): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.4 (60b0f48d) # OS: Linux 4.9.0-8-amd64 x86_64 Debian 9.7 # Hostname: vhrzxxx.HRZ.Uni-Marburg.DE auth_cache_negative_ttl = 0 auth_cache_size = 10 M auth_master_user_separator = * auth_worker_max_count = 1024 base_dir = /var/run/dovecot/ default_vsz_limit = 1 G director_mail_servers = 172.25.1.93 172.25.1.95 137.248.xxx.yyy@hrz 137.248.xxx.zzz@staff 137.248.aaa.bbb@students director_servers = 172.25.1.42:9090 172.25.1.41:9090 172.25.1.92:9090 director_username_hash = %Ln@%Ld doveadm_password = # hidden, use -P to show it doveadm_port = 12345 imap_max_line_length = 640 k lmtp_proxy = yes 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 index ihave duplicate mime foreverypart extracttext passdb { args = /etc/dovecot.deny deny = yes driver = passwd-file } passdb { args = /etc/dovecot/private/passwd.masterusers driver = passwd-file master = yes } passdb { args = /etc/dovecot/dovecot-ldap.staff.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-staff driver = passwd-file name = passdb_staff_query } passdb { args = /etc/dovecot/dovecot-ldap.students.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-students driver = passwd-file name = passdb_students_query } passdb { args = /etc/dovecot/dovecot-ldap.hrz.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-hrz driver = passwd-file name = passdb_hrz_query } plugin { sieve = file:~/sieve;active=~/.dovecot.sieve } pop3_uidl_format = %08Xv%08Xu postmaster_address = postmaster@hrz.uni-marburg.de protocols = imap pop3 lmtp sieve service auth-worker { user = $default_internal_user } service auth { client_limit = 6000 } service director { inet_listener { port = 9090 } unix_listener director-userdb { mode = 0600 } unix_listener login/director { mode = 0666 } } service doveadm { inet_listener { port = 12345 } vsz_limit = 768 M } service imap-login { executable = imap-login director process_min_avail = 64 service_count = 0 } service imap { process_limit = 4096 } service lmtp { inet_listener lmtp { port = 24 } } service managesieve-login { executable = managesieve-login director inet_listener sieve { port = 4190 } } service pop3-login { executable = pop3-login director } ssl = required ssl_ca = </etc/ssl/certs/umr-chain.pem ssl_cert = </etc/ssl/certs/vhrzxxx.hrz.uni-marburg.de.pem ssl_client_ca_dir = /etc/ssl/certs ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it ssl_require_crl = no userdb { args = /etc/dovecot/dovecot-ldap-userdb.conf.ext driver = ldap } protocol lmtp { auth_socket_path = director-userdb } protocol doveadm { auth_socket_path = director-userdb } protocol imap { mail_max_userip_connections = 25 mail_plugins = " zlib imap_zlib" }
I would appreciate any help on this. If any more information is needed, please ask.
With many thanks and best regards, Andreas
Dr. Andreas Piper, Hochschulrechenzentrum der Philipps-Univ. Marburg Hans-Meerwein-Straße 6, 35032 Marburg, Germany Phone: +49 6421 28-23521 Fax: -26994 E-Mail: piper@HRZ.Uni-Marburg.DE
Hello,
is there already any idea on this topic? Do you need additional information?
I would appreciate any input, as my migration scenario depends on this.
With many thanks and best regards, Andreas
-------- Weitergeleitete Nachricht -------- Betreff: dovecot/lmtp dumps core when proxying to multiple recipients via protocol=smtp Datum: Thu, 14 Feb 2019 13:53:07 +0100 Von: Piper Andreas via dovecot <dovecot@dovecot.org> Antwort an: Piper Andreas <piper@hrz.Uni-Marburg.DE> An: dovecot@dovecot.org
Hello,
when trying to set up a migration scenario from my old mailbox-servers to my new dovecot-cluster, I get a coredump from dovecot/lmtp when proxying mail-delivery to more than one recipient on the old mailbox-server.
My setup:
3 director-hosts (Debian stretch) are proxying to a pair of replicator-hosts and during migration also to the old mailbox-server. For migration the not-migrated user-addresses are included via a passwd-file with entries like:
grtest1@hrz.uni-marburg.de:::::::director_tag=hrz protocol=smtp user=grtest1 grtest2@hrz.uni-marburg.de:::::::director_tag=hrz protocol=smtp user=grtest2 ...
The director_tag points to the old mailbox-server, with 'protocol=smtp' SMTP is used for delivery, as the old machine is not capable of LMTP.
The setup works fine for imap-proxying and for mail-delivery to single recipients. But if a mail is addressed to more than one recipient, lmtp produces a coredump after delivering to all recipients.
The error-message in the log is:
Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): Connect from 127.0.0.1 Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): 206UIrlNZVyX/AAAGwthQA: Sent message to <grtest2> at 137.248.xxx.yyy:25: 250 2.0.0 x1EBF5Ro016092 Message accepted for delivery (1/2 at 79 ms) Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): 206UIrlNZVyX/AAAGwthQA: Sent message to <grtest2> at 137.248.xxx.yyy:25: 250 2.0.0 x1EBF5Ro016092 Message accepted for delivery (2/2 at 79 ms) Feb 14 12:15:05 vhrzxxx dovecot[63861]: lmtp(64663): Fatal: master: service(lmtp): child 64663 killed with signal 11 (core dumped)
The backtrace from the coredump is:
Reading symbols from /usr/lib/dovecot/lmtp...(no debugging symbols found)...done. [New LWP 64663] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Core was generated by `dovecot/lmtp'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f347fc7a2c0 in ?? () from /usr/lib/dovecot/libdovecot.so.0 (gdb) bt full #0 0x00007f347fc7a2c0 in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #1 0x00007f347fc77d73 in smtp_client_command_fail_reply () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #2 0x00007f347fc77fbe in smtp_client_commands_list_fail_reply () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #3 0x00007f347fc7c8dc in smtp_client_connection_disconnect () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #4 0x00007f347fc7cf19 in smtp_client_connection_unref () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #5 0x00007f347fc7e35d in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #6 0x00007f347fd1f5d5 in io_loop_call_io () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #7 0x00007f347fd20fd9 in io_loop_handler_run_internal () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #8 0x00007f347fd1f6e6 in io_loop_handler_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #9 0x00007f347fd1f8f8 in io_loop_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #10 0x00007f347fc93d43 in master_service_run () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #11 0x00005613fcbc1f70 in main () No symbol table info available. (gdb)
doveconf -n gives:
# 2.3.4.1 (3c0b8769e): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.4 (60b0f48d) # OS: Linux 4.9.0-8-amd64 x86_64 Debian 9.7 # Hostname: vhrzxxx.HRZ.Uni-Marburg.DE auth_cache_negative_ttl = 0 auth_cache_size = 10 M auth_master_user_separator = * auth_worker_max_count = 1024 base_dir = /var/run/dovecot/ default_vsz_limit = 1 G director_mail_servers = 172.25.1.93 172.25.1.95 137.248.xxx.yyy@hrz 137.248.xxx.zzz@staff 137.248.aaa.bbb@students director_servers = 172.25.1.42:9090 172.25.1.41:9090 172.25.1.92:9090 director_username_hash = %Ln@%Ld doveadm_password = # hidden, use -P to show it doveadm_port = 12345 imap_max_line_length = 640 k lmtp_proxy = yes 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 index ihave duplicate mime foreverypart extracttext passdb { args = /etc/dovecot.deny deny = yes driver = passwd-file } passdb { args = /etc/dovecot/private/passwd.masterusers driver = passwd-file master = yes } passdb { args = /etc/dovecot/dovecot-ldap.staff.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-staff driver = passwd-file name = passdb_staff_query } passdb { args = /etc/dovecot/dovecot-ldap.students.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-students driver = passwd-file name = passdb_students_query } passdb { args = /etc/dovecot/dovecot-ldap.hrz.conf.ext driver = ldap result_success = continue-ok } passdb { args = /etc/dovecot/migration/migrate-hrz driver = passwd-file name = passdb_hrz_query } plugin { sieve = file:~/sieve;active=~/.dovecot.sieve } pop3_uidl_format = %08Xv%08Xu postmaster_address = postmaster@hrz.uni-marburg.de protocols = imap pop3 lmtp sieve service auth-worker { user = $default_internal_user } service auth { client_limit = 6000 } service director { inet_listener { port = 9090 } unix_listener director-userdb { mode = 0600 } unix_listener login/director { mode = 0666 } } service doveadm { inet_listener { port = 12345 } vsz_limit = 768 M } service imap-login { executable = imap-login director process_min_avail = 64 service_count = 0 } service imap { process_limit = 4096 } service lmtp { inet_listener lmtp { port = 24 } } service managesieve-login { executable = managesieve-login director inet_listener sieve { port = 4190 } } service pop3-login { executable = pop3-login director } ssl = required ssl_ca = </etc/ssl/certs/umr-chain.pem ssl_cert = </etc/ssl/certs/vhrzxxx.hrz.uni-marburg.de.pem ssl_client_ca_dir = /etc/ssl/certs ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it ssl_require_crl = no userdb { args = /etc/dovecot/dovecot-ldap-userdb.conf.ext driver = ldap } protocol lmtp { auth_socket_path = director-userdb } protocol doveadm { auth_socket_path = director-userdb } protocol imap { mail_max_userip_connections = 25 mail_plugins = " zlib imap_zlib" }
I would appreciate any help on this. If any more information is needed, please ask.
With many thanks and best regards, Andreas
Dr. Andreas Piper, Hochschulrechenzentrum der Philipps-Univ. Marburg Hans-Meerwein-Straße 6, 35032 Marburg, Germany Phone: +49 6421 28-23521 Fax: -26994 E-Mail: piper@HRZ.Uni-Marburg.DE
participants (1)
-
Piper Andreas