Onboarding: preconfigured provider registry (Gmail/Yahoo/iCloud) #28

Closed
opened 2026-07-01 03:49:17 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-01 03:49:17 +00:00 (Migrated from github.com)

Part of #9.

Context

The app-password vendors (Gmail, Yahoo, iCloud) need preconfigured IMAP/SMTP settings so
the user only supplies an email + app password. Today only Outlook is preconfigured, via
the Account.outlook(...) factory. This ticket adds a small provider registry the picker
(#27) and the app-password screen (#29) read from.

Scope

  • Add a provider registry / factories (mirroring Account.outlook) for Gmail,
    Yahoo, and iCloud, each supplying IMAP + SMTP host/port and MailSecurity.
  • Bias toward STARTTLS where supported per the spec; keep implicit SSL/TLS where
    that's the provider's documented/only option. Never use MailSecurity.NONE. Record
    the rationale for each port/security choice in a comment.
  • For each provider include: display name, the app-password help URL, and the
    user-facing explanation copy used by #29.
  • Unit tests asserting host/port/security for each provider (these are easy to get
    subtly wrong and painful to debug on-device).

Starting values to verify against current vendor docs:

Provider IMAP SMTP App-password page
Gmail imap.gmail.com:993 SSL/TLS smtp.gmail.com:587 STARTTLS myaccount.google.com/apppasswords
Yahoo imap.mail.yahoo.com:993 SSL/TLS smtp.mail.yahoo.com:465 SSL/TLS (587 STARTTLS) login.yahoo.com/account/security -> App passwords
iCloud imap.mail.me.com:993 SSL/TLS smtp.mail.me.com:587 STARTTLS support.apple.com/en-us/102654 (appleid.apple.com -> App-Specific Passwords)

Acceptance criteria

  • Each provider resolves to a valid Account (via factory/registry) with the correct
    server config and an app-password help URL.
  • Unit tests cover all three providers and pass under :app:testDebugUnitTest.

Relevant files

  • app/src/main/kotlin/org/libremail/domain/model/Account.kt (Account.outlook pattern)
  • app/src/main/kotlin/org/libremail/domain/model/{ServerConfig,MailSecurity}.kt
  • new: provider registry under domain/model (+ test under app/src/test/...)

Dependencies

Blocks #29 (needs presets + help copy) and #27 (picker routes to presets).

Part of #9. ## Context The app-password vendors (Gmail, Yahoo, iCloud) need preconfigured IMAP/SMTP settings so the user only supplies an email + app password. Today only Outlook is preconfigured, via the `Account.outlook(...)` factory. This ticket adds a small provider registry the picker (#27) and the app-password screen (#29) read from. ## Scope - [ ] Add a provider registry / factories (mirroring `Account.outlook`) for **Gmail**, **Yahoo**, and **iCloud**, each supplying IMAP + SMTP host/port and `MailSecurity`. - [ ] **Bias toward STARTTLS where supported** per the spec; keep implicit SSL/TLS where that's the provider's documented/only option. Never use `MailSecurity.NONE`. Record the rationale for each port/security choice in a comment. - [ ] For each provider include: display name, the **app-password help URL**, and the user-facing explanation copy used by #29. - [ ] Unit tests asserting host/port/security for each provider (these are easy to get subtly wrong and painful to debug on-device). Starting values to verify against current vendor docs: | Provider | IMAP | SMTP | App-password page | |---|---|---|---| | Gmail | imap.gmail.com:993 SSL/TLS | smtp.gmail.com:587 STARTTLS | myaccount.google.com/apppasswords | | Yahoo | imap.mail.yahoo.com:993 SSL/TLS | smtp.mail.yahoo.com:465 SSL/TLS (587 STARTTLS) | login.yahoo.com/account/security -> App passwords | | iCloud | imap.mail.me.com:993 SSL/TLS | smtp.mail.me.com:587 STARTTLS | support.apple.com/en-us/102654 (appleid.apple.com -> App-Specific Passwords) | ## Acceptance criteria - Each provider resolves to a valid `Account` (via factory/registry) with the correct server config and an app-password help URL. - Unit tests cover all three providers and pass under `:app:testDebugUnitTest`. ## Relevant files - `app/src/main/kotlin/org/libremail/domain/model/Account.kt` (`Account.outlook` pattern) - `app/src/main/kotlin/org/libremail/domain/model/{ServerConfig,MailSecurity}.kt` - new: provider registry under `domain/model` (+ test under `app/src/test/...`) ## Dependencies Blocks #29 (needs presets + help copy) and #27 (picker routes to presets).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#28