dovecot/lmtp dumps core when proxying to multiple recipients via protocol=smtp

Piper Andreas piper at hrz.uni-marburg.de
Thu Feb 14 14:53:07 EET 2019


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 at hrz.uni-marburg.de:::::::director_tag=hrz protocol=smtp user=grtest1
grtest2 at 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 at hrz
137.248.xxx.zzz at staff 137.248.aaa.bbb at 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 at 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 at HRZ.Uni-Marburg.DE

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5394 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://dovecot.org/pipermail/dovecot/attachments/20190214/82b3cc5f/attachment.p7s>


More information about the dovecot mailing list