{"_id":"@de-otio/maildummy","name":"@de-otio/maildummy","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@de-otio/maildummy","version":"1.0.1","description":"SES Email Testing Infrastructure","main":"scripts/get-magic-link-from-s3.js","scripts":{"get-magic-link":"node scripts/get-magic-link-from-s3.js"},"keywords":["aws","ses","email","testing","terraform","e2e"],"author":"","license":"MIT","dependencies":{"@aws-sdk/client-s3":"^3.0.0","mailparser":"^3.0.0"},"gitHead":"53169f9030f7c40202930fdc4e8f3d8063614ff5","_id":"@de-otio/maildummy@1.0.1","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-hE1WBkmheY//ItT+CM2Pu9igwT65QC0zlOueCudOKFel11+OOz1wuHfO/RZMvYnpgdZVJ58uV98OV71FIlZOqA==","shasum":"8573bab236be3f347149e1839eef70d2a0feb1b3","tarball":"https://registry.npmjs.org/@de-otio/maildummy/-/maildummy-1.0.1.tgz","fileCount":42,"unpackedSize":350180,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGUoKA1RGxlQrlVP/JndS6DtMOERoIptO2gHUUPWECAfAiEAjPa2UxVgaibZma86QoSSE3Ql36TmVMql5qs+EZ4Wp84="}]},"_npmUser":{"name":"rkm1","email":"richard.myers@de-otio.org"},"directories":{},"maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/maildummy_1.0.1_1775033185421_0.367291859155481"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T08:46:25.322Z","1.0.1":"2026-04-01T08:46:25.580Z","modified":"2026-04-01T08:46:25.782Z"},"maintainers":[{"name":"rkm1","email":"richard.myers@de-otio.org"}],"description":"SES Email Testing Infrastructure","keywords":["aws","ses","email","testing","terraform","e2e"],"license":"MIT","readme":"# Maildummy\n\nSES-based email capture for automated testing. Intercepts emails sent to a `maildummy.*` subdomain, stores them in S3, and lets your E2E tests retrieve magic links or other content.\n\n## How it works\n\n1. An MX record routes mail for `maildummy.example.com` to AWS SES\n2. An SES receipt rule stores each message as a raw MIME file in S3 under `raw/`\n3. Helper scripts (Node.js or Python) list the bucket, parse the MIME, and extract URLs\n\n## Infrastructure options\n\nMaildummy ships two equivalent ways to provision the AWS resources:\n\n| Option | Location | DNS support |\n|--------|----------|-------------|\n| **Terraform module** | `terraform/modules/ses_maildummy` | Cloudflare or Route53 |\n| **CDK construct** | `cdk/` (`@deotio/maildummy-cdk`) | Route53 (or bring your own) |\n\nBoth create the same set of resources: SES domain identity, S3 bucket, SNS topic, SES receipt rule, and the required IAM policies.\n\n## Documentation\n\n- [Terraform module reference](docs/terraform.md)\n- [CDK construct reference](docs/cdk.md)\n- [Deployment guide](docs/deployment.md) - initial setup, DKIM, troubleshooting\n- [E2E testing guide](docs/e2e-testing.md) - wiring maildummy into your test suite\n- [Helper scripts](docs/helper-scripts.md) - retrieving magic links from S3\n\n## Quick start (Terraform)\n\n```hcl\nmodule \"maildummy\" {\n  source = \"github.com/your-org/maildummy//terraform/modules/ses_maildummy\"\n\n  maildummy_domain      = \"maildummy.example.com\"\n  maildummy_subdomain   = \"maildummy\"\n  dns_provider          = \"route53\"\n  route53_zone_id       = \"Z1234567890ABC\"\n  aws_region            = \"eu-central-1\"\n  s3_bucket_name        = \"my-project-maildummy\"\n  sns_topic_name        = \"my-project-maildummy-notifications\"\n  receipt_rule_set_name = \"my-existing-ruleset\"\n  receipt_rule_name     = \"my-project-maildummy-rule\"\n}\n```\n\n## Quick start (CDK)\n\n```ts\nimport { Maildummy } from \"@deotio/maildummy-cdk\";\n\nnew Maildummy(stack, \"Maildummy\", {\n  maildummyDomain: \"maildummy.example.com\",\n  receiptRuleSetName: \"my-existing-ruleset\",\n  hostedZone: myZone,\n});\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-48f684c1567e6f6d164d4a97c8b2ab26"}