OfflineIMAP
Posted on Thu 14 January 2016 in linux
When you are using external email providers instead of hosting your own email server, you need to cross your fingers that everything goes well with the provider's server. For safety-conscious people it may be worthwhile to think about some mechanism to download your emails on some external server to have a backup. In case of mailboxes providing IMAP, a simple backup system can be easily setup using OfflineIMAP.
Installing OfflineIMAP
Since OfflineIMAP is part of the regular debian respositories it can be easily installed:
apt-get install offlineimap
In the next step, a corresponding configuration file has to be created. For a quickstart, copy the minimal config from the documentation to the home folder:
cp /usr/share/doc/offlineimap/examples/offlineimap.conf.minimal ~/.offlineimaprc
Edit the configuration and adapt it to your need, e.g.:
[general]
accounts = Gmx
[Account Gmx]
localrepository = Local
remoterepository = GmxRemote
[Repository Local]
type = Maildir
localfolders = ~/Mail
[Repository GmxRemote]
type = IMAP
ssl = yes
remotehost = imap.gmx.net
remoteuser = myuser
remotepass = mypassword
maxconnections = 4
In the general section one or multiple accounts
can be set. Each account requires a separate Account
section to link a local repository to a remote repository. For the local as well as the remote repository, a corresponding Repository
section must be created that specifies further details: the local repository uses the common Maildir
type and stores its files in the ~/Maildir
folder, while for the remote repository IMAP
is used and the corresponding credentials for authentication are provided to access the data. For the remote repository additional tweaks are used for using ssl and to use up to 4 connections simultaneuously.
Since sensitive user/password credentials are stored in the configuration, make sure to set the corresponding permissions:
chmod 0600 ~/.offlineimaprc
A first test of the configuration
For a first test, run:
offlineimap -c ~/.offlineimaprc
All emails from the remote server will be copied to the local repository folder. Depending on the number of emails, this first synchronization of mails can take some time.
To view the downloaded mails mutt
can be used, e.g.:
mutt -f ~/Mail/INBOX
note: if mutt complaints about the missing the user's mailbox, you can create it by sending a test mail to the user:
echo "this is a test mail" | mail $USER
If you require a more sophisticated access to your emails think about installing a real IMAP server such as dovecot.
Regular backup
If everything is working fine, an automatic email backup can be configured by using a cron job. For example, to backup the emails once an hour, create the script /etc/cron.hourly/offlineimap
with the following content:
#!/bin/sh
USER=user
/bin/su - $USER -c "/usr/bin/offlineimap -c /home/$USER/.offlineimaprc \
-u Quiet -l /var/log/offlineimap/offlineimap.log"
Create the corresponding log directory and set access rights for the user:
mkdir /var/log/offlineimap
chown user.user /var/log/offlineimap
chmod 0700 /var/log/offlineimap
Make the file executable:
chmod +x /etc/cron.hourly/offlineimap
Run the script, if everything is working fine. If yes, check after an hour if the backup is working correctly.