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
|
<!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.12.1 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.12.1
</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="../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="../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>
|