{"id":26649130,"url":"https://github.com/emailtowebhook/emailtowebhook","last_synced_at":"2025-03-25T00:48:21.744Z","repository":{"id":282303240,"uuid":"947698061","full_name":"emailtowebhook/emailtowebhook","owner":"emailtowebhook","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-21T09:02:50.000Z","size":79,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T09:23:31.724Z","etag":null,"topics":["aws","emai","parsing"],"latest_commit_sha":null,"homepage":"https://emailtowebhook.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emailtowebhook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-13T05:24:54.000Z","updated_at":"2025-03-21T09:02:54.000Z","dependencies_parsed_at":"2025-03-13T21:30:46.476Z","dependency_job_id":"43581dcc-e943-40a4-af1e-a34290d4c83d","html_url":"https://github.com/emailtowebhook/emailtowebhook","commit_stats":null,"previous_names":["emailtowebhook/emailtowebhook"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emailtowebhook%2Femailtowebhook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emailtowebhook%2Femailtowebhook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emailtowebhook%2Femailtowebhook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emailtowebhook%2Femailtowebhook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emailtowebhook","download_url":"https://codeload.github.com/emailtowebhook/emailtowebhook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245377953,"owners_count":20605375,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","emai","parsing"],"created_at":"2025-03-25T00:48:21.117Z","updated_at":"2025-03-25T00:48:21.721Z","avatar_url":"https://github.com/emailtowebhook.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Open-Source Email to Webhook Service\n\nAn open-source solution that seamlessly transforms incoming emails into webhook notifications. Perfect for automated workflows, real-time email processing, and integration with external services.\n\n## ✨ Features\n\n🔹 **Domain Registration** – Easily register domains and link them to webhook endpoints.  \n🔹 **Email Forwarding** – Automatically process and forward incoming emails to registered webhooks.  \n🔹 **Attachment Handling** – Store attachments in Amazon S3 and generate accessible public URLs.  \n🔹 **DNS Configuration** – Automates DNS verification for SES domain setup.  \n🔹 **Serverless Architecture** – Built for scale, security, and cost efficiency.\n\n---\n\n## 🚀 Quick Deployment\n\nDeploy the service with a single command from the root directory:\n\n```sh\n./deploy.sh\n```\n\n---\n\n## 🔧 Prerequisites\n\nBefore you start, ensure you have the following tools installed:\n\n### 🛠 1. AWS CLI\n\nUsed for authentication and interaction with AWS services.\n\n#### Install AWS CLI:\n\n```sh\n# Linux/macOS\ncurl \"https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip\" -o \"awscliv2.zip\"\nunzip awscliv2.zip\nsudo ./aws/install\n\n# Windows\n# Download the installer: https://awscli.amazonaws.com/AWSCLIV2.msi\n```\n\n#### Configure AWS CLI:\n\n```sh\naws configure\n```\n\n---\n\n### 🏗 2. Terraform\n\nInfrastructure-as-Code tool for provisioning AWS resources.\n\n#### Install Terraform:\n\n```sh\n# Linux\nwget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg\necho \"deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/hashicorp.list\nsudo apt update \u0026\u0026 sudo apt install terraform\n\n# macOS\nbrew tap hashicorp/tap\nbrew install hashicorp/tap/terraform\n\n# Windows\n# Download: https://developer.hashicorp.com/terraform/downloads\n```\n\n#### Verify installation:\n\n```sh\nterraform --version\n```\n\n---\n\n### 📂 3. S3 Bucket for Terraform State\n\nTerraform requires an S3 bucket to store state files.\n\n#### Create an S3 bucket:\n\n```sh\naws s3 mb s3://my-terraform-state-bucket --region us-east-1\n```\n\n#### Configure Terraform backend in `provider.tf`:\n\n```hcl\nterraform {\n  backend \"s3\" {\n    bucket = \"my-terraform-state-bucket\"\n    key    = \"terraform.tfstate\"\n    region = \"us-east-1\"\n  }\n}\n\nprovider \"aws\" {\n  region = var.aws_region\n}\n```\n\nReplace `my-terraform-state-bucket` with your actual bucket name.\n\n---\n\n## 🚀 Using the API\n\nThe API allows you to manage domain configurations for email webhook forwarding through simple RESTful endpoints.\n\n### 1. Register a New Domain\n\n```sh\ncurl -X POST '\u003capi_gateway_url\u003e/v1/domain/yourdomain.com' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"webhook\": \"https://your-webhook-endpoint.com/path\"\n  }'\n```\n\nUpon successful registration, you'll receive DNS configuration instructions that need to be added to your domain's DNS settings.\n\n### 2. Get Domain Status\n\nCheck the verification status and configuration details for a domain:\n\n```sh\ncurl -X GET '\u003capi_gateway_url\u003e/v1/domain/yourdomain.com'\n```\n\nThis returns information about your domain's verification status, DKIM setup, and webhook configuration.\n\n### 3. Update Domain Configuration\n\nChange the webhook URL or other configuration details:\n\n```sh\ncurl -X PUT '\u003capi_gateway_url\u003e/v1/domain/yourdomain.com' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"webhook\": \"https://your-new-webhook-endpoint.com/path\"\n  }'\n```\n\n### 4. Delete Domain Configuration\n\nRemove a domain from the system:\n\n```sh\ncurl -X DELETE '\u003capi_gateway_url\u003e/v1/domain/yourdomain.com'\n```\n\n### Email Processing\n\nOnce your domain is verified, any email sent to any address at your domain (e.g., `anything@yourdomain.com`) will be processed and forwarded to your registered webhook URL as a JSON payload with attachment links stored in S3.\n\n---\n\n## 👋 Connect with Me\n\n💼 **LinkedIn**: [Yakir Perlin](https://www.linkedin.com/in/yakirperlin/)  \n𝕏: [@yakirbipbip](https://x.com/yakirbipbip)\n\n---\n\n## 📜 License\n\nLicensed under the **MIT License**. See the [LICENSE](LICENSE) file for details.\n\n---\n\n💡 **Have questions or ideas?** Open an issue or start a discussion on [GitHub](https://github.com/emailtowebhook/emailtowebhook/issues)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femailtowebhook%2Femailtowebhook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femailtowebhook%2Femailtowebhook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femailtowebhook%2Femailtowebhook/lists"}