Obtener n correos electrónicos más recientes usando IMAP y Python

Estoy buscando devolver los n (probablemente 10) correos electrónicos más recientes de una bandeja de entrada de cuentas de correo electrónico usando IMAP.

Hasta ahora he improvisado:

import imaplib
from email.parser import HeaderParser

M = imaplib.IMAP4_SSL('my.server')
user = 'username'
password = 'password'
M.login(user, password)
M.search(None, 'ALL')
for i in range (1,10):
    data = M.fetch(i, '(BODY[HEADER])')
    header_data = data[1][0][1]
    parser = HeaderParser()
    msg = parser.parsestr(header_data)
    print msg['subject']

Esto está devolviendo los encabezados de correo electrónico bien, pero parece ser una colección semialeatoria de correos electrónicos que recibe, no los 10 más recientes.

Si ayuda, me estoy conectando a un servidor de Exchange 2010. Otros enfoques también son bienvenidos, IMAP me pareció el más apropiado dado que solo quería leer los correos electrónicos y no enviar ninguno.

Respuestas a la pregunta(3)

Su respuesta a la pregunta