<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Relocating an installation to another drive, and moving or renaming a mailbox]]></title><description><![CDATA[<p dir="auto"><em>Written for 6.3.4. hMailServer 6.3.7 (17 October 2026) bears on relocating a Windows installation to another drive. <code>hMailServer.exe /ProtectFolders</code>, which setup runs at every installation and upgrade, now hardens the program folder, <code>Bin</code> and <code>ControlPanel</code>: where hMailServer was installed in a folder that took its permissions from the root of a drive, any account that could sign in to the computer could replace the programs the service runs (CVE-2026-107571); the default folder under Program Files was never affected. The procedure below copies the tree and re-registers it without running setup, and a folder below a drive's root takes the permissions the root hands down, so an installation relocated there is hardened by the upgrade to 6.3.7, or on 6.3.7 by running <code>hMailServer.exe /ProtectFolders</code> as an administrator, not by the move (on 6.3.6 or earlier follow the icacls steps in <code>ServiceAccount.md</code>, since those versions' /ProtectFolders leaves the three program folders as they are); before upgrading an installation at a drive's root, follow the steps "Before upgrading an installation at a drive's root" in <code>ServiceAccount.md</code>. Where accounts that are not administrators could sign in to the computer while the installation was in such a folder, the release says to reinstall the programs into a new folder that only the administrators may change, not over the installation, with setup given the new folder by <code>/DIR=</code>: over an installation setup installs into the folder it finds, and a 32-bit installation's uninstall entry overrides <code>/DIR=</code> until it is taken away, which the "re-run the installer" repair below meets. See <a href="/topic/28277">the 6.3.7 announcement</a>. hMailServer 6.3.8 (2 November 2026) has setup make or harden the program folder, <code>Bin</code> and <code>ControlPanel</code> before it copies a file or runs a program of the installation. One of them that another account could change, as a folder below a drive's root can be, setup hardens and then refuses, with exit code 7, until Windows has restarted; and a folder or a link on the way to them, or a program, library, script or settings file in them, that another account than SYSTEM, the Administrators and TrustedInstaller controls, it refuses with exit code 7, naming the <code>icacls</code> that deals with it and a restart of Windows before setup runs again. On Windows 6.3.8 may also refuse, with HM7534 or HM7536, <code>TlsCaFile</code>, <code>PostgreSQLSslRootCert</code>, a TLS certificate or private key file, <code>OAuth2PublicKeyFile</code> or <code>AcmeCertificateDirectory</code> where its path holds characters outside ASCII, so give the new root, and the folders above it, an ASCII name. See <a href="/topic/28278">the 6.3.8 announcement</a>.</em></p>
<p dir="auto">This guide covers two different moves. The first is relocating a configured installation to another directory or drive on the same machine, for example from <code>C:\Program Files (x86)\hMailServer</code> to <code>C:\Program Files\hMailServer</code>. The second is renaming a mailbox or moving it to another domain, which is an operation of its own since 6.3.4. Moving to new hardware is a third thing, and <a href="/topic/28194">Moving to new hardware, and why Windows to Linux is a rebuild</a> covers it. The one thing to know first: <strong>relocating is not one change.</strong> The installation path is recorded in the registry, in the service, in the COM registration, in <code>hMailServer.ini</code> and in a handful of database columns, and since 6.3.4 a <code>[Settings]</code> path edited in the file is ignored in favour of the value stored in the database.</p>
<p dir="auto">The relocation runbook is written in Windows terms: the registry, the service and the COM registration. The documents used here give no separate procedure for a Linux installation. Installing somewhere new is a different, solved problem: <code>/DIR="&lt;path&gt;"</code> on the installer puts a fresh installation wherever you want.</p>
<h3><a class="anchor-offset" name="the-good-news-first"></a>The good news first</h3>
<p dir="auto">The mail store itself is already relocatable. Message rows hold a bare <code>{guid}.eml</code> with no directory, and the path is rebuilt at every read against the data directory. Moving the data directory and pointing <code>DataFolder</code> at its new home moves every message with it. The exception is a database that predates hMailServer 5.4, where the column can hold a full path.</p>
<h3><a class="anchor-offset" name="before-you-touch-anything"></a>Before you touch anything</h3>
<ol>
<li><strong>Take a backup and verify it restores</strong> (<a href="/topic/28221">Backup and restore</a>). Everything below is reversible only while the old tree and a good backup both exist.</li>
<li><strong>Ask the server whether its message rows are relative.</strong> In the Control Panel, <em>Monitoring &amp; troubleshooting → Diagnostics → Test message file locations</em>. If it reports <code>ERROR: Full paths are stored in the database</code>, the move is still possible, but converting the paths becomes mandatory rather than optional.</li>
<li><strong>Write down what you are about to strand.</strong> The same Diagnostics page has an <strong>Installation paths</strong> section that lists the registry root, every <code>[Directories]</code> key and every path-shaped setting the running server holds, with the ones that do not exist marked. It changes nothing.</li>
</ol>
<h3><a class="anchor-offset" name="the-inventory"></a>The inventory</h3>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Where</th>
<th>What</th>
<th>Repaired by</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>Bin\hMailServer.ini</code>, <code>[Directories]</code></td>
<td><code>ProgramFolder</code>, <code>DataFolder</code>, <code>DatabaseFolder</code>, <code>LogFolder</code>, <code>TempFolder</code>, <code>EventFolder</code></td>
<td>Editing the file</td>
</tr>
<tr>
<td><code>Bin\hMailServer.ini</code>, <code>[Database]</code></td>
<td><code>PostgreSQLSslRootCert</code> and <code>TlsCaFile</code></td>
<td>Editing the file. Leave the connection keys alone: they name a server, not a path</td>
</tr>
<tr>
<td>The settings store (<code>hm_inisettings</code>)</td>
<td><code>ArchiveDir</code>, <code>AcmeCertificateDirectory</code>, <code>OAuth2PublicKeyFile</code>, <code>UpdateTrustRootsFile</code>, <code>UpdateLogPublicKeyFile</code>, and the certificate and private key files of the REST API, metrics and web services listeners</td>
<td>Storing the new value, not editing the file (since 6.3.4)</td>
</tr>
<tr>
<td>Registry, <code>HKLM\SOFTWARE\hMailServer</code> in the 32-bit view</td>
<td><code>InstallLocation</code></td>
<td>By hand</td>
</tr>
<tr>
<td>Registry: the service's <code>ImagePath</code>, <code>LocalServer32</code> (79 keys), <code>InprocServer32</code> (15), the TypeLib values</td>
<td></td>
<td><code>hMailServer.exe /Register</code></td>
</tr>
<tr>
<td>Registry, <code>HKLM\...\Uninstall\hMailServer_is1</code></td>
<td><code>InstallLocation</code>, <code>UninstallString</code>, <code>DisplayIcon</code></td>
<td>Nothing; re-run the installer</td>
</tr>
<tr>
<td>The database</td>
<td>Certificate and key files, DKIM key files, the client-certificate CA bundle, <code>backupdestination</code>, the ClamWin and custom scanner paths, rule actions</td>
<td>Each on its own page</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>What breaks when a key is left behind.</strong> With a stale <code>DataFolder</code> the store appears empty. With a stale <code>LogFolder</code> logs are written to the old tree, silently. With a stale <code>EventFolder</code> event scripts are not found and events stop running.</p>
<p dir="auto"><strong>The 32-bit view is not optional.</strong> The server reads <code>InstallLocation</code> through <code>KEY_WOW64_32KEY</code>, and the installer writes it there. Writing the 64-bit view changes nothing and looks like it worked.</p>
<h3><a class="anchor-offset" name="the-procedure"></a>The procedure</h3>
<ol>
<li><strong>Stop the service</strong>, and confirm it is stopped. Nothing here may run against a live server.</li>
<li><strong>Copy the tree. Copy, do not move</strong>: the old tree is the rollback. Include <code>Bin\hMailServerApiKeys.ini</code> if it exists, since the REST API key store lives there and no installer manifest mentions it. Grant the service account access to the new tree as 6.3.8's <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.8/hmailserver/docs/RelocatingAnInstallation.md" rel="nofollow ugc">RelocatingAnInstallation.md</a> does: a copy takes the permissions of the folder it lands in (under Program Files every user's Read on the new <code>Data</code>, <code>Logs</code>, <code>Temp</code>, <code>Database</code>, <code>Events</code> and <code>hMailServer.INI</code>) and not the old tree's entries for <code>NT SERVICE\hMailServer</code>, so the document makes the new root with the permissions setup gives a program folder before the copy, runs <code>hMailServer.exe /ProtectFolders</code> from the new <code>Bin</code> after step 5's <code>/Register</code>, and grants a service that runs as anything but LocalSystem its folders again with <code>/GrantServiceAccess</code>. A server that cannot write its log directory starts and then says nothing.</li>
<li><strong>Rewrite the file keys</strong> in <code>&lt;new root&gt;\Bin\hMailServer.ini</code> whose value was under the old root: the <code>[Directories]</code> folders, and <code>[Database]</code> <code>PostgreSQLSslRootCert</code> and <code>TlsCaFile</code>, the second named beside the first by 6.3.8's document, since with <code>TlsMode=verify-full</code> a CA file left in the old tree stops the server reaching its database once that tree is deleted (HM7531). Nothing else, and not a folder that was outside the old tree and has not moved: a <code>DataFolder</code> pointed at an empty directory makes the store appear empty.</li>
<li><strong>Repoint the registry root</strong>, from an elevated prompt: <code>reg add "HKLM\SOFTWARE\hMailServer" /v InstallLocation /t REG_SZ /d "&lt;new root&gt;" /reg:32 /f</code>. <code>/reg:32</code> is the whole of the point.</li>
<li><strong>Re-register the server</strong>, from an elevated prompt, from the <strong>new</strong> <code>Bin</code>: <code>hMailServer.exe /Register</code>. It registers the path of the executable that runs it.</li>
<li><strong>Start it, and check what it read.</strong> Read the application log, and since 6.3.4 the ERROR log too. Confirm that the Diagnostics page's <strong>Installation paths</strong> shows the new paths (6.3.8's document names it; the Control Panel has no <em>Settings → Directories</em> page), that your domains are listed, and that the log file you are reading is under the new log directory.</li>
<li><strong>Convert full message paths</strong>, only if the diagnostic found any: run the <strong>Data Directory Synchronizer</strong>, in its import mode, on the old installation before step 2 copies anything, as step 0 of 6.3.8's <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.8/hmailserver/docs/RelocatingAnInstallation.md" rel="nofollow ugc">RelocatingAnInstallation.md</a> has it, not against the new data directory after the move: it converts only a row whose full path is where the file is found, so after the move it would import every such message a second time, and its other mode would delete the copies. A hand-written <code>UPDATE hm_messages SET ...</code> is not a supported converter.</li>
<li><strong>Store the <code>[Settings]</code> paths and fix the database-borne paths</strong> (both below).</li>
<li><strong>Verify before deleting anything</strong>: send and receive a message; complete a TLS handshake on every port that has a certificate; run a backup to completion; run an event script, if you use them; check the log directory is being written.</li>
<li><strong>Keep the old tree</strong>, unreachable by the service, for at least one full backup cycle. Do not make it unreachable until the <code>[Settings]</code> paths are stored and a reinitialise has picked up the new certificate and ACME paths.</li>
</ol>
<p dir="auto"><strong>The failure this prevents.</strong> A server whose anchors are stale reports <code>Running</code> and serves an empty configuration. That failure is silent.</p>
<h3><a class="anchor-offset" name="the-code-settings-code-paths-6.3.3-and-earlier-and-since-6.3.4"></a>The <code>[Settings]</code> paths: 6.3.3 and earlier, and since 6.3.4</h3>
<p dir="auto">On 6.3.3 and earlier these are <code>[Settings]</code> keys of <code>hMailServer.ini</code> like any other, and editing the file moves them. <strong>Since 6.3.4 it does not</strong>: the stored value is used, the edit is named in the error log as <code>HM5804</code>, and, where the service can write the file, the line is put back to the old path. <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/RelocatingAnInstallation.md" rel="nofollow ugc">RelocatingAnInstallation.md</a> and the wiki page between them give three ways to store the new values. The first is the document's own, and the one to use:</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>When</th>
<th>How</th>
<th>Where it is described</th>
</tr>
</thead>
<tbody>
<tr>
<td>After the moved server is running</td>
<td>In the Control Panel under <strong>Settings</strong>, with <code>Settings.SetIniSetting</code> over COM, <code>PUT /api/v1/settings/ini/{name}</code>, or <code>hmctl ini set &lt;name&gt; &lt;value&gt;</code></td>
<td><a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/RelocatingAnInstallation.md" rel="nofollow ugc">RelocatingAnInstallation.md</a>, step 9, and the wiki</td>
</tr>
<tr>
<td>Before stopping the old server</td>
<td>The same four ways, as the last thing before the service is stopped. A save applies <code>ArchiveDir</code>, <code>OAuth2PublicKeyFile</code>, <code>UpdateTrustRootsFile</code> and <code>UpdateLogPublicKeyFile</code> at once, not at the next start as the wiki page has it, so the running old server turns to a tree not yet copied: archiving stops, and token validation and update verification refuse. The database then holds the new paths, so going back to the old tree means storing the old values again</td>
<td>The wiki, corrected by <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/SettingsApply.md" rel="nofollow ugc">SettingsApply.md</a></td>
</tr>
<tr>
<td>At the first start, if the service is already stopped</td>
<td>A <code>[SettingsOverride]</code> section in the new <code>hMailServer.ini</code>, named in the error log as HM5807; then store the same values and remove the section before the next restart</td>
<td>The wiki</td>
</tr>
</tbody>
</table>
<p dir="auto">A save applies every one of these paths at once except the listeners' certificate paths and the ACME certificate directory, which are bound when the servers start and wait for a reinitialise (<strong>Apply now</strong>, or <code>POST /api/v1/server/reinitialize</code>). Until then the server runs on the old paths, which still resolve because the tree was copied rather than moved. <code>PasswordPepper</code> is the exception to all of this: it lives in the file only, is not a path, and comes across with the copied file.</p>
<h3><a class="anchor-offset" name="the-database-borne-paths"></a>The database-borne paths</h3>
<ul>
<li><strong>SSL certificates.</strong> Since 6.3.7 the Control Panel's SSL certificates page has <strong>Edit…</strong>, which changes a certificate's name and files and keeps its id, so every port that presents it keeps it and reads the new files at the next reinitialise; deleting a certificate and adding it again, as the document had it until 6.3.8, leaves each port that presented it with none, and such a port does not start (HM5113). It can also be set over COM.</li>
<li><strong>DKIM keys.</strong> <em>Domain → DKIM</em>, the primary and, if used, the secondary. A domain whose key rotation manages its keys refuses that edit.</li>
<li><strong>Client-certificate CA bundle</strong>, per port. A port set to require a client certificate refuses every client when its bundle cannot be loaded.</li>
<li><strong>Archive index.</strong> <code>hm_archiveindex.archivepath</code> is matched on the exact string by retention, legal hold and the address eraser. Do not bulk-rewrite it. If the archive directory moved, move the archive back, or accept that the rows written before the move point at the old location; there is no supported converter for this column.</li>
</ul>
<h3><a class="anchor-offset" name="what-stays-broken-and-why"></a>What stays broken, and why</h3>
<ul>
<li><strong>Add/Remove Programs</strong> still points at the old <code>unins000.exe</code>. Do not edit <code>unins000.dat</code>. The supported repair is to re-run the installer at the new root.</li>
<li><strong>Start-menu shortcuts</strong> hold absolute targets and nothing repairs them.</li>
<li><strong>Message content.</strong> The old path appears inside messages the server itself wrote, such as a delivery report. Never rewrite message content.</li>
</ul>
<h3><a class="anchor-offset" name="renaming-a-mailbox-or-moving-it-to-another-domain"></a>Renaming a mailbox, or moving it to another domain</h3>
<p dir="auto">New in 6.3.4 (schema 6056, whose table <code>hm_mailboxmoves</code> is the move's journal). <code>new_address</code> carries the domain, so renaming and moving are the same operation: <code>ann@example.com</code> to <code>anne@example.com</code> is a rename, <code>ann@example.com</code> to <code>ann@example.net</code> is a move. <strong>A move keeps the account's row</strong>, so everything keyed on the account id follows without being touched: rules, folders with their subscriptions and access-control entries, application passwords, the second factor, contacts, calendars and the role assignment. Copying the mail into a second account loses all of it.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Interface</th>
<th>How</th>
</tr>
</thead>
<tbody>
<tr>
<td>Control Deck</td>
<td>The <strong>Move or rename</strong> card in the account editor</td>
</tr>
<tr>
<td><code>hmctl</code></td>
<td><code>hmctl mailbox status ann@example.com</code>, then <code>hmctl mailbox move ann@example.com ann@example.net</code></td>
</tr>
<tr>
<td>REST</td>
<td><code>POST /api/v1/accounts/ann%40example.com/move</code> with <code>{"new_address": "ann@example.net", "keep_alias": true}</code>; <code>GET</code> on the same path says whether anything holds the mailbox</td>
</tr>
<tr>
<td>PowerShell</td>
<td><code>Move-HmMailbox -Address ann@example.com -NewAddress ann@example.net</code></td>
</tr>
<tr>
<td>Control Panel (Windows)</td>
<td><strong>Move or rename…</strong> on the account's General tab</td>
</tr>
<tr>
<td>COM (Windows)</td>
<td><code>Account.MoveTo(NewAddress, KeepOldAddressAsAlias)</code> or <code>Utilities.MoveMailbox(Address, NewAddress, KeepOldAddressAsAlias)</code></td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>The old address is kept as an alias by default</strong>, pointing at the new address. Turn it off (<code>keep_alias</code> false, <code>--drop-alias</code>) only when the address is to stop working: mail to it is then refused at <code>RCPT TO</code>.</p>
<p dir="auto"><strong>What moves:</strong> the message store directory <code>&lt;data&gt;/&lt;domain&gt;/&lt;local part&gt;</code>; the Sieve tree; aliases in any domain that point at the account; distribution list memberships; recipients of mail still in the delivery queue; and quarantined mail, up to a ceiling of 200,000 rows.</p>
<p dir="auto"><strong>What does not move, on purpose.</strong> The archive and the message trace stay under the old address, as a record of the past. Erasure works by address, so erasing the new address will not reach the archive written under the old one: erase both (<a href="/topic/28242">Compliance: personal data and erasure</a>). The domains a role reaches are not rewritten either, so check a role after a cross-domain move (<a href="/topic/28237">Administrator roles end to end</a>).</p>
<p dir="auto"><strong>What is refused, before the first byte is moved:</strong></p>
<ul>
<li>a domain this server does not hold, or one that is not active;</li>
<li>a destination domain at its maximum number of accounts, or that would exceed its maximum total size;</li>
<li>an account, an alias or a distribution list already at the new address;</li>
<li>a mailbox encrypted at rest moving to another domain (<code>409</code>); a rename inside the domain is not refused;</li>
<li>an installation whose message file names are still full paths;</li>
<li>a credential that may not administer accounts in both domains;</li>
<li>a mailbox in use.</li>
</ul>
<p dir="auto"><strong>In use</strong> means a POP3 session, or an IMAP session with one of the account's folders selected. What is not counted: an IMAP session that has selected nothing, a webmail request in flight, a ManageSieve session and an SMTP delivery to the mailbox in flight. A message that arrives during the copy is written under the old directory, and the old directory is swept once afterwards; anything that could not be carried is <code>HM6948</code>. That is why a move of a large busy mailbox belongs out of hours.</p>
<h3><a class="anchor-offset" name="when-a-move-fails-or-is-interrupted"></a>When a move fails or is interrupted</h3>
<p dir="auto">There is no transaction across a filesystem and four database backends, so the order is chosen to make each step undoable: the store, then the account row, then the references, then the alias. A journal row is opened before the first step and closed after the last, and an interrupted move is said once per start as <code>HM6947</code> in the application log, naming both addresses and the stage it stopped at.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Stage</th>
<th>What it means</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>started</code></td>
<td>Nothing has been changed</td>
</tr>
<tr>
<td><code>moving the store</code></td>
<td>The copy was under way; look at both directories. The database has not been touched</td>
</tr>
<tr>
<td><code>store moved</code></td>
<td>The directories are at the new address. While the account row says the old one, the account authenticates and its mail is unreadable</td>
</tr>
<tr>
<td><code>account written</code></td>
<td>The store and the account row agree; the references have not all been rewritten</td>
</tr>
<tr>
<td><code>references rewritten</code></td>
<td>Everything but the alias</td>
</tr>
<tr>
<td><code>complete</code></td>
<td>The move finished</td>
</tr>
<tr>
<td><code>rolled back</code></td>
<td>A step failed and everything before it was put back</td>
</tr>
<tr>
<td><code>rollback failed</code></td>
<td>Something could not be put back; <code>HM6940</code> is in the application log</td>
</tr>
</tbody>
</table>
<p dir="auto">To finish a move interrupted at <code>moving the store</code> or <code>store moved</code>, ask for the move again, naming the address the directories now have. Read the journal with <code>hmctl mailbox status</code> or <code>GET /api/v1/accounts/&lt;address&gt;/move</code>. The journal is not in the backup.</p>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Code</th>
<th>Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>HM6941</code></td>
<td>The move succeeded but the alias for the old address could not be created</td>
</tr>
<tr>
<td><code>HM6942</code></td>
<td>Aliases pointing at the account could not be re-pointed</td>
</tr>
<tr>
<td><code>HM6943</code></td>
<td>Distribution list memberships could not be moved</td>
</tr>
<tr>
<td><code>HM6944</code></td>
<td>Messages in the delivery queue still name the old address</td>
</tr>
<tr>
<td><code>HM6945</code></td>
<td>Quarantined messages still name the old address</td>
</tr>
<tr>
<td><code>HM6946</code></td>
<td>The move could not be journalled. It still happened, and is on the audit trail</td>
</tr>
</tbody>
</table>
<p dir="auto"><strong>Who may.</strong> <code>manage_accounts</code>, in both domains. The server administrator and a domain administrator of both domains have it; the help-desk role and the auditor do not. <code>view_accounts</code> is enough to read the journal. A move is one entry on the audit trail: object type <code>account</code>, action <code>moved</code>.</p>
<h3><a class="anchor-offset" name="what-it-does-not-do"></a>What it does not do</h3>
<ul>
<li>The relocation runbook does not repair the uninstall entry or the shortcuts, and it has no converter for the archive index.</li>
<li>A mailbox move does not wait for a delivery in flight; nothing in the server records one.</li>
<li>Setting <code>Account.Address</code> and saving goes through the same implementation, but leaves no alias, does not refuse while the mailbox is in use, and cannot cross domains.</li>
<li>A domain rename (<code>Domain.Name</code> and <code>Save()</code>) is a different thing again, and keeps the path it has always taken.</li>
</ul>
<h3><a class="anchor-offset" name="where-to-read-more"></a>Where to read more</h3>
<ul>
<li>Wiki: <a href="https://gitlab.com/hmailserver/hmailserver/-/wikis/Relocating-an-Installation" rel="nofollow ugc">Relocating an Installation</a>.</li>
<li>Documents: <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/RelocatingAnInstallation.md" rel="nofollow ugc">RelocatingAnInstallation.md</a> and <a href="https://gitlab.com/hmailserver/hmailserver/-/blob/v6.3.4/hmailserver/docs/MailboxMove.md" rel="nofollow ugc">MailboxMove.md</a>.</li>
<li>The public documentation: <a href="https://www.progressiverobot.com/hmailserver-documentation/#331-the-installation-on-disk" rel="nofollow ugc">33.1, the installation on disk</a>.</li>
<li>On this forum: <a href="/topic/28194">Moving to new hardware, and why Windows to Linux is a rebuild</a>, <a href="/topic/28193">Upgrading to 6.3.4</a>, and how the settings store works and when a save takes effect in <a href="/topic/28222">Settings: what is not stock, when a save takes effect, and the three levels</a>.</li>
</ul>
]]></description><link>https://www.hmailserver.co.uk/topic/28244/relocating-an-installation-to-another-drive-and-moving-or-renaming-a-mailbox</link><generator>RSS for Node</generator><lastBuildDate>Fri, 06 Nov 2026 09:05:50 GMT</lastBuildDate><atom:link href="https://www.hmailserver.co.uk/topic/28244.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 27 Sep 2026 19:26:13 GMT</pubDate><ttl>60</ttl></channel></rss>