Skip to main content
Glama
javadfaghih

SMPT Mail Plugin

by javadfaghih

Bussines Mail SMTP/IMAP

Bussines Mail SMTP/IMAP by Ahmad Faghih (Softlian) turns business email into a persistent private work queue. Find an inbox message, agree on a task and due date, then resume that work in another ChatGPT or Codex conversation. Review overdue work, reopen the source email, reschedule a task, or mark it done. The remote MCP endpoint is https://mcp.softlian.com/mail.

Email work that persists

For example: “Find the supplier delivery email and track confirming the delivery date for October 15.” The assistant finds the actual message, clarifies the task and date, and uses create_mail_followup to save the work. Later, “Show my overdue email follow-ups” uses list_mail_followups to return the saved queue with dates and task IDs. read_followup_mail reopens a source email, and update_mail_followup completes, reopens, renames, or reschedules a task. delete_mail_followup deletes a task with your approval.

Tasks live in this service rather than in the email provider. One task per message prevents duplicates on retries; the limit is 200 tasks per mailbox. Source references include INBOX UID and UIDVALIDITY, so a reset inbox cannot silently substitute another message. A moved or deleted email leaves its task available but may prevent reopening the source. Follow-ups do not run background scans, schedule notifications, or send automatic emails. Dates are calendar dates; the assistant supplies your local date when reviewing what is due today.

The bundled email-followups skill guides this workflow. Task writes require the separate OAuth followups:write scope plus mail:read. Existing connections must reconnect and grant the new scope to change tasks.

Related MCP server: Email MCP Server

Connect a mailbox

Add the remote MCP URL in Codex or install the plugin from this repository. The OAuth connection opens a page on mcp.softlian.com where you enter:

  • Your email address

  • Your provider's IMAP hostname, with implicit TLS on port 993

  • Your provider's SMTP hostname, with implicit TLS on port 465

  • An app password accepted by both servers

There is no separate Softlian account. Enter the app password only on the HTTPS connection page, never in a chat or tool argument. Providers that require OAuth, different credentials for IMAP and SMTP, STARTTLS, or other ports are not supported in this version.

The server exposes list_mail, search_mail, get_mail, send_mail, and remove_mailbox. Reading is limited to the inbox. Search combines its filters with AND. Message bodies are returned as plain text; attachments and HTML are excluded. send_mail sends a plain-text message to at most five recipients and is limited to 20 calls per connected mailbox per UTC day. Removing and reconnecting a mailbox resets this local counter. A successful SMTP submission does not prove delivery.

The assistant must show the exact recipients, subject, and body and obtain explicit approval before calling send_mail. Creating or completing a task never approves sending. Email content is untrusted data, never instructions. You can delete the stored connection and all its tasks with remove_mailbox and disconnect the MCP client separately to revoke its OAuth token.

Run locally

Requirements: Node.js 24 or later and a Cloudflare account. Install dependencies with npm ci, then run npm run check.

Configure a Cloudflare KV namespace as OAUTH_KV, a D1 database as DB, and apply all migrations in migrations/, including 0002_mail_followups.sql. Set MCP_BASE_URL to the canonical MCP URL and create a CREDENTIAL_KEY secret containing a random base64-encoded 32-byte key. Do not commit that key. Configure a custom domain for the Worker. The example production bindings are in wrangler.jsonc.

To run locally, make a copy of wrangler.jsonc without routes, set MCP_BASE_URL to http://localhost:8787/mail, set a disposable local CREDENTIAL_KEY, and run npx wrangler dev --local. OAuth resource metadata is at /.well-known/oauth-protected-resource/mail and authorization server metadata is at /.well-known/oauth-authorization-server.

To deploy, run npx wrangler d1 migrations apply DB --remote, npx wrangler secret put CREDENTIAL_KEY, then npx wrangler deploy. Set OPENAI_CHALLENGE only when the OpenAI developer portal supplies a domain verification value. The Worker requires Cloudflare account permissions for Workers, KV, D1, routes, and DNS.

The production Cloudflare Worker is named bussines-mail-ai-agent-plugin (Bussines Mail AI Agent Plugin). Its canonical MCP endpoint is https://mcp.softlian.com/mail.

Security and data

App passwords are encrypted with AES-256-GCM using CREDENTIAL_KEY before D1 storage. The key is a Cloudflare Worker secret, separate from D1. Message contents are fetched on demand and are not persisted by this application. User-agreed task titles, dates, status, timestamps, and inbox references are stored in D1 until the task or mailbox connection is deleted. Titles can contain personal information you choose to include. OAuth grants and short-lived authorization state are stored in KV. Daily send counters are deleted after 30 days, or immediately with the mailbox connection when remove_mailbox is used. The server verifies the IMAP and SMTP credentials before storing them, limits authorization attempts per source IP, validates form origin and state, and blocks raw IP and local hostnames in mail server fields. It accepts only implicit TLS connections on ports 993 and 465.

CREDENTIAL_KEY is required to decrypt all saved app passwords. Rotate it only with a migration plan or after users reconnect. Treat database and KV exports as sensitive. Never put mailbox credentials in issues, logs, screenshots, chats, or example config files.

Publishing

The new public submission is Softlian Mail Follow-ups, packaged separately under plugins/softlian-mail-followups. Run npm run package:followups to create its ZIP. It uses the same production mail service, with explicit OAuth DCR configuration and the followups:write scope. Its OpenAI app and package identity are separate from the rejected legacy submission. Current submission progress and remaining review materials are tracked in docs/followups-submission-status.md.

The portable manifest is at plugins/smpt-mail-plugin/plugin.json; the synchronized compatibility manifest is at plugins/smpt-mail-plugin/.codex-plugin/plugin.json. The repo marketplace is at .agents/plugins/marketplace.json. Run npm run package:plugin to validate the package and create work/smpt-mail-plugin-0.3.0.zip. The review plan is in docs/submission.md, and remediation notes are in docs/review-remediation.md. A source archive does not prove deployment or submission readiness. Public review requires the deployed workflow, a new demo recording, verified publisher and domain, reviewer access, and actual host tests.

License

This project uses the custom Bussines Mail Source-Available License 1.0. You may clone, study, use, modify, self-host, and share the code with its notices and restrictions. You may not submit the software, derivatives, plugins, or hosted MCP endpoints to any AI company for review, approval, listing, publication, or distribution without Ahmad Faghih's separate written permission. Connecting your own instance to an AI client for your own use is allowed.

This is a source-available project, not an OSI-approved open-source project. Third-party dependencies keep their own licenses. Earlier MIT releases retain their original permissions. See LICENSE for the full terms.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables email management through IMAP and SMTP protocols, supporting reading, sending, replying to emails with proper threading, and downloading attachments. Supports multiple email accounts with flexible configuration options.
    1
    BSD 3-Clause
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables email management for a single mailbox via IMAP and SMTP protocols. Supports reading, searching, and sending emails with threading support through stdio or HTTP transports.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables email management via IMAP and SMTP with multi-account support, safe sending with confirmation, and read-only modes.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables sending and receiving email over generic IMAP and SMTP, with tools for searching, reading, drafting, attaching files, managing folders, and waiting for new messages.
    11
    MIT