Expat-IT Tech Bits

Home

Contact

Links

Search this site:

Categories:

/ (287)
  Admin/ (122)
    Apache/ (10)
      HTTPS-SSL/ (4)
      PHP/ (3)
      performance/ (2)
    Cherokee/ (1)
    LAN/ (4)
    LVM/ (6)
    Monitoring/ (2)
      munin/ (2)
    SSH/ (6)
    SSL/ (1)
    Samba/ (1)
    VPN-options/ (6)
      OpenVPN/ (1)
      SSH-Proxy/ (3)
      Tinc/ (1)
      sshuttle/ (1)
    backups/ (17)
      SpiderOak/ (1)
      backuppc/ (5)
      dirvish/ (1)
      misc/ (6)
      rdiff-backup/ (1)
      rsync/ (1)
      unison/ (2)
    commandLine/ (24)
      files/ (8)
      misc/ (10)
      network/ (6)
    crontab/ (1)
    databases/ (15)
      MSSQL/ (2)
      MySQL/ (8)
      Oracle/ (3)
      PostgreSQL/ (1)
    dynamicDNS/ (2)
    email/ (11)
      Dovecot/ (1)
      deliverability/ (1)
      misc/ (1)
      postfix/ (7)
      puppet/ (1)
    iptables/ (3)
    tripwire/ (1)
    virtualization/ (9)
      VMware/ (1)
      virtualBox/ (8)
  Coding/ (14)
    bash/ (1)
    gdb/ (1)
    git/ (3)
    php/ (5)
    python/ (4)
      Django/ (2)
  Education/ (1)
  Hosting/ (27)
    Amazon/ (18)
      EBS/ (3)
      EC2/ (10)
      S3/ (1)
      commandline/ (4)
    Godaddy/ (2)
    NearlyFreeSpeech/ (3)
    Rackspace/ (1)
    vpslink/ (3)
  Linux/ (30)
    Android/ (1)
    Awesome/ (3)
    CPUfreq/ (1)
    China/ (2)
    Debian/ (8)
      APT/ (3)
      WPA/ (1)
    audio/ (1)
    encryption/ (3)
    fonts/ (1)
    misc/ (6)
    remoteDesktop/ (1)
    router-bridge/ (3)
  SW/ (45)
    Micro$soft/ (1)
    browser/ (2)
      Chrome/ (1)
      Firefox/ (1)
    business/ (28)
      Drupal/ (9)
      KnowledgeTree/ (6)
      Redmine/ (2)
      SugarCRM/ (7)
      WebERP/ (2)
      WordPress/ (1)
      eGroupware/ (1)
    chat/ (1)
    email/ (1)
    fileSharing/ (2)
      btsync/ (1)
      mldonkey/ (1)
    graphics/ (2)
    research/ (2)
    website/ (6)
      blog/ (6)
        blosxom/ (3)
        rss2email/ (1)
        webgen/ (1)
  Security/ (15)
    IMchat/ (2)
    circumvention/ (2)
    cryptoCurrency/ (1)
    e-mail/ (4)
    greatFirewall/ (1)
    hacking/ (1)
    password/ (1)
    privacy/ (2)
    skype/ (1)
  Services/ (1)
    fileSharing/ (1)
  TechWriting/ (1)
  xHW/ (14)
    Lenovo/ (1)
    Motorola_A1200/ (2)
    Thinkpad_600e/ (1)
    Thinkpad_a21m/ (3)
    Thinkpad_i1300/ (1)
    Thinkpad_x24/ (1)
    USB_audio/ (1)
    scanner/ (1)
    wirelessCards/ (2)
  xLife/ (17)
    China/ (9)
      Beijing/ (5)
        OpenSource/ (3)
    Expatriation/ (1)
    Vietnam/ (7)

Archives:

  • 2016/07
  • 2016/05
  • 2016/02
  • 2016/01
  • 2015/12
  • 2015/11
  • 2015/06
  • 2015/01
  • 2014/12
  • 2014/11
  • 2014/10
  • 2014/09
  • 2014/07
  • 2014/04
  • 2014/02
  • 2014/01
  • 2013/12
  • 2013/10
  • 2013/08
  • 2013/07
  • 2013/06
  • 2013/05
  • 2013/04
  • 2013/02
  • 2013/01
  • 2012/12
  • 2012/10
  • 2012/09
  • 2012/08
  • 2012/07
  • 2012/06
  • 2012/05
  • 2012/04
  • 2012/03
  • 2012/01
  • 2011/12
  • 2011/11
  • 2011/10
  • 2011/09
  • 2011/08
  • 2011/07
  • 2011/06
  • 2011/05
  • 2011/04
  • 2011/02
  • 2010/12
  • 2010/11
  • 2010/10
  • 2010/09
  • 2010/08
  • 2010/07
  • 2010/06
  • 2010/05
  • 2010/04
  • 2010/03
  • 2010/02
  • 2010/01
  • 2009/12
  • 2009/11
  • 2009/10
  • 2009/09
  • 2009/08
  • 2009/07
  • 2009/06
  • 2009/05
  • 2009/04
  • 2009/03
  • 2009/02
  • 2009/01
  • 2008/12
  • 2008/11
  • 2008/10
  • 2008/09
  • Subscribe XML RSS Feed

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
    PyBlosxom

    This site has no ads. To help with hosting, crypto donations are accepted:
    Bitcoin: 1JErV8ga9UY7wE8Bbf1KYsA5bkdh8n1Bxc
    Zcash: zcLYqtXYFEWHFtEfM6wg5eCV8frxWtZYkT8WyxvevzNC6SBgmqPS3tkg6nBarmzRzWYAurgs4ThkpkD5QgiSwxqoB7xrCxs

    Tue, 26 May 2009


    /Admin/email/Dovecot: Imposing Per User E-mail Quotas with Dovecot

    Information seems to be scattered around a bit, and not crystal-clear-specific, so I will be very specific about my setup here.

    For a postfix / dovecot imap setup, it looks like dovecot does all the quota control.

    To enable quotas per http://wiki.dovecot.org/Quota, add the following to /etc/dovecot/dovecot.conf:

    protocol imap {
      mail_plugins = quota imap_quota
    }
    protocol pop3 {
      mail_plugins = quota
    }
    # In case you're using deliver:
    protocol lda {
      mail_plugins = quota
    } 
    

    Now per http://wiki.dovecot.org/Quota/Maildir if Dovecot quotas have been turned on per above, but no limits are specified within Dovecot, then Dovecot will look for the maildirsize file in the user's mail directory. If this file does not exist, that user has an unlimited quota. If the file exists, the first line should contain the quota in the form

    <storage limit in bytes>S,<messages limit>C

    ie. "3072000S" would indicate a 3M quota, and Dovecot will enforce that quota. This then would be a manual method for implementing user-specific quotas, by hand- (or script-) editing the maildirsize file in each user's mail directory.

    As of Dovecot 1.1 and later, http://wiki.dovecot.org/Quota/1.1 tells us how to enforce quotas from within Dovecot. To apply a uniform system-wide quota to every user, add this to /etc/dovecot/dovecot.conf:

    plugin {
       # Dovecot 1.1 config
       quota = maildir:User quota
       quota_rule = *:storage=5M
       # 10% of 5M = 500k: Trash gets 10% above quotas to enable moves into Trash
       quota_rule2 = Trash:storage=10%%
    }
    

    (quota_rule2 for Trash is an IMAP-specific fudge to avoid deletion problems with many e-mail clients when quota is exceeded....)

    For user-specific quotas stored in the SQL user database, http://wiki.dovecot.org/Quota/1.1 is again our guide, with a little help from http://oli.lugh.ch/quota-workaround.org.html. First add a quota field to the database and try it out with a test user:

    mysql> alter table virtual_users add column quota_kb varchar (11);
    mysql> update virtual_users set quota_kb=6000 where user="testing";

    Note that the following rules apply:

    Then tell dovecot to go to SQL for the quota by inserting this into /etc/dovecot/dovecot.conf

    userdb sql {
    args = /etc/dovecot/dovecot-sql.conf
    }

    in front of the "userdb static" block so preference is given to SQL. And define the SQL query in /etc/dovecot/dovecot-sql.conf:

    user_query = SELECT 5000 AS uid, 5000 AS gid,'/home/vmail/%d/%n' as home, concat('*:storage= ', quota_kb) AS quota_rule FROM virtual_users WHERE user = '%n';

    E-mails that exceed the quota will receive this error response:

    Automatically rejected mail: Quota exceeded

    posted at: 04:58 | path: /Admin/email/Dovecot | permanent link to this entry