Hardening: POSTULO_CONNECTIONS_ALLOW_PRIVATE is said to cover company logos, which have been public-only since #215 #537
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#537
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found on 2026-09-29 in a read-only review of postulo at
95348908dand the wiki at de1f52467, checking every outbound request against the client it uses.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The code is now atcore/mail.py:165, 180, 240(host_policyand the twodestinations.approvecalls); the other locations have not moved.Hardening says
POSTULO_CONNECTIONS_ALLOW_PRIVATE"applies to plugin connections and to company logos", and not to captures and link checks. Logos stopped following the setting in #215:jobs/logos.pynow uses the public-only client, which refuses private addresses whatever the setting says. The paragraph also leaves out what the setting does widen besides plugin connections: the Gravatar fetch, the catalogue and consent requests, and the mail servers (the instance's SMTP and a person's own outbox).postulo.wiki/Hardening.md:323-328;jobs/logos.py:109-121(download,http.public_only_client);accounts/avatars.py:119(fetch_gravatar,http.client);core/updates.py:51andplugins/browser/webpush.py:222(public-only);plugins/catalogue.py:228, 296andplugins/consent.py:238(http.client);core/mail.py:175, 190, 250(destinations.approveunderprivate_allowed()).robots.txt, portfolio link checks, company logos, the update check, web push) and the ones the setting widens (plugin connections, catalogues, OAuth token requests, mail servers, Gravatar). Gravatar is public by nature, like logos: consider movingfetch_gravatartopublic_only_clientby #215's reasoning, and then list it with the public-only ones.Related to #215 (closed), which moved logos to the public-only client but left this paragraph as it was.
Done when
Hardening.mdlists the public-only fetches and the ones the setting widens, matching the clients in the code.tests/security/test_outbound.pyfails whilefetch_gravatarreaches a private address withPOSTULO_CONNECTIONS_ALLOW_PRIVATE=true, and passes once it usespublic_only_client.Fixed in
764cb2195on main.