Files
selfpost/docs/assets/selfpost-stamp.svg
T
mix c0d9aa7518 chore/docs: move to GitHub as the single home; drop archived-spec references
Codeberg is being retired as the project's public site, so every reference now
points at GitHub. That includes the Go module path (codeberg.org/mix/selfpost →
github.com/mixeme/selfpost): leaving an import path on a host that is going
away would break `go get` and `go install`, so this is not only a docs change.
Touches go.mod, test/e2e/go.mod, all imports, Makefile MODULE, the -ldflags
version stamp in build/Dockerfile and docs/development.md, the licence headers
in the SVG/HTML assets, and README (no more primary/mirror pair).

Comments no longer cite the archived specification. "spec 7.6.1", "spec 5.1"
and friends pointed into docs/archive/specification-v1.0.md, which is marked as
not a source of truth; each is now a reference to the live document that owns
the subject — architecture.md (with section), product.md, security.md or the
README. The review only asked for the 7.x refs (code-review.md § 4), but 4/5/6/
8/9 had the same defect, so they went too. Comments only, no behaviour change.

Also closes the remaining review items: architecture.md gained a Code layers
section with the layer diagram (A2), and TestParseDelivery gained the exotic
mail.log cases (§ 3).

Fixes a bug that last test found: the delivery-line pattern matched status=
greedily, taking the *last* occurrence on the line. Postfix appends the remote
server's reply verbatim, so a rejection whose reply quoted "status=sent" was
filed as a delivered message in the send log. It now takes the first status=
after the recipient, which is the real field.

R7 (CONTRIBUTING.md) moved to roadmap 2.x — one developer, no external PR flow,
so the file would have no audience yet. R1 (compose image tag) and the git tag
stay in roadmap § v1.x as the release-commit steps.

gofmt/go vet clean on both modules; go test ./... green except the three known
Windows-only failures (file perms, backslash paths, renaming an open file).
Not exercised on the dev server — no Docker locally.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 22:14:13 +03:00

11 lines
13 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 330 150" width="330" height="150" role="img" aria-label="SelfPost — self-hosted SMTP relay">
<!-- SelfPost · https://github.com/mixeme/selfpost · AGPL-3.0
Wordmark set in IBM Plex Sans (OFL) and converted to outlines: the
file needs no font installed to render as drawn. -->
<path d="M24.70 14.00 L27.97 14.00 A2.7 2.7 0 0 0 33.37 14.00 L36.63 14.00 A2.7 2.7 0 0 0 42.03 14.00 L45.30 14.00 A2.7 2.7 0 0 0 50.70 14.00 L53.97 14.00 A2.7 2.7 0 0 0 59.37 14.00 L62.63 14.00 A2.7 2.7 0 0 0 68.03 14.00 L71.30 14.00 A2.7 2.7 0 0 0 76.70 14.00 L79.97 14.00 A2.7 2.7 0 0 0 85.37 14.00 L88.63 14.00 A2.7 2.7 0 0 0 94.03 14.00 L97.30 14.00 A2.7 2.7 0 0 0 102.70 14.00 L105.97 14.00 A2.7 2.7 0 0 0 111.37 14.00 L114.63 14.00 A2.7 2.7 0 0 0 120.03 14.00 L123.30 14.00 A2.7 2.7 0 0 0 128.70 14.00 L131.97 14.00 A2.7 2.7 0 0 0 137.37 14.00 L140.63 14.00 A2.7 2.7 0 0 0 146.03 14.00 L149.30 14.00 A2.7 2.7 0 0 0 154.70 14.00 L157.97 14.00 A2.7 2.7 0 0 0 163.37 14.00 L166.63 14.00 A2.7 2.7 0 0 0 172.03 14.00 L175.30 14.00 A2.7 2.7 0 0 0 180.70 14.00 L183.97 14.00 A2.7 2.7 0 0 0 189.37 14.00 L192.63 14.00 A2.7 2.7 0 0 0 198.03 14.00 L201.30 14.00 A2.7 2.7 0 0 0 206.70 14.00 L209.97 14.00 A2.7 2.7 0 0 0 215.37 14.00 L218.63 14.00 A2.7 2.7 0 0 0 224.03 14.00 L227.30 14.00 A2.7 2.7 0 0 0 232.70 14.00 L235.97 14.00 A2.7 2.7 0 0 0 241.37 14.00 L244.63 14.00 A2.7 2.7 0 0 0 250.03 14.00 L253.30 14.00 A2.7 2.7 0 0 0 258.70 14.00 L261.97 14.00 A2.7 2.7 0 0 0 267.37 14.00 L270.63 14.00 A2.7 2.7 0 0 0 276.03 14.00 L279.30 14.00 A2.7 2.7 0 0 0 284.70 14.00 L287.97 14.00 A2.7 2.7 0 0 0 293.37 14.00 L296.63 14.00 A2.7 2.7 0 0 0 302.03 14.00 L305.30 14.00 A2.7 2.7 0 0 0 308.00 16.70 L308.00 20.01 A2.7 2.7 0 0 0 308.00 25.41 L308.00 28.73 A2.7 2.7 0 0 0 308.00 34.13 L308.00 37.44 A2.7 2.7 0 0 0 308.00 42.84 L308.00 46.16 A2.7 2.7 0 0 0 308.00 51.56 L308.00 54.87 A2.7 2.7 0 0 0 308.00 60.27 L308.00 63.59 A2.7 2.7 0 0 0 308.00 68.99 L308.00 72.30 A2.7 2.7 0 0 0 308.00 77.70 L308.00 81.01 A2.7 2.7 0 0 0 308.00 86.41 L308.00 89.73 A2.7 2.7 0 0 0 308.00 95.13 L308.00 98.44 A2.7 2.7 0 0 0 308.00 103.84 L308.00 107.16 A2.7 2.7 0 0 0 308.00 112.56 L308.00 115.87 A2.7 2.7 0 0 0 308.00 121.27 L308.00 124.59 A2.7 2.7 0 0 0 308.00 129.99 L308.00 133.30 A2.7 2.7 0 0 0 305.30 136.00 L302.03 136.00 A2.7 2.7 0 0 0 296.63 136.00 L293.37 136.00 A2.7 2.7 0 0 0 287.97 136.00 L284.70 136.00 A2.7 2.7 0 0 0 279.30 136.00 L276.03 136.00 A2.7 2.7 0 0 0 270.63 136.00 L267.37 136.00 A2.7 2.7 0 0 0 261.97 136.00 L258.70 136.00 A2.7 2.7 0 0 0 253.30 136.00 L250.03 136.00 A2.7 2.7 0 0 0 244.63 136.00 L241.37 136.00 A2.7 2.7 0 0 0 235.97 136.00 L232.70 136.00 A2.7 2.7 0 0 0 227.30 136.00 L224.03 136.00 A2.7 2.7 0 0 0 218.63 136.00 L215.37 136.00 A2.7 2.7 0 0 0 209.97 136.00 L206.70 136.00 A2.7 2.7 0 0 0 201.30 136.00 L198.03 136.00 A2.7 2.7 0 0 0 192.63 136.00 L189.37 136.00 A2.7 2.7 0 0 0 183.97 136.00 L180.70 136.00 A2.7 2.7 0 0 0 175.30 136.00 L172.03 136.00 A2.7 2.7 0 0 0 166.63 136.00 L163.37 136.00 A2.7 2.7 0 0 0 157.97 136.00 L154.70 136.00 A2.7 2.7 0 0 0 149.30 136.00 L146.03 136.00 A2.7 2.7 0 0 0 140.63 136.00 L137.37 136.00 A2.7 2.7 0 0 0 131.97 136.00 L128.70 136.00 A2.7 2.7 0 0 0 123.30 136.00 L120.03 136.00 A2.7 2.7 0 0 0 114.63 136.00 L111.37 136.00 A2.7 2.7 0 0 0 105.97 136.00 L102.70 136.00 A2.7 2.7 0 0 0 97.30 136.00 L94.03 136.00 A2.7 2.7 0 0 0 88.63 136.00 L85.37 136.00 A2.7 2.7 0 0 0 79.97 136.00 L76.70 136.00 A2.7 2.7 0 0 0 71.30 136.00 L68.03 136.00 A2.7 2.7 0 0 0 62.63 136.00 L59.37 136.00 A2.7 2.7 0 0 0 53.97 136.00 L50.70 136.00 A2.7 2.7 0 0 0 45.30 136.00 L42.03 136.00 A2.7 2.7 0 0 0 36.63 136.00 L33.37 136.00 A2.7 2.7 0 0 0 27.97 136.00 L24.70 136.00 A2.7 2.7 0 0 0 22.00 133.30 L22.00 129.99 A2.7 2.7 0 0 0 22.00 124.59 L22.00 121.27 A2.7 2.7 0 0 0 22.00 115.87 L22.00 112.56 A2.7 2.7 0 0 0 22.00 107.16 L22.00 103.84 A2.7 2.7 0 0 0 22.00 98.44 L22.00 95.13 A2.7 2.7 0 0 0 22.00 89.73 L22.00 86.41 A2.7 2.7 0 0 0 22.00 81.01 L22.00 77.70 A2.7 2.7 0 0 0 22.00 72.30 L22.00 68.99 A2.7 2.7 0 0 0 22.00 63.59 L22.00 60.27 A2.7 2.7 0 0 0 22.00 54.87 L22.00 51.56 A2.7 2.7 0 0 0 22.00 46.16 L22.00 42.84 A2.7 2.7 0 0 0 22.00 37.44 L22.00 34.13 A2.7 2.7 0 0 0 22.00 28.73 L22.00 25.41 A2.7 2.7 0 0 0 22.00 20.01 L22.00 16.70 A2.7 2.7 0 0 0 24.70 14.00 Z" fill="#F3EDE1" stroke="#12161C" stroke-width="0.8" stroke-linejoin="round" />
<rect x="31" y="23" width="268" height="104" fill="#7A3B2E" />
<path d="M110.54 82.46Q107.27 82.46 105.14 81.22Q103.02 79.99 101.53 78.05L102.6 77.21Q104 79.04 105.85 80.12Q107.69 81.2 110.58 81.2Q113.88 81.2 115.69 79.64Q117.49 78.09 117.49 75.16Q117.49 73.15 116.73 71.99Q115.97 70.83 114.64 70.22Q113.31 69.61 111.68 69.27L109.13 68.78Q106.51 68.28 105.01 67.28Q103.51 66.27 102.85 64.88Q102.18 63.49 102.18 61.86Q102.18 59.54 103.21 58.02Q104.23 56.5 106.09 55.76Q107.96 55.02 110.43 55.02Q113.39 55.02 115.37 56.05Q117.34 57.07 118.48 58.78L117.42 59.58Q116.28 57.95 114.57 57.11Q112.86 56.27 110.35 56.27Q107.2 56.27 105.39 57.64Q103.59 59.01 103.59 61.82Q103.59 63.68 104.37 64.81Q105.14 65.93 106.47 66.53Q107.8 67.14 109.44 67.48L111.98 67.98Q114.68 68.47 116.18 69.52Q117.68 70.56 118.27 71.99Q118.86 73.41 118.86 75.05Q118.86 77.48 117.86 79.11Q116.85 80.75 114.97 81.6Q113.09 82.46 110.54 82.46Z M130.04 82.46Q127.49 82.46 125.65 81.28Q123.81 80.1 122.8 77.86Q121.79 75.62 121.79 72.35Q121.79 69.08 122.78 66.82Q123.77 64.56 125.58 63.4Q127.38 62.24 129.93 62.24Q132.28 62.24 134.07 63.42Q135.85 64.6 136.86 66.74Q137.87 68.89 137.87 71.82V72.42H123.2V73.45Q123.2 76.98 125.01 79.13Q126.81 81.28 130.08 81.28Q132.36 81.28 133.97 80.16Q135.59 79.04 136.42 76.87L137.45 77.44Q136.61 79.72 134.71 81.09Q132.81 82.46 130.04 82.46ZM129.93 63.38Q127.8 63.38 126.3 64.35Q124.8 65.32 124 67.09Q123.2 68.85 123.2 71.21V71.36H136.42V71.13Q136.42 68.78 135.61 67.05Q134.79 65.32 133.33 64.35Q131.86 63.38 129.93 63.38Z M146.92 82H144.07Q143.23 82 142.83 81.58Q142.44 81.16 142.44 80.4V53.88H143.76V80.82H146.92Z M151.56 82V63.87H148.1V62.7H151.56V55.82Q151.56 54.91 152.02 54.39Q152.47 53.88 153.42 53.88H157.22V55.06H152.89V62.7H157.22V63.87H152.89V82Z M164.87 82H159.85V55.48H171.78Q174.25 55.48 176 56.5Q177.75 57.53 178.7 59.37Q179.65 61.21 179.65 63.68Q179.65 66.15 178.7 68Q177.75 69.84 176 70.87Q174.25 71.89 171.78 71.89H164.87ZM164.87 59.85V67.56H171.33Q172.31 67.56 173 67.2Q173.68 66.84 174.06 66.17Q174.44 65.51 174.44 64.56V62.81Q174.44 61.82 174.06 61.18Q173.68 60.53 173 60.19Q172.31 59.85 171.33 59.85Z M190.37 82.46Q187.56 82.46 185.49 81.18Q183.42 79.91 182.3 77.57Q181.17 75.24 181.17 72.04Q181.17 68.85 182.3 66.55Q183.42 64.25 185.49 62.98Q187.56 61.71 190.37 61.71Q193.22 61.71 195.29 62.98Q197.36 64.25 198.48 66.55Q199.6 68.85 199.6 72.04Q199.6 75.24 198.48 77.57Q197.36 79.91 195.29 81.18Q193.22 82.46 190.37 82.46ZM190.37 78.54Q192.31 78.54 193.41 77.34Q194.51 76.15 194.51 73.91V70.22Q194.51 67.98 193.41 66.8Q192.31 65.62 190.37 65.62Q188.51 65.62 187.39 66.8Q186.27 67.98 186.27 70.22V73.91Q186.27 76.15 187.39 77.34Q188.51 78.54 190.37 78.54Z M209 82.46Q206.15 82.46 204.21 81.49Q202.27 80.52 200.79 78.81L203.75 75.92Q204.85 77.17 206.17 77.9Q207.48 78.62 209.19 78.62Q210.93 78.62 211.71 78.01Q212.49 77.4 212.49 76.34Q212.49 75.46 211.94 74.95Q211.39 74.44 210.06 74.25L208.08 73.98Q205.96 73.72 204.47 72.99Q202.99 72.27 202.23 71.02Q201.47 69.76 201.47 67.98Q201.47 65.09 203.54 63.4Q205.61 61.71 209 61.71Q210.93 61.71 212.32 62.07Q213.71 62.43 214.77 63.13Q215.84 63.84 216.75 64.82L213.9 67.67Q213.02 66.76 211.81 66.15Q210.59 65.55 209.15 65.55Q207.63 65.55 206.89 66.1Q206.15 66.65 206.15 67.6Q206.15 68.59 206.74 69.1Q207.32 69.61 208.73 69.84L210.74 70.11Q214.01 70.56 215.59 72.03Q217.17 73.49 217.17 75.96Q217.17 77.86 216.16 79.34Q215.15 80.82 213.31 81.64Q211.47 82.46 209 82.46Z M229.75 82H226.25Q223.75 82 222.44 80.69Q221.12 79.38 221.12 76.95V66H218.2V62.16H219.72Q220.82 62.16 221.22 61.65Q221.62 61.14 221.62 60.11V56.73H225.99V62.16H230.06V66H225.99V78.12H229.75Z" fill="#F6EDE2" />
<path d="M137.0 98 H193.0" stroke="#F6EDE2" stroke-width="1" opacity=".5" />
<path d="M88.83 115.09Q88.15 115.09 87.72 114.84Q87.28 114.59 87 114.2L87.44 113.84Q87.74 114.21 88.07 114.39Q88.39 114.57 88.85 114.57Q89.39 114.57 89.68 114.32Q89.97 114.06 89.97 113.61Q89.97 113.24 89.76 113.04Q89.55 112.83 89.03 112.75L88.47 112.65Q88.11 112.59 87.86 112.46Q87.61 112.33 87.46 112.15Q87.31 111.96 87.24 111.74Q87.18 111.52 87.18 111.28Q87.18 110.59 87.63 110.24Q88.08 109.89 88.85 109.89Q89.46 109.89 89.87 110.09Q90.29 110.29 90.54 110.66L90.11 111.03Q89.91 110.75 89.61 110.58Q89.32 110.41 88.85 110.41Q88.34 110.41 88.06 110.62Q87.79 110.84 87.79 111.27Q87.79 111.61 87.99 111.82Q88.2 112.03 88.73 112.13L89.27 112.22Q89.64 112.29 89.89 112.42Q90.14 112.54 90.3 112.72Q90.45 112.9 90.52 113.13Q90.58 113.35 90.58 113.6Q90.58 114.29 90.13 114.69Q89.67 115.09 88.83 115.09Z M94.45 115V109.97H97.54V110.5H95.05V112.19H97.46V112.72H95.05V114.47H97.54V115Z M101.78 115V109.97H102.39V114.47H104.77V115Z M108.69 115V109.97H111.86V110.5H109.29V112.19H111.64V112.72H109.29V115Z M116.28 113.11V112.51H118.36V113.11Z M125.42 112.72H123.46V115H122.86V109.97H123.46V112.19H125.42V109.97H126.02V115H125.42Z M131.56 115.09Q131.1 115.09 130.77 114.91Q130.44 114.73 130.22 114.4Q130 114.07 129.9 113.59Q129.8 113.11 129.8 112.49Q129.8 111.88 129.9 111.39Q130 110.9 130.22 110.57Q130.44 110.24 130.77 110.06Q131.1 109.89 131.56 109.89Q132.02 109.89 132.35 110.06Q132.68 110.24 132.9 110.57Q133.12 110.9 133.22 111.39Q133.32 111.88 133.32 112.49Q133.32 113.11 133.22 113.59Q133.12 114.07 132.9 114.4Q132.68 114.73 132.35 114.91Q132.02 115.09 131.56 115.09ZM131.56 114.56Q131.86 114.56 132.07 114.44Q132.28 114.32 132.42 114.11Q132.55 113.89 132.61 113.59Q132.68 113.28 132.68 112.9V112.08Q132.68 111.7 132.61 111.39Q132.55 111.08 132.42 110.87Q132.28 110.65 132.07 110.53Q131.86 110.41 131.56 110.41Q131.26 110.41 131.05 110.53Q130.84 110.65 130.7 110.87Q130.57 111.08 130.51 111.39Q130.44 111.7 130.44 112.08V112.9Q130.44 113.28 130.51 113.59Q130.57 113.89 130.7 114.11Q130.84 114.32 131.05 114.44Q131.26 114.56 131.56 114.56Z M138.67 115.09Q137.99 115.09 137.56 114.84Q137.12 114.59 136.84 114.2L137.28 113.84Q137.58 114.21 137.91 114.39Q138.23 114.57 138.69 114.57Q139.23 114.57 139.52 114.32Q139.81 114.06 139.81 113.61Q139.81 113.24 139.6 113.04Q139.39 112.83 138.87 112.75L138.31 112.65Q137.95 112.59 137.7 112.46Q137.45 112.33 137.3 112.15Q137.15 111.96 137.08 111.74Q137.02 111.52 137.02 111.28Q137.02 110.59 137.47 110.24Q137.92 109.89 138.69 109.89Q139.3 109.89 139.71 110.09Q140.13 110.29 140.38 110.66L139.95 111.03Q139.75 110.75 139.45 110.58Q139.16 110.41 138.69 110.41Q138.18 110.41 137.9 110.62Q137.63 110.84 137.63 111.27Q137.63 111.61 137.83 111.82Q138.04 112.03 138.57 112.13L139.11 112.22Q139.48 112.29 139.73 112.42Q139.98 112.54 140.14 112.72Q140.29 112.9 140.36 113.13Q140.42 113.35 140.42 113.6Q140.42 114.29 139.97 114.69Q139.51 115.09 138.67 115.09Z M146.1 110.5V115H145.5V110.5H143.82V109.97H147.78V110.5Z M151.41 115V109.97H154.5V110.5H152.01V112.19H154.42V112.72H152.01V114.47H154.5V115Z M158.56 109.97H159.97Q160.89 109.97 161.34 110.61Q161.8 111.24 161.8 112.49Q161.8 113.73 161.34 114.37Q160.89 115 159.97 115H158.56ZM159.94 114.47Q160.54 114.47 160.85 114.06Q161.16 113.64 161.16 112.88V112.1Q161.16 111.34 160.85 110.92Q160.54 110.5 159.94 110.5H159.17V114.47Z M174.27 115.09Q173.59 115.09 173.16 114.84Q172.72 114.59 172.44 114.2L172.88 113.84Q173.18 114.21 173.51 114.39Q173.83 114.57 174.29 114.57Q174.83 114.57 175.12 114.32Q175.41 114.06 175.41 113.61Q175.41 113.24 175.2 113.04Q174.99 112.83 174.47 112.75L173.91 112.65Q173.55 112.59 173.3 112.46Q173.05 112.33 172.9 112.15Q172.75 111.96 172.68 111.74Q172.62 111.52 172.62 111.28Q172.62 110.59 173.07 110.24Q173.52 109.89 174.29 109.89Q174.9 109.89 175.31 110.09Q175.73 110.29 175.98 110.66L175.55 111.03Q175.35 110.75 175.05 110.58Q174.76 110.41 174.29 110.41Q173.78 110.41 173.5 110.62Q173.23 110.84 173.23 111.27Q173.23 111.61 173.43 111.82Q173.64 112.03 174.17 112.13L174.71 112.22Q175.08 112.29 175.33 112.42Q175.58 112.54 175.74 112.72Q175.89 112.9 175.96 113.13Q176.02 113.35 176.02 113.6Q176.02 114.29 175.57 114.69Q175.11 115.09 174.27 115.09Z M182.52 112.48V110.89H182.46L181.4 113.47L180.34 110.89H180.28V112.48V115H179.73V109.97H180.51L181.39 112.19H181.44L182.32 109.97H183.07V115H182.52Z M188.82 110.5V115H188.22V110.5H186.54V109.97H190.5V110.5Z M194.13 115V109.97H195.96Q196.66 109.97 197.02 110.36Q197.39 110.74 197.39 111.42Q197.39 112.11 197.02 112.49Q196.66 112.87 195.96 112.87H194.73V115ZM194.73 112.34H195.94Q196.32 112.34 196.54 112.15Q196.75 111.96 196.75 111.61V111.23Q196.75 110.88 196.54 110.69Q196.32 110.5 195.94 110.5H194.73Z M208.97 115H208.37V109.97H210.2Q210.9 109.97 211.26 110.36Q211.63 110.74 211.63 111.42Q211.63 112.03 211.31 112.4Q211 112.77 210.39 112.83L211.67 115H211L209.77 112.85H208.97ZM210.18 112.34Q210.56 112.34 210.78 112.15Q210.99 111.96 210.99 111.61V111.23Q210.99 110.88 210.78 110.69Q210.56 110.5 210.18 110.5H208.97V112.34Z M215.49 115V109.97H218.58V110.5H216.09V112.19H218.5V112.72H216.09V114.47H218.58V115Z M222.82 115V109.97H223.43V114.47H225.81V115Z M232.54 115 232.12 113.57H230.35L229.93 115H229.3L230.84 109.97H231.64L233.18 115ZM231.27 110.62H231.2L230.5 113.04H231.97Z M238.06 115V113.03L236.32 109.97H237.01L237.73 111.28L238.35 112.43H238.37L239 111.28L239.72 109.97H240.4L238.66 113.03V115Z" fill="#F6EDE2" opacity=".78" />
</svg>