Owner, 2026-10-18: "Чисти этот хвост." Preflight as a page of its own was dropped on 2026-10-13 (roadmap.md § Dropped): its installation checks went to Server › Health (health-setup-checks, 2.11.0) and its test e-mail to a form of its own (test-email, 2.12.0). The mockup still drew it and every mockup's navigation still linked it. - panel/src/preflight.html and its built page deleted; build.py's Server group loses the entry, and the 39 pages are rebuilt (each one only loses that link, in the navbar and the touch menu). - check.py --write: outlines.json loses the "preflight" key; 31 screens, 0 violations. - index.html and panel-redesign.md § Room for roadmap items no longer list it. The guard's deferredScreens entry goes in the next commit, on its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
149 lines
12 KiB
HTML
149 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="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="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–5, default 2.5)</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.</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 · Copyright © 2026 Mikhail Yenuchenko · <a href="#">License (AGPL-3.0)</a> · <a href="#">Source</a> · No warranty</footer>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|