dotfiles/imapfilter/.imapfilter/config.lua
Sanchayan Maity 2b89f36dc5 Add support for our now primary fastmail account
While at it, add some macros to mutt and clean up shell script with
shellcheck.

We also stop running imapfilter for anything but our own accounts.
2021-02-13 22:42:20 +05:30

142 lines
5.2 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()
move_mailing_lists(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")
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 = "gpg2 --use-agent --quiet --batch --decrypt ~/.fastmail.gpg"
local fd = io.popen(cmd, 'r')
pass = fd:read("*a")
fd:close()
return pass;
end
function get_pwd_sanchayan()
local cmd = "gpg2 --use-agent --quiet --batch --decrypt ~/.sanchayan.gpg"
local fd = io.popen(cmd, 'r')
pass = fd:read("*a")
fd:close()
return pass;
end
main() -- Call the main function