function main() local sanchayan = IMAP { server = 'imap.gmail.com', username = 'maitysanchayan@gmail.com', password = get_pwd_sanchayan(), ssl = 'tls1', } -- Make sure the account is configured properly sanchayan.INBOX:check_status() -- sanchayan['[Gmail]/Trash']:check_status() -- sanchayan['[Gmail]/Spam']:check_status() -- Get all mail from INBOX mails = sanchayan.INBOX:select_all() -- Move mailing lists from INBOX to correct folders move_mailing_lists(sanchayan, mails) -- Get all mail from Sent Mail mails = sanchayan.Sent:select_all() -- Move mailing lists from Sent mail to correct folders move_mailing_lists(sanchayan, mails) -- Get all mail from trash mails = sanchayan['[Gmail]/Trash']:select_all() imap_trash = sanchayan['Trash']:select_all() -- Move mailing lists from trash to correct folders move_to_gmail_trash(sanchayan, imap_trash, '[Gmail]/Trash') delete_from_trash(sanchayan, mails) -- Get all mail from spam mails = sanchayan['[Gmail]/Spam']:select_all() -- Move mailing lists from spam to correct folders 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") -- 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") 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 main() -- Call the main function