A temporary email service and API built in Go. No JavaScript. No tracking. No analytics. No bullshit.
Check it out here: https://burner.kiwi
Burner.kiwi is designed to be able to run on both AWS Lambda and normal machines. The goal is to have several backing database implementations and flexible configuration.
At this point it's working on normal machines and in Lambda. There are now three production-ready database implementations - DynamoDB, PostgreSQL and SQLite3.
There are also now two email implementations: Mailgun and SMTP. SMTP allows you to receive emails directly at no extra cost but will not work with AWS lambda.
This is definitely still a work in progress, see the To Do section.
To run it on your own server. Build a binary, set up with the configuration parameters detailed below and run it.
Deploy your own straight to AWS Lambda and DynamoDB.
Deploy to ap-southeast-2 (Sydney):
Deploy to us-east-1 (N. Virginia):
Deploy to eu-west-1 (Ireland):
If you want to deploy to another AWS region you will modify the provided cloudformation.json template and upload your code to a bucket in that region.
Run all of burner.kiwi's tests locally:
make test
Run:
make build
This will create and populate a build
directory containing the binary file and minified/renamed static assets.
If you wish to use SQLite3 you must run:
make build-sqlite
These are all set as environment variables.
Parameter | Type | Description |
---|---|---|
LAMBDA | Boolean | Whether or not the binary is being hosted on AWS Lambda |
KEY | String | Key used to sign cookies and keys. Make this something strong! |
WEBSITE_URL | String | The url where the binary is being hosted. This must be internet reachable as it is the destination for Mailgun routes |
STATIC_URL | String | The url where static content is being hosted. Set to /static to have the binary serve it. Otherwise set to a full domain name with protocol e.g https://static.example.com |
DEVELOPING | Boolean | Set to true to disable HSTS and set Cache-Control to zero. |
DOMAINS | []String | Comma separated list of domains connected to Mailgun account and able to receive email |
RESTOREREALIP | Boolean | Restores the real remote ip using the CF-Connecting-IP header. Set to true to enable, false by default |
BLACKLISTED | []String | Comma separated list of domains to reject email from |
Parameter | Type | Description |
---|---|---|
EMAIL_TYPE | String | One of mailgun or smtp |
SMTP_LISTEN | String | Listen address for SMTP server (default 25) |
MG_KEY | String | Mailgun private API key (if using mailgun) |
MG_DOMAIN | String | One of the domains set up on your Mailgun account (if using mailgun) |
Parameter | Type | Description |
---|---|---|
DB_TYPE | String | One of memory , postgres , sqlite3 or dynamo for InMemory, PostgreSQL, SQLite3 (not this requires building with SQLite3 support) and DynamoDB respectively |
DATABASE_URL | String | URL for the PostgreSQL database or filename for SQLite3 see documentation here. |
DYNAMO_TABLE | String | Name of the dynamodb table to use for storage (if using DynamoDB) |
If you are using DynamoDB in a non-AWS environment you need to set these. If you are on AWS you should, of course, use IAM roles.
Parameter | Type | Description |
---|---|---|
AWS_ACCESS_KEY_ID | String | Your AWS access key ID corresponding to an IAM role with permission to use DynamoDB |
AWS_SECRET_ACCESS_KEY | String | AWS secret access key corresponding to your access key ID |
AWS_REGION | String | The AWS region containing the DynamoDB table. Use the appropriate value from the Region column here. |
If you notice any issues or have anything to add, I would be more than happy to work with you. Create an issue and outline your plans or bugs.
- Code refactor/redo/cleanup
- CSS refactor
- More tests for server package
- Night theme
- Print html errors rather than just plain text
- Better configuration
- Noob friendly setup tutorial
If you think you can help, then create an issue and outline your plans.
Thanks to:
- cdubz for adding SQLite3 and custom address support
- lopezator for switching to go modules
Copyright 2018 Hayden Woodhead
Licensed under the MIT License.
The Roger logo is drawn by Melissa Bather, used with permission, and licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).