Sanchayan Maity
2b89f36dc5
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.
142 lines
5.2 KiB
Lua
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
|