I'd like to implement the virtual plugin so that POP3 users can see emails in their own inbox and a public namespace. As I understand it, I need to set "inbox=yes" separately, depending on which service the user is using. With passwd-file flat files, this means: userdb { args = ... /path/userdb.%s } userdb.imap: set the extra fields for each user userdb_namespace/inbox/inbox=yes userdb.pop3: set the extra fields for each user userdb_namespace/virtual/inbox=yes But without even getting to the virtual namespace part, I'm having difficulty getting the extra fields setting to work for a regular IMAP user. Specifically: If I use the Dovecot default settings of namespace inbox, which includes inbox=yes, and do NOT include the extra_fields value shown above, then IMAP users can log in OK. But if I comment out inbox=yes within namespace inbox, and then add the extra fields to userdb.imap (as shown above), (and reload doveadm), then the IMAP user is no longer able to login. Thunderbird displays "Login to server ... failed." and I get the following in syslog (mail.err): Aug 1 13:56:13 n6mef-gw dovecot: imap(mefimp at email.n6mef.org): Error: user mefimp at email.n6mef.org: Initialization failed: namespace configuration error: Duplicate namespace prefix: "" Aug 1 13:56:13 n6mef-gw dovecot: imap(mefimp at email.n6mef.org): Error: Invalid user settings. Refer to server log for more information. I'm at a loss for what's wrong. Can someone help? Userdb.imap test entry and doveconf -n below. Thanks, Michael Userdb.imap: mefimp::::Michael E Fox - mefimp:::userdb_namespace=/namespace/inbox/inbox=yes $ doveconf -n # 2.2.9: /etc/dovecot/dovecot.conf # OS: Linux 3.16.0-76-generic x86_64 Ubuntu 14.04.4 LTS auth_mechanisms = cram-md5 auth_verbose = yes mail_gid = vmail mail_location = maildir:~/Maildir mail_plugins = " quota" mail_uid = vmail namespace inbox { location mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix } passdb { args = /etc/dovecot/deny-users deny = yes driver = passwd-file } passdb { args = scheme=cram-md5 username_format=%n /etc/dovecot/auth.d/%d/passdb driver = passwd-file } plugin { quota = maildir:User quota quota_grace = 10%% quota_rule = *:storage=50MB quota_rule2 = Trash:storage=+10%% quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO quota_status_toolarge = 552 5.2.3 Message is too large quota_warning = storage=90%% quota-warning 90 %n %d quota_warning2 = storage=75%% quota-warning 75 %n %d } pop3_lock_session = yes protocols = pop3 imap lmtp service auth { unix_listener /var/spool/postfix/private/dovecot-auth { group = postfix mode = 0660 user = postfix } unix_listener auth-userdb { group = vmail mode = 0600 user = vmail } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service pop3 { executable = pop3 postlogin process_limit = 25 } service postlogin { executable = script-login /etc/dovecot/postlogin.sh group = vmail user = vmail } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service quota-warning { executable = /etc/dovecot/quota-warning.sh user = vmail } ssl = required ssl_cert = </opt/xsc/ssl/certs/n6mef-gw.crt ssl_key = </opt/xsc/ssl/private/n6mef-gw.key ssl_protocols = !SSLv2 !SSLv3 userdb { args = username_format=%n /etc/dovecot/auth.d/%d/userdb.%s default_fields = home=/var/vmail/%d/%n driver = passwd-file } verbose_ssl = yes protocol lmtp { postmaster_address = xxxxxxxxxx } protocol imap { mail_max_userip_connections = 1 } protocol pop3 { mail_max_userip_connections = 1 } remote 192.168.7.0/24/24 { ssl = yes } remote 192.168.7.0/27/27 { ssl = no } $