All Projects → fterh → Heimdall

fterh / Heimdall

Licence: mit
Self-hosted personal email guardian with one-step deployment

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Heimdall

Num2words
Modules to convert numbers to words. 42 --> forty-two
Stars: ✭ 454 (-1.09%)
Mutual labels:  hacktoberfest
Docker
Docker official jenkins repo
Stars: ✭ 4,855 (+957.73%)
Mutual labels:  hacktoberfest
Bibata cursor
Material Based Cursors 🚀
Stars: ✭ 457 (-0.44%)
Mutual labels:  hacktoberfest
Cluster Monitoring
Cluster monitoring stack for clusters based on Prometheus Operator
Stars: ✭ 453 (-1.31%)
Mutual labels:  hacktoberfest
Ngx Datatable
✨ A feature-rich yet lightweight data-table crafted for Angular
Stars: ✭ 4,415 (+861.87%)
Mutual labels:  hacktoberfest
Hazelcast
Open-source distributed computation and storage platform
Stars: ✭ 4,662 (+915.69%)
Mutual labels:  hacktoberfest
Ruby
All algorithms implemented in Ruby
Stars: ✭ 454 (-1.09%)
Mutual labels:  hacktoberfest
Skript
Skript is a Bukkit plugin which allows server admins to customize their server easily, but without the hassle of programming a plugin or asking/paying someone to program a plugin for them.
Stars: ✭ 458 (-0.22%)
Mutual labels:  hacktoberfest
Sde Interview Questions
Most comprehensive list 📋 of tech interview questions 📘 of companies scraped from Geeksforgeeks, CareerCup and Glassdoor.
Stars: ✭ 5,406 (+1077.78%)
Mutual labels:  hacktoberfest
Neoalgo
Bringing all Data Structures and Algorithms under one Roof ⚡
Stars: ✭ 440 (-4.14%)
Mutual labels:  hacktoberfest
Git Katas
A set of exercises for deliberate Git Practice
Stars: ✭ 453 (-1.31%)
Mutual labels:  hacktoberfest
Awesome Open Source Supporters
⭐️ A curated list of companies that offer their services for free to Open Source projects
Stars: ✭ 457 (-0.44%)
Mutual labels:  hacktoberfest
Nlp.js
An NLP library for building bots, with entity extraction, sentiment analysis, automatic language identify, and so more
Stars: ✭ 4,670 (+917.43%)
Mutual labels:  hacktoberfest
Downloader For Apple Developers
Download Xcode, WWDC Videos, and other developer tools up to 16 times faster.
Stars: ✭ 456 (-0.65%)
Mutual labels:  hacktoberfest
Csm
Source code for the Cities: Skylines Multiplayer mod (CSM)
Stars: ✭ 457 (-0.44%)
Mutual labels:  hacktoberfest
Ava Docs
Localized docs for AVA
Stars: ✭ 455 (-0.87%)
Mutual labels:  hacktoberfest
Serenata De Amor
🕵 Artificial Intelligence for social control of public administration
Stars: ✭ 4,367 (+851.42%)
Mutual labels:  hacktoberfest
Wordpresscan
WPScan rewritten in Python + some WPSeku ideas
Stars: ✭ 456 (-0.65%)
Mutual labels:  hacktoberfest
Werewolf
Werewolf for Telegram
Stars: ✭ 458 (-0.22%)
Mutual labels:  hacktoberfest
Openhab Android
openHAB client for Android
Stars: ✭ 457 (-0.44%)
Mutual labels:  hacktoberfest

heimdall

Build Status Maintainability Test Coverage

Heimdall is a self-hosted email alias/forwarding service. I built this as a privacy tool to fight spam and also better manage access to my personal email address. As a self-hosted and self-managed service, you have complete control over your data. With 3rd party email forwarding services, you are forced to trust a company with your emails.

This has also been a really fun project for me to learn more about AWS and the Serverless framework.

Check out: How I built Heimdall, an open-source personal email guardian.

Changelog can be found under Releases.

Motivations

  1. With Heimdall, you completely own and manage your data and the service. No feature limitations or having to trust a third-party company with your data.
  2. Heimdall is meant for individual users to deploy and use and contains user-friendly setup instructions.
  3. Heimdall is easy to run - it utilizes the idea of serverless computing, so there is zero server configuration or provisioning.
  4. Heimdall is easy to deploy - it uses the Serverless framework (not to be confused with small-letter serverless in Point 3 above) so you can deploy with a single command.

Features

Overview

  1. Receive safely: Receive emails on single-use aliases and forward them to your personal inbox.
  2. Reply anonymously: Reply to emails from your alias without revealing your personal email address.
  3. Attachments: Attachments are supported on incoming and outgoing emails (subject to size limits - see below).
  4. Email commands: Manage your aliases through email directly - no separate app or website required.
  5. Usage stats: Easily check the usage stats of each alias.

Receiving emails

Heimdall operates as a whitelisting (default-deny) service. All incoming emails to your domain are rejected by default unless they are to valid aliases. Emails received on valid aliases will be forwarded to your personal email address.

Forwarded emails will preserve metadata information, such as any other recipients in the "to" or "CC" headers.

Replying

To reply, simply reply normally to the received email. Other recipients in the original email will not receive your reply.

You may include other recipients in the "to" and "CC" list, either by manually inserting them, or using "reply-all".

Note: If you do that, you will disclose your email address to them. However, the original sender will still not be able to see your email address, provided you are replying to the original sender through the alias. The original sender will also not be able to see the other recipients.

Attachments

Attachments are supported, although size limits apply to the entire email message. This is a hard limitation imposed by AWS and cannot be circumvented. See Limitations below.

Commands

To interact with the service, send a single email to one of the following email addresses.

Generate an alias

Email [email protected] with the description as the subject. You will receive the generated alias as a reply.

The description lets you identify an alias and its use. E.g. "Sign up for Service X".

Screenshot

List aliases

Email [email protected]. You will receive a list of all aliases as a reply.

Dev note: This reads up to a maximum of 1MB of data (due to AWS's limitations).

Remove an alias

Email [email protected] with the alias as the title (case-sensitive). You will receive the operation outcome (success/failure) as a reply.

Usage stats

Email [email protected] with the alias as the title (case-sensitive). You will receive usage information for the particular alias.

Supported usage stats:

  • Alias creation date
  • Emails received
  • Emails sent
  • Date of last received email
  • Date of last sent email

Update an alias

Coming soon - not supported yet.

Known Limitations

Received emails must be <30MB. Outgoing emails must be <10MB.

Setup

Pre-requisites: You need to own a domain and have an AWS account. For reasonable use cases, you should not exceed AWS's free tier (which is very generous).

Optional: To be able to reply to emails, you need to request AWS Support to un-sandbox your SES account.

  1. Add and verify your domain in AWS Simple Email Service (SES).
  2. In AWS's SES console, generate a set of SMTP credentials. Take note of that, and also your connection information on SES's "SMTP Settings" page.
  3. Populate required environment variables in .env.sample, and rename to .env. It is important that EMAIL matches your personal email exactly.
  4. Run yarn global add serverless.
  5. Run yarn.
  6. Set up Serverless, then run yarn run deploy-prod.
  7. Add a receipt rule in SES to trigger your S3 bucket (created in step 6). For "recipients", enter your domain name (e.g. yourverifieddomain.com). Preferably, name your rule descriptively (e.g. prod).

Development (optional)

If you want to build new features or tweak existing features, you can set up a parallel development environment that runs alongside production (above).

  1. Ensure that the DEV_SUBDOMAIN environment variable is set in .env (e.g. test).
  2. Run yarn run deploy-dev. This creates a parallel development CloudFormation stack.
  3. Add a new receipt rule in SES before your production rule to trigger your development S3 bucket. For "recipients", enter the same test subdomain as you set in step 1 (e.g. test.yourverifieddomain.com). Preferably, name your rule descriptively (e.g. dev).

Note: You need to update your DNS records for test.yourverifieddomain.com as you did when verifying your domain for AWS SES.

Migration

To run migration scripts, first compile using tsc scripts/migrate_vX.ts, then run using node scripts/migrate_vX.js.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].