{"id":13623293,"url":"https://github.com/reacherhq/backend","last_synced_at":"2025-04-15T14:32:38.449Z","repository":{"id":36989670,"uuid":"215061055","full_name":"reacherhq/backend","owner":"reacherhq","description":"⚙️ REST backend for Reacher - Open-Source Email Verification API.","archived":true,"fork":false,"pushed_at":"2022-08-15T08:41:22.000Z","size":883,"stargazers_count":218,"open_issues_count":1,"forks_count":60,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-08T11:45:58.437Z","etag":null,"topics":["backend","hacktoberfest","reacher"],"latest_commit_sha":null,"homepage":"https://reacher.email","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reacherhq.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.AGPL","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"amaurym","custom":"https://www.paypal.me/amaurym10/20"}},"created_at":"2019-10-14T14:09:16.000Z","updated_at":"2024-09-26T19:19:19.000Z","dependencies_parsed_at":"2022-06-29T05:05:33.867Z","dependency_job_id":null,"html_url":"https://github.com/reacherhq/backend","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reacherhq%2Fbackend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reacherhq%2Fbackend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reacherhq%2Fbackend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reacherhq%2Fbackend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reacherhq","download_url":"https://codeload.github.com/reacherhq/backend/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249089012,"owners_count":21210901,"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":["backend","hacktoberfest","reacher"],"created_at":"2024-08-01T21:01:30.020Z","updated_at":"2025-04-15T14:32:38.186Z","avatar_url":"https://github.com/reacherhq.png","language":"Rust","funding_links":["https://github.com/sponsors/amaurym","https://www.paypal.me/amaurym10/20","https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026link=https://github.com/sponsors/amaurym","https://github.com/sponsors/amaurym/)!"],"categories":["Rust"],"sub_categories":[],"readme":"[![Actions Status](https://github.com/reacherhq/backend/workflows/pr/badge.svg)](https://github.com/reacherhq/backend/actions)\n[![Github Sponsor](https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026link=https://github.com/sponsors/amaurym)](https://github.com/sponsors/amaurym)\n\n\u003cbr /\u003e\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg align=\"center\" src=\"https://storage.googleapis.com/saasify-uploads-prod/696e287ad79f0e0352bc201b36d701849f7d55e7.svg\" height=\"96\" alt=\"reacher\" /\u003e\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e⚙️ Reacher Backend\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003eBackend Server for Reacher Email Verification API: https://reacher.email.\u003c/h4\u003e\n\n\u003cbr /\u003e\u003cbr /\u003e\n\n# ⚠️⚠️ IMPORTANT UPDATE ⚠️⚠️\n\nThis repo has been moved to the monorepo [reacherhq/check-if-email-exists](https://github.com/reacherhq/check-if-email-exists), in the `backend` subfolder.\n\n## Reacher Backend\n\nThis repository holds the backend for [Reacher](https://reacher.email). The backend is a HTTP server with the following components:\n\n-   [`check-if-email-exists`](https://github.com/reacherhq/check-if-email-exists), which performs the core email verification logic,\n-   [`warp`](https://github.com/seanmonstar/warp) web framework.\n\n## Get Started\n\nThere are 2 ways you can run this backend.\n\n### 1. Use Docker\n\nThe [Docker image](./Dockerfile) is hosted on Docker Hub: https://hub.docker.com/r/reacherhq/backend.\n\nTo run it, run the following command:\n\n```bash\ndocker run -p 8080:8080 reacherhq/backend\n```\n\nYou can then send a POST request with the following body to `http://localhost:8080/v0/check_email`:\n\n```js\n{\n\t\"to_email\": \"someone@gmail.com\",\n\t\"from_email\": \"my@my-server.com\", // (optional) email to use in the `FROM` SMTP command, defaults to \"user@example.org\"\n\t\"hello_name\": \"my-server.com\",    // (optional) name to use in the `EHLO` SMTP command, defaults to \"localhost\"\n\t\"proxy\": {                        // (optional) SOCK5 proxy to run the verification through, default is empty\n\t\t\"host\": \"my-proxy.io\",\n\t\t\"port\": 1080\n\t},\n\t\"smtp_port\": 587                  // (optional) SMTP port to do the email verification, defaults to 25\n}\n```\n\n### 2. Run locally\n\nIf you prefer to run the server locally on your machine, just clone the repository and run:\n\n```bash\ncargo run\n```\n\nThe server will then be listening on `http://127.0.0.1:8080`.\n\n### Configuration\n\nThese are the environment variables used to configure the HTTP server:\n\n| Env Var                             | Required?                   | Description                                                                                                | Default            |\n| ----------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------ |\n| `RCH_ENABLE_BULK`                   | No                          | If set to 1, then bulk verification endpoints will be added to the backend.                                | 0                  |\n| `DATABASE_URL`                      | Yes if `RCH_ENABLE_BULK==1` | Database connection string for storing results and task queue                                              | not defined        |\n| `RCH_HTTP_HOST`                     | No                          | The host name to bind the HTTP server to.                                                                  | `127.0.0.1`        |\n| `PORT`                              | No                          | The port to bind the HTTP server to, often populated by the cloud provider.                                | `8080`             |\n| `RCH_FROM_EMAIL`                    | No                          | The email to use in the `MAIL FROM:` SMTP command.                                                         | `user@example.org` |\n| `RCH_SENTRY_DSN`                    | No                          | If set, bug reports will be sent to this [Sentry](https://sentry.io) DSN.                                  | not defined        |\n| `RCH_DATABASE_MAX_CONNECTIONS`      | No                          | Connections created for the database pool                                                                  | 5                  |\n| `RCH_MINIMUM_TASK_CONCURRENCY`      | No                          | Minimum number of concurrent running tasks below which more tasks are fetched                              | 10                 |\n| `RCH_MAXIMUM_CONCURRENT_TASK_FETCH` | No                          | Maximum number of tasks fetched at once                                                                    | 20                 |\n| `RUST_LOG`                          | No                          | One of `trace,debug,warn,error,info`. 💡 PRO TIP: `RUST_LOG=debug` is very handful for debugging purposes. | not defined        |\n\n## REST API Documentation\n\nRead docs on https://help.reacher.email/rest-api-documentation.\n\nThe API basically only exposes one endpoint: `POST /v0/check_email` expecting the following body:\n\n```js\n{\n\t\"to_email\": \"someone@gmail.com\",\n\t\"from_email\": \"my@my-server.com\", // (optional) email to use in the `FROM` SMTP command, defaults to \"user@example.org\"\n\t\"hello_name\": \"my-server.com\",    // (optional) name to use in the `EHLO` SMTP command, defaults to \"localhost\"\n\t\"proxy\": {                        // (optional) SOCK5 proxy to run the verification through, default is empty\n\t\t\"host\": \"my-proxy.io\",\n\t\t\"port\": 1080\n\t},\n\t\"smtp_port\": 587                  // (optional) SMTP port to do the email verification, defaults to 25\n}\n```\n\nAlso check [`openapi.json`](./openapi.json) for the complete OpenAPI specification.\n\n## License\n\n`reacherhq/backend`'s source code is provided under a **dual license model**.\n\n### Commercial license\n\nIf you want to use `reacherhq/backend` to develop commercial sites, tools, and applications, the Commercial License is the appropriate license. With this option, your source code is kept proprietary. Purchase an `reacherhq/backend` Commercial License at https://reacher.email/pricing.\n\n### Open source license\n\nIf you are creating an open source application under a license compatible with the GNU Affero GPL license v3, you may use `reacherhq/backend` under the terms of the [AGPL-3.0](./LICENSE.AGPL).\n\n[Read more](https://help.reacher.email/reacher-licenses) about Reacher's license.\n\n## Sponsor my Open-Source Work\n\nIf you like my open-source work at Reacher, consider [sponsoring me](https://github.com/sponsors/amaurym/)! You'll also get 8000 free email verifications every month with your Reacher account, and a this contribution would mean A WHOLE LOT to me.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freacherhq%2Fbackend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freacherhq%2Fbackend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freacherhq%2Fbackend/lists"}