function main() 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) local asymptotic = IMAP { server = 'imap.gmail.com', username = 'sanchayan@asymptotic.io', password = get_pwd_asymptotic(), ssl = 'tls1', } asymptotic.INBOX:check_status() -- asymptotic['[Gmail]/Trash']:check_status() -- asymptotic['[Gmail]/Spam']:check_status() mails = asymptotic.INBOX:select_all() move_mailing_lists(asymptotic, mails) mails = asymptotic.Sent:select_all() move_mailing_lists(asymptotic, mails) mails = asymptotic['[Gmail]/Trash']:select_all() imap_trash = asymptotic['Trash']:select_all() move_to_gmail_trash(asymptotic, imap_trash, '[Gmail]/Trash') delete_from_trash(asymptotic, mails) mails = asymptotic['[Gmail]/Spam']:select_all() move_mailing_lists(asymptotic, 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_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 function get_pwd_asymptotic() local cmd = "gpg2 --use-agent --quiet --batch --decrypt ~/.asymptotic.gpg" local fd = io.popen(cmd, 'r') pass = fd:read("*a") fd:close() return pass; end main() -- Call the main function