Files
obsidian/tank/programming/notmich aerc install.md
T
2026-05-07 14:39:10 +02:00

6.4 KiB
Executable File

Absolutely! Here's a complete step-by-step guide to set up notmuch with aerc:

Step 1: Verify notmuch database location

notmuch config get database.path

This will output something like /home/yourusername/.local/share/mail or /home/yourusername/Mail. Remember this path - you'll need it.

Step 2: Create the notmuch queries file

mkdir -p ~/.config/aerc
nano ~/.config/aerc/notmuch-queries

Paste this content (you can customize later):

# Priority folders
Priority 1 - Urgent=tag:priority1 AND tag:inbox
Priority 2 - Work=tag:priority2 AND tag:inbox
Priority 3 - Low=tag:priority3 AND tag:inbox

# Categories
Newsletters=tag:newsletter
Social Media=tag:social
Shopping=tag:shopping
Finance=tag:finance
Travel=tag:travel
Development=tag:dev

# Standard folders
Inbox=tag:inbox AND NOT tag:spam
Unread=tag:unread AND NOT tag:spam
Sent=tag:sent
Spam=tag:spam
Important=tag:important
All Mail=*

Save and exit (Ctrl+O, Enter, Ctrl+X).

Step 3: Update aerc accounts.conf

First, backup your current config:

cp ~/.config/aerc/accounts.conf ~/.config/aerc/accounts.conf.backup

Edit the config:

nano ~/.config/aerc/accounts.conf

Replace your IMAP accounts with this (adjust the database path from Step 1):

[Proton]
source = notmuch:///home/yourusername/.local/share/mail
query-map = ~/.config/aerc/notmuch-queries
outgoing = smtp://user@127.0.0.1:1025
outgoing-cred-cmd = pass protonmail-bridge
from = Your Name <main@proton.me>

Important notes:

  • Use notmuch:// (with three slashes) followed by the absolute path
  • Replace /home/yourusername/.local/share/mail with your actual path from Step 1
  • Replace user with your actual ProtonMail Bridge username
  • Replace email addresses with your actual emails

If you want multiple "from" addresses:

[Proton]
source = notmuch:///home/yourusername/.local/share/mail
query-map = ~/.config/aerc/notmuch-queries
outgoing = smtp://user@127.0.0.1:1025
outgoing-cred-cmd = pass protonmail-bridge
from = Your Name <main@proton.me>
aliases = work@proton.me,personal@proton.me

Save and exit.

Step 4: Tag existing emails for processing

# Tag all mail as 'new' so afew will process it
notmuch tag +new -- '*'

# Verify
notmuch count tag:new

Should show your total email count (e.g., 6050).

Step 5: Run afew to apply filters

PYTHONWARNINGS="ignore::UserWarning" afew --tag --new --verbose

You should see output like:

SpamFilter
  Tagging affected 145 message(s)
Filter.1: High priority - Boss and VIPs
  Tagging affected 23 message(s)
Filter.10: Newsletters and subscriptions
  Tagging affected 892 message(s)
...

Step 6: Verify tags were applied

notmuch count tag:spam
notmuch count tag:newsletter
notmuch count tag:priority1
notmuch count tag:inbox

You should see actual numbers now!

Step 7: Test aerc with notmuch

aerc

What you should see:

  • Instead of "INBOX", "Sent", etc., you'll see your query-based folders
  • "Priority 1 - Urgent"
  • "Priority 2 - Work"
  • "Newsletters"
  • "Inbox"
  • etc.

Navigate folders:

:cf Priority 1 - Urgent<Enter>

Or use j/k to navigate the folder list and press Enter.

Step 8: Set up keybindings for quick navigation

nano ~/.config/aerc/binds.conf

Add to the [messages] section:

[messages]
# Quick folder navigation
g1 = :cf Priority 1 - Urgent<Enter>
g2 = :cf Priority 2 - Work<Enter>
g3 = :cf Priority 3 - Low<Enter>
gn = :cf Newsletters<Enter>
gs = :cf Spam<Enter>
gi = :cf Inbox<Enter>
gu = :cf Unread<Enter>
ga = :cf All Mail<Enter>

# Tag management
t = :prompt 'Tag: ' 'tag '
T = :prompt 'Remove tag: ' 'untag '

# Quick tags
!1 = :tag +priority1<Enter>
!2 = :tag +priority2<Enter>
!s = :tag +spam<Enter>

Step 9: Set up automatic mail syncing

mkdir -p ~/.local/bin
nano ~/.local/bin/sync-mail.sh

Paste:

#!/bin/bash

# Sync from ProtonMail Bridge
mbsync -a

# Index new messages (auto-tags them as 'new')
notmuch new

# Apply filters to new messages
PYTHONWARNINGS="ignore::UserWarning" afew --tag --new

echo "Mail sync complete at $(date)"

Make it executable:

chmod +x ~/.local/bin/sync-mail.sh

Test it:

~/.local/bin/sync-mail.sh

Step 10: Automate with systemd (optional)

Create the service:

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/mailsync.service

Paste (replace yourusername with your actual username):

[Unit]
Description=Mailbox sync

[Service]
Type=oneshot
ExecStart=/home/yourusername/.local/bin/sync-mail.sh

Create the timer:

nano ~/.config/systemd/user/mailsync.timer

Paste:

[Unit]
Description=Mailbox sync timer

[Timer]
OnBootSec=2m
OnUnitActiveSec=5m

[Install]
WantedBy=timers.target

Enable and start:

systemctl --user daemon-reload
systemctl --user enable --now mailsync.timer
systemctl --user status mailsync.timer

Step 11: Verify everything works

Check aerc shows virtual folders:

aerc

Press :cf and hit Tab - you should see autocomplete for your virtual folders.

Check folder contents:

:cf Priority 1 - Urgent<Enter>

You should see emails that match the filter.

Check syncing works:

# Manually sync
~/.local/bin/sync-mail.sh

# Check timer status
systemctl --user list-timers

Troubleshooting

Issue: aerc shows "No folders"

# Check query-map file exists
cat ~/.config/aerc/notmuch-queries

# Check path in accounts.conf
grep source ~/.config/aerc/accounts.conf

Issue: Folders are empty

# Check tags exist
notmuch count tag:inbox
notmuch count tag:newsletter

# If 0, re-run afew
notmuch tag +new -- '*'
afew --tag --new --verbose

Issue: Can't send emails

# Test SMTP manually
echo "test" | msmtp -a proton yourmail@proton.me

# Check ProtonMail Bridge is running
pgrep -a bridge

Issue: "Unknown account" error

Your account name in accounts.conf is [Proton] but you might be referencing it wrong. Make sure keybindings and commands use the exact name.

Quick test checklist

  • notmuch count tag:inbox shows a number
  • notmuch count tag:newsletter shows a number
  • cat ~/.config/aerc/notmuch-queries shows your queries
  • aerc shows virtual folders in the sidebar
  • :cf Inbox<Enter> in aerc shows emails
  • ~/.local/bin/sync-mail.sh runs without errors

Once all these work, you're fully set up! Let me know which step gives you trouble.