{"id":15643320,"url":"https://github.com/fcmam5/jelban-js","last_synced_at":"2025-08-19T04:31:34.020Z","repository":{"id":59605531,"uuid":"527213379","full_name":"Fcmam5/jelban-js","owner":"Fcmam5","description":"Another email addresses filter; filters out disposable and addresses' alias","archived":false,"fork":false,"pushed_at":"2024-06-21T05:28:36.000Z","size":937,"stargazers_count":62,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2024-12-09T12:54:36.167Z","etag":null,"topics":["antispam","email","gmail","security"],"latest_commit_sha":null,"homepage":"https://github.com/Fcmam5/jelban-js/wiki","language":"TypeScript","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/Fcmam5.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.buymeacoffee.com/ngcmbf6"]}},"created_at":"2022-08-21T13:23:43.000Z","updated_at":"2024-12-05T19:47:38.000Z","dependencies_parsed_at":"2024-10-22T21:30:56.661Z","dependency_job_id":null,"html_url":"https://github.com/Fcmam5/jelban-js","commit_stats":{"total_commits":29,"total_committers":3,"mean_commits":9.666666666666666,"dds":"0.10344827586206895","last_synced_commit":"af3ac5dcc5e69dabfb8e59273278f64ab310a271"},"previous_names":["fcmam5/jelbann-js"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fjelban-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fjelban-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fjelban-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fcmam5%2Fjelban-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fcmam5","download_url":"https://codeload.github.com/Fcmam5/jelban-js/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230318629,"owners_count":18207812,"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":["antispam","email","gmail","security"],"created_at":"2024-10-03T12:00:13.805Z","updated_at":"2025-08-19T04:31:33.995Z","avatar_url":"https://github.com/Fcmam5.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/ngcmbf6"],"categories":[],"sub_categories":[],"readme":"# jelBAN.js\n\n[![Mutation testing badge](https://img.shields.io/endpoint?style=flat\u0026url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2FFcmam5%2Fjelban-js%2Fdevelop)](https://dashboard.stryker-mutator.io/reports/github.com/Fcmam5/jelban-js/develop) ![Known Vulnerabilities](https://snyk.io/test/github/Fcmam5/jelban-js/badge.svg) [![codecov](https://codecov.io/gh/Fcmam5/jelban-js/branch/develop/graph/badge.svg?token=L0LQ6O6Q2M)](https://codecov.io/gh/Fcmam5/jelban-js) [![npm](https://img.shields.io/npm/v/jelban.js)](https://www.npmjs.com/package/jelban.js)\n\nA library for filtering fake, disposable and duplicated email addresses.\n\nTLDR; See [Usage](#usage) And [Wiki](https://github.com/Fcmam5/jelban-js/wiki).\n\n## Features\n\n- Filters and checks for disposable email addresses from temporary email services (like 10minutemail and Mohmal), see the full list of domains at [`lib/validators/temporary-email-domains`](./src//lib/validators/temporary-email-domains.ts).\n- Filters and checks for aliases that lead to the same email box from providers like [Gmail](#gmail).\n- Filters for emails within an allowed domain list, or that are not in an excluded domain list.\n\n## Supported Providers\n\n### Gmail\n\nJelban's Gmail provider normalizes Gmail addresses to lowercase, non dotted and non aliased `@gmail.com` email addresses, since:\n\n0. Gmail addresses are not case sensitive, `John.Doe@gmail.com` is equivalent to `john.doe@gmail.com`.\n\n1. Gmail offers an [aliases feature](https://support.google.com/mail/answer/22370?hl=en#zippy=%2Cfilter-using-your-gmail-alias) where you can create multiple aliases for your address, example:\n\n   \u003e For example, messages sent to the following aliases will all go to janedoe@gmail.com:\n   \u003e\n   \u003e janedoe\u003cstrong\u003e+school\u003c/strong\u003e@gmail.com\n   \u003e janedoe\u003cstrong\u003e+notes\u003c/strong\u003e@gmail.com\n   \u003e janedoe\u003cstrong\u003e+important.emails\u003c/strong\u003e@gmail.com\n\n2. Also, `@gmail.com` addresses, can be reached by using `@googlemail.com`, source [http://techcrunch.com/2010/05/03/gmail-uk/](http://techcrunch.com/2010/05/03/gmail-uk/). So `janedoe@gmail.com` is exactly equivalent to `janedoe@googlemail.com`.\n\n3. Dots don't matter in Gmail addressees ([source](https://support.google.com/mail/answer/7436150?hl=en)), so `john.smith@gmail.com`, and `jo.hn.sm.ith@gmail.com`, and `j.o.h.n.s.m.i.t.h@gmail.com` and `johnnsmith@gmail.com` are all similar.\n\n## Outlook/Hotmail\n\nSimilarly to the previous provider, Jelban's Outlook provider normalizers Outlook (aka. Hotmail) email addresses as it has also the option to create aliases ([src](https://www.cnet.com/tech/tech-industry/hotmail-launches-accounts-you-can-throw-away/)), example:\n\n\u003e Emails to _jane.doe\u003cstrong\u003e+school\u003c/strong\u003e@hotmail.fr_ and _jane.doe\u003cstrong\u003e+work\u003c/strong\u003e@hotmail.fr_ will land at `jane.doe@hotmail.fr`'s mailbox\n\n## Security and privacy concerns\n\n### Issue #1\n\nIf you rely on the email normalization feature of this library you might be making account enumeration and brute force attacks easier. As attackers will have to guess for only a small subset of strings that does not have dots, upper/lowercase characters or aliases.\n\nAlso, users may choose to use the aliases when registering to your applications, and that a choice that must be respected as they may route that kind of emails to certain folders in their mailboxes.\n\n#### Possible solution\n\nStore email addresses in both formats, the user input and your normalized format, and when checking if an address is used you can rely on the normalized one, this may cause another issue if a user wants to change from their address `johnsmith@gmail.com` to `john.smith@gmail.com` in their profile settings, then you know best what to do :)\n\n## Usage\n\n```\nnpm i jelban.js\n```\n\n```typescript\nimport { Jelban } from 'jelban.js';\n\n// Instantiate the library\nconst jelban = new Jelban();\n\nconsole.log(jelban.isValid('something@gmail.com')); // prints \"true\"\n\nconsole.log(jelban.isValid('kavi@boxomail.live')); // throws: \"Invalid email address \"kavi@boxomail.live\", rules: [\"IsExcludedDomainValidator\"]\" because \"@boxmail.live\" is a temporary domain from mohamal.com service\n\n// If you don't want to throw on failed validations and return \"false\" instead:\nconsole.log(jelban.isValid('kavi@boxomail.live', false)); // prints \"false\"\n```\n\n### Parameters\n\n| Param                        | Description                                                                                                | Required | Default |\n| ---------------------------- | ---------------------------------------------------------------------------------------------------------- | -------- | ------- |\n| `noGmailAliases`             | When set to `true`, this will exclude Gmail aliases as described in [providers/gmail](#gmail)              | `false`  | `true`  |\n| `noOutlookAliases`           | When set to `true`, this will exclude Outlook aliases as described in [providers/Outlook](#outlookhotmail) | `false`  | `true`  |\n| `noDisposableEmailAddresses` | When set to `true`, this will exclude temporary email addresses from services like `mohmal.com`            | `false`  | `true`  |\n| `excludeDomains`             | A list of email address domains that you may want to exclude                                               | `false`  | `[]`    |\n| `allowDomains`               | A list of restricted domains you want to include, default is `[]` which will skip this validation rule     | `false`  | `[]`    |\n\n## Development\n\nTo run the project locally\n\n```bash\n# Use recommended Node version\nnvm install\nnvm use\n\n# install dependencies\nnpm i\n\n# run tests\nnpm test\n\n# run mutation tests\nnpm run mutate\n```\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcmam5%2Fjelban-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffcmam5%2Fjelban-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffcmam5%2Fjelban-js/lists"}