warning: /usr/lib/postfix/sbin/virtual: bad command startup -- throttling

David Koski via dovecot <[email protected]> Thu, 21 May 2026 15:06:54 -0700
Newsgroups gmane.mail.imap.dovecot
Message-ID <[email protected]>
Hello,

I have set up a new dovecot mail server using MySQL backend.  All users, 
passwords and related data are in SQL.  I'm seeing the following warning 
in the mail.log file:

warning: /usr/lib/postfix/sbin/virtual: bad command startup -- throttling

It appears to have no impact on mail delivery.  Since paths to user 
directories are yielded by the SQL database, I'm left wondering why this 
is even a warning.

Regards,
David Koski
[email protected]


# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
# Pigeonhole version 2.4.1-4 (0a86619f)
# OS: Linux 6.12.69+deb13-amd64 x86_64 Debian 13.5
# Hostname: B914839.online-server.cloud
# 4 default setting changes since version 2.4.0
dovecot_config_version = 2.4.0
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login gssapi cram-md5 digest-md5
debug_log_path = /var/log/dovecot/debug.log
default_vsz_limit = 512M
dovecot_storage_version = 2.4.0
fts_autoindex = yes
fts_autoindex_max_recent_msgs = 999
fts_search_add_missing = yes
info_log_path = /var/log/dovecot/info.log
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
log_debug = category=auth
log_path = /var/log/dovecot/dovecot.log
mail_driver = maildir
mail_plugins {
   quota = yes
}
mailbox_directory_name_legacy = no
protocols {
   imap = yes
   lmtp = yes
   sieve = yes
}
quota_exceeded_message = User %{user} has exceeded the storage volume. / 
User %{user} has exhausted allowed storage space.
sieve_plugins {
   sieve_imapsieve = yes
   sieve_extprograms = yes
}
sql_driver = mysql
ssl = required
namespace inbox {
   inbox = yes
   prefix =
   separator = .
   type = private
   mailbox Drafts {
     auto = subscribe
     special_use = "\\Drafts"
   }
   mailbox Outbox {
     special_use = "\\Drafts"
   }
   mailbox Junk {
     auto = subscribe
     special_use = "\\Junk"
   }
   mailbox "Junk Email" {
     auto = no
     special_use = "\\Junk"
   }
   mailbox "Junk E-mail" {
     auto = no
     special_use = "\\Junk"
   }
   mailbox Trash {
     auto = subscribe
     special_use = "\\Trash"
   }
   mailbox "Deleted Items" {
     auto = no
     special_use = "\\Trash"
   }
   mailbox Spam {
     auto = no
     special_use = "\\Junk"
   }
   mailbox Archives {
     auto = no
     special_use = "\\Archive"
   }
   mailbox Sent {
     auto = subscribe
     special_use = "\\Sent"
   }
   mailbox "Sent Items" {
     auto = no
     special_use = "\\Sent"
   }
   mailbox "Sent Messages" {
     auto = no
     special_use = "\\Sent"
   }
}
service imap-login {
   inet_listener imap {
   }
   inet_listener imaps {
   }
}
service pop3-login {
   inet_listener pop3 {
   }
   inet_listener pop3s {
   }
}
service submission-login {
   inet_listener submission {
   }
   inet_listener submissions {
   }
}
service lmtp {
   unix_listener /var/spool/postfix/private/dovecot-lmtp {
     group = postfix
     mode = 0600
     user = postfix
   }
}
service imap {
}
service pop3 {
}
service submission {
}
service auth {
   unix_listener auth-userdb {
     group = postfix
   }
   unix_listener /var/spool/postfix/private/auth {
     group = postfix
     mode = 0660
     user = postfix
   }
}
service auth-worker {
}
service dict {
   unix_listener dict {
   }
}
ssl_server {
   cert_file = /etc/letsencrypt/live/mail.sutinen.com/fullchain.pem
   key_file = /etc/letsencrypt/live/mail.sutinen.com/privkey.pem
}
protocol lda {
   mail_plugins {
     sieve = yes
     quota = yes
   }
}
protocol imap {
   mail_plugins {
     imap_sieve = yes
   }
}
protocol lmtp {
   mail_plugins {
     quota = yes
     sieve = yes
     notify = yes
     push_notification = yes
   }
   postmaster_address = [email protected]
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
   inet_listener sieve_deprecated {
     port = 2000
   }
}
service managesieve {
}
sieve_script personal {
   active_path = /var/vmail/sieve/%{user | domain }/%{user | username 
}/active-script.sieve
   driver = file
   path = /var/vmail/sieve/%{user | domain }/%{user | username }/scripts
   type = personal
}
sieve_script spam-global {
   path = /var/vmail/sieve/global/spam-global.sieve
   type = before
}
mailbox Spam {
   sieve_script spam {
     cause = copy
     path = /var/vmail/sieve/global/learn-spam.sieve
     type = before
   }
}
imapsieve_from Spam {
   sieve_script ham {
     cause = copy
     path = /var/vmail/sieve/global/learn-ham.sieve
     type = before
   }
}
mysql /var/run/mysqld/mysqld.sock {
   dbname = vmail
   password = # hidden, use -P to show it
   user = vmail
}
passdb sql {
   driver = sql
   query = CALL password_query('%{user}', '%{password}')
}
userdb sql {
   driver = sql
   query = CALL user_query_dovecot('%{user | username}', '%{user | domain}')
}
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]