Projects & Stories

IMAP filtering for a remote mail server

Today I searched for a simple imap-filter-tool for my hosted mail server.

I found following tool written in C:

IMAPFilter is a mail filtering utility. It connects to remote mail servers using the Internet Message Access Protocol (IMAP), sends searching queries to the server and processes mailboxes based on the results. It can be used to delete, copy, move, flag, etc. messages residing in mailboxes at the same or different mail servers. The 4rev1 and 4 versions of the IMAP protocol are supported.

GitHub: https://github.com/lefcha/imapfilter

I had some smaller issues while compiling it, but afterwards the configuration was pretty simple.

If you have problems with finding lua.h header and already installed all dev-libraries you should think about adjusting the Makefile in src/Makefile:

@@ -9,14 +9,14 @@ MYLDFLAGS =
 MYLIBS =

 INCDIRS =
-LIBDIRS =
+LIBDIRS = -L /usr/lib

-LIBLUA = -llua
+LIBLUA = -llua5.2
 LIBPCRE = -lpcre
 LIBSSL = -lssl
 LIBCRYPTO = -lcrypto

-CFLAGS = -Wall -Wextra -O -DCONFIG_SHAREDIR='"$(SHAREDIR)"' $(INCDIRS) $(MYCFLAGS)
+CFLAGS = -I/usr/include/lua5.2 -Wall -Wextra -O -DCONFIG_SHAREDIR='"$(SHAREDIR)"' $(INCDIRS) $(MYCFLAGS)
 LDFLAGS = $(LIBDIRS) $(MYLDFLAGS)
 LIBS = -lm $(LIBLUA) $(LIBPCRE) $(LIBSSL) $(LIBCRYPTO) $(MYLIBS)

Well, the worst part is over! If you installed imapfilter globally you should be able to execute it and specify a lua config file:

options.timeout = 120  
options.subscribe = true

server = IMAP {  
  server = 'remote.host',
  username = 'lukas@remote.host',
  password = 's3cr3t'
}

github = server.INBOX:contain_from('notifications@github.com') +  
         server.INBOX:contain_from('noreply@github.com')

github:move_messages(gandi['INBOX/Git/Github'])  

Black magic is over! After first-time-execution it'll prompt you for certificate validation. After adding the correct certificate permanently you can add it to a cron-job or something similar.

Now every mail from notifications@github.com and noreply@github.com will be moved to INBOX/Git/Github!

Happy filtering!