Før 2021 fikk jeg ideen om å bruke Nikita og Noark 5 Tjenestegrensesnitt (N5TG) som lagring for en eposttjeneste, og tittet litt på IMAP-protokollen for å se hva som måtte lages for å presentere epost lagret i arkivet direkte ut til epostklienter via IMAP-protokollen. Jeg laget et utkast, men fikk aldri tid til å fullføre en fungerende prototype.
Jeg tok opp tråden nylig, og satte sludderboten min i gang med å utvide skissen fra den gang til et fullt ut testet konsept, og er veldig glad for å kunne melde at det nå ser ut til å virke.
Resultatet ligger i git-depotet noark5-tester som imap-shim med tilhørende dokumentasjon og testprogram. Se <URL: https://codeberg.org/noark/noark5-tester >. IMAP-protokollen er ikke kryptert (TLS-forsøk avvises), og en logger inn mot IMAP med gyldig Noark 5-bruker (kun HTTP Basic Auth er testet så langt).
Det hele er testet med mutt og 5 epost importert inn i Nikita med import-email, og det hele viser frem de importerte epostene i mutt som om de var lagret i en hvilken som helst annen IMAP-tjeneste. Har ikke testet så mye mer enn dette. Testimplementasjonen har ikke stabil nummerering av meldingene, og finner epost på en forholdsvis lite effektiv måte (traverserer rekursivt hele arkivstrukturen fra toppnivå arkiv-instanser ned til dokumentobjekt for å finne arkiverte filer med MIME-type message/rfc822, tilordner meldingsnummer fortløpende), slik at imap-klienter nok vil bli forvirret når nye epost legges til i arkivet. Poenget er at dette ikke i dag er egnet til å erstatte en IMAP-tjener, men derimot demonstrerer at det er mulig å bruke N5TG som meldingslager.
Jeg tenker neste steg er å teste ut støtte for å flytte epost fra annen epostboks (for eksempel lokal maildir eller annen IMAP-tjener) inn i Nikita, som alternativ fremgangsmåte for å arkivere epost der epostklient brukes direkte til å opprette arkivdokumenter. Får se om jeg blir inspirert til å gjøre dette før det går fem nye år. :)