@push.rocks/smartmta 9.5.0 → 9.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/changelog.md +41 -0
  2. package/dist_rust/mailer-bin_linux_amd64 +0 -0
  3. package/dist_rust/mailer-bin_linux_amd64.tsrust-build.json +14 -0
  4. package/dist_rust/mailer-bin_linux_arm64 +0 -0
  5. package/dist_rust/mailer-bin_linux_arm64.tsrust-build.json +14 -0
  6. package/dist_ts/00_commitinfo_data.js +1 -1
  7. package/dist_ts/index.d.ts +1 -0
  8. package/dist_ts/index.js +2 -1
  9. package/dist_ts/mail/routing/classes.unified.email.server.d.ts +140 -4
  10. package/dist_ts/mail/routing/classes.unified.email.server.js +371 -97
  11. package/dist_ts/mail/routing/interfaces.d.ts +41 -0
  12. package/notices/aws-lc-sys-0.43.0-fiat-license.txt +22 -0
  13. package/notices/cargo-dependencies.html +4706 -0
  14. package/notices/compiler-builtins-license.txt +275 -0
  15. package/notices/crossbeam-channel-third-party.txt +593 -0
  16. package/notices/encoding-rs-copyright.txt +61 -0
  17. package/notices/glibc-copying-lesser.txt +502 -0
  18. package/notices/glibc-licenses.txt +412 -0
  19. package/notices/inventory.json +1226 -0
  20. package/notices/libgcc-gpl-3.0.txt +674 -0
  21. package/notices/libgcc-runtime-exception.txt +73 -0
  22. package/notices/mimalloc-license.txt +21 -0
  23. package/notices/moka-notice.txt +14 -0
  24. package/notices/ring-0.17.14-fiat-license.txt +15 -0
  25. package/notices/ring-0.17.14-license-boringssl.txt +272 -0
  26. package/notices/ring-0.17.14-license-other-bits.txt +13 -0
  27. package/notices/ring-0.17.14-license.txt +9 -0
  28. package/notices/ring-0.17.14-once-cell-license-apache.txt +201 -0
  29. package/notices/ring-0.17.14-once-cell-license-mit.txt +23 -0
  30. package/notices/rust-standard-library.html +8266 -0
  31. package/notices/rustversion-1.0.23-license-mit.txt +23 -0
  32. package/notices/source-attributions.txt +294 -0
  33. package/notices/wasm-bindgen-license-mit.txt +25 -0
  34. package/notices/zerocopy-derive-0.8.55-license-mit.txt +26 -0
  35. package/notices/zstd-license.txt +30 -0
  36. package/package.json +8 -6
  37. package/readme.md +70 -2
  38. package/third-party-notices.md +171 -0
  39. package/ts/00_commitinfo_data.ts +1 -1
  40. package/ts/index.ts +1 -0
  41. package/ts/mail/routing/classes.unified.email.server.ts +452 -108
  42. package/ts/mail/routing/interfaces.ts +43 -0
  43. package/readme.hints.md +0 -45
  44. package/readme.plan.md +0 -30
@@ -0,0 +1,171 @@
1
+ # Third-party notices
2
+
3
+ These notices accompany SmartMTA's prebuilt `dist_rust/mailer-bin_linux_amd64`
4
+ and `dist_rust/mailer-bin_linux_arm64` executables, which ship inside the npm
5
+ package. SmartMTA's own TypeScript and Rust code is MIT-licensed under
6
+ [license](./license).
7
+
8
+ Both executables are statically linked: `pnpm build` runs
9
+ `tsbuild tsfolders && tsrust`, and `@git.zone/tsrust` builds the
10
+ `.smartconfig.json` targets `linux_amd64` and `linux_arm64` — the
11
+ `x86_64-unknown-linux-gnu` and `aarch64-unknown-linux-gnu` triples — with
12
+ `-C target-feature=+crt-static`, so the Cargo dependency graph, the Rust
13
+ standard library, the GNU C Library and libgcc are all compiled into the
14
+ shipped object code. Anyone redistributing those executables — including
15
+ inside a container image — redistributes those third-party works in binary
16
+ form and must pass these notices on with them.
17
+
18
+ ## Cargo dependencies
19
+
20
+ [Cargo dependency notices](./notices/cargo-dependencies.html) reproduce the
21
+ selected upstream license and copyright texts for 225 of the 232 third-party
22
+ packages in `rust/Cargo.lock`. The seven remaining packages are locked but
23
+ outside the resolved build graph (WebAssembly-only or feature-inactive), and
24
+ are covered by these supplemental notices:
25
+
26
+ - [js-sys 0.3.103, wasm-bindgen 0.2.126, wasm-bindgen-macro 0.2.126,
27
+ wasm-bindgen-macro-support 0.2.126 and wasm-bindgen-shared 0.2.126](./notices/wasm-bindgen-license-mit.txt),
28
+ from their identical published `LICENSE-MIT` files.
29
+ - [rustversion 1.0.23](./notices/rustversion-1.0.23-license-mit.txt), from the
30
+ published crate's `LICENSE-MIT`.
31
+ - [zerocopy-derive 0.8.55](./notices/zerocopy-derive-0.8.55-license-mit.txt),
32
+ from the published crate's `LICENSE-MIT`.
33
+
34
+ Together these cover all 232 locked external packages, conservatively including
35
+ build-only and target-inactive dependencies. Listing a package does not mean it
36
+ is linked into either executable. MIT is preferred where offered as an
37
+ alternative; other selected terms include Apache-2.0, ISC, 0BSD, BSD-2-Clause,
38
+ BSD-3-Clause, Unicode-3.0, Zlib, CC0-1.0, MIT-0, CDLA-Permissive-2.0 and
39
+ bzip2-1.0.6. The exact package versions and declared license expressions are
40
+ recorded in [inventory.json](./notices/inventory.json).
41
+
42
+ Several packages vendor or derive from third-party source whose attribution is
43
+ not carried by the crate-level license text. Those notices are reproduced
44
+ verbatim beside the generated inventory:
45
+
46
+ - ring 0.17.14: [its own ISC terms](./notices/ring-0.17.14-license.txt),
47
+ [the BoringSSL terms](./notices/ring-0.17.14-license-boringssl.txt),
48
+ [the ISC text for new files](./notices/ring-0.17.14-license-other-bits.txt),
49
+ [the fiat-crypto terms](./notices/ring-0.17.14-fiat-license.txt) and the
50
+ once_cell terms it sourced code from
51
+ ([Apache-2.0](./notices/ring-0.17.14-once-cell-license-apache.txt),
52
+ [MIT](./notices/ring-0.17.14-once-cell-license-mit.txt)).
53
+ - aws-lc-sys 0.43.0: the vendored AWS-LC notice — itself covering BoringSSL and
54
+ OpenSSL/SSLeay — is the crate's `LICENSE` file and is reproduced in the
55
+ generated inventory; its separately licensed
56
+ [fiat-crypto component](./notices/aws-lc-sys-0.43.0-fiat-license.txt) is
57
+ included here.
58
+ - libmimalloc-sys 0.1.49: [the vendored mimalloc terms](./notices/mimalloc-license.txt).
59
+ - zstd-sys 2.0.16+zstd.1.5.7: [the vendored Zstandard terms](./notices/zstd-license.txt)
60
+ (BSD-3-Clause is selected; upstream also offers GPL-2.0).
61
+ - moka 0.12.15: [its Apache-2.0 NOTICE file](./notices/moka-notice.txt), as
62
+ required by Apache-2.0 section 4(d).
63
+ - crossbeam-channel 0.5.16:
64
+ [its third-party notices](./notices/crossbeam-channel-third-party.txt).
65
+ - encoding_rs 0.8.35:
66
+ [its copyright and WHATWG attribution](./notices/encoding-rs-copyright.txt).
67
+ - [Additional source attributions](./notices/source-attributions.txt) retain the
68
+ copyright and attribution files shipped by charset, enum-as-inner,
69
+ linux-raw-sys, miniz_oxide, rand, rand_chacha, rand_core, regex-syntax, rustix
70
+ and utf8_iter.
71
+
72
+ ## Compiler and static runtime
73
+
74
+ Components supplied by the Rust compiler and by the C toolchain are outside
75
+ `rust/Cargo.lock` and have separate notices. The exact versions that produced
76
+ the shipped executables are recorded in
77
+ [inventory.json](./notices/inventory.json) under `rustc` and `staticRuntime`,
78
+ and `test/test.notices.node.ts` reads them back out of
79
+ `dist_rust/mailer-bin_linux_amd64` and `dist_rust/mailer-bin_linux_arm64`, so
80
+ these notices go stale loudly rather than silently.
81
+
82
+ - The Rust toolchain is the one `tsrust` resolves: the system `cargo`/`rustc`
83
+ when one is installed, otherwise its bundled `stable-<host-triple>` under
84
+ `/tmp/tsrust_toolchain`. This release was built with rustc 1.95.0
85
+ (commit `59807616e1fa2540724bfbac14d7976d7e4a3860`), which both executables
86
+ embed. The [Rust standard-library inventory](./notices/rust-standard-library.html)
87
+ is that toolchain's `share/doc/rust/COPYRIGHT-library.html`; the upstream
88
+ inventory covers other targets too.
89
+ - [Compiler-builtins license](./notices/compiler-builtins-license.txt), from
90
+ [Rust 1.95.0](https://github.com/rust-lang/rust/blob/1.95.0/library/compiler-builtins/LICENSE.txt),
91
+ retaining MIT and Apache-2.0 WITH LLVM-exception terms.
92
+ - The GNU C Library 2.39 is statically linked into both executables, in the
93
+ Ubuntu builds that produced them:
94
+ - amd64: `libc6-dev` 2.39-0ubuntu8.9, from Ubuntu source package
95
+ `glibc` 2.39-0ubuntu8.9 —
96
+ `apt-get source glibc=2.39-0ubuntu8.9`, or
97
+ <https://launchpad.net/ubuntu/+source/glibc/2.39-0ubuntu8.9>.
98
+ - arm64: `libc6-dev-arm64-cross` 2.39-0ubuntu8cross1, from Ubuntu source
99
+ package `cross-toolchain-base` 68ubuntu5, which repacks Ubuntu glibc
100
+ 2.39-0ubuntu8 —
101
+ `apt-get source cross-toolchain-base=68ubuntu5`, or
102
+ <https://launchpad.net/ubuntu/+source/cross-toolchain-base/68ubuntu5>.
103
+
104
+ Its [LGPL-2.1 terms](./notices/glibc-copying-lesser.txt) and the
105
+ [copying permission notices for its non-FSF parts](./notices/glibc-licenses.txt)
106
+ are reproduced from the upstream `glibc-2.39` tag, which those Ubuntu source
107
+ packages patch. The GNU C Library is free software licensed under the GNU
108
+ Lesser General Public License, version 2.1 or later; because it is linked
109
+ statically, redistributors must keep this notice and the license text with
110
+ the executables.
111
+ - libgcc supplies the unwinder and compiler intrinsics linked into both
112
+ executables: `libgcc-13-dev` 13.3.0-6ubuntu2~24.04.1 (source package `gcc-13`)
113
+ for amd64 and `libgcc-13-dev-arm64-cross` 13.3.0-6ubuntu2~24.04.1cross1
114
+ (source package `gcc-13-cross` 14ubuntu4.4) for arm64, both GCC 13.3.0. It is
115
+ distributed under [GPL-3.0-or-later](./notices/libgcc-gpl-3.0.txt) WITH the
116
+ [GCC Runtime Library Exception 3.1](./notices/libgcc-runtime-exception.txt),
117
+ which permits distributing the compiled runtime with this executable under
118
+ the executable's own terms.
119
+
120
+ ## Rebuilding and relinking
121
+
122
+ The executables are rebuilt from this repository with:
123
+
124
+ ```sh
125
+ pnpm install
126
+ pnpm build # tsbuild tsfolders && tsrust
127
+ ```
128
+
129
+ `tsrust` reads the `@git.zone/tsrust` block of `.smartconfig.json` (`targets`
130
+ `linux_amd64` and `linux_arm64`, `static: true`), runs
131
+ `RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target
132
+ <triple>` in `rust/`, and copies the results to `dist_rust/`. The arm64 link
133
+ uses the `aarch64-linux-gnu-gcc` linker configured in `rust/.cargo/config.toml`.
134
+
135
+ That is also the relink route required by LGPL-2.1 section 6: the complete
136
+ corresponding source of the work that uses the library is this package's own
137
+ MIT-licensed source — `rust/` and `ts/` in
138
+ [the package repository](https://code.foss.global/push.rocks/smartmta) at the
139
+ tag matching this release — and glibc's sources are obtained with the
140
+ `apt-get source` commands above, so a recipient can modify the library, rebuild
141
+ it, and relink the executable with the command shown here.
142
+
143
+ The TypeScript dependency graph is installed independently through the npm
144
+ manifest; its packages are not bundled into these Rust executables.
145
+
146
+ ## Reproduction and review
147
+
148
+ From the repository root, with cargo-about 0.9.1:
149
+
150
+ ```sh
151
+ cargo about generate --manifest-path rust/Cargo.toml --config rust/about.toml \
152
+ --locked --fail --output-file notices/cargo-dependencies.html rust/about.hbs
153
+ ```
154
+
155
+ The configuration selects checksum-verified upstream notices when published
156
+ crates omit or misname them; network access is required for the pinned
157
+ `r-efi` Git source. Those commands regenerate the notices only, not the
158
+ executables; rebuilding and relinking is described above.
159
+ `notices/inventory.json` records the SHA-256 of every notice file and notice
160
+ input alongside the locked package list from `cargo metadata --locked`, the
161
+ rustc that built the executables, and the exact Ubuntu glibc and libgcc
162
+ package revisions linked into them; after a Cargo graph, compiler, C toolchain,
163
+ or notice-input change, regenerate the notices, refresh those digests and
164
+ values, and rerun `pnpm test`.
165
+ `test/test.notices.node.ts` rejects stale digests, packages missing from the
166
+ inventory or from the shipped notices, generic copyright placeholders and
167
+ missing npm notice paths.
168
+
169
+ Keep this index, `license` and the entire `notices/` directory beside any
170
+ separately distributed copy of `mailer-bin_linux_amd64` or
171
+ `mailer-bin_linux_arm64`.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartmta',
6
- version: '9.5.0',
6
+ version: '9.6.1',
7
7
  description: 'A high-performance, enterprise-grade Mail Transfer Agent (MTA) built from scratch in TypeScript with Rust acceleration.'
8
8
  }
package/ts/index.ts CHANGED
@@ -17,4 +17,5 @@ export const smartMtaCapabilities = Object.freeze({
17
17
  terminalLocalDeliverActions: true,
18
18
  smtpAuthAccountsAndScopes: true,
19
19
  durableRawOutboundQueue: true,
20
+ dynamicSmtpAuthenticationHook: true,
20
21
  } as const);