@bobfrankston/rmfmail 1.2.7 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +47 -15
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +42 -15
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-settings/docs/architecture-review.md +182 -0
- package/packages/mailx-settings/docs/clean-architecture.md +161 -0
- package/packages/mailx-settings/docs/outlook.md +215 -0
- package/packages/mailx-settings/package.json +1 -1
- package/packages/mailx-store/db.d.ts +9 -0
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +32 -1
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +28 -1
- package/packages/mailx-store/package.json +1 -1
- package/test/two-writer-lock.mjs +55 -0
- package/test/two-writer-thread.mjs +51 -0
- package/test/two-writer-worker.mjs +14 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# Outlook.com / Microsoft 365 Support
|
|
2
|
+
|
|
3
|
+
Status (2026-06-05): **scaffolding present, not usable.** An account auto-detects
|
|
4
|
+
the right hosts but cannot authenticate — there is no Microsoft OAuth wired, and
|
|
5
|
+
Microsoft has disabled basic-auth (password) for outlook.com / office365, so the
|
|
6
|
+
IMAP path can't fall back to a password either. Gmail is the only fully-wired
|
|
7
|
+
OAuth provider today.
|
|
8
|
+
|
|
9
|
+
This doc scopes what it takes to make Outlook a first-class account.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What already exists
|
|
14
|
+
|
|
15
|
+
| Piece | Where | State |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| Graph API provider | `@bobfrankston/mailx-sync/outlook.ts` (re-exported `packages/mailx-imap/providers/outlook-api.ts`) | **Read-only**: `listFolders`, `fetchSince/ByDate/ByUids/One`, `getUids`. No send, no write-back, no drafts/attachments. |
|
|
18
|
+
| Host auto-config | `packages/mailx-settings/index.ts:503` (`outlook.com`, `hotmail.com` → `outlook.office365.com:993` / `smtp.office365.com:587`, `auth: "oauth2"`) | Done |
|
|
19
|
+
| MX-based detection | `bin/mailx.ts:1307` (`*.outlook.com` / `*.protection.outlook.com` MX → Microsoft 365) | Done |
|
|
20
|
+
| Generic OAuth flow | `@bobfrankston/oauthsupport` `OAuthTokenManager.ts:369` — validates `client_id/client_secret/auth_uri/token_uri` from the creds file; localhost loopback auth-code flow | **Provider-agnostic** — not Google-specific |
|
|
21
|
+
| OAuth SMTP send | `packages/mailx-imap/index.ts:1533` builds `{type:"OAuth2", user, accessToken}` from `config.tokenProvider()` | Works for any provider with a tokenProvider |
|
|
22
|
+
|
|
23
|
+
The single thing that makes Gmail work and Outlook not: the **tokenProvider** at
|
|
24
|
+
`packages/mailx-imap/index.ts:798-848` is built only for Google. It hardcodes the
|
|
25
|
+
Google credentials file (`~/.mailx/google-credentials.json`) and the all-Google
|
|
26
|
+
scope string. Nothing constructs a Microsoft tokenProvider, so
|
|
27
|
+
`OutlookApiProvider` is never instantiated and the office365 IMAP host has no
|
|
28
|
+
token to present.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Decision: Graph API vs IMAP/XOAUTH2
|
|
33
|
+
|
|
34
|
+
Both need the same Azure app registration + Microsoft OAuth. The difference is
|
|
35
|
+
the sync transport once you have a token.
|
|
36
|
+
|
|
37
|
+
**Recommended: Graph API.** It mirrors the Gmail-API model the codebase already
|
|
38
|
+
follows (`isGmailAccount()` branch → REST provider, no IMAP client). Wins: no
|
|
39
|
+
connection-limit/timeout class of bugs (the entire `inactivityTimeout` /
|
|
40
|
+
`greetingTimeout` / chunk-size tuning at `index.ts:862` is IMAP-only pain);
|
|
41
|
+
provider is already half-written; same `MailProvider` interface so Android reuses
|
|
42
|
+
it verbatim. Cost: the provider is read-only — send + flag/move/delete + drafts
|
|
43
|
+
must be added (Graph endpoints, ~a day). Sharp edge: `idToUid()`
|
|
44
|
+
(`outlook.ts` ~135) hashes Graph's long string IDs to 48-bit ints, and
|
|
45
|
+
`fetchByUids`/`fetchOne` re-list the **whole** folder then filter — O(folder) per
|
|
46
|
+
fetch with collision risk. Real sync needs a UID↔providerId map (we already keep
|
|
47
|
+
`provider_id` in the DB) and direct `GET /messages/{id}` instead of list-and-scan.
|
|
48
|
+
|
|
49
|
+
**Alternative: IMAP + XOAUTH2.** Reuses the existing iflow-direct sync path
|
|
50
|
+
unchanged — just feed it a Microsoft token instead of a Google one. Wins: zero
|
|
51
|
+
new sync/send code; flag/move/delete/append already work over IMAP. Cost:
|
|
52
|
+
inherits every IMAP fragility we've spent months hardening for Dovecot/Gmail, now
|
|
53
|
+
against Exchange Online's quirks. Sharp edge: Microsoft is steering third-party
|
|
54
|
+
clients toward Graph and away from consumer IMAP; betting the integration on
|
|
55
|
+
office365 IMAP is the less future-proof path.
|
|
56
|
+
|
|
57
|
+
Pragmatic call: **IMAP/XOAUTH2 first** as the fast path to a working account (it's
|
|
58
|
+
mostly OAuth plumbing), then migrate sync to Graph for parity with Gmail. The
|
|
59
|
+
OAuth work below is shared, so it's not wasted either way.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Work breakdown
|
|
64
|
+
|
|
65
|
+
### 1. Azure app registration [S, one-time, external]
|
|
66
|
+
Register an app in Entra/Azure AD:
|
|
67
|
+
- Account type: "personal Microsoft accounts" (consumer outlook.com) and/or
|
|
68
|
+
"any org directory" (Microsoft 365). For both, use the `/common` authority.
|
|
69
|
+
- Redirect URI: `http://localhost` (loopback) — matches oauthsupport's flow
|
|
70
|
+
(`OAuthTokenManager.ts:463`, parses the loopback callback).
|
|
71
|
+
- API permissions (delegated):
|
|
72
|
+
- Graph path: `Mail.ReadWrite`, `Mail.Send`, `offline_access`, `openid`,
|
|
73
|
+
`profile`.
|
|
74
|
+
- IMAP path: `https://outlook.office.com/IMAP.AccessAsUser.All`,
|
|
75
|
+
`https://outlook.office.com/SMTP.Send`, `offline_access`.
|
|
76
|
+
- Produce a `microsoft-credentials.json` shaped like the Google one, with
|
|
77
|
+
`auth_uri: https://login.microsoftonline.com/common/oauth2/v2.0/authorize`,
|
|
78
|
+
`token_uri: https://login.microsoftonline.com/common/oauth2/v2.0/token`,
|
|
79
|
+
`redirect_uris: ["http://localhost"]`, plus `client_id` / `client_secret`.
|
|
80
|
+
|
|
81
|
+
Store at `~/.mailx/microsoft-credentials.json` (parallel to
|
|
82
|
+
`google-credentials.json`).
|
|
83
|
+
|
|
84
|
+
### 2. Microsoft tokenProvider [M]
|
|
85
|
+
Generalize `index.ts:798-848` so the provider isn't Google-only:
|
|
86
|
+
- Pick the creds file + scope by account kind (gmail vs outlook), keyed off the
|
|
87
|
+
same signal `account.imap.auth === "oauth2"` plus host/email domain.
|
|
88
|
+
- For Outlook, point `authenticateOAuth` at `microsoft-credentials.json` with the
|
|
89
|
+
Microsoft scope set. The flow itself is unchanged — oauthsupport already reads
|
|
90
|
+
the endpoints from the creds file, so no oauthsupport changes are required
|
|
91
|
+
(confirm consumer-account PKCE: Microsoft may require `code_challenge` for the
|
|
92
|
+
loopback client; if so, add PKCE support in `OAuthTokenManager.getToken`).
|
|
93
|
+
- Token cache dir reuses the existing `tokens/<user>/` convention (`index.ts:814`).
|
|
94
|
+
|
|
95
|
+
This single change makes the **IMAP/XOAUTH2 path work end-to-end** — the office365
|
|
96
|
+
host config already exists, and SMTP OAuth (`index.ts:1533`) consumes the same
|
|
97
|
+
tokenProvider. Verify the token is minted with Outlook IMAP/SMTP scopes, not Graph
|
|
98
|
+
scopes (they're different audiences).
|
|
99
|
+
|
|
100
|
+
### 3. Provider selection [S]
|
|
101
|
+
Add an `isOutlookAccount()` sibling to `isGmailAccount()` (`index.ts:898`) and an
|
|
102
|
+
`getOutlookProvider()` mirroring `getGmailProvider()` (`index.ts:906`) that does
|
|
103
|
+
`new OutlookApiProvider(config.tokenProvider)`. Then extend each
|
|
104
|
+
`isGmailAccount()` branch (sync, periodic STATUS, IDLE-skip, etc. — ~10 sites) to
|
|
105
|
+
a three-way provider switch. *(Only needed for the Graph path; the IMAP path
|
|
106
|
+
needs none of this — it flows through the normal IMAP code.)*
|
|
107
|
+
|
|
108
|
+
### 4. Graph write-back + send [M] *(Graph path only)*
|
|
109
|
+
Add to `OutlookApiProvider`:
|
|
110
|
+
- `sendMail`: `POST /sendMail` with the MIME or the Graph message object.
|
|
111
|
+
- mark read/flag: `PATCH /messages/{id}` (`isRead`, `flag`).
|
|
112
|
+
- move: `POST /messages/{id}/move`.
|
|
113
|
+
- delete: `DELETE /messages/{id}` (or move to deleteditems).
|
|
114
|
+
- draft create/update: `POST /messages` / `PATCH`.
|
|
115
|
+
- attachments: `GET /messages/{id}/attachments`.
|
|
116
|
+
Replace list-and-scan in `fetchByUids`/`fetchOne` with direct
|
|
117
|
+
`GET /messages/{providerId}` using the DB's `provider_id` mapping.
|
|
118
|
+
|
|
119
|
+
### 5. Setup UX [S]
|
|
120
|
+
`bin/mailx.ts` `knownOAuth` list (~line 1320) already includes `outlook.com` /
|
|
121
|
+
`hotmail.com`. Once the tokenProvider exists, first-run setup triggers the
|
|
122
|
+
Microsoft consent screen the same way Gmail does — no extra UI. Add an error
|
|
123
|
+
banner case for "Microsoft credentials missing" pointing at
|
|
124
|
+
`microsoft-credentials.json`.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Step-by-step (with URLs)
|
|
129
|
+
|
|
130
|
+
### A. Register the Azure app — the part only you can do
|
|
131
|
+
1. Sign in to the Entra admin center → **App registrations**:
|
|
132
|
+
https://entra.microsoft.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
|
|
133
|
+
(equivalently Azure portal → "Microsoft Entra ID" → "App registrations":
|
|
134
|
+
https://portal.azure.com)
|
|
135
|
+
2. **New registration** (guide:
|
|
136
|
+
https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app):
|
|
137
|
+
- Name: `rmfmail`.
|
|
138
|
+
- Supported account types: **"Accounts in any organizational directory and
|
|
139
|
+
personal Microsoft accounts"** (covers both outlook.com consumer and M365).
|
|
140
|
+
- Redirect URI: platform **"Mobile and desktop applications"**, value
|
|
141
|
+
**`http://localhost`** (loopback — what oauthsupport's flow listens on).
|
|
142
|
+
Desktop/loopback registration:
|
|
143
|
+
https://learn.microsoft.com/en-us/entra/identity-platform/scenario-desktop-app-registration
|
|
144
|
+
3. Copy the **Application (client) ID** from the app's Overview page.
|
|
145
|
+
4. **Certificates & secrets** → **New client secret** → copy the secret *value*
|
|
146
|
+
(not the ID). (Public-client/PKCE is the alternative if you'd rather not ship a
|
|
147
|
+
secret — see Sharp edges.)
|
|
148
|
+
5. **API permissions** → **Add a permission** → **Microsoft Graph** → **Delegated**
|
|
149
|
+
(permissions reference:
|
|
150
|
+
https://learn.microsoft.com/en-us/graph/permissions-reference):
|
|
151
|
+
- Graph path: `Mail.ReadWrite`, `Mail.Send`, `offline_access`, `openid`,
|
|
152
|
+
`profile`.
|
|
153
|
+
- IMAP path instead/also: `IMAP.AccessAsUser.All`, `SMTP.Send`,
|
|
154
|
+
`offline_access` (these live under the *Office 365 Exchange Online* API, not
|
|
155
|
+
Graph). Microsoft's IMAP/SMTP-OAuth guide:
|
|
156
|
+
https://learn.microsoft.com/en-us/exchange/client-developer/legacy-protocols/how-to-authenticate-an-imap-pop-smtp-application-by-using-oauth
|
|
157
|
+
- Click **Grant admin consent** if it's a work tenant (personal accounts
|
|
158
|
+
consent at first sign-in).
|
|
159
|
+
|
|
160
|
+
Reference for the endpoints used below:
|
|
161
|
+
- Authorize: `https://login.microsoftonline.com/common/oauth2/v2.0/authorize`
|
|
162
|
+
- Token: `https://login.microsoftonline.com/common/oauth2/v2.0/token`
|
|
163
|
+
- Auth-code flow spec:
|
|
164
|
+
https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow
|
|
165
|
+
- Graph mail API overview:
|
|
166
|
+
https://learn.microsoft.com/en-us/graph/api/resources/mail-api-overview
|
|
167
|
+
|
|
168
|
+
### B. Drop in the credentials file
|
|
169
|
+
Create `~/.mailx/microsoft-credentials.json` mirroring the Google one's shape so
|
|
170
|
+
oauthsupport's `OAuthTokenManager` (reads `client_id`/`client_secret`/`auth_uri`/
|
|
171
|
+
`token_uri`, `OAuthTokenManager.ts:369`) consumes it unchanged:
|
|
172
|
+
|
|
173
|
+
{
|
|
174
|
+
"installed": {
|
|
175
|
+
"client_id": "<Application (client) ID>",
|
|
176
|
+
"client_secret": "<secret value>",
|
|
177
|
+
"auth_uri": "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
|
|
178
|
+
"token_uri": "https://login.microsoftonline.com/common/oauth2/v2.0/token",
|
|
179
|
+
"redirect_uris": ["http://localhost"]
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
### C. Wire the code (steps 2-3 from the work breakdown)
|
|
184
|
+
1. In `packages/mailx-imap/index.ts` (~798), branch the tokenProvider on account
|
|
185
|
+
kind: Outlook accounts use `microsoft-credentials.json` + the Microsoft scope
|
|
186
|
+
string (IMAP scopes for the IMAP path, Graph scopes for the Graph path).
|
|
187
|
+
2. For the **IMAP path** that's the whole change — the office365 host config
|
|
188
|
+
(`mailx-settings/index.ts:503`) and OAuth-SMTP (`index.ts:1533`) already
|
|
189
|
+
consume the tokenProvider. Test sign-in: first send triggers the loopback
|
|
190
|
+
consent at `http://localhost`.
|
|
191
|
+
3. For the **Graph path**, add `isOutlookAccount()`/`getOutlookProvider()` next to
|
|
192
|
+
the Gmail equivalents (`index.ts:898/906`) and fill the provider's write-back
|
|
193
|
+
gaps (`sendMail`, flag/move/delete, drafts).
|
|
194
|
+
|
|
195
|
+
## Sharp edges / open questions
|
|
196
|
+
|
|
197
|
+
- **Consumer vs M365 differ.** Personal outlook.com and Microsoft 365 work
|
|
198
|
+
accounts use different scope audiences and consent behavior. `/common` covers
|
|
199
|
+
both at the authority level, but test both — a token good for Graph isn't valid
|
|
200
|
+
for IMAP and vice-versa.
|
|
201
|
+
- **PKCE.** Microsoft increasingly requires PKCE for loopback clients. If consent
|
|
202
|
+
fails with `invalid_request`, add `code_challenge`/`code_verifier` to
|
|
203
|
+
oauthsupport's auth-code flow (it's the one oauthsupport change that might be
|
|
204
|
+
needed).
|
|
205
|
+
- **Basic auth is gone.** Don't add a password fallback for office365 — it will
|
|
206
|
+
always fail. The error path should say "Outlook requires sign-in", not "wrong
|
|
207
|
+
password".
|
|
208
|
+
- **Drive/OneDrive is unrelated.** `cloud.ts` already sketches MS Graph
|
|
209
|
+
`Files.ReadWrite` scopes for OneDrive storage — that's a separate app/scope from
|
|
210
|
+
mail and shares none of this wiring (and OneDrive cloud storage was removed;
|
|
211
|
+
GDrive only).
|
|
212
|
+
- **`idToUid` collisions.** A 32-bit hash of Graph IDs across a 10-year mailbox
|
|
213
|
+
will eventually collide. The Graph path must key on `provider_id`
|
|
214
|
+
(string) as identity, with the integer UID as a display/sort convenience only —
|
|
215
|
+
same lesson as `imap_uid_not_identity`.
|
|
@@ -400,6 +400,15 @@ export declare class MailxDB {
|
|
|
400
400
|
} | null;
|
|
401
401
|
/** Clear a UID's prefetch-failure record after a successful fetch. */
|
|
402
402
|
clearPrefetchFailure(accountId: string, folderId: number, uid: number): void;
|
|
403
|
+
/** Wipe ALL prefetch-failure backoffs. Called once per boot: the backoff is
|
|
404
|
+
* a within-SESSION optimisation (it stops a poison body being re-fetched
|
|
405
|
+
* every 60s cycle), so a fresh session should give every body another try —
|
|
406
|
+
* the network may have recovered, and crucially a body backed off by a
|
|
407
|
+
* transient cause (a two-writer DB lock, a Dovecot 300s timeout) shouldn't
|
|
408
|
+
* stay suppressed for up to 12h (Bob 2026-06-14: "lots of predownloading
|
|
409
|
+
* not happening"). Genuine poison bodies simply re-fail once and re-back-off
|
|
410
|
+
* for the session — no per-cycle loop. */
|
|
411
|
+
clearAllPrefetchFailures(): number;
|
|
403
412
|
/** Highest server UID we've seen in this folder. After the
|
|
404
413
|
* message_folders refactor, this reads from the membership table
|
|
405
414
|
* rather than messages.uid — a server-side move from this folder
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["db.ts"],"names":[],"mappings":"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"}
|
|
@@ -419,7 +419,13 @@ export class MailxDB {
|
|
|
419
419
|
// DDL/backfills concurrently would race on the WAL write lock.
|
|
420
420
|
this.db.exec("PRAGMA journal_mode = WAL");
|
|
421
421
|
this.db.exec("PRAGMA foreign_keys = ON");
|
|
422
|
-
|
|
422
|
+
// 10s (vs the main thread's 5s): this is the BACKGROUND writer (sync,
|
|
423
|
+
// prefetch); waiting a bit longer for the foreground's lock is fine.
|
|
424
|
+
// NOT higher because busy_timeout BLOCKS this thread synchronously
|
|
425
|
+
// (it can't forward sync events while parked) — for longer holds the
|
|
426
|
+
// prefetch write path uses an ASYNC retry that yields between
|
|
427
|
+
// attempts instead. Fixes prefetch "database is locked" (Bob 2026-06-14).
|
|
428
|
+
this.db.exec("PRAGMA busy_timeout = 10000");
|
|
423
429
|
return;
|
|
424
430
|
}
|
|
425
431
|
if (this.readOnly) {
|
|
@@ -569,6 +575,15 @@ export class MailxDB {
|
|
|
569
575
|
// this column landed. One UPDATE + an id roundtrip per row — cheap
|
|
570
576
|
// at our row counts, runs once per DB upgrade.
|
|
571
577
|
this.backfillUuids();
|
|
578
|
+
// Per-boot: clear prefetch-failure backoffs so transiently-failed bodies
|
|
579
|
+
// (two-writer DB lock, Dovecot timeout) get a fresh try this session
|
|
580
|
+
// instead of staying suppressed for up to 12h. See clearAllPrefetchFailures.
|
|
581
|
+
try {
|
|
582
|
+
const cleared = this.clearAllPrefetchFailures();
|
|
583
|
+
if (cleared > 0)
|
|
584
|
+
console.log(` [db] cleared ${cleared} prefetch-failure backoff(s) for a fresh session`);
|
|
585
|
+
}
|
|
586
|
+
catch { /* non-fatal */ }
|
|
572
587
|
// One-shot cleanup: the retired insertOptimisticSentRow path wrote
|
|
573
588
|
// synthetic-negative-UID rows into Sent. Those rows are stale (the
|
|
574
589
|
// real server-synced row eventually appears with a positive UID),
|
|
@@ -2235,6 +2250,22 @@ export class MailxDB {
|
|
|
2235
2250
|
clearPrefetchFailure(accountId, folderId, uid) {
|
|
2236
2251
|
this.db.prepare("DELETE FROM prefetch_failures WHERE account_id = ? AND folder_id = ? AND uid = ?").run(accountId, folderId, uid);
|
|
2237
2252
|
}
|
|
2253
|
+
/** Wipe ALL prefetch-failure backoffs. Called once per boot: the backoff is
|
|
2254
|
+
* a within-SESSION optimisation (it stops a poison body being re-fetched
|
|
2255
|
+
* every 60s cycle), so a fresh session should give every body another try —
|
|
2256
|
+
* the network may have recovered, and crucially a body backed off by a
|
|
2257
|
+
* transient cause (a two-writer DB lock, a Dovecot 300s timeout) shouldn't
|
|
2258
|
+
* stay suppressed for up to 12h (Bob 2026-06-14: "lots of predownloading
|
|
2259
|
+
* not happening"). Genuine poison bodies simply re-fail once and re-back-off
|
|
2260
|
+
* for the session — no per-cycle loop. */
|
|
2261
|
+
clearAllPrefetchFailures() {
|
|
2262
|
+
try {
|
|
2263
|
+
return this.db.prepare("DELETE FROM prefetch_failures").run().changes;
|
|
2264
|
+
}
|
|
2265
|
+
catch {
|
|
2266
|
+
return 0;
|
|
2267
|
+
}
|
|
2268
|
+
}
|
|
2238
2269
|
/** Highest server UID we've seen in this folder. After the
|
|
2239
2270
|
* message_folders refactor, this reads from the membership table
|
|
2240
2271
|
* rather than messages.uid — a server-side move from this folder
|