panthole / vmail

Virtual temporary email generator. 👉 vmail.dev

Home Page:https://vmail.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VMAIL.DEV

中文文档

Temporary email service build with email worker.

  • Receiving emails (email worker)
  • Display email (remix)
  • Mail Storage (sqlite)

Worker receives email -> saves to database -> client queries email

Screenshot

demo: https://vmail.dev

Self-hosted

Requirements

  • Cloudflare account (Email service)
  • Domain name hosted on Cloudflare
  • turso sqlite (a free plan available for personal use)

Steps

1.Register a turso account, create a database, and create an emails table

After registration, you will be prompted to create a database. I named it vmail here,

Then, Create a table named emails. Select your database, you will see the "Edit Tables" button, click and enter.

⚠️ Note: There is a plus button in the upper left corner, and I tried to click it without any prompts or effects, so I used the cli provided by turso to initialize the table.

Cli documents: https://docs.turso.tech/cli/introduction

For Linux (or mac/windows):

# Install (Remember to restart the terminal after installation)
curl -sSfL https://get.tur.so/install.sh | bash

# Authenticate
turso auth login

# Connect to your Turso database
turso db shell <database-name>

# Copy sql script to run on the terminal (packages/database/drizzle/0000_sturdy_arclight.sql)
CREATE TABLE `emails` (
 `id` text PRIMARY KEY NOT NULL,
 `message_from` text NOT NULL,
 `message_to` text NOT NULL,
 `headers` text NOT NULL,
 `from` text NOT NULL,
 `sender` text,
 `reply_to` text,
 `delivered_to` text,
 `return_path` text,
 `to` text,
 `cc` text,
 `bcc` text,
 `subject` text,
 `message_id` text NOT NULL,
 `in_reply_to` text,
 `references` text,
 `date` text,
 `html` text,
 `text` text,
 `created_at` integer NOT NULL,
 `updated_at` integer NOT NULL
);

2.Deploy email workers

git clone https://github.com/yesmore/vmail

cd vmail

# Install dependencies
pnpm install

Fill in the necessary environment variables in vmail/apps/email-worker/wrangler.toml file.

  • TURSO_DB_AUTH_TOKEN (turso table info from step 1,click Generate Token)
  • TURSO_DB_URL (e.g. libsql://db-name.turso.io)
  • EMAIL_DOMAIN (e.g. vmail.dev)

If you don't do this step, you can add environment variables in the worker settings of Cloudflare

Then run cmds:

cd apps/email-worker

# Node environment required
pnpm run deploy

3.Configure email routing rules

Set Catch-all action to Send to Worker

4.Deploy Remix app on Vercel or fly.io

Ensure that the following environment variables (.env.example) are prepared and filled in during deployment:

  • COOKIES_SECRET (The encryption secret of the cookie, a random string is sufficient)
  • TURNSTILE_KEY (Obtained from Cloudflare for website verification)
  • TURNSTILE_SECRET
  • TURSO_DB_RO_AUTH_TOKEN (Obtain database credentials from turso )
  • TURSO_DB_URL
  • EMAIL_DOMAIN (e.g. vmail.dev)

5.Add DNS records to the corresponding platform in Cloudflare

e.g. vercel :

Done!

Community Group

License

GNU General Public License v3.0

Star History

Star History Chart

Inspired by smail.pw & email.ml

About

Virtual temporary email generator. 👉 vmail.dev

https://vmail.dev

License:GNU General Public License v3.0


Languages

Language:TypeScript 91.2%Language:CSS 5.3%Language:JavaScript 3.0%Language:Dockerfile 0.5%