Recently, I had some issues with my email provider and it gave me a bit of a scare as I realized that I had taken email for granted and did not have a backup in case things went south. Since my email address is run off of a domain that I own, I can easily switch email providers. However, I use mutt and it does not download all the email bodies in all the folders so I did not necessarily have a local copy of all my emails.
Thus began the hunt for a simple email backup solution and I found it in the form of a really nice python script: imapgrab.py. Note that this script has the following requirements:
sudo apt install getmail)
Once the requiremements are met, simply copy the script over to any folder and execute it as follows:
./imapgrab.py -l -s imap.mail.server -u username -p password. This will list all available IMAP folders
on the provided server. To download a copy of all mails run the following:
./imapgrab.py -d -v -f ~/email@example.com -s imap.mail.server -S -p 993 -u firstname.lastname@example.org -p password -m "_ALL_,-INBOX.Trash,-INBOX.Spam,-INBOX.Junk,-Trash,-Junk,-Spam"
-d instructs the script to download the IMAP folders.
-f provides the location to store the
-m provides instructions as to what to download (here we download everything except the
trash and spam folders). Check out the script itself for more usage parameters.
With this script running, I was able to regularly backup my email and as a bonus, here are the commands to encrypt and decrypt the backed up emails (linux specific):
# create archive tar -jcvf ~/email@example.com ~/firstname.lastname@example.org # encrypt (could take a while) gpg -c ~/email@example.com # delete original rm ~/firstname.lastname@example.org rm -rf ~/email@example.com # decrypt gpg ~/firstname.lastname@example.org # extract tar -xvf ~/email@example.com
Once encrypted you can safely store your email archive anywhere on the cloud.
Finally, in order to actually read the emails, you can import the mailboxes in thunderbird or use mutt as I like to
mutt -f ~/firstname.lastname@example.org/INBOX.mbox :).
Note that at the time of writing the script does not work with Python 3 and if you do manage to convert it, please do throw me a shout!
Back to the article list.
Subscribe to get articles as they are published direct to your inbox!