2.7 KiB
2.7 KiB
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
0 3 * * * /home/homelab/organized/repos/homelab/scripts/gmail-backup-daily.sh >> /tmp/gmail-backup-daily.log 2>&1
Manual Operations
# 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. |