Mail Client
The source material this series draws on covers Thunderbird with a stack of extensions to add calendar support, CardDAV contacts, OpenPGP encryption, and Sieve filter management. Evolution includes all of these natively. It is a heavier application than a mail-only client, but for a self-hosted setup where the server provides IMAP, CalDAV, CardDAV, and Sieve, having everything in one well-integrated application is the cleaner arrangement.
Evolution is a GNOME application. It runs well on KDE Plasma with no issues beyond using GTK styling rather than Qt. The functionality is unaffected by the desktop environment.
Installation
Evolution is available in the standard Ubuntu repositories:
sudo apt install evolution evolution-plugins
The evolution-plugins package adds useful extensions including the quota display, mail notification improvements, and the S/MIME support plugins.
For EWS (Exchange Web Services) support, if you need to connect to a Microsoft Exchange server alongside your self-hosted mail:
sudo apt install evolution-ews
Trusting your internal CA
Evolution uses the system certificate store for TLS validation, the same as Brave. If you have already added your root CA to the system trust store in the browser section, no further action is needed here.
If not:
sudo cp /path/to/your-root-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Restart Evolution after updating. Internal mail server certificates signed by your CA will then be trusted without warnings.
Adding your mail account
Open Evolution. The first-run assistant appears automatically. If it does not, go to File > New > Mail Account.
Identity
Enter your name and email address. These appear in the From field of outgoing mail.
Receiving mail (IMAP)
Set the server type to IMAP. Configure:
- Server:
mail.yourdomain.net - Port:
993 - Encryption: TLS on a dedicated port
- Authentication: Plain (over TLS this is secure)
- Username: your full email address
Check the SSL/TLS certificate from the server. If your internal CA is correctly trusted, the certificate should validate without a warning.
Sending mail (SMTP)
Configure the outgoing server:
- Server:
mail.yourdomain.net - Port:
587(submission port) - Encryption: STARTTLS
- Authentication: Plain
- Username: your full email address
Account options
Set the account name to something descriptive if you have multiple accounts. Set the default account for new messages.
Under Advanced settings, set the refresh interval to something reasonable: every 5 minutes for a mail server on your local network is fine.
IMAP folder subscriptions
Once the account is connected, Evolution will list all available IMAP folders. Subscribe to the ones you use regularly so they appear in the folder list and are checked for new mail.
Right-click the account in the folder pane and select Manage Subscriptions. Subscribe to Inbox, Sent, Drafts, Trash, Spam, and any other folders your mail server has configured.
Sieve filter management
If your mail server supports Sieve (which it should, once the server section of this series is complete), Evolution can manage Sieve scripts directly.
Go to Edit > Plugins and enable the Mail Filters plugin if not already enabled.
For direct Sieve script editing, install the Sieve editor:
sudo apt install sieve-connect
Or use the built-in filter interface in Evolution at Edit > Message Filters, which creates server-side Sieve rules without requiring manual script editing. The filters created here are uploaded to the IMAP server and run there, meaning mail is sorted before Evolution even downloads it.
CalDAV calendar integration
Evolution’s calendar connects directly to a CalDAV server, such as the Nextcloud instance built in the server section.
Go to File > New > Calendar. Configure:
- Type: CalDAV
- Name: a descriptive name for this calendar
- URL:
https://nextcloud.yourdomain.net/remote.php/dav/calendars/yourusername/personal/ - Username: your Nextcloud username
- Colour: your preference
Evolution will prompt for the password. Store it in GNOME Keyring (which Evolution uses automatically on Kubuntu even though it is a GNOME application) or enter it each session.
To find the correct CalDAV URL, log into Nextcloud, go to Calendar, click the three-dot menu on any calendar, and select Copy private link.
Add additional calendars for shared calendars or different categories by repeating the process with different CalDAV URLs.
CardDAV contacts integration
Go to File > New > Address Book. Configure:
- Type: CardDAV
- Name: a descriptive name
- URL:
https://nextcloud.yourdomain.net/remote.php/dav/addressbooks/yourusername/contacts/ - Username: your Nextcloud username
The address book syncs contacts from Nextcloud. Changes made in Evolution sync back to the server and are available on all devices connected to the same CardDAV source.
To find the correct CardDAV URL, log into Nextcloud, go to Contacts, click the three-dot menu, and select Copy link.
Tasks integration
Go to File > New > Task List. Configure the same CalDAV URL as the calendar (Nextcloud’s task lists use the CalDAV protocol). Nextcloud’s default tasks calendar URL is:
https://nextcloud.yourdomain.net/remote.php/dav/calendars/yourusername/tasks/
OpenPGP signing and encryption
Evolution has native OpenPGP support via GnuPG, with no extension required. It uses the GPG agent configured earlier in this series, including the Yubikey if your signing subkey is on hardware.
Go to Edit > Preferences > Mail Accounts, select your account, and click Edit. Navigate to the Security tab.
PGP/GPG Key ID: Enter your key ID or let Evolution search by email address. Click Select to choose from available keys in your keyring.
Enable the settings that match your preference:
- Always sign outgoing messages when using this account: Enabling this signs all outgoing mail with your GPG key. Recipients who have your public key can verify the signature. Recommended.
- Always encrypt to myself when sending encrypted mail: Ensures you can read mail you send even after the original is delivered. Enable this.
- Always trust keys in my keyring when encrypting: Avoids prompts for each recipient whose key you have imported.
The first time you send a signed message, the GPG agent will prompt for your key passphrase or a Yubikey touch if the key is on hardware.
S/MIME certificate integration
If you have a personal S/MIME certificate from the PIV section of this series, or from your internal CA, configure it in Evolution for S/MIME signing and encryption alongside OpenPGP.
On the same Security tab as above, under S/MIME:
Signing certificate: Click Select and choose your personal S/MIME certificate. This is the client certificate loaded into your PIV slot or imported from your CA.
Encryption certificate: The same certificate is typically used for both signing and encryption.
S/MIME and OpenPGP coexist in Evolution. You can choose per-message which to use, or configure defaults per account.
IMAP quota display
Evolution can display your IMAP mailbox quota in the status bar. Go to Edit > Plugins and enable the IMAP Quota plugin. The quota usage appears in the lower right corner of the main window, useful for keeping an eye on mailbox size on a self-hosted server with defined storage limits.
Notification integration on KDE Plasma
Evolution’s mail notifications use the GNOME notification system by default, which works on KDE Plasma but may look out of place. To integrate notifications more cleanly with the KDE notification system:
sudo apt install evolution-plugins-experimental
Then in Edit > Plugins, enable the “Send Desktop Notifications” plugin. Notifications will appear using the system notification daemon, which on Kubuntu routes through KDE’s notification system.
Spam filtering integration
If your mail server runs SpamAssassin or similar (covered in the server section), spam will arrive in the Spam/Junk folder already sorted. Configure Evolution to check the Junk folder:
Right-click the Junk folder in the folder pane and select Properties. Enable “Check for New Mail in this Folder”. This ensures Evolution polls the Junk folder and shows unread counts for anything that might have been incorrectly classified.
For training the spam filter from Evolution, right-click any message and select Mark as Junk or Mark as Not Junk. If your mail server supports the Bayes learning feedback loop (via IMAP flags or a training address), this signals the server-side filter.
Backup
Evolution stores its data in ~/.local/share/evolution/ and its configuration in ~/.config/evolution/. Both are included in the user data backup configured earlier in this series via the home directory backup. No additional configuration is needed.
After the first successful sync of mail, calendars, and contacts, verify these directories contain data:
du -sh ~/.local/share/evolution/
du -sh ~/.config/evolution/
Both should show non-zero sizes confirming the data is present and will be captured by the daily backup.
The Evolution data directory can grow large for accounts with significant mail history. Check
~/.local/share/evolution/size periodically and consider whether local message caching settings (Edit > Preferences > Mail Accounts > Edit > Receiving Options > Message Storage) need tuning for your available disk space.