It is safe to use the message numbers that are native to the Citadel message store, i.e. the numeric "key" you use to fetch each message.Does Citadel provide an ID for a message relevant to the room its in - which will stick with the message forever?
NNTP differs from IMAP, POP3 etc. in that each message in a grouphas a unique article ID used when fetching and client-side processing.
They're guaranteed to be unique, persistent, and strictly ascending.
They're also guaranteed to be persistent even if a message is moved or copied to another room, although I don't really know of any way you could take advantage of that in NNTP.