mirror of
https://github.com/moparisthebest/imapfilter
synced 2024-11-11 20:05:08 -05:00
130 lines
3.8 KiB
Lua
130 lines
3.8 KiB
Lua
|
---------------
|
||
|
-- Options --
|
||
|
---------------
|
||
|
|
||
|
options.timeout = 120
|
||
|
options.subscribe = true
|
||
|
|
||
|
|
||
|
----------------
|
||
|
-- Accounts --
|
||
|
----------------
|
||
|
|
||
|
-- Connects to "imap1.mail.server", as user "user1" with "secret1" as
|
||
|
-- password.
|
||
|
account1 = IMAP {
|
||
|
server = 'imap1.mail.server',
|
||
|
username = 'user1',
|
||
|
password = 'secret1',
|
||
|
}
|
||
|
|
||
|
-- Another account which connects to the mail server using the SSLv3
|
||
|
-- protocol.
|
||
|
account2 = IMAP {
|
||
|
server = 'imap2.mail.server',
|
||
|
username = 'user2',
|
||
|
password = 'secret2',
|
||
|
ssl = 'ssl3',
|
||
|
}
|
||
|
|
||
|
-- Get a list of the available mailboxes and folders
|
||
|
mailboxes, folders = account1:list_all()
|
||
|
|
||
|
-- Get a list of the subscribed mailboxes and folders
|
||
|
mailboxes, folders = account1:list_subscribed()
|
||
|
|
||
|
-- Create a mailbox
|
||
|
account1:create_mailbox('Friends')
|
||
|
|
||
|
-- Subscribe a mailbox
|
||
|
account1:subscribe_mailbox('Friends')
|
||
|
|
||
|
|
||
|
-----------------
|
||
|
-- Mailboxes --
|
||
|
-----------------
|
||
|
|
||
|
-- Get the status of a mailbox
|
||
|
account1.INBOX:check_status()
|
||
|
|
||
|
-- Get all the messages in the mailbox.
|
||
|
results = account1.INBOX:select_all()
|
||
|
|
||
|
-- Get newly arrived, unread messages
|
||
|
results = account1.INBOX:is_new()
|
||
|
|
||
|
-- Get unseen messages with the specified "From" header.
|
||
|
results = account1.INBOX:is_unseen() *
|
||
|
account1.INBOX:contain_from('weekly-news@news.letter')
|
||
|
|
||
|
-- Copy messages between mailboxes at the same account.
|
||
|
results:copy_messages(account1.news)
|
||
|
|
||
|
-- Get messages with the specified "From" header but without the
|
||
|
-- specified "Subject" header.
|
||
|
results = account1.INBOX:contain_from('announce@my.unix.os') -
|
||
|
account1.INBOX:contain_subject('security advisory')
|
||
|
|
||
|
-- Copy messages between mailboxes at a different account.
|
||
|
results:copy_messages(account2.security)
|
||
|
|
||
|
-- Get messages with any of the specified headers.
|
||
|
results = account1.INBOX:contain_from('marketing@company.junk') +
|
||
|
account1.INBOX:contain_from('advertising@annoying.promotion') +
|
||
|
account1.INBOX:contain_subject('new great products')
|
||
|
|
||
|
-- Delete messages.
|
||
|
results:delete_messages()
|
||
|
|
||
|
-- Get messages with the specified "Sender" header, which are older than
|
||
|
-- 30 days.
|
||
|
results = account1.INBOX:contain_field('sender', 'owner@announce-list') *
|
||
|
account1.INBOX:is_older(30)
|
||
|
|
||
|
-- Move messages to the "announce" mailbox inside the "lists" folder.
|
||
|
results:move_messages(account1['lists/announce'])
|
||
|
|
||
|
-- Get messages, in the "devel" mailbox inside the "lists" folder, with the
|
||
|
-- specified "Subject" header and a size less than 50000 octets (bytes).
|
||
|
results = account1['lists/devel']:contain_subject('[patch]') *
|
||
|
account1['lists/devel']:is_smaller(50000)
|
||
|
|
||
|
-- Move messages to the "patch" mailbox.
|
||
|
results:move_messages(account2.patch)
|
||
|
|
||
|
-- Get recent, unseen messages, that have either one of the specified
|
||
|
-- "From" headers, but do not have the specified pattern in the body of
|
||
|
-- the message.
|
||
|
results = ( account1.INBOX:is_recent() *
|
||
|
account1.INBOX:is_unseen() *
|
||
|
( account1.INBOX:contain_from('tux@penguin.land') +
|
||
|
account1.INBOX:contain_from('beastie@daemon.land') ) ) -
|
||
|
account1.INBOX:match_body('.*all.work.and.no.play.*')
|
||
|
|
||
|
-- Mark messages as important.
|
||
|
results:mark_flagged()
|
||
|
|
||
|
-- Get all messages in two mailboxes residing in the same server.
|
||
|
results = account1.news:select_all() +
|
||
|
account1.security:select_all()
|
||
|
|
||
|
-- Mark messages as seen.
|
||
|
results:mark_seen()
|
||
|
|
||
|
-- Get recent messages in two mailboxes residing in different servers.
|
||
|
results = account1.INBOX:is_recent() +
|
||
|
account2.INBOX:is_recent()
|
||
|
|
||
|
-- Flag messages as seen and important.
|
||
|
results:add_flags({ '\\Seen', '\\Flagged' })
|
||
|
|
||
|
-- Get unseen messages.
|
||
|
results = account1.INBOX:is_unseen()
|
||
|
|
||
|
-- From the messages that were unseen, match only those with the specified
|
||
|
-- regular expression in the header.
|
||
|
newresults = results:match_header('^.+MailScanner.*Check: [Ss]pam$')
|
||
|
|
||
|
-- Delete those messages.
|
||
|
newresults:delete_messages()
|