Skip to content

Commit

Permalink
GITBOOK-21: No subject
Browse files Browse the repository at this point in the history
  • Loading branch information
amaury@reacher.email authored and gitbook-bot committed Feb 19, 2025
1 parent 2668ce1 commit 8bcf8b9
Show file tree
Hide file tree
Showing 12 changed files with 327 additions and 53 deletions.
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ You can use Reacher to ensure the deliverability of your emails, clean your emai

### Jump right in

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Getting Started</strong></td><td>Verify your 1st email</td><td><a href=".gitbook/assets/undraw_Mail_sent_re_0ofv.png">undraw_Mail_sent_re_0ofv.png</a></td><td></td><td><a href="getting-started/quickstart.md">quickstart.md</a></td></tr><tr><td><strong>Self-Hosting</strong></td><td>Install Reacher in 20 min</td><td><a href=".gitbook/assets/undraw_Server_re_twwj.png">undraw_Server_re_twwj.png</a></td><td></td><td><a href="self-hosting/install.md">install.md</a></td></tr><tr><td><strong>Proxies</strong></td><td>Verify emails using a proxy</td><td><a href=".gitbook/assets/undraw_online_transactions_02ka.png">undraw_online_transactions_02ka.png</a></td><td></td><td><a href="self-hosting/proxies.md">proxies.md</a></td></tr></tbody></table>
<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Getting Started</strong></td><td>Verify your 1st email</td><td><a href=".gitbook/assets/undraw_Mail_sent_re_0ofv.png">undraw_Mail_sent_re_0ofv.png</a></td><td></td><td><a href="getting-started/quickstart.md">quickstart.md</a></td></tr><tr><td><strong>Self-Hosting</strong></td><td>Install Reacher in 20 min</td><td><a href=".gitbook/assets/undraw_Server_re_twwj.png">undraw_Server_re_twwj.png</a></td><td></td><td><a href="self-hosting/install.md">install.md</a></td></tr><tr><td><strong>Proxies</strong></td><td>Verify emails using a proxy</td><td><a href=".gitbook/assets/undraw_online_transactions_02ka.png">undraw_online_transactions_02ka.png</a></td><td></td><td><a href="self-hosting/proxies/">proxies</a></td></tr></tbody></table>
4 changes: 3 additions & 1 deletion docs/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
* [Option 2: RabbitMQ-based Queue Architecture](self-hosting/scaling-for-production/option-2-rabbitmq-based-queue-architecture.md)
* [Licensing](self-hosting/licensing/README.md)
* [Commercial License Trial](self-hosting/licensing/commercial-license-trial.md)
* [Proxies](self-hosting/proxies.md)
* [Proxies](self-hosting/proxies/README.md)
* [Multiple Proxies](self-hosting/proxies/multiple-proxies.md)
* [Reacher Configuration](self-hosting/reacher-configuration-v0.10.md)
* [Debugging Reacher](self-hosting/debugging-reacher.md)

Expand All @@ -28,6 +29,7 @@
* [/v1/bulk](advanced/openapi/v1-bulk.md)
* [Run your own Proxy](advanced/run-your-own-proxy.md)
* [Migrations](advanced/migrations/README.md)
* [Reacher Configuration (v0.10)](advanced/migrations/reacher-configuration-v0.10.md)
* [Migrating from 0.7 to 0.10](advanced/migrations/migrating-from-0.7-to-0.10-beta.md)
* [Bulk Verification (v0.7)](advanced/migrations/bulk.md)
* [Docker Environment Variables (v0.7)](advanced/migrations/docker-environment-variables.md)
191 changes: 191 additions & 0 deletions docs/advanced/migrations/reacher-configuration-v0.10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
# Reacher Configuration (v0.10)

You can find below the exhaustive list of configurable parameters to optimize Reacher.

To tweak a configuration, look at the "Env variable" name in the comments, and pass in the `-e ENV_VAR=VALUE` flag to Docker. See [#examples-with-docker](reacher-configuration-v0.10.md#examples-with-docker "mention").

```toml
# Backend configuration.

# Name to identify the backend.
#
# Env variable: RCH__BACKEND_NAME
backend_name = "backend-dev"

# Host to bind the backend to.
#
# Env variable: RCH__HTTP_HOST
http_host = "127.0.0.1"

# Port for the backend.
#
# Env variable: RCH__HTTP_PORT
http_port = 8080

# Shared secret between a trusted client and the backend, required in the
# `x-reacher-secret` header of all incoming requests.
#
# Env variable: RCH__HEADER_SECRET
# header_secret = "my-secret"

# Name to use during the EHLO/HELO command in the SMTP conversation.
# Ideally, this should match the reverse DNS of the server's IP address.
#
# Env variable: RCH__HELLO_NAME
hello_name = "localhost"

# Email to use during the MAIL FROM command in the SMTP conversation.
# Ideally, the domain of this email should match the "hello_name" above.
#
# Env variable: RCH__FROM_EMAIL
from_email = "hello@localhost"

# Address of the Chrome WebDriver server for headless email verifications.
#
# Env variable: RCH__WEBDRIVER_ADDR
webdriver_addr = "http://localhost:9515"

# Timeout for each SMTP connection, in seconds. Leaving it commented out will
# not set a timeout, i.e. the connection will wait indefinitely.
#
# Env variable: RCH__SMTP_TIMEOUT
# smtp_timeout = 45

# Optional Sentry DSN. If set, all errors will be sent to Sentry.
#
# Env variable: RCH__SENTRY_DSN
# sentry_dsn = "<PASTE_YOUR_DSN_NOW>"

# Uncomment the lines below to route all SMTP verification requests
# through a specified proxy. Note that the proxy must be a SOCKS5 proxy to work
# with the SMTP protocol. This proxy will not be used for headless
# verifications.
#
# The username and password are optional and only needed if the proxy requires
# authentication.
#
# Env variables:
# - RCH__PROXY__HOST
# - RCH__PROXY__PORT
# - RCH__PROXY__USERNAME
# - RCH__PROXY__PASSWORD
#
# [proxy]
# host = "my.proxy.com"
# port = 1080
# username = "my-username"
# password = "my-password"

# Verification method to use for each email provider. Available methods are:
# "smtp", "headless", and "api". Note that not all methods are supported by
# all email providers.
[verif_method]
# Gmail currently only supports the "smtp" method.
#
# Env variable: RCH__VERIF_METHOD__GMAIL
gmail = "smtp"
# Hotmail B2B currently only supports the "smtp" method.
#
# Env variable: RCH__VERIF_METHOD__HOTMAILB2B
hotmailb2b = "smtp"
# Hotmail B2C supports both "headless" and "smtp" methods. The "headless"
# method is recommended.
hotmailb2c = "headless"
# Yahoo supports both "headless" and "smtp" methods. The "headless" method is
# recommended.
yahoo = "headless"

# Throttle the maximum number of requests per second, per minute, per hour, and
# per day for this worker.
# All fields are optional; comment them out to disable the limit.
#
# We however recommend setting the throttle for at least the per-minute and
# per-day limits to prevent the IPs from being blocked by the email providers.
# The default values are set to 60 requests per minute and 10,000 requests per
# day.
#
# Important: these throttle configurations only apply to /v1/* endpoints, and
# not to the previous /v0/check_email endpoint. The latter endpoint always
# executes the verification immediately, regardless of the throttle settings.
#
# Env variables:
# - RCH__THROTTLE__MAX_REQUESTS_PER_SECOND
# - RCH__THROTTLE__MAX_REQUESTS_PER_MINUTE
# - RCH__THROTTLE__MAX_REQUESTS_PER_HOUR
# - RCH__THROTTLE__MAX_REQUESTS_PER_DAY
[throttle]
# max_requests_per_second = 20
max_requests_per_minute = 60
# max_requests_per_hour = 1000
max_requests_per_day = 10000

# Configuration for a queue-based architecture for Reacher. This feature is
# currently in **beta**. The queue-based architecture allows Reacher to scale
# horizontally by running multiple workers that consume emails from a RabbitMQ
# queue.
#
# To enable the queue-based architecture, set the "enable" field to "true" and
# configure the RabbitMQ connection below. The "concurrency" field specifies
# the number of concurrent emails to verify for this worker.
#
# For more information, see the documentation at:
# https://docs.reacher.email/self-hosting/scaling-for-production
[worker]
# Enable the worker to consume emails from the RabbitMQ queues. If set, the
# RabbitMQ configuration below must be set as well.
#
# Env variable: RCH__WORKER__ENABLE
enable = false

# RabbitMQ configuration.
[worker.rabbitmq]
# Env variable: RCH__WORKER__RABBITMQ__URL
url = "amqp://guest:guest@localhost:5672"

# Number of concurrent emails to verify for this worker.
#
# Env variable: RCH__WORKER__RABBITMQ__CONCURRENCY
concurrency = 5

# Below are the configurations for the storage of the email verification
# results. We currently support the following storage backends:
# - Postgres
#
# Uncomment the following line to configure the storage to use Postgres.
# [storage.postgres]

# # URL to connect to the Postgres database.
#
# Env variable: RCH__STORAGE__POSTGRES__DB_URL
# db_url = "postgresql://localhost/reacherdb"
#
# If you wish to store additional data along with the verification results,
# you can add a JSON object to the "extra" field. This object will be stored
# as a JSONB column in the database. This is for example useful to track who
# initiated the verification request in a multi-tenant system.
#
# Env variable: RCH__STORAGE__0__POSTGRES__TABLE_NAME
# extra = { "my_custom_key" = "my_custom_value" }
```

## Examples with Docker

To overwrite the EHLO/HELO name:

```bash
docker run -e RCH__HELLO_NAME=my.company.com -p 8080:8080 reacherhq/backend:beta
```

To store all email verification results to a Postgres database:

```bash
docker run -e RCH__STORAGE__POSTGRES__DB_URL="postgres://user:pass@mydomain.mycompany.com/my_db_name" -p 8080:8080 reacherhq/backend:beta
```

For advanced users, if you prefer to pass in the full [`backend_config.toml`](../../../backend/backend_config.toml) file instead of individual environment variable flags, run:

```bash
docker run -e RUST_LOG=reacher=debug -v /path/to/local/backend_config.toml:./backend_config.toml -p 8080:8080 reacherhq/backend:beta
```

We recommend passing in `-e RUST_LOG=reacher=debug`, at least on first run, as the debug logs will show the final configuration parsed by Reacher.
2 changes: 1 addition & 1 deletion docs/advanced/run-your-own-proxy.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Run your own Proxy

Reacher integrates seamlessy with [proxies.md](../self-hosting/proxies.md "mention"), and we propose some 3rd-party proxies to use. However, you may also choose to run your own Proxy.
Reacher integrates seamlessy with [proxies](../self-hosting/proxies/ "mention"), and we propose some 3rd-party proxies to use. However, you may also choose to run your own Proxy.

If you're interested in this feature, please contact [amaury@reacher.email](https://app.gitbook.com/u/F1LnsqPFtfUEGlcILLswbbp5cgk2 "mention").
2 changes: 1 addition & 1 deletion docs/self-hosting/debugging-reacher.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ If you still don't understand the error after setting that flag, send an email t
## How to check if port 25 is open?

{% hint style="info" %}
This only concerns users installing Reacher on a server without using [proxies.md](proxies.md "mention").&#x20;
This only concerns users installing Reacher on a server without using [proxies](proxies/ "mention").&#x20;
{% endhint %}

When choosing a server to install Reacher on, you need to make sure that the server itself has port `25` open AND the chosen cloud provider allows outbound port `25` connections on its network.
Expand Down
2 changes: 1 addition & 1 deletion docs/self-hosting/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The provided Dockerfile includes a pre-configured proxy, resolving the common IS

The Dockerfile provided as part of the Commercial License Trial is designed to enable quick setup for email verifications. Below are its key features and limitations:

* **Built-in Proxy Configuration**: we use [**Proxy4Smtp**](https://www.proxy4smtp.com), a 3rd-party proxy with carefully maintained IPs optimized for SMTP verifications. This ensures reliable email verification even in cloud environments with restricted SMTP access. Learn more in [proxies.md](proxies.md "mention").
* **Built-in Proxy Configuration**: we use [**Proxy4Smtp**](https://www.proxy4smtp.com), a 3rd-party proxy with carefully maintained IPs optimized for SMTP verifications. This ensures reliable email verification even in cloud environments with restricted SMTP access. Learn more in [proxies](proxies/ "mention").
* **Daily Verification Limit**: capped at 60 per minute at **10,000 per day**.
* **Usage Tracking**: verification results are anonymized and sent back to Reacher, and used to monitor daily usage and detect potential abuse.

Expand Down
9 changes: 7 additions & 2 deletions docs/self-hosting/licensing/commercial-license-trial.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ The Commercial License Trial allows you to test the self-hosted software for a l

As part of the Commercial License Trial, you'll receive a Dockerfile designed to enable quick setup for email verifications. Below are its key features and limitations:

* **Built-in Proxy Configuration**: we embed [**Proxy4Smtp**](https://www.proxy4smtp.com), a 3rd-party proxy with carefully maintained IPs optimized for SMTP verifications. All verifications using the Dockerfile go through this proxy. This ensures reliable email verification even in cloud environments with restricted SMTP access. Learn more in [proxies.md](../proxies.md "mention").
* **Built-in Proxy Configuration**: we embed [**Proxy4Smtp**](https://www.proxy4smtp.com), a 3rd-party proxy with carefully maintained IPs optimized for SMTP verifications. All verifications using the Dockerfile go through this proxy. This ensures reliable email verification even in cloud environments with restricted SMTP access. Learn more in [proxies](../proxies/ "mention").
* **Daily Verification Limit**: capped at **60 per minute** and **10,000 per day.**
* **Usage Tracking**: verification results are anonymized and sent back to Reacher, and used to monitor daily usage and detect potential abuse.
* **For testing purposes only**. The Dockerfile can only be used internally, for testing purposes, and can in no case be used in production environments for commercial applications.
Expand All @@ -21,4 +21,9 @@ To start your Commercial License Trial, sign up on [https://reacher.email](https

## After the Trial

The Commercial License Trial cannot be used for full-scale production use or commercial applications. Once you've tested Reacher extensively, purchase a Commercial License to gain access to an unrestricted Dockerfile.
The Commercial License Trial cannot be used for full-scale production use or commercial applications. Once you've tested Reacher extensively, purchase a Commercial License.

Once you purchased the Commercial License, you'll need to perform the two following steps:

1. Replace the Docker image from `reacherhq/commercial-license-trial`to `reacherhq/backend`. This will give you access to an unrestricted Dockerfile to perform unlimited verifications.
2. (If applicable) Configure proxy setting on the Docker container, via the `RCH__PROXY__*`environment variables. See [proxies](../proxies/ "mention")for more information.
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ Maintaining a good IP reputation is hard. Reacher integrates seamlessly with SOC

A **SOCKS5 proxy** is a flexible proxy protocol that supports various types of traffic, including SMTP. When using it for email verifications, the reputation of the **proxy’s IP** is what matters, not your own IP. This is crucial for maintaining deliverability and avoiding issues like blacklisting.

Choosing a reputable 3rd-party proxy will greatly improve the quality of your email verification results. For a list of recommended proxies, see [#which-3rd-party-proxies-does-reacher-recommend](proxies.md#which-3rd-party-proxies-does-reacher-recommend "mention")
Choosing a reputable 3rd-party proxy will greatly improve the quality of your email verification results. For a list of recommended proxies, see [#which-3rd-party-proxies-does-reacher-recommend](./#which-3rd-party-proxies-does-reacher-recommend "mention")

{% hint style="info" %}
SMTP email verifications are not possible via a traditional HTTP proxy.
{% endhint %}

## Setting up a Proxy

Once you've purchased a proxy, run the Docker command (see how in [install.md](install.md "mention")) and pass the following flags:
Once you've purchased a proxy, run the Docker command (see how in [install.md](../install.md "mention")) and pass the following flags:

* `-e RCH__PROXY__HOST=<host>`: The IP or hostname of the proxy server.
* `-e RCH__PROXY__PORT=<port>`: The corresponding port.
Expand All @@ -24,7 +24,7 @@ Once you've purchased a proxy, run the Docker command (see how in [install.md](i
* `-e RCH__FROM_EMAIL=<email>`: The email to use during the "MAIL FROM" step. It should be an email from the same domain as the HELLO\_NAME. Ask your proxy provider about this setting.

{% hint style="info" %}
If you're using the [commercial-license-trial.md](licensing/commercial-license-trial.md "mention"), these fields are already populated with the built-in proxy. However, you can overwrite them by passing these flags again, pointing to a proxy of your own choosing.
If you're using the [commercial-license-trial.md](../licensing/commercial-license-trial.md "mention"), these fields are already populated with the built-in proxy. However, you can overwrite them by passing these flags again, pointing to a proxy of your own choosing.
{% endhint %}

## Which 3rd-party proxies does Reacher recommend?
Expand All @@ -47,4 +47,4 @@ To estimate how many IPs you should buy, we recommend starting from your expecte
10,000,000 emails per month / 30 = 33,000 emails per day / 10000 = 33 IPs
```

The throttling limits of 10000 per day and 60 per minute are already baked in as defaults into Reacher. However, if you're managing scaling yourself ([option-1-manage-scaling-yourself.md](scaling-for-production/option-1-manage-scaling-yourself.md "mention")), make sure that at any time you have as many Reacher instances as IPs you bought. This will make sure that the concurrency of 5 is respected.
The throttling limits of 10000 per day and 60 per minute are already baked in as defaults into Reacher. However, if you're managing scaling yourself ([option-1-manage-scaling-yourself.md](../scaling-for-production/option-1-manage-scaling-yourself.md "mention")), make sure that at any time you have as many Reacher instances as IPs you bought. This will make sure that the concurrency of 5 is respected.
3 changes: 3 additions & 0 deletions docs/self-hosting/proxies/multiple-proxies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Multiple Proxies

This page will come shortly.
Loading

0 comments on commit 8bcf8b9

Please sign in to comment.