Skip to content

A program to watch an imap mailbox for new emails and launch a custom command upon receiving them

License

Notifications You must be signed in to change notification settings

rakoo/idlewatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

idlewatch should eventually watch the IMAP folder of your choice with the IDLE command and run a custom command when an event appears.

For the moment it scratches my itch: watching the "All Mail" folder of my GMail account, and run OfflineIMAP when a new mail appears.

Why

Polling sucks, and IDLE is the solution. I couldn't make OfflineIMAP's own IDLE work for various reasons, here's my attempt at making it work.

Installation

OfflineIMAP

First you need a proper installation of OfflineIMAP. Here's mine, elided with only the only important parts:

[general]
accounts = GMail

[Account GMail]
localrepository = GMailLocal
remoterepository = GMailRemote

[Repository GMailLocal]
type = Maildir
localfolders = ~/mails
folderfilter = lambda folder : folder not in [\
               "[Gmail].Important",\
               ]

nametrans = lambda folder : folder == 'archive' and '[Gmail]/All Mail' \
                         or folder == 'inbox' and 'INBOX' \
                         or folder == 'spam' and '[Gmail]/Spam' \
                         or folder == 'trash' and '[Gmail]/Trash' \
                         or folder == 'drafts' and '[Gmail]/Drafts' \
                         or folder == 'starred' and '[Gmail]/Starred' \
                         or folder == 'sent' and '[Gmail]/Sent Mail' \
                         or folder

[Repository GMailRemote]
type = Gmail
remoteuser = myuser
remotepass = mypassword
sslcacertfile = /etc/ssl/certs/ca-certificates.crt

nametrans = lambda folder : folder == '[Gmail]/All Mail' and 'archive' \
                         or folder == 'INBOX' and 'inbox' \
                         or folder == '[Gmail]/Spam' and 'spam' \
                         or folder == '[Gmail]/Trash' and 'trash' \
                         or folder == '[Gmail]/Drafts' and 'drafts' \
                         or folder == '[Gmail]/Starred' and 'starred' \
                         or folder == '[Gmail]/Sent Mail' and 'sent' \
                         or folder

You must have a [general] section, and the first of your accounts must be GMail.

If after that you can run

$ offlineimap

in your shell, you're good to go

idlewatch

  • install the Go toolchain
  • compile with
$ go build
  • run it (preferably in the background, with a tmux or with a proper service management)
$ ./idlewatch

About

A program to watch an imap mailbox for new emails and launch a custom command upon receiving them

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages