A command-line tool for validating email addresses in bulk. This program allows you to check email addresses for several parameters. While this is not a 100% guarantee of a valid email, it helps to exclude clearly bad email addresses from your lists. It checks email format, detects disposable (temporary) email domains, and verifies MX records for domains.
- Batch validation — Process thousands of email addresses from a file
- Single email validation — Quickly check one email address
- Disposable email detection — Identify temporary/throwaway email addresses
- MX record verification — Check if the email domain can receive mail
- Operations with email lists — Merge or subtract email lists
- Cross-platform — Available for Windows, Linux, and macOS
The program performs three types of validation:
- Format validation — Checks if the email address has a valid format (e.g.,
user@domain.com) - Disposable domain detection — Identifies emails from temporary/disposable email services (like
tempmail.com,guerrillamail.com, etc.) - MX record verification — Verifies that the domain has mail exchange (MX) records configured, meaning it can actually receive emails
Download from the Latest Release page and pick the ZIP for your OS. Inside the archive you will get the executable (checkemails.exe on Windows, checkemails on Linux/macOS).
Download from Latest Release (Windows x64, Linux x64, macOS ARM64)
Filenames to look for on the Releases page:
- Windows:
checkemails-<TAG>-win-x64.zip - Linux:
checkemails-<TAG>-linux-x64.zip - macOS:
checkemails-<TAG>-osx-arm64.zip
No installation required — just unzip and run.
On macOS, you might need to grant the application permission to run because it's not signed with an Apple Developer ID.
- Run from Terminal: Open the Terminal and run the application. You'll see a security warning, and the OS will block it.
- Allow in Settings:
- Go to Apple menu → System Settings → Privacy & Security.
- Scroll down to the security section.
- You will see a message like: "“checkemails” was blocked from use because it is not from an identified developer."
- Click the "Open Anyway" button.
- Run Again: Run the application from the Terminal again. It should now work as expected.
Each release includes platform-specific ZIP archives along with integrity and signature files:
checkemails-<TAG>-<RID>.zip— the binary archivecheckemails-<TAG>-<RID>.zip.sha256— SHA256 checksumcheckemails-<TAG>-<RID>.zip.sig— signaturecheckemails-<TAG>-<RID>.zip.pem— signing certificate
Replace <TAG> with the release tag (for example, v1.0.1) and <RID> with the runtime ID (win-x64, linux-x64, osx-arm64).
- Verify SHA256 checksum (Linux/macOS):
sha256sum -c checkemails-v1.0.1-linux-x64.zip.sha256
# or, if your shell doesn't support -c:
sha256sum checkemails-v1.0.1-linux-x64.zipmacOS alternative:
shasum -a 256 checkemails-v1.0.1-osx-arm64.zipWindows PowerShell:
Get-FileHash .\checkemails-v1.0.1-win-x64.zip -Algorithm SHA256 | Format-List
# Compare the hash with the content of .sha256 file
Get-Content .\checkemails-v1.0.1-win-x64.zip.sha256- Verify signature with Cosign (any OS, requires cosign to be installed):
cosign verify-blob \
--certificate checkemails-v1.0.1-linux-x64.zip.pem \
--signature checkemails-v1.0.1-linux-x64.zip.sig \
checkemails-v1.0.1-linux-x64.zipOptional strict verification:
cosign verify-blob \
--certificate checkemails-v1.0.1-linux-x64.zip.pem \
--signature checkemails-v1.0.1-linux-x64.zip.sig \
--certificate-identity "https://github.com/idev-oss/CheckEmails/.github/workflows/release-aot.yml@refs/tags/v1.0.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
checkemails-v1.0.1-linux-x64.zipSuccessful verification confirms the archive was signed by this repository's GitHub Actions workflow via OIDC (keyless).
checkemails [options]
| Option | Description |
|---|---|
-h, --help |
Show help message and exit |
-v, --version |
Show application version and disposable list file timestamp |
--debug |
Enable debug mode (verbose logging with stack traces) |
--utc |
Use UTC time for logs and outputs (default is local time) |
-r, --refresh-disposable |
Force update of the disposable-domain cache |
-d, --disposable-domains <path> |
Use an additional custom disposable-domain list. The application also creates a .checkemails directory in your home directory where you can add a list of domains that you consider to be temporary or that you do not want to send emails to. |
-e, --email <address> |
Validate one email without reading files |
| Option | Description |
|---|---|
-i, --input <path> |
Required. Source file with email addresses (one per line or CSV) |
-o, --results-dir <path> |
Directory for output files. If not specified, a directory will be created in the root of the folder from where the program is launched. |
| Option | Description |
|---|---|
--set-mode <subtract|merge> |
Perform an operation on email lists |
--include <path> |
File to include; repeat for multiple inputs |
--exclude <path> |
File to exclude (only for subtract mode) |
--result <path> |
Output file for the resulting set |
If you have a list of emails you want to check before adding them to a mailing service, you can run a batch validation. This will help you remove invalid, temporary, or inactive email addresses, improving your delivery rates.
Windows:
checkemails.exe -i new_subscribers.csv -o validation_resultsLinux/macOS:
./checkemails -i new_subscribers.csv -o validation_resultsThis command will process new_subscribers.csv and save the results in the validation_results directory. The valid_emails.csv file will contain the emails that are safe to add to your mailing list.
Imagine you have several lists of email addresses from different sources and you want to combine them into a single master list without any duplicates.
Windows:
checkemails.exe --set-mode merge --include list1.csv --include list2.csv --include list3.csv --result master_list.csvLinux/macOS:
./checkemails --set-mode merge --include list1.csv --include list2.csv --include list3.csv --result master_list.csvThis will merge list1.csv, list2.csv, and list3.csv into a single file named master_list.csv, automatically removing any duplicate email addresses.
Suppose you have a master list of all your users' emails and a separate list of users who have unsubscribed or whose emails have bounced. You can subtract the second list from the first to get a clean list for your next campaign.
Windows:
checkemails.exe --set-mode subtract --include master_list.csv --exclude unsubscribed.csv --result clean_list.csvLinux/macOS:
./checkemails --set-mode subtract --include master_list.csv --exclude unsubscribed.csv --result clean_list.csvThis command subtracts the emails in unsubscribed.csv from master_list.csv and saves the result to clean_list.csv.
When running batch validation, the program creates the following files in the results directory:
| File | Description |
|---|---|
valid_emails.csv |
Email addresses that passed all validation checks |
invalid_emails.csv |
Email addresses with invalid format |
invalid_emails_disposable.csv |
Email addresses from disposable/temporary domains |
invalid_emails_missing_mx.csv |
Email addresses from domains without MX records |
info.txt |
Summary with statistics and processing details |
If --results-dir is not specified, output is created in ./checkemails-results-<timestamp>/.
This program uses the disposable email domains list from the community-maintained project:
The list is automatically downloaded and cached. Use -r or --refresh-disposable to force an update.
- Пакетная валидация — Обработка тысяч email-адресов из файла
- Проверка одного email — Быстрая проверка одного адреса
- Обнаружение одноразовых email — Выявление временных/одноразовых почтовых адресов
- Проверка MX-записей — Проверка возможности домена принимать почту
- Операции со списками email-адресов — Объединение или вычитание списков email
- Кроссплатформенность — Доступно для Windows, Linux и macOS
Программа выполняет три типа проверок:
- Проверка формата — Проверяет корректность формата email-адреса (например,
user@domain.com) - Обнаружение одноразовых доменов — Выявляет email от временных почтовых сервисов (таких как
tempmail.com,guerrillamail.comи др.) - Проверка MX-записей — Проверяет наличие у домена настроенных MX-записей, то есть возможность реально принимать почту
Скачайте архив с страницы последнего релиза и выберите ZIP для вашей ОС. Внутри архива — исполняемый файл (checkemails.exe для Windows, checkemails для Linux/macOS).
Скачать последнюю версию (Windows x64, Linux x64, macOS ARM64)
Имена файлов на странице релизов:
- Windows:
checkemails-<TAG>-win-x64.zip - Linux:
checkemails-<TAG>-linux-x64.zip - macOS:
checkemails-<TAG>-osx-arm64.zip
Установка не требуется — распакуйте архив и запустите.
В macOS может потребоваться разрешить запуск приложения, так как оно не подписано идентификатором разработчика Apple.
- Запустите из Терминала: Откройте Терминал и запустите приложение. Вы увидите предупреждение безопасности, и ОС заблокирует его.
- Разрешите в Настройках:
- Перейдите в меню Apple → Системные настройки → Конфиденциальность и безопасность.
- Пролистайте вниз до раздела безопасности.
- Вы увидите сообщение вида: «ПО „checkemails“ было заблокировано, так как оно от неустановленного разработчика».
- Нажмите кнопку «Подтвердить вход» или "Открыть всё равно".
- Запустите снова: Запустите приложение из Терминала еще раз. Теперь оно должно работать как положено.
Каждый релиз содержит ZIP-архивы под платформы и сопутствующие файлы проверки:
checkemails-<TAG>-<RID>.zip— бинарный архивcheckemails-<TAG>-<RID>.zip.sha256— контрольная сумма SHA256checkemails-<TAG>-<RID>.zip.sig— подписьcheckemails-<TAG>-<RID>.zip.pem— сертификат подписи
Замените <TAG> на тег релиза (например, v1.0.1), а <RID> на идентификатор платформы (win-x64, linux-x64, osx-arm64).
- Проверка SHA256 (Linux/macOS):
sha256sum -c checkemails-v1.0.1-linux-x64.zip.sha256
# или если оболочка не поддерживает -c:
sha256sum checkemails-v1.0.1-linux-x64.zipАльтернатива для macOS:
shasum -a 256 checkemails-v1.0.1-osx-arm64.zipWindows PowerShell:
Get-FileHash .\checkemails-v1.0.1-win-x64.zip -Algorithm SHA256 | Format-List
# Сравните хеш со строкой в файле .sha256
Get-Content .\checkemails-v1.0.1-win-x64.zip.sha256- Проверка подписи Cosign (на любой ОС, требуется установленный cosign):
cosign verify-blob \
--certificate checkemails-v1.0.1-linux-x64.zip.pem \
--signature checkemails-v1.0.1-linux-x64.zip.sig \
checkemails-v1.0.1-linux-x64.zipБолее строгая проверка:
cosign verify-blob \
--certificate checkemails-v1.0.1-linux-x64.zip.pem \
--signature checkemails-v1.0.1-linux-x64.zip.sig \
--certificate-identity "https://github.com/idev-oss/CheckEmails/.github/workflows/release-aot.yml@refs/tags/v1.0.1" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
checkemails-v1.0.1-linux-x64.zipУспешная проверка подтверждает, что архив подписан GitHub Actions этого репозитория через OIDC (без приватных ключей).
checkemails [опции]
| Опция | Описание |
|---|---|
-h, --help |
Показать справку и выйти |
-v, --version |
Показать версию приложения и дату файла списка одноразовых доменов |
--debug |
Включить режим отладки (подробное логирование со стеком вызовов) |
--utc |
Использовать UTC для логов и выходных данных (по умолчанию — локальное время) |
-r, --refresh-disposable |
Принудительно обновить кэш одноразовых доменов |
-d, --disposable-domains <путь> |
Использовать дополнительный пользовательский список одноразовых доменов. Также программа создает папку .checkemails в вашей домашней директории, где вы можете указать список доменов, которые вы считаете временными или на которые вы просто не хотите отправлять письма. |
-e, --email <адрес> |
Проверить один email без чтения файлов |
| Опция | Описание |
|---|---|
-i, --input <путь> |
Обязательно. Исходный файл с email-адресами (по одному на строку или CSV) |
-o, --results-dir <путь> |
Директория для выходных файлов. Если не указать, будет создана директория в корне папки, откуда запускается программа. |
| Опция | Описание |
|---|---|
--set-mode <subtract|merge> |
Выполнить операцию со списками email-адресов |
--include <путь> |
Файл для включения; можно указать несколько раз |
--exclude <путь> |
Файл для исключения (только для режима subtract) |
--result <путь> |
Выходной файл для результирующего набора |
Если у вас есть список email, который вы хотите проверить перед добавлением в сервис рассылки, вы можете запустить пакетную валидацию. Это поможет удалить неверные, временные или неактивные адреса, улучшая доставляемость писем.
Windows:
checkemails.exe -i new_subscribers.csv -o validation_resultsLinux/macOS:
./checkemails -i new_subscribers.csv -o validation_resultsЭта команда обработает new_subscribers.csv и сохранит результаты в директорию validation_results. Файл valid_emails.csv будет содержать адреса, которые можно безопасно добавлять в ваш список рассылки.
Представьте, что у вас есть несколько списков адресов из разных источников, и вы хотите объединить их в один общий список без дубликатов.
Windows:
checkemails.exe --set-mode merge --include list1.csv --include list2.csv --include list3.csv --result master_list.csvLinux/macOS:
./checkemails --set-mode merge --include list1.csv --include list2.csv --include list3.csv --result master_list.csvЭта команда объединит list1.csv, list2.csv и list3.csv в один файл master_list.csv, автоматически удалив все дублирующиеся адреса.
Допустим, у вас есть основной список email-адресов ваших пользователей и отдельный список тех, кто отписался или чьи адреса вернулись с ошибкой. Вы можете вычесть второй список из первого, чтобы получить чистый список для следующей рассылки.
Windows:
checkemails.exe --set-mode subtract --include master_list.csv --exclude unsubscribed.csv --result clean_list.csvLinux/macOS:
./checkemails --set-mode subtract --include master_list.csv --exclude unsubscribed.csv --result clean_list.csvЭта команда вычитает адреса из unsubscribed.csv из master_list.csv и сохраняет результат в clean_list.csv.
При пакетной валидации программа создаёт следующие файлы в директории результатов:
| Файл | Описание |
|---|---|
valid_emails.csv |
Email-адреса, прошедшие все проверки |
invalid_emails.csv |
Email-адреса с некорректным форматом |
invalid_emails_disposable.csv |
Email-адреса с одноразовых/временных доменов |
invalid_emails_missing_mx.csv |
Email-адреса с доменов без MX-записей |
info.txt |
Сводка со статистикой и деталями обработки |
Если --results-dir не указан, результаты создаются в ./checkemails-results-<timestamp>/.
Программа использует список одноразовых email-доменов из поддерживаемого сообществом проекта:
Список автоматически скачивается и кэшируется. Используйте -r или --refresh-disposable для принудительного обновления.
This project is licensed under the MIT License — see the LICENSE file for details.
