OSS email connector for the Terrene Delegate substrate (kailash.delegate).
Reason this release was yanked:
re-architect to plugins
Project description
delegate-connector-email
The first OSS Python connector for the Terrene Delegate substrate. Implements the
shipped kailash.delegate.Connector ABC (kailash 2.26.2) for email:
write— SMTP outbound send, executed under audit, returns a realSignedActionEnvelope.read— IMAP inbound fetch, executed under audit, returns(messages, AttestedReadReceipt).authenticate— resolves a sender/recipient address to aPrincipalagainst aPrincipalDirectory(exact-match in v0; unknown sender →Reject, fail-closed).invoke— single-method dispatch entry (used by the dispatch hot path); dispatches a send and returns aConnectorInvocationResult.- Trust properties —
auth_verifierreturns the wiredEd25519Verifier;ledger/revocationreturn shipped concretes (framework-first; no custom trust primitives).
It subclasses Connector directly (ADR-1) — NOT LegacyInvokeConnector,
whose proxied read/write emit empty, unverifiable receipts. This connector's
read/write produce non-empty receipts that verify under a real
Ed25519Verifier.
Install
pip install -e connectors/email
Configure
All credentials come from the environment (see .env.example):
EMAIL_SMTP_HOST/PORT/USER/PASSWORD/USE_TLS and the EMAIL_IMAP_* equivalents.
Nothing is hardcoded; nothing is logged.
Test
Tier-1 (unit, no I/O):
pip install -e "connectors/email[test]"
python -m pytest connectors/email/tests/unit -q
Tier-2/3 (real infra — Mailpit + GreenMail, no mocks at the boundary):
docker compose -f connectors/email/docker-compose.yml up -d
python -m pytest connectors/email/tests/integration -q
docker compose -f connectors/email/docker-compose.yml down
Two real mail servers back the tier: Mailpit (SMTP :1025 + REST/UI :8025)
for the outbound send + arrival assertion, and GreenMail (greenmail/standalone;
real SMTP :3025 + real IMAP :3143) for the inbound IMAP round-trip — Mailpit
v1.30.0 ships no IMAP server. If Docker is unavailable the integration tests skip
with a clear reason (they do not fake the boundary).
Known limitation — runtime execute() audit gate
compose.py builds a real DelegateRuntime around the connector. However the
shipped kailash.delegate runtime/dispatch audit-emit path signs the event
payload bytes while AuditChainEngine.emit_event verifies the signature against
the full audit-entry signing bytes — so runtime.execute() fails at the first
audit emission under any real verifier. This is an SDK bug in kailash.delegate,
not in this connector; the connector's own read/write receipts verify
correctly. See workspaces/email/journal/0005-GAP-* for the full evidence and
reproduction. The end-to-end runtime.execute() assertion is gated on the SDK
fix; the connector-level SMTP→IMAP round-trip and receipt verification are not.
License
Apache 2.0. All open-source IP is owned by the Terrene Foundation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file delegate_connector_email-0.1.0.tar.gz.
File metadata
- Download URL: delegate_connector_email-0.1.0.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2371ff04ceed3aa1f400a60d2a92393645721278d48926a4f27d1a8fe6df8dbf
|
|
| MD5 |
8723aff2e732b88042c56b9d1f6ea7b3
|
|
| BLAKE2b-256 |
b16887cbd382c02f64b0d129b8282993d8a20775de052f67d151be14e432c599
|
File details
Details for the file delegate_connector_email-0.1.0-py3-none-any.whl.
File metadata
- Download URL: delegate_connector_email-0.1.0-py3-none-any.whl
- Upload date:
- Size: 26.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47ec31fbaa0c86eb83f1aaa49e79b3335c3dcf71720780d3f8cbded590829753
|
|
| MD5 |
9c87b2a074194ecf5c66dab25f902abb
|
|
| BLAKE2b-256 |
f468a011cb2bcdf8ed93bcee972e39f6b6617b6d4e67a61307120005f8e49825
|