Backup your Outlook 365 mailbox
Infrastructure Estimated reading time: ~3 minutes
If you want to backup the emails from your Microsoft Office 365 mailbox you can utilize the execellent OfflineIMAP program. In this article I will outline how you can configure and use OfflineIMAP for this specific use case.
Install OfflineIMAP
If you are running a recent Linux distribution OfflineIMAP is likely to be included
in the standard software repositories of your distribution. Suppose you are running
Kubuntu. Then you can just use the command sudo apt install offlineimap
to install OfflineIMAP:
# show info about used linux distribution
user@pc:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.04
DISTRIB_CODENAME=hirsute
DISTRIB_DESCRIPTION="Ubuntu 21.04"
user@pc:~$
# install offlineimap
user@pc:~$ sudo apt install offlineimap
[sudo] password for user:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
offlineimap is already the newest version (7.3.3+dfsg1-1+0.0~git20210218.76c7a72+dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
user@pc:~$
Installation instructions for other operating systems can be found over at the website of OfflineIMAP.
Configure OfflineIMAP
You can tell OfflineIMAP which mailbox you want to backup by editing
the file .offlineimaprc
in your home folder:
# file ~/.offlineimaprc
# documentation:
# https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf
# offlineimap command docs:
# http://www.offlineimap.org/doc/offlineimap.html
# overview of docs relate to offlineimap:
# https://www.offlineimap.org/documentation.html
[general]
accounts = outlook365
[Account outlook365]
localrepository = outlook365-local
remoterepository = outlook365-remote
maxsyncaccounts = 1
[Repository outlook365-local]
type = Maildir
localfolders = ~/offlineimap-targets/outlook365
[Repository outlook365-remote]
type = IMAP
remoteuser = bill@mycompany.com # set your username / email here
remotepass = mysecretpassword # set your password here
remotehost = outlook.office365.com
remoteport = 993
ssl = yes
realdelete = no
sync_deletes = no
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
# only backup the folders listed here
folderfilter = lambda folder: folder in ['INBOX', 'Drafts', 'Sent Items' ]
By default OfflineIMAP will backup all IMAP folders. When using Outlook 365 there are IMAP folders which contain data other than emails. Those IMAP folders are hidden to the user but OfflineIMAP will try to synchronize them if not configured otherwise. This might lead to problems. Therefore it is advised to provide an explicit list of IMAP folders you want OfflineIMAP to synchronize.
By the way. If you want to synchronize the emails from the Sent Items
folder into a
folder with another name (e.g. sent
) this is also possible. See
here
and here
for further details.
Run OfflineIMAP
After you have created the configuration file ~/.offlineimaprc
you can
start the backup process by executing the offlineimap
command. Your emails
will then be backuped into the folder ~/offlineimap-targets/outlook365
.
One of the nice things about OfflineIMAP is that you can run OfflineIMAP again any time later and OfflineIMAP will only fetch the emails which you have received since the last backup run and update the backup accordingly.
OfflineIMAP and other email providers
OfflineIMAP can also be used for other email providers of course. It uses IMAP (Internet Message Access Protocol) to access the mails stored on the servers of your mail provider. IMAP is the defacto standard for such use cases.
A note about Netcup (advertisement)
Netcup is a German hosting company. Netcup offers inexpensive, yet powerfull web hosting packages, KVM-based root servers or dedicated servers for example. Using a coupon code from my Netcup coupon code web app you can even save more money (6$ on your first purchase, 30% off any KVM-based root server, ...).