132 lines
4.9 KiB
Markdown
132 lines
4.9 KiB
Markdown
## Email receiving tutorial
|
||
|
||
**1.Register a [turso](https://turso.tech) 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):
|
||
|
||
```bash
|
||
# 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**
|
||
|
||
```bash
|
||
git clone https://github.com/oiov/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:
|
||
|
||
```bash
|
||
cd apps/email-worker
|
||
|
||
# Node environment required, and your need to install wrangler cli and login first, see https://developers.cloudflare.com/workers/wrangler/install-and-update
|
||
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:
|
||
|
||
| Variable | Description | example |
|
||
| ---------------------- | ------------------------------------------------------------------ | -------------------------------------- |
|
||
| COOKIES_SECRET | The encryption secret of the cookie, a random string is sufficient | `s3cr3t` |
|
||
| TURSO_DB_RO_AUTH_TOKEN | Obtain database credentials from turso | `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9` |
|
||
| TURSO_DB_URL | Obtain database credentials from turso | `libsql://db-name.turso.io` |
|
||
| EMAIL_DOMAIN | email domains | `vmail.dev,meetu.dev` |
|
||
| EXPIRY_TIME | Optional. default `86400` | `86400` |
|
||
| TURNSTILE_KEY | Optional. Obtained from Cloudflare for website verification | `1234567890` |
|
||
| TURNSTILE_SECRET | Optional. Obtained from Cloudflare for website verification | `s3cr3t` |
|
||
|
||
**For Vercel:**
|
||
|
||
Deploy your own version of email to Vercel with one click:
|
||
|
||
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Foiov%2Fvmail&env=COOKIES_SECRET&env=TURNSTILE_KEY&env=TURNSTILE_SECRET&env=TURSO_DB_RO_AUTH_TOKEN&env=TURSO_DB_URL&env=EMAIL_DOMAIN&project-name=vmail&repository-name=vmail)
|
||
|
||
Or push the code to your Github repository and create a new project in Vercel. Choose `New project`, then import the corresponding Github repository, fill in the environment variables, select the `Remix` framework, and click `Deploy`. Wait for the deployment to complete.
|
||
|
||
Click Couninue to Dashboard -> Settings -> General:
|
||
|
||

|
||

|
||
|
||
**For fly.io:**
|
||
|
||
```bash
|
||
cd vmail/apps/remix
|
||
fly launch
|
||
```
|
||
|
||
**5.Add DNS records (A record) to the corresponding platform in Cloudflare**
|
||
|
||
e.g. vercel:
|
||
|
||

|
||
|
||

|
||
|
||
Done!
|