https://github.com/edmundhung/maildog Skip to content Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Issues - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} edmundhung / maildog * Notifications * Star 217 * Fork 11 Hosting your own email forwarding service on AWS and manage it with Github Actions MIT License 217 stars 11 forks Star Notifications * Code * Issues 1 * Pull requests 0 * Actions * Security * Insights More * Code * Issues * Pull requests * Actions * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 1 branch 1 tag Code Clone HTTPS GitHub CLI [https://github.com/e] Use Git or checkout with SVN using the web URL. [gh repo clone edmund] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @edmundhung edmundhung chore(release): 1.0.0 [skip ci] ... 7f97187 Jul 12, 2021 chore(release): 1.0.0 [skip ci] # 1.0.0 (2021-07-11) ### Bug Fixes * activate receipt rule set after deploy ([eeb2338](eeb2338)) * deleteMessageBatch fails due to access denied ([630e74b](630e74b)) * email could be silently dropped if allowPlusSign is set to false with no fallback email ([559b1b1](559b1b1)) * ensure all aws usages are covered by the example-policy ([0fc9d52](0fc9d52)) * example config should be aligned with doc ([02bb46e](02bb46e)) * ignore config file for format checking ([665516d](665516d)) * semantic release does not works with signing tag ([9004bd0](9004bd0)) * ses should stop walking through the ruleset if alias match ([18fdbd6](18fdbd6)) ### Features * add a destroy workflow to completely remove maildog from aws ([312ddb8](312ddb8)) * add experimental schedular lambda for redriving DLQ messages ([695ea14](695ea14)) * add regular health check based on alarm state ([da82d3e](da82d3e)) * config filename should be configurable ([17d0eca](17d0eca)) * disable default retry attempts on lambda functions ([795290d](795290d)) * dispatcher should read bucket name and key prefix from event ([f2d8fe2](f2d8fe2)) * enable manual redrive through github action ([2adfd9f](2adfd9f)) * encrypt config and check into repo ([bddcc2a](bddcc2a)) * ensure the alarm treating missing data as not breaching ([d0ff264](d0ff264)) * ensure unmatched email to be caught by a domain level rule with bounce action ([bad2b06](bad2b06)) * implement email forwarding based on aws-lambda-ses-forwarder ([99a3a0f](99a3a0f)) * merge validate and analyze workflow to one ([f752ec5](f752ec5)) * redesign development workflow ([e8ad2f8](e8ad2f8)) * redesigned config structure ([c4a556c](c4a556c)) * relax conventional commit requirements from git hook ([231c921](231c921)) * setup alarm for DLQ ([e67208f](e67208f)) * use sns to initiate dispatcher lambda function ([88a0d49](88a0d49)) 7f97187 Git stats * 49 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows fix: semantic release does not works with signing tag Jul 11, 2021 .husky feat: relax conventional commit requirements from git hook Jul 11, 2021 bin ci: run cdk bootstrap before deploy Jul 11, 2021 docs docs: simplify destroy instructions by redirecting to ui Jul 11, 2021 examples fix: example config should be aligned with doc Jul 11, 2021 lib refactor: rename forwardingEmail to alias Jul 11, 2021 scripts feat: encrypt config and check into repo Jul 11, 2021 test refactor: rename forwardingEmail to alias Jul 11, 2021 types feat: implement email forwarding based on aws-lambda-ses-forwarder Jul 11, 2021 .gitignore feat: encrypt config and check into repo Jul 11, 2021 .prettierignore fix: ignore config file for format checking Jul 11, 2021 .prettierrc.yaml chore: setup prettier for consistent code style Jul 11, 2021 CHANGELOG.md chore(release): 1.0.0 [skip ci] Jul 11, 2021 LICENSE docs: include license Jul 11, 2021 README.md chore: enable semantic release on main branch Jul 11, 2021 cdk.json feat: implement email forwarding based on aws-lambda-ses-forwarder Jul 11, 2021 commitlint.config.js chore: bootstrap project with conventional commit and semantic releas... Jun 14, 2021 jest.config.js feat: implement email forwarding based on aws-lambda-ses-forwarder Jul 11, 2021 package-lock.json chore(release): 1.0.0 [skip ci] Jul 11, 2021 package.json chore(release): 1.0.0 [skip ci] Jul 11, 2021 release.config.js chore: enable semantic release on main branch Jul 11, 2021 tsconfig.json feat: encrypt config and check into repo Jul 11, 2021 View code maildog Hey, why building this? [?] How it works? Pricing Limitations Amazon SES sandbox Maximum numbers of domains/alias allowed Regions support Give it a try? README.md maildog Hosting your own email forwarding service on AWS Managing with Github actions Monitoring and failure recovery included Almost free* Hey, why building this? Since I bought my first domain, I am always tempted to use it as my email address. However, as I am not receiving many emails a day, hosting my mail server or paying for an email hosting service either make it too complicated or costs too much. All I want is simply a service forwarding emails to one single place. I have been happily using mailgun for years. As they changed pricing last year, I started looking for a replacement but options are relatively limited. After all, I open-sourced maildog and is looking for a community that shares the same needs as me. The project aims to offer an extensible email forwarding solution with minimal maintenance and operational cost. [?] How it works? MailDog Architecture Pricing Yes. While it is FREE to use maildog, you are still required to pay AWS for the infrastructure setup on the cloud. To give you a better idea, here is an estimated price breakdown based on the following assumption: * 10k emails / month or 333 emails / day * 100KB mail size in average * Hosted in US West (Oregon), pricing may be slightly different based on the region * Counted without any free quota Component Service Configuration summary Monthly Currency S3 S3 Standard storage (1 GB per Bucket Standard month, depends on the retention 0.080 USD policy) Email messages received (10000), Average size of email received Mail SES (100KB), Email messages sent 2.120 USD Server from email client (10000), Data sent from email client (1 GB per month) DT Inbound: Not selected (0 TB Standard per month), DT Outbound: Not Mail Feed SNS selected (0 TB per month), AWS 0.010 USD topics Lambda (10000 per month), Requests (10000 per month) Dispatcher AWS Number of requests (10000, with 0.100 USD Lambda no retry attempt) Scheduler AWS Number of requests (< 10000) 0.100 USD Lambda DLQ SQS Standard queue requests (< 10000 0.004 USD per month) 2.434 USD As of 30 June 2021, estimated using AWS Pricing Calculator Limitations Amazon SES sandbox SES restricts new users by placing them in the sandbox. Depends on your usage, if you would like to forward emails to non-verified addresses or with higher volume, you might want to move out of the sandbox Maximum numbers of domains/alias allowed maildog configures SES using a receipt ruleset with a hard limit of up to 200 rules and 100 recipients per rule. In general, domains that are configured with fallback emails could be set with only 1 rule using wildcard. But for domains without fallback emails, every 100 alias will be count as 1 rule. As a result, you can set up to 20,000 alias if you are configuring only 1 domain even with no fallback emails. Regions support Not every region supports receiving emails with AWS SES. As of 30 June 2021, only 3 regions you can deploy maildog on: 1. US East (N. Virginia) 2. US West (Oregon) 3. Europe (Ireland) Please check the AWS documentation for the latest update. Give it a try? You can find the installation guide here. The setup might take 10-20 minutes. About Hosting your own email forwarding service on AWS and manage it with Github Actions Topics aws email cdk Resources Readme License MIT License Releases 1 v1.0.0 Latest Jul 11, 2021 Languages * TypeScript 97.7% * JavaScript 2.2% * Shell 0.1% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.