On Fri, 25 Aug 2023 at 11:19 +0300, you wrote to me:
AF>> Такой софт должен импортировать сообщения в свою базу, AF>> предназначенную для таких специфичных действий. Либо строить AF>> какой-то свой индекс, например, msgid+from_address:number, чтобы AF>> после пуржинга можно было перестроить индекс и быстро находить AF>> актуальный номер нужного сообщения. SM> Не обязательно. GoldEd же как-то находит при каждом запуске сообщение, SM> на котором ты остановился в прошлый раз?
Голдед использует для этого lastread, в котором точно так же хранится номер сообщения (из спеки не ясно, абсолютный или относительный, но, скорее всего, относительный). И если после пуржинга и упаковки базы нумерация сообщений изменится, то голдед откроет не то сообщение.
Поэтому если нужно гарантированно открывать конкретное сообщение по какому-то уникальному ключу, то логичнее всего использовать в качестве ключа MSGID+OADDRESS+DADDRESS, а чтобы не искать этот ключ по всему JHR, нужно делать свой индекс MSGID+OADDRESS+DADDRESS:RelativeMessageNumber, чтобы сразу прыгать на нужный заголовок (JHR) по индексу (JDX). И после каждой упаковки базы этот свой индекс перестраивать (что должно занимать менее секунды на современном железе).