Files
homelab-optimized/docs/services/individual/email-backup.md
Gitea Mirror Bot 3fbf47803f
Some checks failed
Documentation / Build Docusaurus (push) Failing after 5m3s
Documentation / Deploy to GitHub Pages (push) Has been skipped
Sanitized mirror from private repository - 2026-04-05 10:36:59 UTC
2026-04-05 10:36:59 +00:00

2.7 KiB

Email Backup

Daily incremental backup of all email accounts to atlantis NAS.

Overview

Property Value
Script scripts/gmail-backup-daily.shscripts/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.