cronjob move of big/old nmh mail from my VPS to home server
Tom R <[email protected]> Mon, 09 Jun 2025 16:45:43 -0500
| Newsgroups | gmane.mail.nmh.devel |
|---|---|
| Message-ID | <[email protected]> |
I asked gemini about the best way to move old mail ( say mail above a sertain size that is X-months old ) to a home server. Let me know if you have ideas/comments. -- thanks! https://g.co/gemini/share/9f746ee54690 |gemini answer > For your nmh mail setup with a weekly move from your VPS to your home server, let's break down your options and add some considerations. > > Both NFS with `refile` and packing/SCP/extracting/refiling have their pros and cons. > > ### Option 1: NFS and `refile` > > **Pros:** > > - **Simplicity:** Once NFS is set up, `refile` works exactly as it would locally. No packing/unpacking steps needed. > - **Directness:** Messages are moved directly into their final nmh folders on your home server. > - **Integrity:** `refile` is designed for nmh message management and maintains all nmh's internal tracking (e.g., sequence numbers). > - **Granularity:** You can easily pick and choose which messages or folders to move. > > **Cons:** > > - **Security (NFS over WAN):** Running NFS directly over the internet between your VPS and home server is generally **not recommended without a secure tunnel (e.g., VPN)**. NFS is not encrypted and can be vulnerable to eavesdropping and manipulation. > - **Performance:** NFS can be chatty, and latency over the internet might make the `refile` process slower than a single `scp` transfer of an archive. > - **Reliability:** Network glitches can interrupt `refile` operations, potentially leaving messages in an inconsistent state if not handled carefully. > > ### Option 2: Packing/SCP/Extracting/Refiling > > **Pros:** > > - **Security (SCP):** SCP is encrypted, making it much safer for transferring data over the internet.<sup>1</sup> > - **Efficiency (Bandwidth):** Packing multiple small message files into a single archive (e.g., with `tar` and compression like `gzip` or `xz`) can significantly reduce bandwidth usage and the number of transfers. > - **Atomicity:** The transfer is a single file, making it easier to verify completion and integrity. If the transfer fails, you just re-transfer the archive. > - **Decoupling:** Your home server doesn't need a direct persistent connection to the VPS for mail operations, only for the weekly transfer. > > **Cons:** > > - **Complexity:** More steps involved: pack on VPS, SCP, extract on home server, then `refile`. This means a more complex cron job script. > - **Intermediate Storage:** You'll need temporary storage for the packed archive on both the VPS (before SCP) and the home server (after SCP, before extraction). > - **Loss of Granularity (during packing):** If you pack an entire folder, you're moving all of it. If you only want to move *some* old messages, you'd need to pack selectively or `refile` after extraction. > - **Potential for Duplicates/Errors:** If the process isn't robustly scripted (e.g., proper deletion after successful transfer), you could end up with duplicates or incomplete moves. > - **Maintaining nmh state:** You'll need to be careful to ensure that the `refile` step on the home server correctly integrates the moved messages into your nmh setup, especially if message numbers might conflict. > > ### Recommendation and Hybrid Approaches > > Given your setup and the desire for a weekly move: > > **I strongly recommend the "Packing/SCP/Extracting/Refiling" approach, but with careful scripting and consideration.** > > The security benefits of SCP for transferring mail over the internet are paramount. NFS directly over the internet is a significant security risk. > > Here's how you might implement the recommended approach and some refinements: > > 1. **On the VPS (Weekly Cron Job):** > > - **Identify Old Messages/Folders:** You'll need a strategy to identify what constitutes "old" mail to move. This could be: > - Messages older than a certain date within specific folders. > - Entire folders that are considered "archive" folders. > - **Pack the Messages:** Use `tar` to create an archive of the selected message files. > - Example: `tar -czf /tmp/old_mail_$(date +%Y%m%d).tar.gz /path/to/your/nmh/inbox/cur/*-old-messages-` (you'd need to select files more carefully). > - Consider the `refile -link` option if you want to link the messages to an "archive" folder on the VPS *before* packing them, then pack the linked messages. This gives you a point of reference. > - **SCP to Home Server:** > - `scp /tmp/old_mail_$(date +%Y%m%d).tar.gz user@your-home-server:/path/to/temp/dest/` > - **Delete Moved Messages (Carefully):** Only delete the original messages on the VPS *after* successful transfer and extraction on the home server. This is a critical step for data integrity. You might want to create a `refile` script that moves messages to a temporary `sent-to-home` folder first, and then *delete* from that folder after confirmation. > > 2. **On the Home Server (Triggered by SCP or a separate cron job):** > > - **Extract the Archive:** > - `tar -xzf /path/to/temp/dest/old_mail_$(date +%Y%m%d).tar.gz -C /path/to/your/nmh/` (extracts directly into your nmh structure if the tarball paths are relative to your nmh root). > - **Refile (or manually move):** > - If the `tar` command extracted directly into the correct nmh folder structure, you might not even need `refile` if the messages are already in their final desired folders. > - However, if you extract to a temporary location, you'd then use `refile` to integrate them. Example: `refile -src /path/to/extracted/temp/folder +final_destination_folder` for each message or set of messages. > > ### Important Considerations for nmh: > > - **Message Numbering:** When you move messages, `nmh` assigns new message numbers in the destination folder. If you care about preserving the original message numbers (which is usually not critical across separate `nmh` installations), it becomes more complex. However, `nmh`'s strength is its file-based nature, so this is rarely an issue. > - **Folder Structure:** Ensure that the folder structure you pack on the VPS matches what `nmh` expects on your home server, or plan your extraction/refile steps accordingly. > - **Automation:** Scripting is key. Use `sshpass` (though generally discouraged for security in favor of SSH keys) or more robust SSH key-based authentication with `ssh-agent` for the `scp` command in your cron job. > - **Error Handling:** Your cron job script needs robust error checking at each step (packing, scp, extraction, deletion) to prevent data loss or inconsistencies. > - **Testing:** Thoroughly test your entire process with dummy emails before relying on it for your actual mail. > > **In summary, while NFS sounds simpler initially, the security implications are too significant for internet-based mail transfer. The SCP-based approach, despite being more complex to set up initially, offers superior security and reliability for your use case.**