added first true commit
This commit is contained in:
Executable
+327
@@ -0,0 +1,327 @@
|
||||
Absolutely! Here's a complete step-by-step guide to set up notmuch with aerc:
|
||||
|
||||
## Step 1: Verify notmuch database location
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
cp ~/.config/aerc/accounts.conf ~/.config/aerc/accounts.conf.backup
|
||||
```
|
||||
|
||||
**Edit the config:**
|
||||
```bash
|
||||
nano ~/.config/aerc/accounts.conf
|
||||
```
|
||||
|
||||
**Replace your IMAP accounts with this** (adjust the database path from Step 1):
|
||||
|
||||
```ini
|
||||
[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:**
|
||||
|
||||
```ini
|
||||
[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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
nano ~/.config/aerc/binds.conf
|
||||
```
|
||||
|
||||
Add to the `[messages]` section:
|
||||
|
||||
```ini
|
||||
[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
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.local/bin
|
||||
nano ~/.local/bin/sync-mail.sh
|
||||
```
|
||||
|
||||
Paste:
|
||||
|
||||
```bash
|
||||
#!/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:
|
||||
```bash
|
||||
chmod +x ~/.local/bin/sync-mail.sh
|
||||
```
|
||||
|
||||
**Test it:**
|
||||
```bash
|
||||
~/.local/bin/sync-mail.sh
|
||||
```
|
||||
|
||||
## Step 10: Automate with systemd (optional)
|
||||
|
||||
Create the service:
|
||||
```bash
|
||||
mkdir -p ~/.config/systemd/user
|
||||
nano ~/.config/systemd/user/mailsync.service
|
||||
```
|
||||
|
||||
Paste (replace `yourusername` with your actual username):
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Mailbox sync
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/home/yourusername/.local/bin/sync-mail.sh
|
||||
```
|
||||
|
||||
Create the timer:
|
||||
```bash
|
||||
nano ~/.config/systemd/user/mailsync.timer
|
||||
```
|
||||
|
||||
Paste:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Mailbox sync timer
|
||||
|
||||
[Timer]
|
||||
OnBootSec=2m
|
||||
OnUnitActiveSec=5m
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
```
|
||||
|
||||
Enable and start:
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
# Manually sync
|
||||
~/.local/bin/sync-mail.sh
|
||||
|
||||
# Check timer status
|
||||
systemctl --user list-timers
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Issue: aerc shows "No folders"**
|
||||
```bash
|
||||
# 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**
|
||||
```bash
|
||||
# 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**
|
||||
```bash
|
||||
# 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.
|
||||
Reference in New Issue
Block a user