Server settings → Plugins: the own-mail outbox cannot be switched off, though its code and the refusal say it can #608
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#608
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
95348908d, listing what Server settings → Plugins draws and asking the policy aboutown-mail.Checked again on 2026-10-01 against
mainat0a5cad587: still present. The code is now atplugins/policy.py:51(GOVERNED_KINDS),:61(UNGOVERNED_KINDS) and:309-320(plugins_for),core/server_views.py:1021-1042andplugins/installing.py:932-948(set_disabled);connected_pluginsmoved from the registry toplugins/policy.py:323(#248). The other files have not moved.The connected kind
outboxis in neitherGOVERNED_KINDSnorUNGOVERNED_KINDS. Server settings → Plugins therefore never shows or saves a policy forown-mail, the person's own Plugins page leaves it out, andplugins_for(person, "outbox")returns it unfiltered even if a policy row exists. Being a built-in, it cannot be switched off for the instance either:set_disabledrefuses and sends the administrator to a page that does not list it. #149 asked that an administrator be able to switch the person's half of mail off, and the code says so in three places.plugins/policy.py:46(GOVERNED_KINDS = ("source", "notifier", "store", "sync", "importer", "feature")) and:56(UNGOVERNED_KINDS);plugins/policy.py:318-329(plugins_for, which returnsplugins(kind)for any kind outsideGOVERNED_KINDS);core/server_views.py:1020-1041(_governed_plugins,_ungoverned_plugins);plugins/installing.py:1106-1116(set_disabled);plugins/kinds.py:25-34(nooutboxlabel or tone). The promises:plugins/own_mail/__init__.py:6-14("Switched off: by the person, or by an administrator") andcore/correspondence.py:52-58(outbox_for: "Governed like every other connected plugin: an administrator may switch it off, and then this returns nothing").identifiersandsmtp;own-mailis in neither.installing.set_disabled("own-mail", True)raises "own-mail ships inside Postulo. Switch it off under Server settings → Plugins instead." With a hand-madePluginPolicy(plugin="own-mail", person=None, state=UNAVAILABLE),decideanswerson=False, yetplugins_for(user, "outbox")still returnsown-mail, sooutbox_forkeeps offering it."outbox"toGOVERNED_KINDS, so its policy rows are drawn, saved and applied byplugins_for; add anoutboxlabel and tone toplugins/kinds.py.Done when
tests/test_plugin_policy.pyhas a test thatown-mailappears among the rows of Server settings → Plugins, and that forcing it off removes it fromconnected_plugins(person)and makescorrespondence.outbox_for(person)returnNone.Related to #149 (closed), which asked for the administrator's switch.