Files
homelab-optimized/docs/services/individual/email-backup.md
Gitea Mirror Bot 9e0ef0cc6a
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled
Sanitized mirror from private repository - 2026-04-06 03:11:43 UTC
2026-04-06 03:11:43 +00:00

76 lines
2.7 KiB
Markdown

# Email Backup
Daily incremental backup of all email accounts to atlantis NAS.
## Overview
| Property | Value |
|----------|-------|
| **Script** | `scripts/gmail-backup-daily.sh``scripts/gmail-backup.py` |
| **Schedule** | Daily at 3:00 AM (cron on homelab-vm) |
| **Destination** | `/mnt/atlantis_archive/old_emails/` (NFS → atlantis `/volume1/archive/old_emails/`) |
| **Local copy** | `/tmp/gmail_backup` (non-persistent, fast access) |
| **Log** | `/tmp/gmail-backup-daily.log` |
| **Format** | `.eml` files organized by account → folder |
## Accounts
| Account | Protocol | Host | Directory |
|---------|----------|------|-----------|
| your-email@example.com | IMAP SSL | imap.gmail.com:993 | `dvish92/` |
| lzbellina92@gmail.com | IMAP SSL | imap.gmail.com:993 | `lzbellina92/` |
| admin@thevish.io | IMAP STARTTLS | 127.0.0.1:1143 (Proton Bridge) | `proton_admin/` |
## Behavior
- **Incremental**: Only downloads emails not already on disk (checks by filename)
- **Never deletes**: Emails removed from the source stay in the backup
- **Auto-reconnects**: Gmail throttles IMAP connections; the script reconnects and continues on disconnect
- **Proton Bridge required**: admin@thevish.io backup needs Proton Bridge running on homelab-vm (`tmux new-session -d -s bridge '/usr/lib/protonmail/bridge/bridge --cli'`)
- **Fault tolerant**: If Proton Bridge is down, Gmail accounts still back up. If NFS is unmounted, falls back to local-only backup.
## Infrastructure
### NFS Mount
```
192.168.0.200:/volume1/archive → /mnt/atlantis_archive (NFSv3, sec=sys)
```
Persisted in `/etc/fstab`. Requires `lan-route-fix.service` to be active (routes LAN traffic via ens18 instead of Tailscale).
### Cron
```cron
0 3 * * * /home/homelab/organized/repos/homelab/scripts/gmail-backup-daily.sh >> /tmp/gmail-backup-daily.log 2>&1
```
## Manual Operations
```bash
# Run backup manually
/home/homelab/organized/repos/homelab/scripts/gmail-backup-daily.sh
# Run for a specific destination
python3 scripts/gmail-backup.py /path/to/output
# Check backup status
find /mnt/atlantis_archive/old_emails -name "*.eml" | wc -l
# Check log
tail -20 /tmp/gmail-backup-daily.log
# Verify mount
mountpoint -q /mnt/atlantis_archive && echo "mounted" || echo "NOT mounted"
```
## Troubleshooting
| Issue | Fix |
|-------|-----|
| `PermissionError` on NFS | `ssh atlantis "chmod -R a+rwX /volume1/archive/old_emails/"` |
| NFS mount fails | Check `lan-route-fix.service` is active: `sudo systemctl start lan-route-fix` |
| Proton account fails | Verify bridge: `tmux attach -t bridge`. Restart if needed. |
| Gmail IMAP disconnects | Normal — Gmail rate-limits. Script auto-reconnects. |
| `socket error: EOF` in log | IMAP throttling. Script handles this automatically. |