OT: Extracting Subject Lines From IMAP Mailbox
Looking for a command-line way to extract only the Subject lines from my mailbox on my ISP‘s IMAP server, without actually downloading/modifying the contents of the mailbox. Sort of the remote equivalent of locally doing:
$ grep ^Subject /var/spool/mail/mymailbox > subjectlistfile
Thanks.
4 thoughts on - OT: Extracting Subject Lines From IMAP Mailbox
http://sourceforge.net/projects/imaputils/files/ ?
I guess you’ll at least need to download and parse the email headers.
HTH
Lucian
Thanks. Don’t see this in the usual repos, but I do see the epel repo has something called “uw-imap-utils,” which seem to date to 2007. I’ll take a look at both.
I do this sort of thing with Python and its ‘imaplib’
Something like this will return a list of all unseen messages in the security folder where Subject contains ‘Sec-Blocked’.
import imaplib conn = imaplib.IMAP4(‘example.com’)
c, d = conn.login(‘username’, ‘password’)
c, n = conn.select(‘INBOX.security’)
c, s = conn.uid(‘search’, None, ‘(UNSEEN HEADER SUBJECT Sec-Blocked)’)
msgnumbers = s[0].split()
unseenUIDs = set(msgnumbers) # using set for later manipulations for uid in sorted(unseenUIDs)
# do something for each uid
# done
telnet (or use openssl) to connect to the imap port.
eg
telnet localhost imap
a1 LOGIN username password
a2 SELECT INBOX
a3 FETCH 1:* ENVELOPE
a4 logout
The “FETCH” command will give you output like:
* 1 FETCH (ENVELOPE (“Mon, 16 Feb 2015 13:50:31 -0500” “[CentOS] OT: Extracting Subject Lines from IMAP Mailbox” ((“Tim Evans” NIL “tkevans” “tkevans.com”)) ((NIL NIL “CentOS-bounces” “CentOS.org”)) ((“CentOS mailing list” NIL “CentOS” “CentOS.org”)) ((“CentOS mailing list” NIL “CentOS” “CentOS.org”)) NIL NIL NIL “<54E23BF7.7020009@tkevans.com>“))
* 2 FETCH (ENVELOPE (“Mon, 16 Feb 2015 19:33:43 +0000 (GMT)” “Re: [CentOS] OT: Extracting Subject Lines from IMAP Mailbox” ((“Nux!” NIL “nux” “li.nux.ro”)) ((NIL NIL “CentOS-bounces” “CentOS.org”)) ((“CentOS mailing list” NIL “CentOS” “CentOS.org”)) ((“CentOS mailing list” NIL “CentOS” “CentOS.org”)) NIL NIL “<54E23BF7.7020009@tkevans.com>” “<1705307878.67382.1424115223759.JavaMail.zimbra@li.nux.ro>“))
From RFC 3501 we can be sure of the order of the data:
The fields of the envelope structure are in the following
order: date, subject, from, sender, reply-to, to, cc, bcc,
in-reply-to, and message-id. The date, subject, in-reply-to,
and message-id fields are strings. The from, sender, reply-to,
to, cc, and bcc fields are parenthesized lists of address
structures.