File: 2.5.0.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 (647 lines) | stat: -rw-r--r-- 46,576 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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
<!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>Cyrus IMAP 2.5.0 Release Notes &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="Cyrus IMAP 2.5.1 Release Notes" href="2.5.1.html" />
    <link rel="prev" title="Cyrus IMAP 2.5 Releases" href="../index.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 current"><a class="reference internal" href="../../../../../download.html">Download</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../../getcyrus.html">Get Cyrus</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="../../index.html">Release Notes</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="../../index.html#stable-version">Stable Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../index.html#development-version">Development Version</a></li>
<li class="toctree-l3 current"><a class="reference internal" href="../../index.html#supported-product-series">Supported Product Series</a><ul class="current">
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-10">Series 3.10</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-8">Series 3.8</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-6">Series 3.6</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-4">Series 3.4</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-2">Series 3.2</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../index.html#series-3-0">Series 3.0</a></li>
<li class="toctree-l4 current"><a class="reference internal" href="../../index.html#series-2-5">Series 2.5</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../index.html#development-snapshots">Development snapshots</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../index.html#older-versions">Older Versions</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../../packagers.html">Notes for Packagers</a></li>
</ul>
</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"><a class="reference internal" href="../../../../../operations.html">Operations</a></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="../../../../../download.html">Download</a></li>
          <li class="breadcrumb-item"><a href="../../index.html">Release Notes</a></li>
          <li class="breadcrumb-item"><a href="../index.html">Cyrus IMAP 2.5 Releases</a></li>
      <li class="breadcrumb-item active">Cyrus IMAP 2.5.0 Release Notes</li>
      <li class="wy-breadcrumbs-aside">
              <a href="https://github.com/cyrusimap/cyrus-imapd/blob/master/docsrc/imap/download/release-notes/2.5/x/2.5.0.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="cyrus-imap-2-5-0-release-notes">
<h1>Cyrus IMAP 2.5.0 Release Notes<a class="headerlink" href="#cyrus-imap-2-5-0-release-notes" title="Permalink to this heading"></a></h1>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>Make sure to read the <a class="reference internal" href="#imap-relnotes-2-5-0-upgrading"><span class="std std-ref">Upgrading to Cyrus IMAP 2.5.0</span></a> notes
(all of them).</p>
</div>
<ul class="simple">
<li><p><a class="reference internal" href="#relnotes-2-5-0-new-features"><span class="std std-ref">New Features</span></a></p></li>
<li><p><a class="reference internal" href="#relnotes-2-5-0-config-option-changes"><span class="std std-ref">Configuration Option Changes and Enhancements</span></a></p></li>
<li><p><a class="reference internal" href="#relnotes-2-5-0-development-autoconf"><span class="std std-ref">Development: Switch to autoconf and libtool</span></a></p></li>
<li><p><a class="reference internal" href="#relnotes-2-5-0-development-phabricator"><span class="std std-ref">Development: Switch to Phabricator</span></a></p></li>
<li><p><a class="reference internal" href="#relnotes-2-5-0-development-documentation"><span class="std std-ref">Development: Sphinx for Documentation</span></a></p></li>
</ul>
<p>Download from GitHub:</p>
<blockquote>
<div><ul class="simple">
<li><p><a class="reference external" href="https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.0/cyrus-imapd-2.5.0.tar.gz">https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.0/cyrus-imapd-2.5.0.tar.gz</a></p></li>
<li><p><a class="reference external" href="https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.0/cyrus-imapd-2.5.0.tar.gz.sig">https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-2.5.0/cyrus-imapd-2.5.0.tar.gz.sig</a></p></li>
</ul>
</div></blockquote>
<section id="upgrading-to-cyrus-imap-2-5-0">
<span id="imap-relnotes-2-5-0-upgrading"></span><h2>Upgrading to Cyrus IMAP 2.5.0<a class="headerlink" href="#upgrading-to-cyrus-imap-2-5-0" title="Permalink to this heading"></a></h2>
<p>It is strongly recommended to shut down the Cyrus IMAP services before
performing the upgrade, as the newer binaries will end up writing to
<code class="docutils literal notranslate"><span class="pre">mailboxes.db</span></code> in a way that is not compatible with the older binaries
(that would otherwise still be running).</p>
<p>You can start the server immediately after upgrading, however.</p>
<section id="underscores-in-cmd-names-in-cyrus-conf-5">
<h3>Underscores in <code class="docutils literal notranslate"><span class="pre">cmd</span></code> Names in <a class="reference internal" href="../../../../reference/manpages/configs/cyrus.conf.html#std-cyrusman-cyrus.conf-5">cyrus.conf(5)</a><a class="headerlink" href="#underscores-in-cmd-names-in-cyrus-conf-5" title="Permalink to this heading"></a></h3>
<p>Underscores (the <code class="docutils literal notranslate"><span class="pre">_</span></code> character) are no longer allowed in the
<code class="docutils literal notranslate"><span class="pre">START</span></code>, <code class="docutils literal notranslate"><span class="pre">SERVICES</span></code> and <code class="docutils literal notranslate"><span class="pre">EVENTS</span></code> sections of
<a class="reference internal" href="../../../../reference/manpages/configs/cyrus.conf.html#std-cyrusman-cyrus.conf-5">cyrus.conf(5)</a>, as they interfere with configuration options
in <a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a> being prefixed by service names and an
underscore (<code class="docutils literal notranslate"><span class="pre">_</span></code>) character.</p>
</section>
<section id="database-format-upgrade-for-mailboxes">
<h3>Database Format Upgrade for Mailboxes<a class="headerlink" href="#database-format-upgrade-for-mailboxes" title="Permalink to this heading"></a></h3>
<p>Upgrading to Cyrus IMAP 2.5.0 recommends the upgrade of database
formats, for which the reconstruct utility has been modified allowing
administrators to run:</p>
<pre class="literal-block"># <strong class="command">/usr/lib/cyrus-imapd/reconstruct -V max</strong> [options]</pre>
<p>This command can be run at the administrator's convenience, and while
running the database format upgrade process is not strictly required, it
is certainly strongly recommended.</p>
<p>Releases prior to 2.5.0, namely the 2.4 series, upgraded <code class="docutils literal notranslate"><span class="pre">cyrus.index</span></code>
database formats in-line (i.e. as the mailbox in question as being
used). This may have caused an I/O storm in some situations, which 2.5.0
aims to address.</p>
<p>The minor version of the <code class="docutils literal notranslate"><span class="pre">cyrus.index</span></code> file in 2.5.0 is <strong>13</strong>. While
mailboxes with an older format will continue to work &quot;forever&quot;, newer
features such as annotation quotas will fail, as there is no space in
the database formats prior to version 13 to store the new feature's
information.</p>
<p>Until you upgrade the database format, you may experience slightly
inconsistent search results, due to the <code class="docutils literal notranslate"><span class="pre">cyrus.cache</span></code> format in Cyrus
IMAP versions prior to 2.4.0 running words together and not obeying word
boundaries (as well as versions in the 2.4 and 2.5 series).</p>
<p>If you were running Cyrus 2.3.x with <code class="docutils literal notranslate"><span class="pre">expunge_mode:</span> <span class="pre">delayed</span></code>, then the
contents of the <code class="docutils literal notranslate"><span class="pre">cyrus.expunge</span></code> file will be removed the first time
the mailbox is opened, and the mailbox will act as if <code class="docutils literal notranslate"><span class="pre">expunge_mode</span></code>
was set to <code class="docutils literal notranslate"><span class="pre">immediate</span></code> -- until it is upgraded.</p>
<p>This is because version 2.3 mailboxes used the <code class="docutils literal notranslate"><span class="pre">cyrus.expunge</span></code> file,
and it's not worth the complexity to try to recreate that file.</p>
<p>This upgrade path supports upgrades from Cyrus IMAP version 2.2.12 and
later versions.</p>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>The above command can run while the Cyrus IMAP services are in
operation, and does <strong>not</strong> interfere with the service's operations.</p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Additional options can be specified to <a class="reference internal" href="../../../../reference/manpages/systemcommands/reconstruct.html#std-cyrusman-reconstruct-8">reconstruct(8)</a> to
more granularly specify which mailboxes' <code class="file docutils literal notranslate"><span class="pre">cyrus.index</span></code> is to
be upgraded.</p>
</div>
</section>
<section id="quota-fixes-and-enhancements">
<h3>Quota Fixes and Enhancements<a class="headerlink" href="#quota-fixes-and-enhancements" title="Permalink to this heading"></a></h3>
<p>After all mailboxes are upgraded, you should run <code class="docutils literal notranslate"><span class="pre">quota</span> <span class="pre">-f</span></code> to make
all message and folder counts are correct. The new quota types that
Cyrus IMAP 2.5.0 supports require the counts to need to be accurate.</p>
</section>
<section id="cyrus-imap-murder-topologies">
<h3>Cyrus IMAP Murder Topologies<a class="headerlink" href="#cyrus-imap-murder-topologies" title="Permalink to this heading"></a></h3>
<p>Environments that run a Cyrus IMAP Murder topology will want to upgrade
their backends before they upgrade their frontends.</p>
</section>
<section id="greater-memory-footprint">
<h3>Greater Memory Footprint<a class="headerlink" href="#greater-memory-footprint" title="Permalink to this heading"></a></h3>
<p>For those upgrading from 2.3.X; newer releases of Cyrus IMAP will use
significantly more memory per selected mailbox.  This is not an error
or bug; it's a feature.  The newer code is holding more data and
metadata in memory for purposes of faster access to more of the
mailbox.  This is not a memory leak.</p>
</section>
</section>
<section id="new-features">
<span id="relnotes-2-5-0-new-features"></span><h2>New Features<a class="headerlink" href="#new-features" title="Permalink to this heading"></a></h2>
<section id="index-namelock-release">
<span id="relnotes-2-5-0-index-namelock-release"></span><h3>Index Namelock Release<a class="headerlink" href="#index-namelock-release" title="Permalink to this heading"></a></h3>
<p>Long-running (idling) connections may have previously intervened with
mailbox deletions and general cleanup work, resulting in one connection
blocking another from, for example, deleting and recreating a mailbox:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span>C1:<span class="w"> </span>SELECT<span class="w"> </span><span class="s2">&quot;Foo&quot;</span>
<span class="linenos">2</span>C2:<span class="w"> </span>DELETE<span class="w"> </span><span class="s2">&quot;Foo&quot;</span>
<span class="linenos">3</span>C2:<span class="w"> </span>CREATE<span class="w"> </span><span class="s2">&quot;Foo&quot;</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">CREATE</span></code> command on line 3 (by client 2, while client 1 still has
the <code class="docutils literal notranslate"><span class="pre">Foo</span></code> mailbox selected) would have failed before, but does now
succeed.</p>
</section>
<section id="extended-quota-types">
<h3>Extended Quota Types<a class="headerlink" href="#extended-quota-types" title="Permalink to this heading"></a></h3>
<p>New ways to restrict resource usage:</p>
<ul class="simple">
<li><p>Number of Folders,</p></li>
<li><p>Number of Messages,</p></li>
<li><p>Number of Annotations</p></li>
</ul>
</section>
<section id="caldav-and-carddav-support">
<h3>CalDAV and CardDAV Support<a class="headerlink" href="#caldav-and-carddav-support" title="Permalink to this heading"></a></h3>
<p>CalDAV and CardDAV support no longer live out-of-tree in the same GIT
repository, but are now mainstream and included in Cyrus IMAP 2.5.0.</p>
<p>This has been a major effort by Carnegie Mellon University and FastMail,
and continues to be, enriching the experience of Cyrus IMAP users
globally.</p>
<p>If upgrading to Cyrus IMAP 2.5 from one of the 2.4.17-caldav-beta
releases, you MUST run the <code class="docutils literal notranslate"><span class="pre">dav_reconstruct</span></code> utility for each of
your CalDAV users.</p>
</section>
<section id="support-for-rfc-5464-imap-metadata">
<h3>Support for RFC 5464: IMAP METADATA<a class="headerlink" href="#support-for-rfc-5464-imap-metadata" title="Permalink to this heading"></a></h3>
<p>Cyrus IMAP now fully supports <span class="target" id="index-0"></span><a class="rfc reference external" href="https://datatracker.ietf.org/doc/html/rfc5464.html"><strong>RFC 5464</strong></a>, <em>The IMAP METADATA
Extension</em>.</p>
<p>This also means the support for the ANNOTATEMORE draft for IMAP will
ultimately be dropped.</p>
<p>Aside from the trusted folder metadata, this also introduces message
annotations. Users will need to be given the <code class="docutils literal notranslate"><span class="pre">n</span></code> right to allow them
to set message annotations.</p>
</section>
<section id="event-notifications">
<h3>Event Notifications<a class="headerlink" href="#event-notifications" title="Permalink to this heading"></a></h3>
<p>Various events occuring in Cyrus IMAP, among which mailbox, message and
access events, can now be pushed out through a side-channel and notify
client applications or provide other infrastructure with detailed
information.</p>
</section>
<section id="mailbox-distribution-enhancements-backend-and-partition-selection">
<h3>Mailbox Distribution Enhancements: Backend and Partition Selection<a class="headerlink" href="#mailbox-distribution-enhancements-backend-and-partition-selection" title="Permalink to this heading"></a></h3>
<p>Thanks to the work of Julien Coloos and colleagues, a new mode is
available for server and partition selection upon mailbox creation.</p>
<p>Prior to Cyrus IMAP 2.5.0, the server and/or partition on which to
create a new mailbox was selected by detecting the largest amount of
absolute free disk space on all servers and partitions. The mailbox
distribution feature allows for more intelligent and flexible routines
to be used in the selection. Please see our Administrator Guide for
more details.</p>
</section>
<section id="new-database-format-for-mailboxes-db">
<h3>New Database Format for <code class="docutils literal notranslate"><span class="pre">mailboxes.db</span></code><a class="headerlink" href="#new-database-format-for-mailboxes-db" title="Permalink to this heading"></a></h3>
<p>The database format for mailboxes.db has been upgraded, adding;</p>
<ul>
<li><p>A new mailbox type for deleted mailboxes.</p>
<p>In versions of Cyrus IMAP prior to 2.5.0, mailboxes that were
deleted may have become unavailable for actual cleanup expecting
another session on the same mailbox to clean up the directories and
files. See also <a class="reference internal" href="#relnotes-2-5-0-index-namelock-release"><span class="std std-ref">Index Namelock Release</span></a>.</p>
</li>
<li><p>A key-value storage format is used, allowing for faster and better
parsing of <code class="file docutils literal notranslate"><span class="pre">mailboxes.db</span></code>, more granular updates to runtime
environments, and more sustainable future upgrades.</p></li>
</ul>
</section>
<section id="new-database-format-twoskip">
<h3>New Database Format <code class="docutils literal notranslate"><span class="pre">twoskip</span></code><a class="headerlink" href="#new-database-format-twoskip" title="Permalink to this heading"></a></h3>
<p>A new database format has been added, called <code class="docutils literal notranslate"><span class="pre">twoskip</span></code> <a class="footnote-reference brackets" href="#id2" id="id1" role="doc-noteref"><span class="fn-bracket">[</span>1<span class="fn-bracket">]</span></a>.</p>
<p>This new database format is reputedly better, faster, safer and 64-bit
capable, as opposed to our former favorite <code class="docutils literal notranslate"><span class="pre">skiplist</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">twoskip</span></code> can be used for the following databases:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">annotation_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">duplicate_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mboxkey_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">mboxlist_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ptscache_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">quota_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">seenstate_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">subscription_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statuscache_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">tls_sessions_db</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">user_deny_db</span></code></p></li>
</ul>
</section>
<section id="miscellaneous">
<h3>Miscellaneous<a class="headerlink" href="#miscellaneous" title="Permalink to this heading"></a></h3>
<section id="allowing-undefined-annotations">
<h4>Allowing Undefined Annotations<a class="headerlink" href="#allowing-undefined-annotations" title="Permalink to this heading"></a></h4>
<p>Cyrus IMAP 2.5.0 allows administrators to configure that undefined
annotations should be allowed, using a new
<code class="docutils literal notranslate"><span class="pre">annotation_allow_undefined</span></code> setting in <a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>.</p>
</section>
<section id="catchall-mailbox-for-lmtp">
<h4>Catchall Mailbox for LMTP<a class="headerlink" href="#catchall-mailbox-for-lmtp" title="Permalink to this heading"></a></h4>
<p>Thanks to the work by Carsten Hoeger and Ralf Haferkamp, this new
feature enables administrators to configure a target mailbox for mail
delivered through LMTP to targetted mailboxes that do not exist.</p>
<p>For example, a mail that LMTP would deliver to <code class="docutils literal notranslate"><span class="pre">user/bovik</span></code>, which
for the sake of argument does not exist in this example, setting
<code class="docutils literal notranslate"><span class="pre">lmtp_catchall_mailbox</span></code> to <code class="docutils literal notranslate"><span class="pre">admin</span></code> will instead deliver the mail
to <code class="docutils literal notranslate"><span class="pre">user/admin</span></code>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><strong>Mailbox name, not Email Address</strong></p>
<p>Note that <strong>lmtp_catchall_mailbox</strong> must be a user mailbox name,
not an email address. Also note that the <strong>user/</strong> namespace
indicator as well as the hierarchy separator are to be omitted.</p>
</div>
<section id="does-this-impact-lmtp-fuzzy-mailbox-match">
<h5>Does this impact lmtp_fuzzy_mailbox_match?<a class="headerlink" href="#does-this-impact-lmtp-fuzzy-mailbox-match" title="Permalink to this heading"></a></h5>
<p>Environments that have <code class="docutils literal notranslate"><span class="pre">lmtp_fuzzy_mailbox_match</span></code> enabled, in order
to have LMTP seek from the targetted, non-existent mailbox sub-folder
(example: <code class="docutils literal notranslate"><span class="pre">user/bovik/spam/probably</span></code>) all the way to the toplevel
mailbox folder (i.e. <code class="docutils literal notranslate"><span class="pre">user/bovik</span></code>) until it finds a mailbox
(sub-)folder that does exist (example: <code class="docutils literal notranslate"><span class="pre">user/bovik/spam</span></code>), are not
impacted by this setting.</p>
</section>
<section id="can-the-lmtp-catchall-mailbox-include-the-path-to-a-sub-folder-of-a-target-mailbox">
<h5>Can the lmtp_catchall_mailbox include the path to a sub-folder of a target mailbox?<a class="headerlink" href="#can-the-lmtp-catchall-mailbox-include-the-path-to-a-sub-folder-of-a-target-mailbox" title="Permalink to this heading"></a></h5>
<p>UNCONFIRMED</p>
</section>
<section id="can-the-lmtp-catchall-mailbox-be-a-shared-folder">
<h5>Can the lmtp_catchall_mailbox be a shared folder?<a class="headerlink" href="#can-the-lmtp-catchall-mailbox-be-a-shared-folder" title="Permalink to this heading"></a></h5>
<p>UNCONFIRMED</p>
</section>
</section>
<section id="callout-for-setmetadata">
<h4>Callout for SETMETADATA<a class="headerlink" href="#callout-for-setmetadata" title="Permalink to this heading"></a></h4>
<p>A callout program can be called when annotations are set, configured
through <code class="docutils literal notranslate"><span class="pre">annotation_callout</span></code>.</p>
</section>
<section id="host-user-login-restrictions">
<h4>Host &amp; User Login Restrictions<a class="headerlink" href="#host-user-login-restrictions" title="Permalink to this heading"></a></h4>
<p>Logins can now be restricted on a per host (source IP address) or per
user basis, using the settings <code class="docutils literal notranslate"><span class="pre">maxlogins_per_host</span></code> and
<code class="docutils literal notranslate"><span class="pre">maxlogins_per_user</span></code>.</p>
</section>
</section>
</section>
<section id="configuration-option-changes-and-enhancements">
<span id="relnotes-2-5-0-config-option-changes"></span><h2>Configuration Option Changes and Enhancements<a class="headerlink" href="#configuration-option-changes-and-enhancements" title="Permalink to this heading"></a></h2>
<div class="admonition important">
<p class="admonition-title">Important</p>
<p>While it is not mandatory to update your configuration file with
these new settings, not doing so may have undesired side-effects,
including but not limited to deprecation warnings in log messages.</p>
</div>
<section id="option-name-changes-for-autocreate">
<h3>Option Name Changes for <code class="docutils literal notranslate"><span class="pre">autocreate</span></code><a class="headerlink" href="#option-name-changes-for-autocreate" title="Permalink to this heading"></a></h3>
<p>The options related to automatic creation of user mailboxes and
sub-folders (aka. <em>autocreate</em>) have been changed to hold a prefix of
<code class="docutils literal notranslate"><span class="pre">autocreate_</span></code>.</p>
<p>The following <em>autocreate</em> options are now available:</p>
<p><strong>autocreate_inbox_folders</strong> (was: <code class="docutils literal notranslate"><span class="pre">autocreateinboxfolders</span></code>)</p>
<blockquote>
<div><p><code class="docutils literal notranslate"><span class="pre">autocreate_inbox_folders</span></code> controls which folders to create in
addition to the INBOX folder.</p>
<p>Separate the folder names by <code class="docutils literal notranslate"><span class="pre">|</span></code>.</p>
</div></blockquote>
<p><strong>autocreate_post</strong> (was: <code class="docutils literal notranslate"><span class="pre">createonpost</span></code>)</p>
<blockquote>
<div><p>Controls whether or not to create a folder when a message is first
posted to it (by LTMP).</p>
</div></blockquote>
<p><strong>autocreate_quota</strong> (was: <code class="docutils literal notranslate"><span class="pre">autocreatequota</span></code>)</p>
<blockquote>
<div><p>When creating a user mailbox, set the quota for that mailbox to the
value of this configuration option.</p>
</div></blockquote>
<p><strong>autocreate_quota_messages</strong> (not available)</p>
<blockquote>
<div><p>When creating a user mailbox, set the message quota (maximum number
of messages allowed in the folder hierarchy) to the value of this
configuration option.</p>
</div></blockquote>
<p><strong>autocreate_sieve_folders</strong> (was: <code class="docutils literal notranslate"><span class="pre">autosievefolders</span></code>)</p>
<blockquote>
<div><p>Limit the folders that can be created automatically by a Sieve
script performing a &quot;fileinto&quot; action, to the folders listed in
this configuration option.</p>
<p>Separate the folder names by <code class="docutils literal notranslate"><span class="pre">|</span></code>.</p>
</div></blockquote>
<p><strong>autocreate_sieve_script</strong> (unchanged)</p>
<blockquote>
<div><p>When creating a user mailbox, associate the Sieve script configured
here.</p>
</div></blockquote>
<p><strong>autocreate_sieve_script_compile</strong> (was: <code class="docutils literal notranslate"><span class="pre">generate_compiled_sieve_script</span></code>)</p>
<blockquote>
<div><p>Whether or not to compile the Sieve script configured by
<code class="docutils literal notranslate"><span class="pre">autocreate_sieve_script</span></code>.</p>
</div></blockquote>
<p><strong>autocreate_sieve_script_compiled</strong> (was: <code class="docutils literal notranslate"><span class="pre">autocreate_sieve_compiled_script</span></code>)</p>
<blockquote>
<div><p>When creating a user mailbox, associate the already compiled Sieve
script configured here.</p>
</div></blockquote>
<p><strong>autocreate_subscribe_folders</strong> (was: <code class="docutils literal notranslate"><span class="pre">autosubscribeinboxfolders</span></code>)</p>
<blockquote>
<div><p>List the folder names to which the user for which a mailbox is
being created should be subscribed.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All folders listed here are considered to reside in the
personal namespace.</p>
</div>
<p>Separate the folder names by <code class="docutils literal notranslate"><span class="pre">|</span></code>.</p>
</div></blockquote>
<p><strong>autocreate_subscribe_sharedfolders</strong> (was: <code class="docutils literal notranslate"><span class="pre">autosubscribesharedfolders</span></code>)</p>
<blockquote>
<div><p>List the folder names of shared folders to which the user for which
a mailbox is being automatically created should be subscribed.</p>
<p>Separate the folder names by <code class="docutils literal notranslate"><span class="pre">|</span></code>.</p>
</div></blockquote>
<p><strong>autocreate_subscribe_sharedfolders_all</strong> (was: <code class="docutils literal notranslate"><span class="pre">autosubscribe_all_sharedfolders</span></code>)</p>
<blockquote>
<div><p>Rather than subscribe the user for which a mailbox is being
automatically created to some shared folders, simply subscribe the
user to all shared folders.</p>
</div></blockquote>
<p><strong>autocreate_users</strong> (unchanged)</p>
<blockquote>
<div><p>Limit the users for which mailboxes may be created to the list
configured here.</p>
</div></blockquote>
</section>
<section id="default-change-delete-mode">
<h3>Default Change: <code class="docutils literal notranslate"><span class="pre">delete_mode</span></code><a class="headerlink" href="#default-change-delete-mode" title="Permalink to this heading"></a></h3>
<p>The default for the <a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a> configuration option
<code class="docutils literal notranslate"><span class="pre">delete_mode</span></code> has changed from <code class="docutils literal notranslate"><span class="pre">immediate</span></code> to <code class="docutils literal notranslate"><span class="pre">delayed</span></code>.</p>
<p>This causes mail folders that are deleted by a client to not
immediately dissappear from the filesystem. Instead, they are renamed
to a deleted namespace that is visible only to administrators.</p>
<p>A separate job <code class="docutils literal notranslate"><span class="pre">cyr_expire</span> <span class="pre">-D</span> <span class="pre">$x</span></code> is to be included in the master
service configuration file <a class="reference internal" href="../../../../reference/manpages/configs/cyrus.conf.html#std-cyrusman-cyrus.conf-5">cyrus.conf(5)</a>, specifically in
the EVENTS section. <code class="docutils literal notranslate"><span class="pre">$x</span></code> is a number of days to keep already deleted
folders.</p>
<p><strong>Example section of :cyrusman:`cyrus.conf(5)`</strong></p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">EVENTS</span> <span class="p">{</span>
    <span class="n">deleteprune</span> <span class="n">cmd</span><span class="o">=</span><span class="s2">&quot;cyr_expire -D 69&quot;</span> <span class="n">at</span><span class="o">=</span><span class="mi">0430</span>
<span class="p">}</span>
</pre></div>
</div>
</div></blockquote>
<p>In the aforementioned example, folders are purged from the filesystem
only after 2 times 31 plus 7 days, corresponding with 2 cycles of a
monthly (full, virtual) backup of which one might fail.</p>
</section>
<section id="default-change-expunge-mode">
<h3>Default Change: <code class="docutils literal notranslate"><span class="pre">expunge_mode</span></code><a class="headerlink" href="#default-change-expunge-mode" title="Permalink to this heading"></a></h3>
<p>The default for the <a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a> configuration option
<code class="docutils literal notranslate"><span class="pre">expunge_mode</span></code> has changed from <code class="docutils literal notranslate"><span class="pre">default</span></code> to <code class="docutils literal notranslate"><span class="pre">delayed</span></code>.</p>
<p>This causes the mail message files associated with messages that are
flagged as Deleted in a folder that is subsequently expunged, or
individual messages that are expunged, to not be removed from the
filesystem directly.</p>
<p>A separate job <code class="docutils literal notranslate"><span class="pre">cyr_expire</span> <span class="pre">-X</span> <span class="pre">$x</span></code> is to be included in the master
service configuration file <a class="reference internal" href="../../../../reference/manpages/configs/cyrus.conf.html#std-cyrusman-cyrus.conf-5">cyrus.conf(5)</a>, specifically in
the EVENTS section. <code class="docutils literal notranslate"><span class="pre">$x</span></code> is a number of days to keep the message
files on the filesystem.</p>
<p><strong>Example section of :cyrusman:`cyrus.conf(5)`</strong></p>
<blockquote>
<div><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">EVENTS</span> <span class="p">{</span>
    <span class="n">expungeprune</span> <span class="n">cmd</span><span class="o">=</span><span class="s2">&quot;cyr_expire -X 69&quot;</span> <span class="n">at</span><span class="o">=</span><span class="mi">0430</span>
<span class="p">}</span>
</pre></div>
</div>
</div></blockquote>
<p>In the aforementioned example, message files are purged from the
filesystem only after 2 times 31 plus 7 days, corresponding with 2
cycles of a monthly (full, virtual) backup of which one might fail.</p>
</section>
<section id="option-name-changes-for-ldap-tls">
<h3>Option Name Changes for <code class="docutils literal notranslate"><span class="pre">ldap_tls_*</span></code><a class="headerlink" href="#option-name-changes-for-ldap-tls" title="Permalink to this heading"></a></h3>
<p>Configuration option names for LDAP SSL/TLS configuration in
<a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a> have been changed:</p>
<p><strong>ldap_ca_dir</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_cacert_dir</span></code>)</p>
<p><strong>ldap_ca_file</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_cacert_file</span></code>)</p>
<p><strong>ldap_client_cert</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_cert</span></code>)</p>
<p><strong>ldap_verify_peer</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_check_peer</span></code>)</p>
<p><strong>ldap_ciphers</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_ciphers</span></code>)</p>
<p><strong>ldap_client_key</strong> (was: <code class="docutils literal notranslate"><span class="pre">ldap_tls_key</span></code>)</p>
</section>
<section id="option-name-changes-for-tls">
<h3>Option Name Changes for <code class="docutils literal notranslate"><span class="pre">tls_*</span></code><a class="headerlink" href="#option-name-changes-for-tls" title="Permalink to this heading"></a></h3>
<p>Configuration option names for SSL/TLS configuration in
<a class="reference internal" href="../../../../reference/manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a> have been changed to better reflect how
they are used, as enhancements would otherwise create great confusion.</p>
<p><strong>tls_client_ca_dir</strong> (was: <code class="docutils literal notranslate"><span class="pre">tls_ca_path</span></code>)</p>
<p><strong>tls_client_ca_file</strong> (was: <code class="docutils literal notranslate"><span class="pre">tls_ca_file</span></code>)</p>
<blockquote>
<div><p>The former <code class="docutils literal notranslate"><span class="pre">tls_ca_*</span></code> configuration options specified one or more
SSL Certificate Authority certificates against which SSL
certificates offered by clients could be verified.</p>
<p>In a Cyrus IMAP Murder topology however, Cyrus IMAP servers
themselves become clients of other Cyrus IMAP servers, but may not
have been issued certificates under the same verification chain.</p>
</div></blockquote>
<p>With the (too) generic names for <code class="docutils literal notranslate"><span class="pre">tls_ca_*</span></code> configuration options out
of the way, Cyrus IMAP 2.5.0 adds the following configuration options:</p>
<p><strong>tls_server_cert</strong> (was: <code class="docutils literal notranslate"><span class="pre">tls_cert_file</span></code>)</p>
<p><strong>tls_server_key</strong> (was: <code class="docutils literal notranslate"><span class="pre">tls_key_file</span></code>)</p>
<blockquote>
<div><p>Server SSL certificate and key to use for connections from
clients.</p>
</div></blockquote>
<p><strong>tls_sessions_db</strong> (was: <code class="docutils literal notranslate"><span class="pre">tlscache_db</span></code>)</p>
<p><strong>tls_sessions_db_path</strong> (was: <code class="docutils literal notranslate"><span class="pre">tlscache_db_path</span></code>)</p>
</section>
<section id="new-options-for-tls">
<h3>New Options for <code class="docutils literal notranslate"><span class="pre">tls_*</span></code><a class="headerlink" href="#new-options-for-tls" title="Permalink to this heading"></a></h3>
<p><strong>tls_client_cert</strong> (&lt;none&gt;)</p>
<p><strong>tls_client_key</strong> (&lt;none&gt;)</p>
<blockquote>
<div><p>Client SSL certificate and key to use when cyrus-imapd behaves as
a client (to other cyrus-imapd server (instances)).</p>
</div></blockquote>
<p><strong>tls_client_ca_file</strong> (&lt;none&gt;)</p>
<p><strong>tls_client_ca_dir</strong> (&lt;none&gt;)</p>
<blockquote>
<div><p>Certificate Authority file or directory used to verify client SSL
certificates.</p>
</div></blockquote>
<p><strong>tls_client_certs</strong> (<code class="docutils literal notranslate"><span class="pre">optional</span></code>)</p>
<blockquote>
<div><p>Disable (<code class="docutils literal notranslate"><span class="pre">off</span></code>), allow (<code class="docutils literal notranslate"><span class="pre">optional</span></code>) or require (<code class="docutils literal notranslate"><span class="pre">require</span></code>)
clients authenticate with an SSL certificate.</p>
</div></blockquote>
<p><strong>tls_server_ca_file</strong> (&lt;none&gt;)</p>
<p><strong>tls_server_ca_dir</strong> (&lt;none&gt;)</p>
<blockquote>
<div><p>Certificate Authority file or directory used to verify SSL
certificates offered by other servers.</p>
</div></blockquote>
<p><strong>tls_compression</strong> (<code class="docutils literal notranslate"><span class="pre">0</span></code>)</p>
<blockquote>
<div><p>Enable TLS compression. Disabled by default.</p>
</div></blockquote>
<p><strong>tls_eccurve</strong> (<code class="docutils literal notranslate"><span class="pre">prime256v1</span></code>)</p>
<blockquote>
<div><p>Select the elliptic curve used for ECDHE. See
<strong class="command">openssl ecparams -list_curves</strong> for supported values on
your platform.</p>
</div></blockquote>
<p><strong>tls_prefer_server_ciphers</strong> (<code class="docutils literal notranslate"><span class="pre">0</span></code>)</p>
<blockquote>
<div><p>Prefer the cipher order configured on the server-side.</p>
</div></blockquote>
<p><strong>tls_versions</strong> (<code class="docutils literal notranslate"><span class="pre">ssl2</span> <span class="pre">ssl3</span> <span class="pre">tls1_0</span> <span class="pre">tls1_1</span> <span class="pre">tls1_2</span></code>)</p>
<blockquote>
<div><p>Disable SSL/TLS protocols not in this list.</p>
</div></blockquote>
</section>
</section>
<section id="development-switch-to-autoconf-and-libtool">
<span id="relnotes-2-5-0-development-autoconf"></span><h2>Development: Switch to <code class="docutils literal notranslate"><span class="pre">autoconf</span></code> and <code class="docutils literal notranslate"><span class="pre">libtool</span></code><a class="headerlink" href="#development-switch-to-autoconf-and-libtool" title="Permalink to this heading"></a></h2>
<p>With the release of Cyrus IMAP 2.5.0, the Cyrus IMAP project has
switched to using autoconf and libtool.</p>
</section>
<section id="development-switch-to-phabricator">
<span id="relnotes-2-5-0-development-phabricator"></span><h2>Development: Switch to Phabricator<a class="headerlink" href="#development-switch-to-phabricator" title="Permalink to this heading"></a></h2>
<p>An instance of Phabricator is going to be replacing our old Bugzilla.</p>
<p>We believe this better facilitates our processes, and will make it
easier to contribute code and collaborate.</p>
<p>Please see <a class="reference external" href="https://git.cyrus.foundation/">https://git.cyrus.foundation/</a>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The Phabricator installation suffered a disk failure. We now use
GitHub for code and bug management. <a class="reference external" href="https://github.com/cyrusimap/cyrus-imapd">https://github.com/cyrusimap/cyrus-imapd</a></p>
</div>
</section>
<section id="development-sphinx-for-documentation">
<span id="relnotes-2-5-0-development-documentation"></span><h2>Development: Sphinx for Documentation<a class="headerlink" href="#development-sphinx-for-documentation" title="Permalink to this heading"></a></h2>
<p>While a work in progress still, you're looking at the new and improved
documentation effort for the Cyrus project as a whole.</p>
<p>This documentation is written in reStructuredText, and rendered by
Sphinx.</p>
<p>The GIT repository for the documentation is at</p>
<p class="rubric">Footnotes</p>
<aside class="footnote-list brackets">
<aside class="footnote brackets" id="id2" role="note">
<span class="label"><span class="fn-bracket">[</span><a role="doc-backlink" href="#id1">1</a><span class="fn-bracket">]</span></span>
<p><a class="reference external" href="http://opera.brong.fastmail.fm.user.fm/talks/twoskip/twoskip-yapc12.pdf">http://opera.brong.fastmail.fm.user.fm/talks/twoskip/twoskip-yapc12.pdf</a></p>
</aside>
</aside>
</section>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="../index.html" class="btn btn-neutral float-left" title="Cyrus IMAP 2.5 Releases" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="2.5.1.html" class="btn btn-neutral float-right" title="Cyrus IMAP 2.5.1 Release Notes" 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>