Skip to main content

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 real SignedActionEnvelope.
  • read — IMAP inbound fetch, executed under audit, returns (messages, AttestedReadReceipt).
  • authenticate — resolves a sender/recipient address to a Principal against a PrincipalDirectory (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 a ConnectorInvocationResult.
  • Trust properties — auth_verifier returns the wired Ed25519Verifier; ledger / revocation return 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

delegate_connector_email-0.1.0.tar.gz (44.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

delegate_connector_email-0.1.0-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file delegate_connector_email-0.1.0.tar.gz.

File metadata

File hashes

Hashes for delegate_connector_email-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2371ff04ceed3aa1f400a60d2a92393645721278d48926a4f27d1a8fe6df8dbf
MD5 8723aff2e732b88042c56b9d1f6ea7b3
BLAKE2b-256 b16887cbd382c02f64b0d129b8282993d8a20775de052f67d151be14e432c599

See more details on using hashes here.

File details

Details for the file delegate_connector_email-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for delegate_connector_email-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 47ec31fbaa0c86eb83f1aaa49e79b3335c3dcf71720780d3f8cbded590829753
MD5 9c87b2a074194ecf5c66dab25f902abb
BLAKE2b-256 f468a011cb2bcdf8ed93bcee972e39f6b6617b6d4e67a61307120005f8e49825

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page