perf(yahoo): respect Yahoo/AOL IMAP limits & avoid the 1-hour auth lockout #362

Open
opened 2026-07-05 22:24:15 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-05 22:24:15 +00:00 (Migrated from github.com)

Context

LibreMail is an offline-first Android email client. IMAP is currently connect-per-operation (connection reuse, issue #125, is OFF by default); full-history backfill (issue #12) prefetches message bodies + attachments on unmetered networks (default FetchPolicy.WIFI_ONLY). A perf drilldown found this opens roughly 1 + K + attachments separate authenticated connections per backfill page, saturating a provider's connection/bandwidth budget and starving interactive message-opens. These tickets track making LibreMail's connection/request patterns and data usage respect each major provider's documented limits and degrade gracefully under throttling. (Outlook/Hotmail uses the Microsoft Graph REST API; Gmail, Yahoo/AOL, and iCloud use IMAP/SMTP.)

Documented limits

  • 5 max concurrent IMAP connections per IP.
  • Folder index truncated to 10,000 messages.
  • Rapid connection retries or failed auth trigger an automated 1-hour service lockout.
  • SMTP: 500 recipients/day, 100 connections-or-messages/day via external relay.
  • Basic auth deprecated (OAuth 2.0 or app-specific password required).

Optimization levers

  • Hard-cap at most 5 concurrent connections.
  • Never retry-storm auth — on auth failure, back off long and stop (circuit-breaker) to avoid the 1-hour lockout.
  • Strongly prefer connection reuse over connect-per-op (5 is a tight ceiling).
  • Respect the 10k folder truncation.

Depends on

Depends on / see the throttling-backoff umbrella issue #360.

## Context LibreMail is an offline-first Android email client. IMAP is currently connect-per-operation (connection reuse, issue #125, is OFF by default); full-history backfill (issue #12) prefetches message bodies + attachments on unmetered networks (default `FetchPolicy.WIFI_ONLY`). A perf drilldown found this opens roughly `1 + K + attachments` separate authenticated connections per backfill page, saturating a provider's connection/bandwidth budget and starving interactive message-opens. These tickets track making LibreMail's connection/request patterns and data usage respect each major provider's documented limits and degrade gracefully under throttling. (Outlook/Hotmail uses the Microsoft Graph REST API; Gmail, Yahoo/AOL, and iCloud use IMAP/SMTP.) ## Documented limits - 5 max concurrent IMAP connections per IP. - Folder index truncated to 10,000 messages. - Rapid connection retries or failed auth trigger an automated 1-hour service lockout. - SMTP: 500 recipients/day, 100 connections-or-messages/day via external relay. - Basic auth deprecated (OAuth 2.0 or app-specific password required). ## Optimization levers - Hard-cap at most 5 concurrent connections. - Never retry-storm auth — on auth failure, back off long and stop (circuit-breaker) to avoid the 1-hour lockout. - Strongly prefer connection reuse over connect-per-op (5 is a tight ceiling). - Respect the 10k folder truncation. ## Depends on Depends on / see the throttling-backoff umbrella issue #360.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#362