Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/reacherhq/backend

⚙️ REST backend for Reacher - Open-Source Email Verification API.
https://github.com/reacherhq/backend

backend hacktoberfest reacher

Last synced: 5 days ago
JSON representation

⚙️ REST backend for Reacher - Open-Source Email Verification API.

Awesome Lists containing this project

README

        

[![Actions Status](https://github.com/reacherhq/backend/workflows/pr/badge.svg)](https://github.com/reacherhq/backend/actions)
[![Github Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&link=https://github.com/sponsors/amaurym)](https://github.com/sponsors/amaurym)



reacher


⚙️ Reacher Backend


Backend Server for Reacher Email Verification API: https://reacher.email.



# ⚠️⚠️ IMPORTANT UPDATE ⚠️⚠️

This repo has been moved to the monorepo [reacherhq/check-if-email-exists](https://github.com/reacherhq/check-if-email-exists), in the `backend` subfolder.

## Reacher Backend

This repository holds the backend for [Reacher](https://reacher.email). The backend is a HTTP server with the following components:

- [`check-if-email-exists`](https://github.com/reacherhq/check-if-email-exists), which performs the core email verification logic,
- [`warp`](https://github.com/seanmonstar/warp) web framework.

## Get Started

There are 2 ways you can run this backend.

### 1. Use Docker

The [Docker image](./Dockerfile) is hosted on Docker Hub: https://hub.docker.com/r/reacherhq/backend.

To run it, run the following command:

```bash
docker run -p 8080:8080 reacherhq/backend
```

You can then send a POST request with the following body to `http://localhost:8080/v0/check_email`:

```js
{
"to_email": "[email protected]",
"from_email": "[email protected]", // (optional) email to use in the `FROM` SMTP command, defaults to "[email protected]"
"hello_name": "my-server.com", // (optional) name to use in the `EHLO` SMTP command, defaults to "localhost"
"proxy": { // (optional) SOCK5 proxy to run the verification through, default is empty
"host": "my-proxy.io",
"port": 1080
},
"smtp_port": 587 // (optional) SMTP port to do the email verification, defaults to 25
}
```

### 2. Run locally

If you prefer to run the server locally on your machine, just clone the repository and run:

```bash
cargo run
```

The server will then be listening on `http://127.0.0.1:8080`.

### Configuration

These are the environment variables used to configure the HTTP server:

| Env Var | Required? | Description | Default |
| ----------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------ |
| `RCH_ENABLE_BULK` | No | If set to 1, then bulk verification endpoints will be added to the backend. | 0 |
| `DATABASE_URL` | Yes if `RCH_ENABLE_BULK==1` | Database connection string for storing results and task queue | not defined |
| `RCH_HTTP_HOST` | No | The host name to bind the HTTP server to. | `127.0.0.1` |
| `PORT` | No | The port to bind the HTTP server to, often populated by the cloud provider. | `8080` |
| `RCH_FROM_EMAIL` | No | The email to use in the `MAIL FROM:` SMTP command. | `[email protected]` |
| `RCH_SENTRY_DSN` | No | If set, bug reports will be sent to this [Sentry](https://sentry.io) DSN. | not defined |
| `RCH_DATABASE_MAX_CONNECTIONS` | No | Connections created for the database pool | 5 |
| `RCH_MINIMUM_TASK_CONCURRENCY` | No | Minimum number of concurrent running tasks below which more tasks are fetched | 10 |
| `RCH_MAXIMUM_CONCURRENT_TASK_FETCH` | No | Maximum number of tasks fetched at once | 20 |
| `RUST_LOG` | No | One of `trace,debug,warn,error,info`. 💡 PRO TIP: `RUST_LOG=debug` is very handful for debugging purposes. | not defined |

## REST API Documentation

Read docs on https://help.reacher.email/rest-api-documentation.

The API basically only exposes one endpoint: `POST /v0/check_email` expecting the following body:

```js
{
"to_email": "[email protected]",
"from_email": "[email protected]", // (optional) email to use in the `FROM` SMTP command, defaults to "[email protected]"
"hello_name": "my-server.com", // (optional) name to use in the `EHLO` SMTP command, defaults to "localhost"
"proxy": { // (optional) SOCK5 proxy to run the verification through, default is empty
"host": "my-proxy.io",
"port": 1080
},
"smtp_port": 587 // (optional) SMTP port to do the email verification, defaults to 25
}
```

Also check [`openapi.json`](./openapi.json) for the complete OpenAPI specification.

## License

`reacherhq/backend`'s source code is provided under a **dual license model**.

### Commercial license

If 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.

### Open source license

If 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).

[Read more](https://help.reacher.email/reacher-licenses) about Reacher's license.

## Sponsor my Open-Source Work

If 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.