Проверка email без лишних движений знакомимся с check-if-email-exists

17 Mar, 2026
9,144
🔱 658
👥 56

Логотип Reacher

Знакомая ситуация? Ваше приложение собирает email-адреса пользователей, но часть из них оказывается нерабочими — то ли опечатка, то ли временный ящик, то ли вовсе фейк. В результате страдает доставляемость писем, портится статистика, а боты успешно регистрируются с одноразовыми адресами. Решение есть — проект check-if-email-exists, написанный на Rust.

Что это за инструмент?

check-if-email-exists — это open-source библиотека и набор инструментов для проверки существования email-адресов без отправки реальных писем. В отличие от многих платных сервисов вроде Hunter или Email Checker, этот проект можно развернуть у себя и использовать бесплатно.

Кстати, авторы предлагают и SaaS-версию под названием Reacher, но сегодня мы сосредоточимся именно на open-source решении.

Как это работает: 3 способа использования

1. HTTP-бекенд через Docker (самый популярный вариант)

docker run -p 8080:8080 reacherhq/backend:latest

После запуска можно отправлять POST-запросы:

Реклама
{
    "to_email": "someone@gmail.com",
    "proxy": { // опционально
        "host": "my-proxy.io",
        "port": 1080,
        "username": "me",
        "password": "pass"
    }
}

2. CLI-версия

Готовая консольная утилита доступна в релизах. Пример использования:

check_if_email_exists someone@gmail.com

3. Rust-библиотека

Для Rust-разработчиков:

[dependencies]
check-if-email-exists = "0.9"

Пример кода:

use check_if_email_exists::{check_email, CheckEmailInput};

async fn check() {
    let input = CheckEmailInput::new(vec!["someone@gmail.com".into()]);
    let result = check_email(&input).await;
    println!("{:?}", result);
}

Что именно проверяет инструмент?

Вот основные параметры, которые анализирует check-if-email-exists:

  • Синтаксис email: Корректность формата адреса
  • DNS-записи: Наличие MX-записей у домена
  • Доступность SMTP: Можно ли подключиться к почтовому серверу
  • Доставляемость: Будет ли письмо доставлено
  • Временные адреса: Использование disposable-email
  • Ролевые адреса: Например, info@, support@
  • Заполненность ящика: Не переполнен ли почтовый ящик
  • Граватар: Наличие аватарки на Gravatar
  • Утечки данных: Проверка через Have I Been Pwned

Пример вывода для несуществующего gmail-адреса:

{
    "is_reachable": "invalid",
    "misc": {
        "is_disposable": false,
        "is_role_account": false
    },
    "mx": {
        "accepts_mail": true,
        "records": ["gmail-smtp-in.l.google.com."]
    },
    "smtp": {
        "is_deliverable": false,
        "is_disabled": true
    }
}

Кому это пригодится?

  1. Разработчикам SaaS: Для валидации email при регистрации
  2. Маркетологам: Очистка баз подписчиков от нерабочих адресов
  3. HR-специалистам: Проверка контактов кандидатов
  4. Администраторам: Борьба с ботами и фейковыми аккаунтами

Технические особенности

Проект написан на Rust, что гарантирует:

  • Высокую производительность
  • Безопасность работы с памятью
  • Минимальные требования к ресурсам

Архитектура модульная — можно использовать как библиотеку, CLI или HTTP-сервис. Для работы требуется открытый 25-й порт (SMTP).

Лицензия: что важно знать

Проект доступен по двойной лицензии:

  • AGPL-3.0 для open-source использования
  • Коммерческая лицензия для проприетарных продуктов

Подробности на странице лицензирования.

Вывод: стоит ли попробовать?

check-if-email-exists — отличное решение для тех, кто:

  • Не хочет зависеть от платных сервисов
  • Ценит конфиденциальность данных
  • Нуждается в гибком инструменте проверки email

Особенно рекомендую обратить внимание на Docker-версию — она проста в развертывании и может работать как самостоятельный микросервис.

Если же вам нужен готовый SaaS с удобным интерфейсом — посмотрите Reacher. Но для большинства разработчиков open-source версии более чем достаточно.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.