Проверка email без лишних движений знакомимся с check-if-email-exists
Знакомая ситуация? Ваше приложение собирает 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
}
}
Кому это пригодится?
- Разработчикам SaaS: Для валидации email при регистрации
- Маркетологам: Очистка баз подписчиков от нерабочих адресов
- HR-специалистам: Проверка контактов кандидатов
- Администраторам: Борьба с ботами и фейковыми аккаунтами
Технические особенности
Проект написан на Rust, что гарантирует:
- Высокую производительность
- Безопасность работы с памятью
- Минимальные требования к ресурсам
Архитектура модульная — можно использовать как библиотеку, CLI или HTTP-сервис. Для работы требуется открытый 25-й порт (SMTP).
Лицензия: что важно знать
Проект доступен по двойной лицензии:
- AGPL-3.0 для open-source использования
- Коммерческая лицензия для проприетарных продуктов
Подробности на странице лицензирования.
Вывод: стоит ли попробовать?
check-if-email-exists — отличное решение для тех, кто:
- Не хочет зависеть от платных сервисов
- Ценит конфиденциальность данных
- Нуждается в гибком инструменте проверки email
Особенно рекомендую обратить внимание на Docker-версию — она проста в развертывании и может работать как самостоятельный микросервис.
Если же вам нужен готовый SaaS с удобным интерфейсом — посмотрите Reacher. Но для большинства разработчиков open-source версии более чем достаточно.
