dotfiles/imapfilter/.imapfilter/config.lua

148 lines
5.3 KiB
Lua

function main()
local fastmail = IMAP {
server = 'imap.fastmail.com',
username = 'maitysanchayan@fastmail.com',
password = get_pwd_fastmail(),
ssl = 'tls1',
}
fastmail.INBOX:check_status()
mails = fastmail.INBOX:select_all()
move_mailing_lists(fastmail, mails)
mails = fastmail.Sent:select_all()
move_mailing_lists(fastmail, mails)
mails = fastmail['Trash']:select_all()
delete_from_trash(fastmail, mails)
mails = fastmail['Spam']:select_all()
move_mailing_lists(fastmail, mails)
local sanchayan = IMAP {
server = 'imap.gmail.com',
username = 'maitysanchayan@gmail.com',
password = get_pwd_sanchayan(),
ssl = 'tls1',
}
sanchayan.INBOX:check_status()
-- sanchayan['[Gmail]/Trash']:check_status()
-- sanchayan['[Gmail]/Spam']:check_status()
mails = sanchayan.INBOX:select_all()
move_mailing_lists(sanchayan, mails)
mails = sanchayan.Sent:select_all()
move_mailing_lists(sanchayan, mails)
mails = sanchayan['[Gmail]/Trash']:select_all()
imap_trash = sanchayan['Trash']:select_all()
move_to_gmail_trash(sanchayan, imap_trash, '[Gmail]/Trash')
delete_from_trash(sanchayan, mails)
mails = sanchayan['[Gmail]/Spam']:select_all()
move_mailing_lists(sanchayan, mails)
end
function move_mailing_lists(account, mails)
move_if_to_contains(account, mails, "gstreamer-devel@lists.freedesktop.org", "gstreamer")
move_if_from_contains(account, mails, "gstreamer-devel@lists.freedesktop.org", "gstreamer")
move_if_cc_contains(account, mails, "gstreamer-devel@lists.freedesktop.org", "gstreamer")
move_if_to_contains(account, mails, "gstreamer-embedded@lists.freedesktop.org", "gstreamer")
move_if_from_contains(account, mails, "gstreamer-embedded@lists.freedesktop.org", "gstreamer")
move_if_cc_contains(account, mails, "gstreamer-embedded@lists.freedesktop.org", "gstreamer")
move_if_to_contains(account, mails, "pulseaudio-discuss@lists.freedesktop.org", "pulseaudio")
move_if_from_contains(account, mails, "pulseaudio-discuss@lists.freedesktop.org", "pulseaudio")
move_if_cc_contains(account, mails, "pulseaudio-discuss@lists.freedesktop.org", "pulseaudio")
-- Bluetooth
move_if_to_contains(account, mails, "linux-bluetooth@vger.kernel.org", "bluez")
move_if_from_contains(account, mails, "linux-bluetooth@vger.kernel.org", "bluez")
move_if_cc_contains(account, mails, "linux-bluetooth@vger.kernel.org", "bluez")
-- Linux Kernel
move_if_to_contains(account, mails, "lists.infradead.org", "Linux Kernel")
move_if_from_contains(account, mails, "lists.infradead.org", "Linux Kernel")
move_if_cc_contains(account, mails, "lists.infradead.org", "Linux Kernel")
move_if_to_contains(account, mails, "vger.kernel.org", "Linux Kernel")
move_if_from_contains(account, mails, "vger.kernel.org", "Linux Kernel")
move_if_cc_contains(account, mails, "vger.kernel.org", "Linux Kernel")
-- U boot
move_if_to_contains(account, mails, "u-boot@lists.denx.de", "Uboot")
move_if_from_contains(account, mails, "u-boot@lists.denx.de", "Uboot")
move_if_cc_contains(account, mails, "u-boot@lists.denx.de", "Uboot")
-- Jobs
move_if_from_contains(account, mails, "monster.com","Jobs")
move_if_from_contains(account, mails, "naukri.com","Jobs")
move_if_to_contains(account, mails, "gitlab@gitlab.freedesktop.org", "FreedesktopGitlab")
move_if_from_contains(account, mails, "gitlab@gitlab.freedesktop.org", "FreedesktopGitlab")
-- IETF
move_if_to_contains(account, mails, "ietf.org", "ietf")
move_if_from_contains(account, mails, "ietf.org", "ietf")
move_if_cc_contains(account, mails, "ietf.org", "ietf")
end
function move_if_subject_contains(account, mails, subject, mailbox)
filtered = mails:contain_subject(subject)
filtered:move_messages(account[mailbox]);
end
function move_if_to_contains(account, mails, to, mailbox)
filtered = mails:contain_to(to)
filtered:move_messages(account[mailbox]);
end
function move_if_from_contains(account, mails, from, mailbox)
filtered = mails:contain_from(from)
filtered:move_messages(account[mailbox]);
end
function move_if_cc_contains(account, mails, cc, mailbox)
filtered = mails:contain_cc(cc)
filtered:move_messages(account[mailbox]);
end
function move_to_gmail_trash(account, mails, mailbox)
filtered = mails:select_all()
filtered:move_messages(account[mailbox])
end
function delete_mail_from(account, mails, from)
filtered = mails:contain_from(from)
filtered:delete_messages()
end
function delete_mail_if_subject_contains(account, mails, subject)
filtered = mails:contain_subject(subject)
filtered:delete_messages()
end
function delete_from_trash(account, mails)
filtered = mails:select_all()
filtered:delete_messages()
end
-- Utility function to get IMAP password from file
function get_imap_password(file)
local home = os.getenv("HOME")
local file = home .. "/" .. file
local str = io.open(file):read()
return str;
end
function get_pwd_fastmail()
local cmd = "pass show apppass/fastmail"
local fd = io.popen(cmd, 'r')
pass = fd:read("*a")
fd:close()
return pass;
end
function get_pwd_sanchayan()
local cmd = "pass show apppass/sanchayan"
local fd = io.popen(cmd, 'r')
pass = fd:read("*a")
fd:close()
return pass;
end
main() -- Call the main function