@bobfrankston/rmfmail 1.2.308 → 1.2.309
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.
- package/.commitmsg +10 -24
- package/client/android-bootstrap.bundle.js +4 -2
- package/client/android-bootstrap.bundle.js.map +2 -2
- package/client/app.bundle.js.map +1 -1
- package/npmchanges.md +28 -0
- package/package.json +5 -5
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/package.json +1 -1
- package/packages/mailx-store-web/package.json +1 -1
- package/packages/mailx-types/package.json +1 -1
- package/packages/mailx-types/trust.d.ts.map +1 -1
- package/packages/mailx-types/trust.js +13 -2
- package/packages/mailx-types/trust.js.map +1 -1
- package/packages/mailx-types/trust.ts +13 -2
package/.commitmsg
CHANGED
|
@@ -1,25 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
Trust banner names the intermediary and the action that trusts it
|
|
2
2
|
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
An entry counts only on a message the service PROVABLY handled — a verified
|
|
13
|
-
DKIM signature for its domain in the topmost Authentication-Results, or a
|
|
14
|
-
DMARC pass when it is the From. Then its own redirector is routing, not
|
|
15
|
-
laundering, and the bulk/association spam note is quieted exactly as a
|
|
16
|
-
proved trusted sender quiets it. A message that merely links through
|
|
17
|
-
google.com/url proves nothing and stays flagged; forgery evidence is never
|
|
18
|
-
silenced. Findings now carry `via` (the signer behind the redirector, or the
|
|
19
|
-
signed Sender: domain) and the viewer offers "Trust ‹domain› as an
|
|
20
|
-
intermediary" under the banner; trustSenderOrDomain takes type
|
|
21
|
-
"intermediary" (desktop + Android mirror), getAllowlist returns the list.
|
|
22
|
-
docs/allowlist.md documents trustedSenders/trustedDomains (were missing) and
|
|
23
|
-
the new list. Packages: mailx-types 0.1.83, mailx-store 0.1.115,
|
|
24
|
-
mailx-settings 0.1.77, mailx-service 0.1.34, mailx-store-web 0.1.107,
|
|
25
|
-
client 1.0.46.
|
|
3
|
+
"Is there a 'trust this intermediary' operation or do I need to edit it
|
|
4
|
+
manually? If so the banner should tell which and how" (Bob 2026-09-08). The
|
|
5
|
+
button existed since v1.2.308 but the finding text did not mention it. The
|
|
6
|
+
spam-verdict note now ends with: Sent on the author's behalf by google.com,
|
|
7
|
+
which signed it; "Trust google.com as an intermediary" stops this note for
|
|
8
|
+
mail google.com signs. The redirector warning ends the same way, naming the
|
|
9
|
+
signer — or, when nobody signed for the redirector host, says plainly that
|
|
10
|
+
there is no intermediary to trust and only the sender could vouch for the
|
|
11
|
+
link. mailx-types 0.1.85.
|
|
@@ -2392,6 +2392,7 @@ function serverSpamVerdict(input) {
|
|
|
2392
2392
|
const senderDomain = (bare(header(input.headerLines, "sender")).split("@")[1] || "").toLowerCase();
|
|
2393
2393
|
const relay = senderDomain ? a.signers.find((s) => sameOrg(s, senderDomain)) : "";
|
|
2394
2394
|
const via = relay && !a.proved ? { via: relay } : {};
|
|
2395
|
+
const relayNote = relay && !a.proved ? `. Sent on the author's behalf by ${relay}, which signed it; "Trust ${relay} as an intermediary" stops this note for mail ${relay} signs.` : "";
|
|
2395
2396
|
const numbers = Number.isFinite(a.score) && Number.isFinite(a.threshold) ? `SpamAssassin score ${a.score} of ${a.threshold}` : "flagged by SpamAssassin";
|
|
2396
2397
|
const why = a.reasons.length ? ` \u2014 ${a.reasons.join("; ")}` : "";
|
|
2397
2398
|
const bayes = a.bayesHam ? "; your own trained filter puts it at 0-1% spam (BAYES_00)" : "";
|
|
@@ -2428,7 +2429,7 @@ function serverSpamVerdict(input) {
|
|
|
2428
2429
|
id: "server-spam-verdict",
|
|
2429
2430
|
severity: "caution",
|
|
2430
2431
|
text: "Your mail server classified this as spam before delivering it.",
|
|
2431
|
-
detail: `${proof}${numbers}${why}${bayes}`,
|
|
2432
|
+
detail: `${proof}${numbers}${why}${bayes}${relayNote}`,
|
|
2432
2433
|
...via
|
|
2433
2434
|
};
|
|
2434
2435
|
}
|
|
@@ -2533,11 +2534,12 @@ function redirectorLink(input) {
|
|
|
2533
2534
|
if (sameOrg(target.hostname, url.hostname))
|
|
2534
2535
|
continue;
|
|
2535
2536
|
const signer = signers.find((s) => sameOrg(s, url.hostname));
|
|
2537
|
+
const how = signer ? ` ${signer} signed this message; "Trust ${signer} as an intermediary" stops this warning for links through ${signer} in mail it signs.` : ` Nobody signed this message for ${url.hostname}, so there is no intermediary to trust; only the sender could vouch for the link.`;
|
|
2536
2538
|
return {
|
|
2537
2539
|
id: "redirector-link",
|
|
2538
2540
|
severity: "caution",
|
|
2539
2541
|
text: `A link hides where it goes: it passes through ${url.hostname} and ends at ${target.hostname}.`,
|
|
2540
|
-
detail: `${url.hostname} -> ${target.hostname}`,
|
|
2542
|
+
detail: `${url.hostname} -> ${target.hostname}.${how}`,
|
|
2541
2543
|
...signer ? { via: signer } : {}
|
|
2542
2544
|
};
|
|
2543
2545
|
}
|