Screener Workflow
The screener classifies senders into four buckets using plain-text allowlists. Unknown senders land in ToScreen until you make a decision.
How classification works
| List file | Category | Where email lands |
|---|---|---|
screened_in.txt | Approved | stays in Inbox |
screened_out.txt | Blocked | ScreenedOut |
feed.txt | Newsletter / feed | Feed |
papertrail.txt | Receipts / notifications | PaperTrail |
| (not in any list) | Unknown | ToScreen |
Auto-screen and background sync
By default neomd screens your inbox automatically so you never have to press S:
- On every inbox load — when you open neomd or switch to Inbox (or press
R), the screener classifies all loaded emails in-memory and silently moves them. Your inbox is always clean. - Background sync — while neomd is running, the inbox is re-fetched and re-screened every 5 minutes. New mail that arrived since you opened neomd is handled automatically.
Both behaviours are configurable in [ui]:
[ui]
auto_screen_on_load = true # set false to disable auto-screen on inbox load
bg_sync_interval = 5 # minutes between background syncs; 0 = disabledS / :screen still works as a manual dry-run with y/n confirmation if you want to preview moves first.
Day-to-day: screen new arrivals
Press S (or run :screen) to dry-run the screener against the emails currently loaded in your Inbox. A preview shows what would move where — press y to apply, n to cancel.
For individual senders, use I / O / F / P from any folder or the ToScreen queue.
Bulk re-classification after updating your lists
When you add many senders to feed.txt or papertrail.txt at once (e.g. after importing from HEY), use this workflow:
1. Edit feed.txt / papertrail.txt / screened_in.txt with the new senders
2. Restart neomd (lists are loaded at startup)
3. :reset-toscreen → shows "Move N emails from ToScreen → Inbox? y/n"
(moves everything back so it can be re-classified)
4. y to confirm
5. :screen-all → dry-run against ALL inbox emails (not just the loaded subset)
6. y to apply:screen-all (alias :sa) scans every email in your Inbox — read and unread — and proposes moves for any sender that is now in a list. It does not touch emails already in Feed, PaperTrail, or other folders.
Screener as phishing defense
The screener isn’t just a productivity tool — it’s a natural phishing filter. Since unknown senders always land in ToScreen, your Inbox only contains emails from senders you’ve explicitly approved.
This makes impersonation attempts easy to spot: if you’ve already screened in info@sbb.ch (Swiss train service), a phishing email from info@sbb-tickets.fake.com will land in ToScreen, not your Inbox. You’ll immediately notice it’s suspicious because the real sender is already approved. Without the screener, the fake would sit alongside legitimate emails with no visual distinction.
Practical rule: treat ToScreen as a quarantine. Verify the sender address before approving. Press $ to mark spam.
Screening happens once
Emails are only auto-screened while they are in the Inbox. Once moved to ToScreen (or any other folder), they are not re-classified automatically. This keeps the logic simple and predictable.
If emails end up in ToScreen incorrectly (e.g. screened by another device like Termux with Android with incomplete lists), use :reset-toscreen to move them back to Inbox where auto-screen will re-classify them.
Colon commands
Press : to open the command line. Tab cycles through completions; Enter runs the command.
| Command | Alias | Description |
|---|---|---|
:screen | :s | dry-run screen currently loaded Inbox emails |
:screen-all | :sa | dry-run screen every Inbox email (no count limit) |
:reset-toscreen | :rts | move all ToScreen emails back to Inbox |
:reload | :r | reload the current folder |
:quit | :q | quit neomd |