On 5/29/26 8:15 AM, Wietse Venema via Postfix-users wrote:
David Koski via Postfix-users:
Hello,
2026-05-24T00:51:43.849893-07:00 B914839 postfix/virtual[42763]: fatal:
bad string length 0 < 1: virtual_mailbox_base =
That explains why the virtual daemon was unhappy. It does not explain
why the daemon was used at all; that ould require further information
about the Postfix configuration.
Note that I have since then added to main.cf:
virtual_mailbox_base = /var/lib/vmail
But I'm not sure why it is needed if it has no impact on mail delivery
but the error has gone away.
Viktor Dukhovni: The error is gone by adding the above configuration.
Viktor Dukhovni: The virtual process appears to be failing but
everything is virtual, not local. I am using LMTP if that makes a
difference.
postconf reveals:
local_transport = local:$myhostname
relay_transport = relay
To find the answer:
- Did the crash happen while receiving and delivering email?
- If yes:
- What was the domain portion of the recipient address?
I see no connection to mail sending or delivering.
- What is the output from:
postconf -x mydestination local_transport
# postconf -x mydestination local_transport
mydestination =
local_transport = local:mail.sutinen.com
postconf -x virtual_alias_domains
# postconf -x virtual_alias_domains
virtual_alias_domains =
proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
proxy:mysql:/etc/postfix/mysql_virtual_user_maps.cf
postconf -x virtual_mailbox_domains virtual_transport
# postconf -x virtual_mailbox_domains virtual_transport
virtual_mailbox_domains =
proxy:mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf
virtual_transport = virtual
Now that looks suspicious. Note that all users with local delivery (not
SMTP, relay, etc.) use dovecot-lmtp. This is achieved by the SQL query
for the user, joined to the transport configuration in SQL. So it is
delivered correctly via the transport mechanism. That explains why it
works. The virtual_transport setting is never used. What is the
correct method to stop postfix from executing virtual? Do I need to
remove it from master.cf?
Explanation: This server supports split domains and its configuration
makes it easy to add users without specifying a transport as it falls
back to a default with scripts to manage configuration:
; Use default transport, configured for local lmtp.
# vuseradd [email protected]
; Query user hosted locally.
# vuserlist -e [email protected]
+-----------------+-------+-----------------+-------------+--------+
| email | crypt | transport_alias | description | enable |
+-----------------+-------+-----------------+-------------+--------+
| [email protected] | 1 | default | Imported | 1 |
+-----------------+-------+-----------------+-------------+--------+
; Query for trasport like postfix via "transport_maps =
proxy:mysql:/etc/postfix/mysql_transport_maps.cf"
# vtransportlist -u -a -q [email protected]
+-----------------+--------------------------------+
| tkey | transport |
+-----------------+--------------------------------+
| [email protected] | lmtp:unix:private/dovecot-lmtp |
+-----------------+--------------------------------+
; Add account with not default transport
# vuseradd [email protected] -t kosmos
; Show transport alias for user.
# vuserlist -e [email protected]
+--------------------+-------+-----------------+-------------+--------+
| email | crypt | transport_alias | description | enable |
+--------------------+-------+-----------------+-------------+--------+
| [email protected] | 1 | kosmos | Imported | 1 |
+--------------------+-------+-----------------+-------------+--------+
; Map alias to transport.
# vtransportaliaslist
+-----------------+--------------------------------------------------------+
| alias | transport |
+-----------------+--------------------------------------------------------+
| kosmos | smtp:[mail.kosmosisland.com]:587 |
+-----------------+--------------------------------------------------------+
; Query for transport. This is what postfix does.
# vtransportlist -u -a -q [email protected]
+--------------------+----------------------------------+
| tkey | transport |
+--------------------+----------------------------------+
| [email protected] | smtp:[mail.kosmosisland.com]:587 |
+--------------------+----------------------------------+
postconf -x relay_domains relay_transport
# postconf -x relay_domains relay_transport
relay_domains = hash:/var/lib/mailman3/data/postfix_domains
relay_transport = relay
- What is the output from:
postconf -M local/unix virtual/unix relay/unix
# postconf -M local/unix virtual/unix relay/unix
relay unix - - y - - smtp -o
syslog_name=postfix/$service_name
local unix - n n - - local
virtual unix - n n - - virtual
Eventually we'll find out why some email ends up going to the virtual
delivery agent, or if it that daemon is being run for other reasons
(like, the automatic wakeup feature is enabled).
Wietse
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]