尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Share email verification codes through one read-only link. Forward Netflix, Disney+ or team 2FA emails to an address on your domain; viewers need no app or account. Open source, free on Cloudflare Workers.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗New device, new code. Your family gets it without asking you.
InboxShare is an open-source, self-hosted shared verification inbox. Forward the verification emails from your existing mailbox (Gmail, Outlook, iCloud Mail, anything that can forward) to an address on your own domain, and the people you authorize read the latest login code themselves through one read-only link.
No shared email password. No account or app for viewers. $0/month on Cloudflare's free tier.
Website: inboxshare.app · 中文文档: README.zh-CN.md
You are the person whose email address is on the shared accounts. Every one of these lands on you:
Use InboxShare within each service's sharing rules: the people in your household, or the seats on your team plan.
Existing workarounds all fail on one of these: manual forwarding is slow, shared mailboxes expose everything, and IMAP-polling tools need your mailbox password and still lag.
InboxShare turns one address on your domain into a read-only web page that shows only the emails you choose to forward there, with the verification code pulled to the top.
Netflix sends Your mailbox code@yourdomain InboxShare Your family
verification email → one forwarding rule → Cloudflare Email → finds the code, → opens the link,
Routing hides the rest reads the code
[email protected]. Everything else stays where it is.A mobile-friendly inbox for that one address: sender, subject, relative time, the code as a chip in the list and as a large copy button in the message, the sanitized HTML body in a sandboxed frame, and attachments as downloads. Emails whose code is behind a button show a "Tap to verify" chip and an "Open verification link" button instead; links in the body open in a new tab as well. On phones the newest code or link sits in a card at the top. The page refreshes every 30 seconds.
| Feature | Description |
|---|---|
| Read-only share links | /s/<key> pages; viewers cannot send, reply or delete. Keys are <mailbox user><letter><10 random characters>; the random tail is the access control. |
| Code detection | 4 to 8 digit verification codes detected on arrival; conservative rules avoid years and order numbers. |
| Verification-link detection | "Get code", "Sign in" and "Yes, this was me" buttons are detected on arrival and shown as an open / copy button; unsubscribe, help and sign-out links are ignored. |
| Rolling time windows | Each link shows only recent mail; old codes scroll out on their own. |
| Expiry, revoke, delete | Optional expiry date, instant revoke (record kept) or delete (record removed). |
| Sensitive-mail isolation | Password reset, billing and account-security emails never appear unless a link explicitly opts in. |
| English and Chinese | LOCALE sets the default; viewers and admins can switch in the UI. |
| Serverless | One Cloudflare Worker with D1, R2 and a daily cleanup cron. No VPS, no SMTP server, no port 25. |
Total time: about 20 minutes. You need a Cloudflare account with a domain on it, and for the CLI route Node.js 22+ and pnpm.
A. Deploy to Cloudflare button (easiest)
Click the Deploy to Cloudflare button and follow the flow. It creates the Worker, the D1 database and the R2 bucket. Then, from the repository it created for you:
pnpm install
pnpm wrangler d1 migrations apply DB --remote
pnpm wrangler secret put ADMIN_TOKEN # a random string, 16+ characters
B. Fork + GitHub Actions
DEPLOY_WITH_ACTIONS=true and the secrets CLOUDFLARE_API_TOKEN (Workers Scripts, D1, R2 and Email Routing: Edit), CLOUDFLARE_ACCOUNT_ID and ADMIN_TOKEN.main or run the workflow manually. It installs, migrates, deploys and sets the admin secret. Without DEPLOY_WITH_ACTIONS the workflow is skipped, so forks do not fail by default.C. Wrangler CLI
git clone https://github.com/funcin/inboxshare.git
cd inboxshare
pnpm install
pnpm wrangler login
pnpm run deploy # applies D1 migrations, then deploys
pnpm wrangler secret put ADMIN_TOKEN
The top-level wrangler.jsonc is a generic template with no resource ids. env.production is the author's own instance; delete it or replace it with yours.
[email protected]. Action: Send to a Worker → your InboxShare Worker.disney@, team@) becomes its own shared inbox without further setup.[email protected] (the confirmation email lands in InboxShare; create a link in step 4 to read its code). Then Filters → create: from:(netflix.com OR disneyplus.com OR openai.com) → Forward it to that address.Keep the rule narrow. Only the verification emails need to leave your mailbox.
Open https://<your-worker-host>/admin, enter ADMIN_TOKEN, pick the receiving address, choose a time window and an optional expiry and label, click Create link. Copy the /s/<key> URL and send it to the people who need it.
Send a test email through the forwarding rule and open the share link on a phone. You should see the message within seconds with the code at the top. Password-reset or billing emails sent the same way should not appear.
"routes": [{ "pattern": "inbox.yourdomain.com", "custom_domain": true }],
"vars": {
"PUBLIC_BASE_URL": "https://inbox.yourdomain.com",
"LOCALE": "en"
}
Share links use PUBLIC_BASE_URL. LOCALE is en or zh-CN; every page also has a language switch. Note that adding a custom domain route disables the workers.dev hostname by default.
| Setting | Location | Description |
|---|---|---|
ADMIN_TOKEN | secret / .dev.vars | Required, 16+ characters. Admin endpoints return 503 without it. |
RETENTION_DAYS | vars | Days to keep mail and attachments; default 30. A daily cron deletes older data from D1 and R2. |
PUBLIC_BASE_URL | vars | Base URL for generated share links; empty = request origin. |
FORWARD_TO | vars | Optional: also forward every received email to this verified Email Routing destination. |
LOCALE | vars | en (default) or zh-CN. |
WAITLIST_FROM | vars | Optional. The landing page's "hosted version" signup is stored in the D1 waitlist table. To also get an email per signup, set this sender on your domain, add a send_email binding named EMAIL, and store the recipient with wrangler secret put WAITLIST_TO (a verified Email Routing destination). Unset = store only. |
WAITLIST_TO | secret | Recipient for waitlist notifications; see WAITLIST_FROM. |
ANALYTICS_DOMAIN | vars | Optional. Your site name in a Plausible dashboard; the landing page then loads the Plausible script (cookie-free). The script host is set in src/analytics.ts. Only the landing page is tagged; share and admin pages never load third-party resources. Unset = no analytics. |
pnpm install
cp .dev.vars.example .dev.vars # set a 16+ character ADMIN_TOKEN
pnpm db:migrate:local
pnpm dev # http://127.0.0.1:8787
pnpm test:email # delivers scripts/fixtures/sample.eml to the local Worker
pnpm test:classify # code detection and classification cases
pnpm typecheck
Open /admin, create a link for [email protected], then open /s/<key> on desktop and phone widths.
Anyone with a valid share URL can read the messages that link permits. Treat the URL as a secret.
RETENTION_DAYS bound what is visible.ANALYTICS_DOMAIN is set.application/octet-stream.no-store, noindex and no-referrer; only the landing page is indexable.ADMIN_TOKEN lives in a Worker secret, never in the repository.There is no built-in rate limiting on the public viewer API. Consider a Cloudflare rate-limiting rule for /api/s/*.
cid: images are restored from the stored attachments (images up to 1.5 MB each); large HTML bodies are stored in R2.Is this a temporary-email service? No. It uses an address on a domain you control and only shows mail forwarded from your existing mailbox.
Does it read my Gmail? No. There is no OAuth and no IMAP. Your provider's forwarding rule is the only connection.
Does it generate codes? No. It detects codes inside emails you actually received.
Can viewers reply or manage my mailbox? No. The page is read-only and has no access to the original mailbox. A verification email can still authorize a login, so share links only with people you trust.
Does it change Netflix's household rules? No. Use it with the people in your household, within each service's terms.
Prefer not to run it yourself? Leave your email at the bottom of inboxshare.app and we will reply within 24 hours.
MIT