Skip to content

harryzcy/mailbox

Folders and files

NameName
Last commit message
Last commit date
Mar 27, 2025
Feb 16, 2024
Aug 31, 2024
Nov 19, 2023
Mar 27, 2025
Jun 27, 2024
Mar 27, 2025
Nov 19, 2023
Mar 20, 2022
Feb 11, 2025
Jan 2, 2021
Nov 19, 2023
Feb 20, 2025
Apr 1, 2024
Mar 15, 2025
Mar 15, 2025
Jan 18, 2024

Repository files navigation

Mailbox

Tests codecov Go Report Card PRs Welcome License: MIT

Docs: English简体中文

Versatile email infrastructure that operates on AWS.

Clients

Web

See mailbox-browser

Dark mode Light mode
Screenshot Dark Mode Screenshot Light Mode

CLI

go install github.com/harryzcy/mailbox-cli

For details, refer to mailbox-cli

Deploy

  1. Clone the repository.

    git clone https://github.com/harryzcy/mailbox
  2. Install serverless.

    npm install -g serverless@v3
  3. Create an IAM user.

    Create an IAM user with AdministratorAccess and export the access key as environment variables.

    export AWS_ACCESS_KEY_ID=<your-key-here>
    export AWS_SECRET_ACCESS_KEY=<your-secret-key-here>

    In production, setup the IAM user following this guide from serverless.

  4. Setup AWS services.

    Manually create S3 buckets, and setup SES and SQS (optional) from AWS console.

  5. Copy over example configurations and fill in correct fields.

    cp serverless.yml.example serverless.yml

    Under provider.environment section, modify REGION, S3_BUCKET, SQS_QUEUE (optional, only if SQS should be enabled).

  6. Deploy the app.

    make deploy
  7. Configure email receiving.

    From AWS console -> Configuration -> Email receiving -> Create rule set -> Create rule, add two actions:

    1. Deliver to Amazon S3 bucket, then enter your bucket name.
    2. Invoke AWS Lambda function, and select mailbox-dev-emailReceive or mailbox-prod-emailReceive.
  8. Deploy mailbox-browser or use mailbox-cli.

API

See doc/API.md

Architecture

It runs on AWS services, including SES, Lambda, API Gateway, DynamoDB, and SQS.

Architecture

Contributing

Development environment

  • Go >= 1.24

Note that only the two most recent minor versions of Go are officially supported.