test / test (push) Canceled after 0s
The pages of the mockups accepted in 87fa0a4, built from the kit's partials
(written by a Sonnet agent into the working tree, reviewed here):
- Account: "Send me notifications" in the Profile form, saved with the
profile; an unticked box is off.
- Server > Settings: the instance switch (box 03), and box 04 Notification
mail with the DKIM and SPF records of the server's own name, drawn with the
record partial of a domain's DNS page and checked in DNS. Sending rate
limits are box 02 in the left column. A record that is not in place is
tagged as a warning, not a failure: notifications are sent without it.
- Server > Health: card 06 Notification mail with the state of each record
and a link to Settings, beside Configuration (07); part of the polled
fragment; Re-check DNS forces it too. Overview does not run this check.
- help.go: the Notifications topic and the clauses in Settings and Your
account, word for word with help.html.
If the server's key cannot be read the pages still render: the DKIM record
is left out and SPF is shown unchecked.
e2e: the administrator gets a mailbox behind the sink and the server's DKIM
record from Settings is published; the level-2 refusal of the next step must
then arrive as a notification from postmaster@mail.e2e.test, signed as that
name with the key Settings shows, and must not be a row of the Outbound log.
The rotation step now waits for Postfix to be running: it follows a step that
restarts the container, and logrotate's `postfix reload` failed in between.
On the test server, for this tree: go vet clean, go test ./... 23 packages
ok, make e2e ok (147 s); the notification reached the sink 28 s after the
refusal.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
48 lines
2.5 KiB
HTML
48 lines
2.5 KiB
HTML
{{/* Server > Settings (mockup settings.html): what holds for the whole instance.
|
|
One form, one Save button; the rate limits are read-only facts, and the
|
|
records of the server's own name are the ones notifications are signed and
|
|
authorised with. A user's own name, e-mail, password and DMARC address are on
|
|
Account (account.html). */}}
|
|
{{define "content"}}
|
|
{{template "page_head" .Head}}
|
|
{{if .Flash}}{{template "flash" .Flash}}{{end}}
|
|
|
|
<form class="sp-form" method="post" action="/server/settings">
|
|
<div class="columns">
|
|
<div class="column is-6">
|
|
{{template "box_open" .Retention}}
|
|
{{template "body_open"}}
|
|
<div class="field"><label class="label" for="send_log_retention_days">Keep outbound log rows, days</label>
|
|
<div class="control"><input class="input" id="send_log_retention_days" name="send_log_retention_days" type="number" min="7" max="365" step="1" value="{{.RetentionDays}}" required></div>
|
|
<p class="help">The main driver of <code>/data</code> growth. Does not affect <code>mail.log</code> rotation (fourteen daily files).</p></div>
|
|
{{if .Inbound}}<div class="field"><label class="label" for="inbound_spam_log_retention_days">Keep inbound log rows, days</label>
|
|
<div class="control"><input class="input" id="inbound_spam_log_retention_days" name="inbound_spam_log_retention_days" type="number" min="7" max="365" step="1" value="{{.InboundRetentionDays}}" required></div>
|
|
<p class="help">The inbound log also never holds more than 10 000 rows: refused mail is logged at the rate strangers knock on port 25.</p></div>
|
|
{{end}}
|
|
{{template "body_close"}}
|
|
{{template "box_close"}}
|
|
|
|
{{template "box_open" .RateLimits}}
|
|
{{template "body_open"}}
|
|
{{template "facts" .RateFacts}}
|
|
{{template "body_close"}}
|
|
{{template "box_close"}}
|
|
</div>
|
|
|
|
<div class="column is-6">
|
|
{{template "box_open" .Notifications}}
|
|
{{template "body_open"}}
|
|
<div class="field"><label class="checkbox"><input type="checkbox" name="notify"{{if .Notify}} checked{{end}}> Send notification e-mails</label>
|
|
<p class="help">{{template "inline" .NotifyNote}}</p></div>
|
|
{{template "body_close"}}
|
|
{{template "box_close"}}
|
|
|
|
{{template "box_open" .Mail}}
|
|
{{range .MailRecords}}{{template "dns_record" .}}
|
|
{{end}}{{template "box_close"}}
|
|
</div>
|
|
</div>
|
|
<div class="buttons"><button type="submit" class="button is-primary">Save settings</button></div>
|
|
</form>
|
|
{{end}}
|