1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293
|
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Quotas — Cyrus IMAP 3.10.2 documentation</title>
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/graphviz.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/cyrus.css" type="text/css" />
<script data-url_root="../../../" id="documentation_options" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/sphinx_highlight.js"></script>
<script src="../../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../../genindex.html" />
<link rel="search" title="Search" href="../../../search.html" />
<link rel="next" title="Quota Roots" href="quotas/quotaroots.html" />
<link rel="prev" title="Access Control Lists Rights Reference" href="access-control/rights-reference.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home">
Cyrus IMAP
</a>
<div class="version">
3.10.2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Cyrus IMAP</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../download.html">Download</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../quickstart.html">Quickstart Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../overview.html">Overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../setup.html">Setup</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../../operations.html">Operations</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../manpages/index.html">Man pages</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../admin.html">Administrator Guide</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../admin.html#architecture">Architecture</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../admin.html#management">Management</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="locations.html">File & Directory Locations</a></li>
<li class="toctree-l4"><a class="reference internal" href="ports-sockets.html">Ports and Sockets</a></li>
<li class="toctree-l4"><a class="reference internal" href="access-control.html">Access Control</a></li>
<li class="toctree-l4 current"><a class="current reference internal" href="#">Quotas</a></li>
<li class="toctree-l4"><a class="reference internal" href="sieve.html">Cyrus Sieve</a></li>
<li class="toctree-l4"><a class="reference internal" href="backups.html">Cyrus Backups</a></li>
<li class="toctree-l4"><a class="reference internal" href="nntp.html">Cyrus NNTP</a></li>
<li class="toctree-l4"><a class="reference internal" href="protlayer.html">Cyrus Prot Layer</a></li>
<li class="toctree-l4"><a class="reference internal" href="sop.html">Standard Operating Procedures</a></li>
<li class="toctree-l4"><a class="reference internal" href="eventsource.html">Cyrus Event Source</a></li>
<li class="toctree-l4"><a class="reference internal" href="monitoring.html">Monitoring</a></li>
<li class="toctree-l4"><a class="reference internal" href="config-mailboxdistribution.html">Mailbox Distribution</a></li>
<li class="toctree-l4"><a class="reference internal" href="murder/murder.html">Cyrus Murder</a></li>
<li class="toctree-l4"><a class="reference internal" href="nginx-proxy.html">HOWTO: Using an NGINX IMAP Proxy</a></li>
<li class="toctree-l4"><a class="reference internal" href="tweaking.html">Tweaking Cyrus IMAP</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../faq.html">Frequently Asked Questions</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../developers.html">Developers</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../support.html">Support/Community</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Cyrus SASL</span></p>
<ul>
<li class="toctree-l1"><a class="reference external" href="http://www.cyrusimap.org/sasl">Cyrus SASL</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">Cyrus IMAP</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../../../operations.html">Operations</a></li>
<li class="breadcrumb-item"><a href="../admin.html">Administrator Guide</a></li>
<li class="breadcrumb-item active">Quotas</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/cyrusimap/cyrus-imapd/blob/master/docsrc/imap/reference/admin/quotas.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="quotas">
<span id="imap-admin-quotas"></span><h1>Quotas<a class="headerlink" href="#quotas" title="Permalink to this heading"></a></h1>
<p>Cyrus IMAP features a flexible Quota scheme with support for limiting
various resources, such as storage or number of folders or messages.</p>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="quotas/quotaroots.html">Quota Roots</a></li>
<li class="toctree-l1"><a class="reference internal" href="quotas/quotatypes.html">Supported Quota Types</a></li>
</ul>
</div>
<section id="monitor-and-repair">
<span id="imap-admin-quotas-repair"></span><h2>Monitor and Repair<a class="headerlink" href="#monitor-and-repair" title="Permalink to this heading"></a></h2>
<p>Quotas may be monitored and repaired via the <a class="reference internal" href="../manpages/systemcommands/quota.html#std-cyrusman-quota-8">quota(8)</a>
command:</p>
<blockquote>
<div><ul class="simple">
<li><p><a class="reference internal" href="../manpages/systemcommands/quota.html#imap-reference-manpages-systemcommands-quota"><span class="std std-ref">quota</span></a></p></li>
</ul>
</div></blockquote>
</section>
<section id="controlling-quota-behavior">
<span id="imap-admin-quotas-config"></span><h2>Controlling Quota Behavior<a class="headerlink" href="#controlling-quota-behavior" title="Permalink to this heading"></a></h2>
<p>How restrictive quotas will be may be tailored to the needs of different
sites, via the use of several settings in <a class="reference internal" href="../manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>:</p>
<blockquote>
<div><blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">lmtp_over_quota_perm_failure:</span></code> 0</p>
<blockquote>
<div><p>If enabled, lmtpd returns a permanent failure code when a user's
mailbox is over quota. By default, the failure is temporary,
causing the MTA to queue the message and retry later.</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">lmtp_strict_quota:</span></code> 0</p>
<blockquote>
<div><p>If enabled, lmtpd returns a failure code when the incoming message
will cause the user's mailbox to exceed its quota. By default, the
failure won't occur until the mailbox is already over quota.</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">quotawarnpercent:</span></code> 90</p>
<blockquote>
<div><p>The percent of quota utilization over which the server generates
warnings.</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">quotawarnsize:</span></code> 0</p>
<blockquote>
<div><p>The maximum amount of free space at which to give a quota warning
(if this value is 0, or if the quota is smaller than this
amount, then warnings are always given).</p>
<p>Note that quota has kibibyte granularity. Values specified here will
be truncated to the nearest whole kibibyte.</p>
<p>For backward compatibility, if no unit is specified, kibibytes is
assumed.</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">quotawarnmsg:</span></code> 0</p>
<blockquote>
<div><p>The maximum amount of messages at which to give a quota warning
(if this value is 0, or if the quota is smaller than this
amount, then warnings are always given).</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">autocreate_quota:</span></code> -1</p>
<blockquote>
<div><p>If set to a value of zero or higher, users have their INBOX folders
created upon a successful login event or upon <em>lmtpd(8)</em>
message delivery if <em>autocreate_post</em> is enabled, provided their
INBOX did not yet already exist.</p>
<p>The user's quota is set to the value if it is greater than zero,
otherwise the user has unlimited quota.</p>
<p>Note that quota has kibibyte granularity. Values specified here will
be truncated to the nearest whole kibibyte.</p>
<p>For backward compatibility, if no unit is specified, kibibytes is
assumed.</p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">autocreate_quota_messages:</span></code> -1</p>
<blockquote>
<div><p>If set to a value of zero or higher, users who have their INBOX
folders created upon a successful login event (see
<em>autocreate_quota</em>), or upon <em>lmtpd(8)</em> message delivery if
<em>autocreate_post</em> is enabled, receive the message quota
configured in this option.</p>
<p>The default of -1 disables assigning message quota.</p>
<p>For consistency with <em>autocreate_quota</em>, a value of zero is treated
as unlimited message quota, rather than a message quota of zero.</p>
</div></blockquote>
</div></blockquote>
</div></blockquote>
</section>
<section id="quota-database">
<span id="imap-admin-quotas-database"></span><h2>Quota Database<a class="headerlink" href="#quota-database" title="Permalink to this heading"></a></h2>
<p>Quota information is stored either in a database (i.e. twoskip,
skiplist) or in "quotalegacy" format, which is a filesystem hierarchy.
This is controlled by the <code class="docutils literal notranslate"><span class="pre">quota_db</span></code> setting in
<a class="reference internal" href="../manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>. Here's more about the pertinent settings:</p>
<blockquote>
<div><blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">quota_db:</span></code> quotalegacy</p>
<blockquote>
<div><p>The cyrusdb backend to use for quotas.</p>
<p>Allowed values: <em>flat</em>, <em>skiplist</em>, <em>sql</em>, <em>quotalegacy</em>, <em>twoskip</em>, <em>zeroskip</em></p>
</div></blockquote>
</div></blockquote>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">quota_db_path:</span></code> <none></p>
<blockquote>
<div><p>The absolute path for the quota database (if you choose a single-file
quota DB type - or the base path if you choose quotalegacy). If
not specified will be configdirectory/quotas.db or configdirectory/quota/</p>
</div></blockquote>
</div></blockquote>
</div></blockquote>
</section>
<section id="converting-quotas-database">
<span id="imap-admin-quotas-convert-db"></span><h2>Converting Quotas Database<a class="headerlink" href="#converting-quotas-database" title="Permalink to this heading"></a></h2>
<p>The <a class="reference internal" href="../manpages/systemcommands/cvt_cyrusdb.html#std-cyrusman-cvt_cyrusdb-8">cvt_cyrusdb(8)</a> utility may be used to convert between
formats. It's usage with <code class="docutils literal notranslate"><span class="pre">quotalegacy</span></code> is a special case, in that
the first argument ("<old db>") will be the path to the <em>base</em> of the
<code class="docutils literal notranslate"><span class="pre">quotalegacy</span></code> directory structure, not to a particular file.</p>
<p>For example, given this typical layout:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">imap</span><span class="o">/</span>
<span class="o">|</span> <span class="o">/</span><span class="n">quota</span><span class="o">/</span>
<span class="o">|</span> <span class="o">/</span><span class="n">A</span><span class="o">/</span>
<span class="o">|</span> <span class="o">/</span><span class="n">user</span><span class="o">/</span>
<span class="o">|</span> <span class="o">/</span><span class="n">bob</span><span class="o">/</span>
</pre></div>
</div>
<p>The proper <code class="docutils literal notranslate"><span class="pre">cvt_cyrusdb</span></code> command would be:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">cvt_cyrusdb</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">imap</span><span class="o">/</span><span class="n">quota</span> <span class="n">quotalegacy</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">imap</span><span class="o">/</span><span class="n">quotas</span><span class="o">.</span><span class="n">db</span> <span class="n">twoskip</span>
</pre></div>
</div>
<p id="imap-admin-quotas-end">Back to <a class="reference internal" href="../admin.html#imap-admin"><span class="std std-ref">Administrator Guide</span></a></p>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="access-control/rights-reference.html" class="btn btn-neutral float-left" title="Access Control Lists Rights Reference" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="quotas/quotaroots.html" class="btn btn-neutral float-right" title="Quota Roots" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 1993–2025, The Cyrus Team.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>
|