[Dovecot] Quota-Status issue

Cyberonic Turbo cyberonicturbo at gmail.com
Thu Feb 27 20:41:18 UTC 2014


Thanks for the help. For some reason I couldn't find the dovecot log
before, but there it was staring me in the face, haha.

Here's the error I was getting:
Feb 27 14:55:06 auth-worker(30525): Error: sql(test at example.com): User
query failed: Unknown column 'mailbox.enablequota-status' in 'where
clause'

Feb 27 14:55:06 quota-status: Error: user test at example.com: Auth USER
lookup failed

Looks like it was missing a column in the table. Was able to fix it by
adding:
ALTER TABLE vmail.umailbox ADD `enablequota-status` tinyint(1) DEFAULT 1
AFTER `enablelib-storage`;

Now it works as expected!
 printf "recipient=test at example.com\nsize=12304\n\n" | nc 127.0.0.1
12340
action=552 5.2.2 Mailbox is full

Once again, thanks for the help. Everything is working smoothly now.


On Mon, Feb 24, 2014 at 5:56 PM, Charles Sprickman <spork at bway.net> wrote:

> On Feb 20, 2014, at 5:12 PM, Cyberonic Turbo wrote:
>
> > Following this guide:
> > http://sys4.de/en/blog/2013/04/08/postfix-dovecot-mailbox-quota/ I can't
> > seem to get it to work, as soon as I add the smtpd_recipient_restrictions
> > setting to postfix I can no longer send mail at all. I get the message
> SMTP
> > Error (450): Failed to add recipient "postmaster at example.com" (4.7.1 :
> > Recipient address rejected: Internal error occurred. Refer to server log
> > for more information.). I googled around and found this command to test
> the
> > quota-status service: printf "recipient=postmaster at
> > example.com\nsize=1234\n\n"
> > | nc 127.0.0.1 12340
> > It seems to always return the quota_status_nouser message. I'm really
> > stumped here. What logs do I need to check for errors and does anyone
> have
> > any experience with this?
>
> I'm not an expert, I just followed the same guide a few days ago
> while preparing to front an old vpopmail system with postfix.  It
> did work for me.
>
> Before moving on to enabling the check in postfix, verify that the
> dovecot side is working.
>
> Your example test should work, I did the same here:
>
> [root at util-b /usr/local/etc/postfix]# printf "recipient=chip at test.bway.net\nsize=12304\n\n"
> | nc mbox.i 25001
> action=DUNNO
>
> [root at util-b /usr/local/etc/postfix]# printf "recipient=chip at test.bway.net\nsize=123000000004\n\n"
> | nc mbox.i
> 25001 action=552 5.2.2 Mailbox is full
>
> If that fails for you, examine the dovecot log.  In my case, I did
> have to provide the full path to the "quota-status" binary and
> dovecot complained about not being able to find it.  Make sure you
> actually have quota-status installed.  Full dovecot snippet for this
> below:
>
> # report quota to postfix
> # see http://sys4.de/en/blog/2013/04/08/postfix-dovecot-mailbox-quota/
>
> plugin {
>     quota_status_success = DUNNO
>     quota_status_nouser = DUNNO
>     quota_status_overquota = "552 5.2.2 Mailbox is full"
> }
>
> service quota-status {
>     executable = /usr/local/libexec/dovecot/quota-status -p postfix
>     inet_listener {
>         address = 10.x.x.19  # In my case I want it listening on a
> particular IP
>         port = 25001
>     }
>     client_limit = 5
> }
>
> If the dovecot portion is working, then move on to your postfix logs...
>
> Charles
>
> >
> > I'm running Dovect 2.2.10 with Postfix 2.6.6
> >
> > Here's my dovecot -n result:
> >
> > # 2.2.10: /etc/dovecot/dovecot.conf
> > # OS: Linux 2.6.32-431.5.1.el6.x86_64 x86_64 CentOS release 6.5 (Final)
> > auth_master_user_separator = *
> > auth_mechanisms = PLAIN LOGIN
> > dict {
> >  acl = mysql:/etc/dovecot/dovecot-share-folder.conf
> >  quotadict = mysql:/etc/dovecot/dovecot-used-quota.conf
> > }
> > first_valid_uid = 2000
> > last_valid_uid = 2000
> > listen = *
> > log_path = /var/log/dovecot.log
> > mail_gid = 2000
> > mail_location = maildir:/%Lh/Maildir/:INDEX=/%Lh/Maildir/
> > mail_plugins = quota
> > mail_uid = 2000
> > managesieve_notify_capability = mailto
> > managesieve_sieve_capability = fileinto reject envelope encoded-character
> > vacation subaddress comparator-i;ascii-numeric relational regex
> imap4flags
> > copy include variables body enotify environment mailbox date ihave
> > namespace {
> >  inbox = yes
> >  location =
> >  prefix =
> >  separator = /
> >  type = private
> > }
> > namespace {
> >  list = children
> >  location = maildir:/%%Lh/Maildir/:INDEX=/%%Lh/Maildir/Shared/%%u
> >  prefix = Shared/%%u/
> >  separator = /
> >  subscriptions = yes
> >  type = shared
> > }
> > passdb {
> >  args = /etc/dovecot/dovecot-mysql.conf
> >  driver = sql
> > }
> > passdb {
> >  args = /etc/dovecot/dovecot-master-users-password
> >  driver = passwd-file
> >  master = yes
> > }
> > plugin {
> >  acl = vfile
> >  acl_shared_dict = proxy::acl
> >  auth_socket_path = /var/run/dovecot/auth-master
> >  autocreate = INBOX
> >  autocreate2 = Sent
> >  autocreate3 = Trash
> >  autocreate4 = Drafts
> >  autocreate5 = Junk
> >  autosubscribe = INBOX
> >  autosubscribe2 = Sent
> >  autosubscribe3 = Trash
> >  autosubscribe4 = Drafts
> >  autosubscribe5 = Junk
> >  quota = dict:user::proxy::quotadict
> >  quota_grace = 10%%
> >  quota_rule = *:storage=1G
> >  quota_status_nouser = DUNNO
> >  quota_status_overquota = 552 5.2.2 Mailbox is full
> >  quota_status_success = DUNNO
> >  quota_warning = storage=85%% quota-warning 85 %u
> >  quota_warning2 = storage=90%% quota-warning 90 %u
> >  quota_warning3 = storage=95%% quota-warning 95 %u
> >  sieve = /%Lh/sieve/dovecot.sieve
> >  sieve_dir = /%Lh/sieve
> >  sieve_global_dir = /var/vmail/sieve
> >  sieve_global_path = /var/vmail/sieve/dovecot.sieve
> > }
> > protocols = pop3 imap sieve
> > service auth {
> >  unix_listener /var/spool/postfix/dovecot-auth {
> >    group = postfix
> >    mode = 0666
> >    user = postfix
> >  }
> >  unix_listener auth-master {
> >    group = vmail
> >    mode = 0666
> >    user = vmail
> >  }
> >  unix_listener auth-userdb {
> >    group = vmail
> >    mode = 0660
> >    user = vmail
> >  }
> > }
> > service dict {
> >  unix_listener dict {
> >    group = vmail
> >    mode = 0660
> >    user = vmail
> >  }
> > }
> > service imap-login {
> >  process_limit = 500
> >  service_count = 1
> > }
> > service pop3-login {
> >  service_count = 1
> > }
> > service quota-status {
> >  client_limit = 1
> >  executable = quota-status -p postfix
> >  inet_listener {
> >    port = 12340
> >  }
> > }
> > service quota-warning {
> >  executable = script /usr/local/bin/dovecot-quota-warning.sh
> >  unix_listener quota-warning {
> >    group = vmail
> >    mode = 0660
> >    user = vmail
> >  }
> > }
> > ssl = required
> > ssl_cert = </etc/pki/tls/certs/iRedMail_CA.pem
> > ssl_key = </etc/pki/tls/private/iRedMail.key
> > userdb {
> >  args = /etc/dovecot/dovecot-mysql.conf
> >  driver = sql
> > }
> > protocol lda {
> >  auth_socket_path = /var/run/dovecot/auth-master
> >  lda_mailbox_autocreate = yes
> >  log_path = /var/log/sieve.log
> >  mail_plugins = quota sieve autocreate
> >  postmaster_address = root
> > }
> > protocol imap {
> >  imap_client_workarounds = tb-extra-mailbox-sep
> >  mail_plugins = quota imap_quota autocreate
> > }
> > protocol pop3 {
> >  mail_plugins = quota
> >  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
> >  pop3_uidl_format = %08Xu%08Xv
> > }
> >
> > For my postfix/main.cf I have this relevant setting:
> > smtpd_recipient_restrictions = reject_unknown_sender_domain,
> > reject_unknown_recipient_domain, reject_non_fqdn_sender,
> > reject_non_fqdn_recipient, reject_unlisted_recipient,
> check_policy_service
> > inet:127.0.0.1:7777, check_policy_service inet:127.0.0.1:10031,
> > check_policy_service inet:127.0.0.1:12340, permit_mynetworks,
> > permit_sasl_authenticated, reject_unauth_destination
>
>


More information about the dovecot mailing list