Hello!

I've just upgraded a working setup from postfix 2.5.5 to 2.6.6 on a
Gentoo box. Since then, when postfix/local tries to do user name
expansion (as far as I learned from the backtrace), it segfaults:

------------------------8<----------------------
#0  0x11286469 in vstring_strcpy (vp=0x112b8c50, src=0x0) at vstring.c:409
#1  0x112736d9 in dict_db_lookup (dict=0x112b8bd0, name=0x0) at dict_db.c:200
#2  0x1124a83e in deliver_alias (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 "active", queue_id = 0x112be868 "0658546584CA", offset =
218, encoding = 0x11298018 "", sender = 0x11298018 "", dsn_envid =
0x11298018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 "", dsn_notify = 0, orig_addr = 0x112bec00
"[email protected]", address = 0x112bec28
"[email protected]", u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
"local", msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
= 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}, name=0x0,
statusp=0x5cea4c48) at alias.c:199
#3  0x11250df9 in deliver_switch (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 "active", queue_id = 0x112be868 "0658546584CA", offset =
218, encoding = 0x11298018 "", sender = 0x11298018 "", dsn_envid =
0x11298018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 "", dsn_notify = 0, orig_addr = 0x112bec00
"[email protected]", address = 0x112bec28
"[email protected]", u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x0, local = 0x0, user = 0x0, extension = 0x0,
unmatched = 0x0, owner = 0x0, delivered = 0x0, relay = 0x5cea5943
"local", msg_stats = {incoming_arrival = {tv_sec = 1279051621, tv_usec
= 25651}, active_arrival = {tv_sec = 1279125222, tv_usec = 792273},
agent_handoff = {tv_sec = 1279125222, tv_usec = 906187},
conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done = {tv_sec =
0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from = 0x0,
request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:135
#4  0x11251af8 in deliver_recipient (state=
     {level = 1, msg_attr = {level = 0, fp = 0x112bec50, queue_name =
0x112beb40 "active", queue_id = 0x112be868 "0658546584CA", offset =
218, encoding = 0x11298018 "", sender = 0x11298018 "", dsn_envid =
0x11298018 "", dsn_ret = 0, rcpt = {offset = 191, dsn_orcpt =
0x11298018 "", dsn_notify = 0, orig_addr = 0x112bec00
"[email protected]", address = 0x112bec28
"[email protected]", u = {status = 0, queue = 0x0, addr_type =
0x0}}, domain = 0x112c0a7d "AAAAA.AAAAAAAAA.AA", local = 0x112c0a78
"root", user = 0x112c0aa0 "root", extension = 0x0, unmatched = 0x0,
owner = 0x0, delivered = 0x112bec28 "[email protected]", relay =
0x5cea5943 "local", msg_stats = {incoming_arrival = {tv_sec =
1279051621, tv_usec = 25651}, active_arrival = {tv_sec = 1279125222,
tv_usec = 792273}, agent_handoff = {tv_sec = 1279125222, tv_usec =
906187}, conn_setup_done = {tv_sec = 0, tv_usec = 0}, deliver_done =
{tv_sec = 0, tv_usec = 0}, reuse_count = 0}, exp_type = 0, exp_from =
0x0, request = 0x112be1a8, why = 0x112bed20}, dup_filter = 0x112c0980,
loop_info = 0x112bf038, request = 0x112be1a8}, usr_attr={uid = 0, gid
= 0, home = 0x0, logname = 0x0, shell = 0x0}) at recipient.c:319
#5  0x1124f246 in local_deliver (rqst=0x112be1a8, service=0x5cea5943
"local") at local.c:718
#6  0x1124f3c5 in local_service (stream=0x112bd0c8, service=0x5cea5943
"local", argv=0x5cea5880) at local.c:756
#7  0x11254c53 in single_server_wakeup (fd=14) at single_server.c:262
#8  0x11254e1d in single_server_accept_local (unused_event=1,
context=0x6 <Address 0x6 out of bounds>) at single_server.c:304
#9  0x1127a896 in event_loop (delay=-1) at events.c:1086
#10 0x11255bd6 in single_server_main (argc=3, argv=0x5cea5874,
service=0x1124f351 <local_service>) at single_server.c:732
#11 0x1124f892 in main (argc=3, argv=0x5cea5874) at local.c:917
------------------------8<----------------------

Here's postconf -n:

------------------------8<----------------------
address_verify_map = btree:/var/lib/postfix/verify
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/var/lib/mailman/data/aliases hash:/etc/mail/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = //usr/lib/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
default_destination_concurrency_limit = 20
default_process_limit = 500
home_mailbox = .maildir/
html_directory = /usr/share/doc/postfix-2.6.6/html
local_destination_concurrency_limit = 2
mail_owner = postfix
mailbox_size_limit = 104857600
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
message_size_limit = 52428800
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = AAAAA.AAAAAAAAA.AA
myhostname = AAAAA.AAAAAAAAA.AA
mynetworks = 127.0.0.0/8, DDD.DDD.DDD.DD, DD.DDD.DD.DD/DD
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
rbl_reply_maps = ${stress?hash:/etc/postfix/rbl_reply_maps}
readme_directory = /usr/share/doc/postfix-2.6.6/readme
recipient_delimiter = +
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP $mail_name (AAAAAAAAA Mail Service).
We block/report all spam. We use greylisting.
smtpd_client_connection_count_limit = 50
smtpd_client_connection_rate_limit = 30
smtpd_client_message_rate_limit = 100
smtpd_client_recipient_rate_limit = 2000
smtpd_error_sleep_time = 5s
smtpd_hard_error_limit = ${stress?1}${stress:20}
smtpd_helo_required = yes
smtpd_junk_command_limit = 20
smtpd_recipient_restrictions = reject_unlisted_recipient
reject_unknown_recipient_domain check_recipient_access
hash:/etc/postfix/block_recipients permit_mynetworks
permit_sasl_authenticated reject_unauth_destination
reject_non_fqdn_recipient reject_invalid_helo_hostname
reject_rbl_client zen.spamhaus.org=127.0.0.10 reject_rbl_client
zen.spamhaus.org=127.0.0.11 reject_rbl_client zen.spamhaus.org
check_sender_access hash:/etc/postfix/whitelisted_senders
check_policy_service inet:127.0.0.1:12525 check_policy_service
unix:private/postgrey check_policy_service unix:private/spf
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = hash:/etc/postfix/sender_access
smtpd_soft_error_limit = 10
smtpd_timeout = ${stress?10}${stress:60}
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550
unverified_sender_reject_code = 550
virtual_alias_domains =
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman
proxy:mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_gid_maps = static:2000
virtual_mailbox_base = /data/mailhosts/
virtual_mailbox_domains =
proxy:mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_transport = maildrop
virtual_uid_maps = static:2000
------------------------8<----------------------

It looks like deliver_alias() gets passed a null pointer for name,
later in the code path postfix tries to copy a string to this pointer
- thus the segfault. But I cannot figure out why that is and if it'd
be fixable in the config.

Since this is a production system, any help is appreciated. Virtual
users managed by MySQL aren't affected - works like a charm there.
That's why it took some days before the few system users started to
miss mails - the queue has about 2000 deferred mails now. :-(

Regards,
Kai

Reply via email to