Awesome
Mailbox
Versatile email infrastructure that operates on AWS.
Clients
Web
See mailbox-browser
Dark mode | Light mode |
---|---|
CLI
go install github.com/harryzcy/mailbox-cli
For details, refer to mailbox-cli
Deploy
-
Clone the repository.
git clone https://github.com/harryzcy/mailbox
-
Install serverless.
npm install -g serverless@v3
-
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.
-
Setup AWS services.
Manually create S3 buckets, and setup SES and SQS (optional) from AWS console.
-
Copy over example configurations and fill in correct fields.
cp serverless.yml.example serverless.yml
Under
provider.environment
section, modifyREGION
,S3_BUCKET
,SQS_QUEUE
(optional, only if SQS should be enabled). -
Deploy the app.
make deploy
-
Configure email receiving.
From AWS console -> Configuration -> Email receiving -> Create rule set -> Create rule, add two actions:
- Deliver to Amazon S3 bucket, then enter your bucket name.
- Invoke AWS Lambda function, and select
mailbox-dev-emailReceive
ormailbox-prod-emailReceive
.
-
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.
Contributing
Development environment
- Go >= 1.22
Note that only the two most recent minor versions of Go are officially supported.