| 12
 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
 
 | <!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 Murder Failure Modes — 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 Murder Mail Delivery" href="murder-mail-delivery.html" />
    <link rel="prev" title="Cyrus Murder Mupdate Details" href="murder-mupdate-details.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"><a class="reference internal" href="../quotas.html">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 current"><a class="reference internal" href="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"><a href="murder.html">Cyrus Murder</a></li>
      <li class="breadcrumb-item active">Cyrus Murder Failure Modes</li>
      <li class="wy-breadcrumbs-aside">
              <a href="https://github.com/cyrusimap/cyrus-imapd/blob/master/docsrc/imap/reference/admin/murder/murder-failure-modes.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-murder-failure-modes">
<h1>Cyrus Murder Failure Modes<a class="headerlink" href="#cyrus-murder-failure-modes" title="Permalink to this heading"></a></h1>
<p>This page is for documenting what happens when a part of the Cyrus Murder fails, how to recover from failures, and commons DOs and DON'Ts of Murder operation.</p>
<section id="what-happens-when-the-murder-mupdate-master-is-unavailable">
<h2>What happens when the Murder mupdate master is unavailable?<a class="headerlink" href="#what-happens-when-the-murder-mupdate-master-is-unavailable" title="Permalink to this heading"></a></h2>
<ol class="arabic simple">
<li><p>Incoming IMAP connections to frontends are still allowed, as are most mailbox operations (see below for exceptions).</p></li>
<li><p>Mail delivery via the frontends is deferred (lmtpproxyd cannot locate mailbox).</p></li>
<li><p>Deleting a mailbox (or folder) works, presumably because this operation cannot create future conflicts in the mailbox list. However, the frontends will still think the mailbox (or folder) exists because they only get updates from the mupdate master.</p></li>
<li><p>Creating a mailbox (or folder) fails with an error message like "can not connect to mupdate server for reservation on 'user.foo.test'".</p></li>
</ol>
</section>
<section id="what-happens-when-the-murder-mupdate-master-is-available-again">
<h2>What happens when the Murder mupdate master is available again?<a class="headerlink" href="#what-happens-when-the-murder-mupdate-master-is-available-again" title="Permalink to this heading"></a></h2>
<p>Frontends will automatically reconnect to the mupdate master after 20 seconds (see <strong>mupdate_retry_delay</strong> in <a class="reference internal" href="../../manpages/configs/imapd.conf.html#std-cyrusman-imapd.conf-5">imapd.conf(5)</a>) and synchronize.</p>
<p>Backends will NOT automatically sync any changes to the mupdate master. If any mailbox changes occurred on a backend (a distinct possibility if IMAP clients were still connected), you will need to manually synchronize the mailbox list from the backend to the mupdate master. As the cyrus user, run <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-mw</span></code> on each backend to see the list of changes that would be made. If the list looks correct, then run <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-m</span></code> to actually push those changes to the mupdate master.</p>
</section>
<section id="what-if-my-mupdate-master-blows-up-and-i-have-to-recover-it">
<h2>What if my mupdate master blows up and I have to recover it?<a class="headerlink" href="#what-if-my-mupdate-master-blows-up-and-i-have-to-recover-it" title="Permalink to this heading"></a></h2>
<p>It is either easy, or hard depending on your setup.</p>
<section id="easy-recovery">
<h3>Easy recovery<a class="headerlink" href="#easy-recovery" title="Permalink to this heading"></a></h3>
<p>You can restore the murder master mailbox list from your text backup (created with <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-d</span></code>)</p>
<p>Don't have a backup? Well it is still easy if you have a frontend. The mailboxes.db on your frontend and your murdermaster are in the same format.</p>
<ol class="arabic simple">
<li><p>Stop Cyrus on a frontend</p></li>
<li><p>Stop Cyrus on your murder master</p></li>
<li><p>Copy mailboxes.db from frontend to murder master</p></li>
<li><p>Start everything backup</p></li>
<li><p>Use ctl_mboxlist -m on each backend to update the murder master with any missing changes.</p></li>
</ol>
<p>If you are using skiplist for your mailboxes.db then you can just copy the file.</p>
</section>
<section id="hard-recovery">
<h3>Hard recovery<a class="headerlink" href="#hard-recovery" title="Permalink to this heading"></a></h3>
<p>It's not currently possible to recover the master's mailboxes.db with a dump from <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-d</span></code>. The mailboxes.db recovered on the master with <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-u</span></code> won't have the "remote" flag set.</p>
<ol class="arabic simple">
<li><p>Stop Cyrus on your frontends.</p></li>
<li><p>Delete the mailboxes.db on the frontends and the mupdate master.</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">ctl_mboxlist</span> <span class="pre">-m</span></code> on each backend to populate the mailboxes.db on the mupdate master.</p></li>
<li><p>Start Cyrus on the frontends.</p></li>
</ol>
</section>
</section>
</section>
           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="murder-mupdate-details.html" class="btn btn-neutral float-left" title="Cyrus Murder Mupdate Details" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
        <a href="murder-mail-delivery.html" class="btn btn-neutral float-right" title="Cyrus Murder Mail Delivery" 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>
 |