File: quotas.html

package info (click to toggle)
cyrus-imapd 3.10.2-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 59,108 kB
  • sloc: ansic: 284,386; perl: 137,327; javascript: 9,659; sh: 5,730; yacc: 2,565; makefile: 2,188; cpp: 2,147; lex: 662; xml: 621; awk: 303; python: 272; asm: 262
file content (293 lines) | stat: -rw-r--r-- 16,865 bytes parent folder | download
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 &mdash; 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 &amp; 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 &quot;quotalegacy&quot; 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> &lt;none&gt;</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 (&quot;&lt;old db&gt;&quot;) 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>&#169; 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>