Правилен ли такой алгоритм?
Я обхожу дерево E4/DATA/domains в поисках файлов .messages.db3.
Для каждого файла:
SELECT MAX(mid) FROM sp_messages WHERE created_t <= {$expiration_timestamp}
Если пусто, старых писем нет. Если не пусто, запоминаю в переменную max_mid.
DELETE FROM sp_messages WHERE mid <= {$max_mid};
VACUUM;
DELETE FROM sp_headers WHERE mid <= {$max_mid};
VACUUM;
DELETE FROM sp_events WHERE mid <= {$max_mid};
VACUUM;
Всё в порядке, ничего не забыл?