Agreed with the owner on 2026-10-13 (roadmap backup-reauth), taken up on
2026-10-16 ("Да"). The Full backup form on Server › Backup and the Export
domain form on a domain's settings get one field each, "Your account
password" (autocomplete current-password, required), before the button,
saying why it is asked at every download. The help's Backup topic says both
ask for it and that wrong guesses count against the password change's
limit. check.py: 0 violations; outlines unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
150 lines
12 KiB
HTML
150 lines
12 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" data-theme="light">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Settings · example.org · SelfPost</title>
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.4/css/bulma.min.css">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@3/dist/tabler-icons.min.css">
|
||
<link rel="stylesheet" href="../shared/brand.css">
|
||
<link rel="stylesheet" href="theme.css">
|
||
</head>
|
||
<body>
|
||
<nav class="navbar is-primary" aria-label="main navigation">
|
||
<div class="container">
|
||
<div class="navbar-brand"><a class="navbar-item" href="overview.html"><img src="../../selfpost-wordmark.svg" alt="SelfPost"></a><details class="sp-touchnav"><summary>Menu</summary><div class="sp-touchnav-panel"><a href="overview.html">Overview</a><details class="sp-touchnav-group" open><summary>Outbound</summary><a href="out-domains.html" aria-current="page"><i class="ti ti-world-upload"></i>Domains</a><a href="out-log.html"><i class="ti ti-list-details"></i>Log</a><a href="out-queue.html"><i class="ti ti-stack-2"></i>Queue</a><a href="dmarc.html"><i class="ti ti-report-analytics"></i>DMARC reports</a></details><details class="sp-touchnav-group"><summary>Inbound</summary><a href="in-domains.html"><i class="ti ti-world-download"></i>Domains</a><a href="in-log.html"><i class="ti ti-list-details"></i>Log</a><a href="in-queue.html"><i class="ti ti-stack-2"></i>Queue</a><a href="in-quarantine.html"><i class="ti ti-mail-pause"></i>Quarantine</a><a href="in-filter-lists.html"><i class="ti ti-filter"></i>Filter lists</a></details><details class="sp-touchnav-group"><summary>Server</summary><a href="health.html"><i class="ti ti-heartbeat"></i>Health</a><a href="preflight.html"><i class="ti ti-checklist"></i>Preflight</a><a href="system-log.html"><i class="ti ti-file-text"></i>System log</a><a href="backup.html"><i class="ti ti-archive"></i>Backup</a><a href="users.html"><i class="ti ti-users"></i>Users</a><a href="settings.html"><i class="ti ti-settings"></i>Settings</a></details><details class="sp-touchnav-group"><summary><i class="ti ti-user-circle"></i>admin</summary><a href="account.html"><i class="ti ti-key"></i>Account</a><a href="help.html"><i class="ti ti-help"></i>Help</a><form method="post" action="login.html"><button type="submit"><i class="ti ti-logout"></i>Sign out</button></form></details></div></details></div>
|
||
<div class="navbar-menu">
|
||
<div class="navbar-start">
|
||
<a class="navbar-item" href="overview.html">Overview</a>
|
||
<div class="navbar-item has-dropdown is-hoverable sp-current">
|
||
<a class="navbar-link" href="out-domains.html">Outbound</a>
|
||
<div class="navbar-dropdown">
|
||
<a class="navbar-item is-active" href="out-domains.html"><i class="ti ti-world-upload"></i>Domains</a>
|
||
<a class="navbar-item" href="out-log.html"><i class="ti ti-list-details"></i>Log</a>
|
||
<a class="navbar-item" href="out-queue.html"><i class="ti ti-stack-2"></i>Queue</a>
|
||
<a class="navbar-item" href="dmarc.html"><i class="ti ti-report-analytics"></i>DMARC reports</a>
|
||
</div>
|
||
</div>
|
||
<div class="navbar-item has-dropdown is-hoverable">
|
||
<a class="navbar-link" href="in-domains.html">Inbound</a>
|
||
<div class="navbar-dropdown">
|
||
<a class="navbar-item" href="in-domains.html"><i class="ti ti-world-download"></i>Domains</a>
|
||
<a class="navbar-item" href="in-log.html"><i class="ti ti-list-details"></i>Log</a>
|
||
<a class="navbar-item" href="in-queue.html"><i class="ti ti-stack-2"></i>Queue</a>
|
||
<a class="navbar-item" href="in-quarantine.html"><i class="ti ti-mail-pause"></i>Quarantine</a>
|
||
<a class="navbar-item" href="in-filter-lists.html"><i class="ti ti-filter"></i>Filter lists</a>
|
||
</div>
|
||
</div>
|
||
<div class="navbar-item has-dropdown is-hoverable">
|
||
<a class="navbar-link" href="health.html">Server</a>
|
||
<div class="navbar-dropdown">
|
||
<a class="navbar-item" href="health.html"><i class="ti ti-heartbeat"></i>Health</a>
|
||
<a class="navbar-item" href="preflight.html"><i class="ti ti-checklist"></i>Preflight</a>
|
||
<a class="navbar-item" href="system-log.html"><i class="ti ti-file-text"></i>System log</a>
|
||
<a class="navbar-item" href="backup.html"><i class="ti ti-archive"></i>Backup</a>
|
||
<a class="navbar-item" href="users.html"><i class="ti ti-users"></i>Users</a>
|
||
<a class="navbar-item" href="settings.html"><i class="ti ti-settings"></i>Settings</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="navbar-end">
|
||
<div class="navbar-item has-dropdown is-hoverable">
|
||
<a class="navbar-link" href="account.html"><i class="ti ti-user-circle"></i>admin</a>
|
||
<div class="navbar-dropdown is-right">
|
||
<a class="navbar-item" href="account.html"><i class="ti ti-key"></i>Account</a>
|
||
<a class="navbar-item" href="help.html"><i class="ti ti-help"></i>Help</a>
|
||
<hr class="navbar-divider">
|
||
<form method="post" action="login.html"><button type="submit" class="navbar-item"><i class="ti ti-logout"></i>Sign out</button></form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<div class="sp-perf" aria-hidden="true"></div>
|
||
<div class="sp-subnav"><div class="container"><a href="out-domains.html" aria-current="page"><i class="ti ti-world-upload"></i>Domains</a><a href="out-log.html"><i class="ti ti-list-details"></i>Log</a><a href="out-queue.html"><i class="ti ti-stack-2"></i>Queue</a><a href="dmarc.html"><i class="ti ti-report-analytics"></i>DMARC reports</a></div></div>
|
||
<main>
|
||
<div class="container sp-page">
|
||
<div class="sp-head">
|
||
<div class="sp-grow">
|
||
<p class="sp-kicker"><a href="out-domains.html">Outbound domains</a> / <a href="out-domain.html">example.org</a> /</p>
|
||
<h1 class="title is-3">Domain settings</h1>
|
||
<p class="sp-lead">The things set once and rarely touched: where DMARC reports go, the sending ceiling, moving the domain elsewhere.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="columns">
|
||
<div class="column is-6">
|
||
<div class="box" id="reports">
|
||
<div class="sp-box-head"><span class="sp-no">01</span><h2>DMARC report address</h2><a class="sp-help" href="help.html#dmarc" title="Where DMARC reports go"><i class="ti ti-help-circle"></i></a></div>
|
||
<div class="sp-box-body">
|
||
<form class="sp-form" method="post" action="#">
|
||
<div class="field"><label class="label" for="rua">Aggregate reports (rua=)</label>
|
||
<div class="control"><div class="select is-fullwidth"><select id="rua" name="dmarc_rua_mode">
|
||
<option>No reports</option>
|
||
<option>SelfPost hosted — example.org@dmarc.mail.example.org</option>
|
||
<option selected>A specific address</option>
|
||
</select></div></div>
|
||
<p class="help">No reports leaves <code>rua=</code> out of the DMARC record. SelfPost hosted sends them to an address on this server, which parses them for DMARC reports. A specific address is any mailbox, and it receives the raw XML. Changing this changes the DMARC record to publish.</p></div>
|
||
<div class="field"><label class="label" for="rua_email">Report address</label>
|
||
<div class="field has-addons"><div class="control is-expanded"><input class="input" id="rua_email" name="dmarc_rua_email" type="email" value="reports@acme.io" placeholder="reports@your-mail-domain.com" autocomplete="off" spellcheck="false"></div><div class="control"><button type="button" class="button" data-fill="rua_email" data-fill-value="mix@example.org"><i class="ti ti-mail"></i>Use my e-mail</button></div></div></div>
|
||
<button type="submit" class="button is-primary">Save report address</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="box" id="export">
|
||
<div class="sp-box-head"><span class="sp-no">03</span><h2>Export domain</h2><a class="sp-help" href="help.html#backup" title="Moving a domain to another instance"><i class="ti ti-help-circle"></i></a></div>
|
||
<div class="sp-box-body">
|
||
<p class="mb-3">One file with the DKIM key and every application's password hash — import it on another SelfPost and the published DNS needs no change. <strong>The file is a secret.</strong></p>
|
||
<form class="sp-form" method="post" action="#">
|
||
<div class="field"><label class="checkbox"><input type="checkbox" name="encrypt" checked> Encrypt with a password (<code>.spde</code>)</label></div>
|
||
<div class="sp-pair">
|
||
<div class="field"><label class="label" for="encpw">Password</label><div class="control"><input class="input" id="encpw" type="password" placeholder="at least 12 characters"></div></div>
|
||
<div class="field"><label class="label" for="encpw2">Repeat password</label><div class="control"><input class="input" id="encpw2" type="password"></div></div>
|
||
</div>
|
||
<p class="help mb-3">Keep this password: SelfPost does not store it, and the file cannot be opened without it.</p>
|
||
<div class="field"><label class="label" for="acpw">Your account password</label><div class="control"><input class="input" id="acpw" name="account_password" type="password" autocomplete="current-password" required></div>
|
||
<p class="help">The one you sign in with, asked at every export: the file holds the domain's DKIM key and its applications' credentials.</p></div>
|
||
<button type="submit" class="button"><i class="ti ti-download"></i>Export domain</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="column is-6">
|
||
<div class="box" id="limit">
|
||
<div class="sp-box-head"><span class="sp-no">02</span><h2>Rate limit</h2><div class="sp-end"><span class="tag is-success is-light">active</span></div><a class="sp-help" href="help.html#limits" title="Levels 1 and 2"><i class="ti ti-help-circle"></i></a></div>
|
||
<div class="sp-box-body">
|
||
<form class="sp-form" method="post" action="#">
|
||
<div class="field"><label class="label" for="mode">Limit mode</label>
|
||
<div class="control"><div class="select is-fullwidth"><select id="mode" name="mode"><option>Manual</option><option selected>Auto (from statistics)</option></select></div></div></div>
|
||
<div class="field"><label class="label" for="mult">Multiplier (1.5–10, default 3)</label>
|
||
<div class="control"><input class="input" id="mult" name="auto_multiplier" type="number" min="1.5" max="10" step="0.1" value="3"></div>
|
||
<p class="help">Computed limit: <strong>288</strong> messages / 3600 s. Peak was 96 msg/h. Last recalculated yesterday 03:00 UTC.</p></div>
|
||
<div class="buttons">
|
||
<button type="submit" class="button is-primary">Save limit</button>
|
||
<button type="submit" class="button" formaction="#recalc">Recalculate now</button>
|
||
<button type="submit" class="button is-danger is-light" formaction="#clear">Remove limit</button>
|
||
</div>
|
||
</form>
|
||
<p class="sp-muted mt-4">Applies to every sender on this domain and cannot exceed level 1 (600 messages / 3600 s per client IP, set in <code>.env</code>). An application may carry its own limit above or below this one.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="box sp-danger-zone">
|
||
<div class="sp-box-head"><span class="sp-no">04</span><h2>Delete domain</h2></div>
|
||
<div class="sp-box-body">
|
||
<p class="mb-3">Removes the DKIM key and both applications. Asks once more before doing it.</p>
|
||
<a class="button is-danger is-light" href="out-domain-delete.html"><i class="ti ti-trash"></i>Delete example.org…</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer class="sp-foot">SelfPost 1.8.0 · © 2026 Mix · <a href="#">License (AGPL-3.0)</a> · <a href="#">Source</a> · No warranty</footer>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|