1 <?xml version=
"1.0" encoding=
"ISO-8859-1"?>
2 <rss version='
2.0' xmlns:lj='http://www.livejournal.org/rss/lj/
1.0/'
>
4 <title>Petter Reinholdtsen - Entries from March
2014</title>
5 <description>Entries from March
2014</description>
6 <link>http://people.skolelinux.org/pere/blog/
</link>
10 <title>Public Trusted Timestamping services for everyone
</title>
11 <link>http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html
</link>
12 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Public_Trusted_Timestamping_services_for_everyone.html
</guid>
13 <pubDate>Tue,
25 Mar
2014 12:
50:
00 +
0100</pubDate>
14 <description><p
>Did you ever need to store logs or other files in a way that would
15 allow it to be used as evidence in court, and needed a way to
16 demonstrate without reasonable doubt that the file had not been
17 changed since it was created? Or, did you ever need to document that
18 a given document was received at some point in time, like some
19 archived document or the answer to an exam, and not changed after it
20 was received? The problem in these settings is to remove the need to
21 trust yourself and your computers, while still being able to prove
22 that a file is the same as it was at some given time in the past.
</p
>
24 <p
>A solution to these problems is to have a trusted third party
25 "stamp
" the document and verify that at some given time the document
26 looked a given way. Such
27 <a href=
"https://en.wikipedia.org/wiki/Notarius
">notarius
</a
> service
28 have been around for thousands of years, and its digital equivalent is
30 <a href=
"http://en.wikipedia.org/wiki/Trusted_timestamping
">trusted
31 timestamping service
</a
>.
<a href=
"http://www.ietf.org/
">The Internet
32 Engineering Task Force
</a
> standardised how such service could work a
33 few years ago as
<a href=
"http://tools.ietf.org/html/rfc3161
">RFC
34 3161</a
>. The mechanism is simple. Create a hash of the file in
35 question, send it to a trusted third party which add a time stamp to
36 the hash and sign the result with its private key, and send back the
37 signed hash + timestamp. Anyone with the document and the signature
38 can then verify that the document matches the signature by creating
39 their own hash and checking the signature using the trusted third
40 party public key. There are several commercial services around
41 providing such timestamping. A quick search for
42 "<a href=
"https://duckduckgo.com/?q=rfc+
3161+service
">rfc
3161
43 service
</a
>" pointed me to at least
44 <a href=
"https://www.digistamp.com/technical/how-a-digital-time-stamp-works/
">DigiStamp
</a
>,
45 <a href=
"http://www.quovadisglobal.co.uk/CertificateServices/SigningServices/TimeStamp.aspx
">Quo
47 <a href=
"https://www.globalsign.com/timestamp-service/
">Global Sign
</a
>
48 and
<a href=
"http://www.globaltrustfinder.com/TSADefault.aspx
">Global
49 Trust Finder
</a
>. The system work as long as the private key of the
50 trusted third party is not compromised.
</p
>
52 <p
>But as far as I can tell, there are very few public trusted
53 timestamp services available for everyone. I
've been looking for one
54 for a while now. But yesterday I found one over at
55 <a href=
"https://www.pki.dfn.de/zeitstempeldienst/
">Deutches
56 Forschungsnetz
</a
>mentioned in
57 <a href=
"http://www.d-mueller.de/blog/dealing-with-trusted-timestamps-in-php-rfc-
3161/
">a
58 blog by David Müller
</a
>. I then found a good recipe on how to use
60 <a href=
"http://www.rz.uni-greifswald.de/support/dfn-pki-zertifikate/zeitstempeldienst.html
">University
61 of Greifswald
</a
>. The OpenSSL library contain both server and tools
62 to use and set up your own signing service. See the ts(
1SSL),
63 tsget(
1SSL) manual pages for more details. The following shell script
64 demonstrate how to extract a signed timestamp for any file on the disk
65 in a Debian environment:
67 <p
><blockquote
><pre
>
70 url=
"http://zeitstempel.dfn.de
"
71 caurl=
"https://pki.pca.dfn.de/global-services-ca/pub/cacert/chain.txt
"
72 reqfile=$(mktemp -t tmp.XXXXXXXXXX.tsq)
73 resfile=$(mktemp -t tmp.XXXXXXXXXX.tsr)
75 if [ ! -f $cafile ] ; then
76 wget -O $cafile
"$caurl
"
78 openssl ts -query -data
"$
1" -cert | tee
"$reqfile
" \
79 | /usr/lib/ssl/misc/tsget -h
"$url
" -o
"$resfile
"
80 openssl ts -reply -in
"$resfile
" -text
1>&2
81 openssl ts -verify -data
"$
1" -in
"$resfile
" -CAfile
"$cafile
" 1>&2
82 base64
< "$resfile
"
83 rm
"$reqfile
" "$resfile
"
84 </pre
></blockquote
></p
>
86 <p
>The argument to the script is the file to timestamp, and the output
87 is a base64 encoded version of the signature to STDOUT and details
88 about the signature to STDERR. Note that due to
89 <a href=
"http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
742553">a bug
90 in the tsget script
</a
>, you might need to modify the included script
91 and remove the last line. Or just write your own HTTP uploader using
92 curl. :) Now you too can prove and verify that files have not been
95 <p
>But the Internet need more public trusted timestamp services.
96 Perhaps something for
<a href=
"http://www.uninett.no/
">Uninett
</a
> or
97 my work place the
<a href=
"http://www.uio.no/
">University of Oslo
</a
>
103 <title>Video DVD reader library / python-dvdvideo - nice free software
</title>
104 <link>http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</link>
105 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Video_DVD_reader_library___python_dvdvideo___nice_free_software.html
</guid>
106 <pubDate>Fri,
21 Mar
2014 15:
25:
00 +
0100</pubDate>
107 <description><p
>Keeping your DVD collection safe from scratches and curious
108 children fingers while still having it available when you want to see a
109 movie is not straight forward. My preferred method at the moment is
110 to store a full copy of the ISO on a hard drive, and use VLC, Popcorn
111 Hour or other useful players to view the resulting file. This way the
112 subtitles and bonus material are still available and using the ISO is
113 just like inserting the original DVD record in the DVD player.
</p
>
115 <p
>Earlier I used dd for taking security copies, but it do not handle
116 DVDs giving read errors (which are quite a few of them). I
've also
118 <a href=
"http://people.skolelinux.org/pere/blog/Ripping_problematic_DVDs_using_dvdbackup_and_genisoimage.html
">dvdbackup
119 and genisoimage
</a
>, but these days I use the marvellous python library
121 <a href=
"http://bblank.thinkmo.de/blog/new-software-python-dvdvideo
">python-dvdvideo
</a
>
122 written by Bastian Blank. It is
123 <a href=
"http://packages.qa.debian.org/p/python-dvdvideo.html
">in Debian
124 already
</a
> and the binary package name is python3-dvdvideo. Instead
125 of trying to read every block from the DVD, it parses the file
126 structure and figure out which block on the DVD is actually in used,
127 and only read those blocks from the DVD. This work surprisingly well,
128 and I have been able to almost backup my entire DVD collection using
129 this method.
</p
> So far, python-dvdvideo have failed on between
10 and
130 20 DVDs, which is a small fraction of my collection. The most common
132 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
720831">DVDs
133 using UTF-
16 instead of UTF-
8 characters
</a
>, which according to
134 Bastian is against the DVD specification (and seem to cause some
135 players to fail too). A rarer problem is what seem to be inconsistent
136 DVD structures, as the python library
137 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
723079">claim
138 there is a overlap between objects
</a
>. An equally rare problem claim
139 <a href=
"https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=
741878">some
140 value is out of range
</a
>. No idea what is going on there. I wish I
141 knew enough about the DVD format to fix these, to ensure my movie
142 collection will stay with me in the future.
</p
>
144 <p
>So, if you need to keep your DVDs safe, back them up using
145 python-dvdvideo. :)
</p
>
150 <title>Norsk utgave av Alaveteli / WhatDoTheyKnow på trappene
</title>
151 <link>http://people.skolelinux.org/pere/blog/Norsk_utgave_av_Alaveteli___WhatDoTheyKnow_p__trappene.html
</link>
152 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Norsk_utgave_av_Alaveteli___WhatDoTheyKnow_p__trappene.html
</guid>
153 <pubDate>Sun,
16 Mar
2014 09:
30:
00 +
0100</pubDate>
154 <description><p
>Det offentlige Norge har mye kunnskap og informasjon. Men hvordan
155 kan en få tilgang til den på en enkel måte? Takket være et lite
156 knippe lover og tilhørende forskrifter, blant annet
157 <a href=
"http://lovdata.no/dokument/NL/lov/
2006-
05-
19-
16">offentlighetsloven
</a
>,
158 <a href=
"http://lovdata.no/dokument/NL/lov/
2003-
05-
09-
31">miljøinformasjonsloven
</a
>
160 <a href=
"http://lovdata.no/dokument/NL/lov/
1967-
02-
10/
">forvaltningsloven
</a
>
161 har en rett til å spørre det offentlige og få svar. Men det finnes
162 intet offentlig arkiv over hva andre har spurt om, og dermed risikerer en
163 å måtte forstyrre myndighetene gang på gang for å få tak i samme
164 informasjonen på nytt.
<a href=
"http://www.mysociety.org/
">Britiske
165 mySociety
</a
> har laget tjenesten
166 <a href=
"http://www.whatdotheyknow.com/
">WhatDoTheyKnow
</a
> som gjør
167 noe med dette. I Storbritannia blir WhatdoTheyKnow brukt i
168 <a href=
"http://www.mysociety.org/
2011/
07/
01/whatdotheyknows-share-of-central-government-foi-requests-q2-
2011/
">ca
169 15% av alle innsynsforespørsler mot sentraladministrasjonen
</a
>.
170 Prosjektet heter
<a href=
"http://www.alaveteli.org/
">Alaveteli
</A
>, og
171 er takk i bruk en rekke steder etter at løsningen ble generalisert og
172 gjort mulig å oversette. Den hjelper borgerne med å be om innsyn,
173 rådgir ved purringer og klager og lar alle se hvilke henvendelser som
174 er sendt til det offentlige og hvilke svar som er kommet inn, i et
175 søkpart arkiv. Her i Norge holder vi i foreningen NUUG på å få opp en
176 norsk utgave av Alaveteli, og her trenger vi din hjelp med
177 oversettelsen.
</p
>
179 <p
>Så langt er
76 % av Alaveteli oversatt til norsk bokmål, men vi
180 skulle gjerne vært oppe i
100 % før lansering. Oversettelsen gjøres
181 på
<a href=
"https://www.transifex.com/projects/p/alaveteli/
">Transifex,
182 der enhver som registrerer seg
</a
> og ber om tilgang til
183 bokmålsoversettelsen får bidra. Vi har satt opp en test av tjenesten
184 (som ikke sender epost til det offentlige, kun til oss som holder på å
185 sette opp tjenesten) på maskinen
186 <a href=
"http://alaveteli-dev.nuug.no/
">alaveteli-dev.nuug.no
</a
>, der
187 en kan se hvordan de oversatte meldingen blir seende ut på nettsiden.
188 Når tjenesten lanseres vil den hete
189 <a href=
"https://www.mimesbrønn.no/
">Mimes brønn
</a
>, etter
190 visdomskilden som Odin måtte gi øyet sitt for å få drikke i. Den
191 nettsiden er er ennå ikke klar til bruk.
</p
>
193 <p
>Hvis noen vil oversette til nynorsk også, så skal vi finne ut
194 hvordan vi lager en flerspråklig tjeneste. Men i første omgang er
195 fokus på bokmålsoversettelsen, der vi selv har nok peiling til å ha
196 fått oversatt
76%, men trenger hjelp for å komme helt i mål. :)
</p
>
201 <title>Freedombox on Dreamplug, Raspberry Pi and virtual x86 machine
</title>
202 <link>http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html
</link>
203 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Freedombox_on_Dreamplug__Raspberry_Pi_and_virtual_x86_machine.html
</guid>
204 <pubDate>Fri,
14 Mar
2014 11:
00:
00 +
0100</pubDate>
205 <description><p
>The
<a href=
"https://wiki.debian.org/FreedomBox
">Freedombox
206 project
</a
> is working on providing the software and hardware for
207 making it easy for non-technical people to host their data and
208 communication at home, and being able to communicate with their
209 friends and family encrypted and away from prying eyes. It has been
210 going on for a while, and is slowly progressing towards a new test
211 release (
0.2).
</p
>
213 <p
>And what day could be better than the Pi day to announce that the
214 new version will provide
"hard drive
" / SD card / USB stick images for
215 Dreamplug, Raspberry Pi and VirtualBox (or any other virtualization
216 system), and can also be installed using a Debian installer preseed
217 file. The Debian based Freedombox is now based on Debian Jessie,
218 where most of the needed packages used are already present. Only one,
219 the freedombox-setup package, is missing. To try to build your own
220 boot image to test the current status, fetch the freedom-maker scripts
222 <a href=
"http://packages.qa.debian.org/vmdebootstrap
">vmdebootstrap
</a
>
223 with a user with sudo access to become root:
226 git clone http://anonscm.debian.org/git/freedombox/freedom-maker.git \
228 sudo apt-get install git vmdebootstrap mercurial python-docutils \
229 mktorrent extlinux virtualbox qemu-user-static binfmt-support \
231 make -C freedom-maker dreamplug-image raspberry-image virtualbox-image
234 <p
>Root access is needed to run debootstrap and mount loopback
235 devices. See the README for more details on the build. If you do not
236 want all three images, trim the make line. But note that thanks to
<a
237 href=
"https://bugs.debian.org/
741407">a race condition in
238 vmdebootstrap
</a
>, the build might fail without the patch to the
239 kpartx call.
</p
>
241 <p
>If you instead want to install using a Debian CD and the preseed
242 method, boot a Debian Wheezy ISO and use this boot argument to load
243 the preseed values:
</p
>
246 url=
<a href=
"http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
">http://www.reinholdtsen.name/freedombox/preseed-jessie.dat
</a
>
249 <p
>But note that due to
<a href=
"https://bugs.debian.org/
740673">a
250 recently introduced bug in apt in Jessie
</a
>, the installer will
251 currently hang while setting up APT sources. Killing the
252 '<tt
>apt-cdrom ident
</tt
>' process when it hang a few times during the
253 installation will get the installation going. This affect all
254 installations in Jessie, and I expect it will be fixed soon.
</p
>
256 Give it a go and let us know how it goes on the mailing list, and help
257 us get the new release published. :) Please join us on
258 <a href=
"irc://irc.debian.org:
6667/%
23freedombox
">IRC (#freedombox on
259 irc.debian.org)
</a
> and
260 <a href=
"http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss
">the
261 mailing list
</a
> if you want to help make this vision come true.
</p
>
266 <title>How to add extra storage servers in Debian Edu / Skolelinux
</title>
267 <link>http://people.skolelinux.org/pere/blog/How_to_add_extra_storage_servers_in_Debian_Edu___Skolelinux.html
</link>
268 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/How_to_add_extra_storage_servers_in_Debian_Edu___Skolelinux.html
</guid>
269 <pubDate>Wed,
12 Mar
2014 12:
50:
00 +
0100</pubDate>
270 <description><p
>On larger sites, it is useful to use a dedicated storage server for
271 storing user home directories and data. The design for handling this
272 in
<a href=
"http://www.skolelinux.org/
">Debian Edu / Skolelinux
</a
>, is
273 to update the automount rules in LDAP and let the automount daemon on
274 the clients take care of the rest. I was reminded about the need to
275 document this better when one of the customers of
276 <a href=
"http://www.slxdrift.no/
">Skolelinux Drift AS
</a
>, where I am
277 on the board of directors, asked about how to do this. The steps to
278 get this working are the following:
</p
>
282 <li
>Add new storage server in DNS. I use nas-server.intern as the
283 example host here.
</li
>
285 <li
>Add automoun LDAP information about this server in LDAP, to allow
286 all clients to automatically mount it on reqeust.
</li
>
288 <li
>Add the relevant entries in tjener.intern:/etc/fstab, because
289 tjener.intern do not use automount to avoid mounting loops.
</li
>
291 </ol
></p
>
293 <p
>DNS entries are added in GOsa², and not described here. Follow the
294 <a href=
"https://wiki.debian.org/DebianEdu/Documentation/Wheezy/GettingStarted
">instructions
295 in the manual
</a
> (Machine Management with GOsa² in section Getting
298 <p
>Ensure that the NFS export points on the server are exported to the
299 relevant subnets or machines:
</p
>
301 <p
><blockquote
><pre
>
302 root@tjener:~# showmount -e nas-server
303 Export list for nas-server:
306 </pre
></blockquote
></p
>
308 <p
>Here everything on the backbone network is granted access to the
309 /storage export. With NFSv3 it is slightly better to limit it to
310 netgroup membership or single IP addresses to have some limits on the
311 NFS access.
</p
>
313 <p
>The next step is to update LDAP. This can not be done using GOsa²,
314 because it lack a module for automount. Instead, use ldapvi and add
315 the required LDAP objects using an editor.
</p
>
317 <p
><blockquote
><pre
>
318 ldapvi --ldap-conf -ZD
'(cn=admin)
' -b ou=automount,dc=skole,dc=skolelinux,dc=no
319 </pre
></blockquote
></p
>
321 <p
>When the editor show up, add the following LDAP objects at the
322 bottom of the document. The
"/
&" part in the last LDAP object is a
323 wild card matching everything the nas-server exports, removing the
324 need to list individual mount points in LDAP.
</p
>
326 <p
><blockquote
><pre
>
327 add cn=nas-server,ou=auto.skole,ou=automount,dc=skole,dc=skolelinux,dc=no
328 objectClass: automount
330 automountInformation: -fstype=autofs --timeout=
60 ldap:ou=auto.nas-server,ou=automount,dc=skole,dc=skolelinux,dc=no
332 add ou=auto.nas-server,ou=automount,dc=skole,dc=skolelinux,dc=no
334 objectClass: automountMap
337 add cn=/,ou=auto.nas-server,ou=automount,dc=skole,dc=skolelinux,dc=no
338 objectClass: automount
340 automountInformation: -fstype=nfs,tcp,rsize=
32768,wsize=
32768,rw,intr,hard,nodev,nosuid,noatime nas-server.intern:/
&
341 </pre
></blockquote
></p
>
343 <p
>The last step to remember is to mount the relevant mount points in
344 tjener.intern by adding them to /etc/fstab, creating the mount
345 directories using mkdir and running
"mount -a
" to mount them.
</p
>
347 <p
>When this is done, your users should be able to access the files on
348 the storage server directly by just visiting the
349 /tjener/nas-server/storage/ directory using any application on any
350 workstation, LTSP client or LTSP server.
</p
>
355 <title>Hvordan bør RFC
822-formattert epost lagres i en NOARK5-database?
</title>
356 <link>http://people.skolelinux.org/pere/blog/Hvordan_b_r_RFC_822_formattert_epost_lagres_i_en_NOARK5_database_.html
</link>
357 <guid isPermaLink=
"true">http://people.skolelinux.org/pere/blog/Hvordan_b_r_RFC_822_formattert_epost_lagres_i_en_NOARK5_database_.html
</guid>
358 <pubDate>Fri,
7 Mar
2014 15:
20:
00 +
0100</pubDate>
359 <description><p
>For noen uker siden ble NXCs fri programvarelisenserte
361 <a href=
"http://www.nuug.no/aktiviteter/
20140211-noark/
">presentert hos
362 NUUG
</a
> (video
363 <a href=
"https://www.youtube.com/watch?v=JCb_dNS3MHQ
">på youtube
364 foreløbig
</a
>), og det fikk meg til å titte litt mer på NOARK5,
365 standarden for arkivhåndtering i det offentlige Norge. Jeg lurer på
366 om denne kjernen kan være nyttig i et par av mine prosjekter, og for ett
367 av dem er det mest aktuelt å lagre epost. Jeg klarte ikke finne noen
368 anbefaling om hvordan RFC
822-formattert epost (aka Internett-epost)
369 burde lagres i NOARK5, selv om jeg vet at noen arkiver tar
370 PDF-utskrift av eposten med sitt epostprogram og så arkiverer PDF-en
371 (eller enda værre, tar papirutskrift og lagrer bildet av eposten som
372 PDF i arkivet).
</p
>
374 <p
>Det er ikke så mange formater som er akseptert av riksarkivet til
375 langtidsoppbevaring av offentlige arkiver, og PDF og XML er de mest
376 aktuelle i så måte. Det slo meg at det måtte da finnes en eller annen
377 egnet XML-representasjon og at det kanskje var enighet om hvilken som
378 burde brukes, så jeg tok mot til meg og spurte
379 <a href=
"http://samdok.com/
">SAMDOK
</a
>, en gruppe tilknyttet
380 arkivverket som ser ut til å jobbe med NOARK-samhandling, om de hadde
383 <p
><blockquote
>
384 <p
>Hei.
</p
>
386 <p
>Usikker på om dette er riktig forum å ta opp mitt spørsmål, men jeg
387 lurer på om det er definert en anbefaling om hvordan RFC
388 822-formatterte epost (aka vanlig Internet-epost) bør lages håndteres
389 i NOARK5, slik at en bevarer all informasjon i eposten
390 (f.eks. Received-linjer). Finnes det en anbefalt XML-mapping ala den
392 &lt;URL:
<a href=
"https://www.informit.com/articles/article.aspx?p=
32074">https://www.informit.com/articles/article.aspx?p=
32074</a
> &gt;? Mitt
393 mål er at det skal være mulig å lagre eposten i en NOARK5-kjerne og
394 kunne få ut en identisk formattert kopi av opprinnelig epost ved
396 </blockquote
></p
>
398 <p
>Postmottaker hos SAMDOK mente spørsmålet heller burde stilles
399 direkte til riksarkivet, og jeg fikk i dag svar derfra formulert av
400 seniorrådgiver Geir Ivar Tungesvik:
</p
>
402 <p
><blockquote
>
403 <p
>Riksarkivet har ingen anbefalinger når det gjelder konvertering fra
404 e-post til XML. Det står arkivskaper fritt å eventuelt definere/bruke
405 eget format. Inklusive da - som det spørres om - et format der det er
406 mulig å re-etablere e-post format ut fra XML-en. XML (e-post)
407 dokumenter må være referert i arkivstrukturen, og det må vedlegges et
408 gyldig XML skjema (.xsd) for XML-filene. Arkivskaper står altså fritt
409 til å gjøre hva de vil, bare det dokumenteres og det kan dannes et
410 utrekk ved avlevering til depot.
</p
>
412 <p
>De obligatoriske kravene i Noark
5 standarden må altså oppfylles -
413 etter dialog med Riksarkivet i forbindelse med godkjenning. For
414 offentlige arkiv er det særlig viktig med filene loependeJournal.xml
415 og offentligJournal.xml. Private arkiv som vil forholde seg til Noark
416 5 standarden er selvsagt frie til å bruke det som er relevant for dem
417 av obligatoriske krav.
</p
>
418 </blockquote
></p
>
420 <p
>Det ser dermed ut for meg som om det er et lite behov for å
421 standardisere XML-lagring av RFC-
822-formatterte meldinger. Noen som
422 vet om god spesifikasjon i så måte? I tillegg til den omtalt over,
423 har jeg kommet over flere aktuelle beskrivelser (søk på
"rfc
822
424 xml
", så finner du aktuelle alternativer).
</p
>
428 <li
><a href=
"http://www.openhealth.org/xmtp/
">XML MIME Transformation
429 protocol (XMTP)
</a
> fra OpenHealth, sist oppdatert
2001.
</li
>
431 <li
><a href=
"https://tools.ietf.org/html/draft-klyne-message-rfc822-xml-
03">An
432 XML format for mail and other messages
</a
> utkast fra IETF datert
435 <li
><a href=
"http://www.informit.com/articles/article.aspx?p=
32074">xMail:
436 E-mail as XML
</a
> en artikkel fra
2003 som beskriver python-modulen
437 rfc822 som gir ut XML-representasjon av en RFC
822-formattert epost.
</li
>
441 <p
>Finnes det andre og bedre spesifikasjoner for slik lagring? Send
442 meg en epost hvis du har innspill.
</p
>