Ambos scripts cargan el mbox como un objeto mbox, y luego van buscando uno a uno los mensajes. Compruebo en el source code que cada vez que leen un mensaje actualizan la cuenta de mensajes.
Pero en mi ordenador no llegan (al menos en 10 minutos) a leer el primer mensaje.
Mi teoría es que el objeto mailbox de python lee el archivo entero (12 gigas en un ordenador con 9 gigas de espacio libre interno), colapsa y no devuelve un puntero válido. O quizá no colapsa, pero no empieza a iterar por los mensajes hasta que los lee *todos*.
Tiradme un ladrillo a la cabeza, pero en el tipo de programación clásico, para el que el objeto mbox está pensado, tú leías línea a línea desde el primer from hasta la siguiente secuencia de dos líneas en blanco, y si la siguiente acababa en from, comprobabas la longitud y seguías. Procesabas los mensajes linealmente en el propio archivo, y el parser funcionaba línea a línea, no a nivel de base de datos.
Que sí, que si lo que quieres es buscar en un mailbox es mejor un objeto, pero si solo quieres dividirlo, con algo secuencial te vale.