1

Topic: Dovecot errors

==== Required information ====
- iRedMail version (check /etc/iredmail-release): 0.9.2
- Linux/BSD distribution name and version: Ubuntu 14
- Store mail accounts in which backend (LDAP/MySQL/PGSQL):  MySQL
- Web server (Apache or Nginx): Apache
- Manage mail accounts with iRedAdmin-Pro? No
- Related log if you're reporting an issue: dovecot.log and sieve.log
====
Just started seeing a couple of errors after upgrading to 0.9.2 on Ubuntu 14, MySQL, Apache,

It would appear anyone with quota enabled can't send through roundcube.

Here's the 2 errors, one in dovecot, one in sieve
dovecot.log:Nov 24 10:54:25 dict: Error: dict client: Unconfigured dictionary name 'quota'
sieve.log:Nov 24 10:54:17 lda(user@example.com): Error: read(/var/run/dovecot/dict) failed: Remote disconnected

And this is my dovecot.conf file.

# Listen addresses.
#   - '*' means all available IPv4 addresses.
#   - '[::]' means all available IPv6 addresses.
# Listen on all available addresses by default
listen = *

#base_dir = /var/run/dovecot
mail_plugins = quota

# Enabled mail protocols.
protocols = pop3 imap sieve

# User/group who owns the message files:
mail_uid = 1000
mail_gid = 1000

# Assign uid to virtual users.
first_valid_uid = 1000
last_valid_uid = 1000

# Logging. Reference: http://wiki2.dovecot.org/Logging
log_path = /var/log/dovecot.log
mail_debug = no
auth_verbose = no
auth_debug = no
auth_debug_passwords = no
# Possible values: no, plain, sha1.
auth_verbose_passwords = no

# SSL: Global settings.
# Refer to wiki site for per protocol, ip, server name SSL settings:
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl = required
verbose_ssl = no
#ssl_ca =</path/to/ca
#ssl_cert = </etc/ssl/certs/iRedMail_CA.pem
#ssl_key = </etc/ssl/private/iRedMail.key



ssl_key =</etc/ssl/private/mail.lishost.info.key
ssl_cert =</etc/ssl/certs/mail.lishost.info.crt
ssl_ca =</etc/ssl/certs/intermediate.crt


# With disable_plaintext_auth=yes AND ssl=required, STARTTLS is mandatory.
# Set disable_plaintext_auth=no AND ssl=yes to allow plain password transmitted
# insecurely.
disable_plaintext_auth = yes
# Allow plain text password per IP address/net
#remote 192.168.0.0/24 {
#   disable_plaintext_auth = no
#}

# Mail location and mailbox format.
mail_location = maildir:/%Lh/Maildir/:INDEX=/%Lh/Maildir/

# Authentication related settings.
# Append this domain name if client gives empty realm.
auth_default_realm =

# Authentication mechanisms.
auth_mechanisms = PLAIN LOGIN

# Limits the number of users that can be logging in at the same time.
# Default is 100.
# Note: this value can be overrided by "process_limit =" in service
#       protocol. e.g.
#       protocol imap-login {
#           process_limit = 500
#       }
#default_process_limit = 100

service auth {
   unix_listener /var/spool/postfix/dovecot-auth {
        user = postfix
        group = postfix
        mode = 0666
    }
    unix_listener auth-master {
        user = vmail
        group = vmail
        mode = 0666
    }
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

# Virtual mail accounts.
userdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}
passdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}

# Master user.
# Master users are able to log in as other users. It's also possible to
# directly log in as any user using a master password, although this isn't
# recommended.
# Reference: http://wiki2.dovecot.org/Authentication/MasterUsers
auth_master_user_separator = *
passdb {
    driver = passwd-file
    args = /etc/dovecot/dovecot-master-users-password
    master = yes
}

plugin {
    auth_socket_path = /var/run/dovecot/auth-master

    quota = dict:user::proxy::quotadict
    quota_rule = *:storage=1G
    #quota_rule2 = *:messages=0
    #quota_rule3 = Trash:storage=1G
    #quota_rule4 = Junk:ignore

    # Quota warning.
    # If user suddenly receives a huge mail and the quota jumps from
    # 85% to 95%, only the 95% script is executed.
    quota_warning = storage=85%% quota-warning 85 %u
    quota_warning2 = storage=90%% quota-warning 90 %u
    quota_warning3 = storage=95%% quota-warning 95 %u

    # Plugin: autocreate. Create and subscribe to default IMAP folders.
    autocreate = INBOX
    autocreate2 = Sent
    autocreate3 = Trash
    autocreate4 = Drafts
    autocreate5 = Junk
    autosubscribe = INBOX
    autosubscribe2 = Sent
    autosubscribe3 = Trash
    autosubscribe4 = Drafts
    autosubscribe5 = Junk

    # Plugin: expire.
    #expire = Trash 7 Trash/* 7 Junk 30
    #expire_dict = proxy::expire

    # ACL and share folder
    acl = vfile
    acl_shared_dict = proxy::acl

    # By default Dovecot doesn't allow using the IMAP "anyone" or
    # "authenticated" identifier, because it would be an easy way to spam
    # other users in the system. If you wish to allow it,
    #acl_anyone = allow

    # Pigeonhole managesieve service.
    # Reference: http://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration
    # Per-user sieve settings.
    sieve_dir = /%Lh/sieve
    sieve = /%Lh/sieve/dovecot.sieve

    # Global sieve settings.
    sieve_global_dir = /var/vmail/sieve
    sieve_global_path = /var/vmail/sieve/dovecot.sieve
    sieve_before = /var/vmail/sieve/dovecot.sieve
    #sieve_before =
    #sieve_after =

    # The maximum number of redirect actions that can be performed during a
    # single script execution. The meaning of 0 differs based on your version.
    # For versions v0.3.0 and beyond this means that redirect is prohibited.
    # For older versions, however, this means that the number of redirects is
    # unlimited, so be careful.
    #sieve_max_redirects = 4
}

service quota-warning {
    executable = script /usr/local/bin/dovecot-quota-warning.sh
    unix_listener quota-warning {
        user = vmail
        group = vmail
        mode = 0660
    }
}

service dict {
    unix_listener dict {
        mode = 0660
        user = vmail
        group = vmail
    }
}

dict {
    #expire = db:/var/lib/dovecot/expire/expire.db
    quotadict = mysql:/etc/dovecot/dovecot-used-quota.conf
    acl = mysql:/etc/dovecot/dovecot-share-folder.conf
}

protocol lda {
    # Reference: http://wiki2.dovecot.org/LDA
    mail_plugins = $mail_plugins sieve autocreate
    auth_socket_path = /var/run/dovecot/auth-master
    log_path = /var/log/sieve.log
    lda_mailbox_autocreate = yes
    postmaster_address = root
    lda_mailbox_autosubscribe = yes
}
protocol imap {
    mail_plugins = $mail_plugins imap_quota autocreate
    imap_client_workarounds = tb-extra-mailbox-sep

    # Maximum number of IMAP connections allowed for a user from each IP address.
    # NOTE: The username is compared case-sensitively.
    # Default is 10.
    # Increase it to avoid issue like below:
    # "Maximum number of concurrent IMAP connections exceeded"
    #mail_max_userip_connections = 20
}
protocol pop3 {
    mail_plugins = $mail_plugins
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    pop3_uidl_format = %08Xu%08Xv

    # Maximum number of IMAP connections allowed for a user from each IP address.
    # NOTE: The username is compared case-sensitively.
    # Default is 10.
    #mail_max_userip_connections = 20
}

# Login processes. Refer to Dovecot wiki for more details:
# http://wiki2.dovecot.org/LoginProcess
service imap-login {
    service_count = 1

    # To avoid startup latency for new client connections, set process_min_avail
    # to higher than zero. That many idling processes are always kept around
    # waiting for new connections.
    #process_min_avail = 0

    # Process limit.
    # Increase it if you got similar error message in Dovecot log file:
    #
    # "master: Warning: service(imap-login): process_limit (100) reached,
    # client connections are being dropped"
    #
    #process_limit = $default_process_limit
    process_limit = 500

    # vsz_limit should be fine at its default 64MB value
    #vsz_limit = 64M
}
service pop3-login {
    service_count = 1
}

namespace {
    type = private
    separator = /
    prefix =
    #location defaults to mail_location.
    inbox = yes
}

namespace {
    type = shared
    separator = /
    prefix = Shared/%%u/
    location = maildir:/%%Lh/Maildir/:INDEX=/%%Lh/Maildir/Shared/%%u
    # this namespace should handle its own subscriptions or not.
    subscriptions = yes
    list = children
}

# Public mailboxes.
# Refer to Dovecot wiki page for more details:
# http://wiki2.dovecot.org/SharedMailboxes/Public
#namespace {
#    type = public
#    separator = /
#    prefix = Public/
#
#    # CONTROL=: Mark this public folder as read-only mailbox
#    # INDEX=: Per-user \Seen flag
#    location = maildir:/var/vmail/public/:CONTROL=~/Maildir/public:INDEX=~/Maildir/public
#
#    # Allow users to subscribe to the public folders.
#    subscriptions = yes
#}

----

Spider Email Archiver: On-Premises, lightweight email archiving software developed by iRedMail team. Supports Amazon S3 compatible storage and custom branding.

2

Re: Dovecot errors

Please do a quick comparison with our sample config file? (either dovecot2.conf or dovecot22.conf).
https://bitbucket.org/zhb/iredmail/src/ … s/dovecot/

By the way, does restarting Dovecot service fix this error?

3

Re: Dovecot errors

ZhangHuangbin wrote:

Please do a quick comparison with our sample config file? (either dovecot2.conf or dovecot22.conf).
https://bitbucket.org/zhb/iredmail/src/ … s/dovecot/
By the way, does restarting Dovecot service fix this error?

Thank you Zhang. Restarting doesn't do anything.
I did a diff and a grep, there are several differences.

This is mine, just the quota lines:
##/etc/dovecot# grep quota dovecot.conf
mail_plugins = quota
    quota = dict:user::proxy::quotadict
    quota_rule = *:storage=1G
    #quota_rule2 = *:messages=0
    #quota_rule3 = Trash:storage=1G
    #quota_rule4 = Junk:ignore
    # If user suddenly receives a huge mail and the quota jumps from
    quota_warning = storage=85%% quota-warning 85 %u
    quota_warning2 = storage=90%% quota-warning 90 %u
    quota_warning3 = storage=95%% quota-warning 95 %u
service quota-warning {
    executable = script /usr/local/bin/dovecot-quota-warning.sh
    unix_listener quota-warning {
    quotadict = mysql:/etc/dovecot/dovecot-used-quota.conf
    mail_plugins = $mail_plugins imap_quota autocreate

This is the sample config from your site:
##/etc/dovecot# grep quota dovecot2.conf
mail_plugins = quota acl
    quota = PH_QUOTA_TYPE
    quota_rule = *:storage=1G
    #quota_rule2 = *:messages=0
    #quota_rule3 = Trash:storage=1G
    #quota_rule4 = Junk:ignore
    # If user suddenly receives a huge mail and the quota jumps from
    quota_warning = storage=100%% quota-warning 100 %u
    quota_warning2 = storage=95%% quota-warning 95 %u
    quota_warning3 = storage=90%% quota-warning 90 %u
    quota_warning4 = storage=85%% quota-warning 85 %u
    # allow user to become max 10% (or 50 MB) over quota
    quota_grace = 10%%
    #quota_grace = 50 M
    #quota_exceeded_message = Quota exceeded, please try again later.
    #quota_exceeded_message = </path/to/quota_exceeded_message.txt
service quota-warning {
    unix_listener quota-warning {
    quotadict = PH_DOVECOT_REALTIME_QUOTA_SQLTYPE:PH_DOVECOT_REALTIME_QUOTA_CONF
    mail_plugins = quota sieve
    mail_plugins = $mail_plugins imap_quota autocreate imap_acl

4

Re: Dovecot errors

I wonder what the permissions should be on /var/run/dovecot/dict ?
They are currently:

#  ls -al /var/run/dovecot/dict
srw-rw---- 1 vmail vmail 0 Nov 24 12:50 /var/run/dovecot/dict

5

Re: Dovecot errors

No difference of dovecot.conf.

On my server (CentOS 6):

# ls -l /var/run/dovecot/dict
srw-rw---- 1 vmail vmail 0 Oct 21 02:41 /var/run/dovecot/dict

6

Re: Dovecot errors

Could you please turn on debug mode in Dovecot, then try to send an email to some local user? Check whether there's some error in /var/log/dovecot*.log. I'm not sure what your issue is now.

7

Re: Dovecot errors

I have no idea why, but the errors have stopped! I didn't change a thing, but I've been watching the logs for days with no new errors.