The task of this script is to parse new mail in a mailbox, retrieve headers of any new messages and display a notification if new mail has arrived. Intended to be run periodically as a system service, removing the need to keep an email client (such as Thunderbird) constantly open.
- Python 3.8.6 (should work with any Python 3.x.x, but wasn't tested)
isync(e-mail synchroniser)libnotify(notification server)- a notification display
Both isync and libnotify can be replaced with any other tools suitable for
their respective jobs. In such cases the script will require some adaptations.
For now both isync and libnotify commands are hard-coded.
Script depends on several environment variables being set to appropriate values:
HOME(home directory of the user whose mail is being scanned)DISPLAY(X server display, required bynotify-send)DBUS_SESSION_BUS_ADDRESS(also required bynotify-send)
On my system (Arch Linux) DBUS_SESSION_BUS_ADDRESS is set to unix:path=/run/user/1000/bus.
Note that 1000 is the uid of the owner of the mailbox. It can be different on
each installation and for each user of the system. Other values may be
appropriate on other systems.
Although the script may be run manually, it's intended to be run as a system
service using a systemd timer or cron.
In case of systemd service definitions are included. These files should be
installed in /etc/systemd/system and both should be enabled with
$ systemctl enable scanmail.service
$ systemctl enable scanmail.timer
scanmail.service can also be triggered manually at any moment.