**** VERIFIER SI QMAIL-STMPD AJOUTE UN "." DANS LE FICHIER SPOOLE OU PAS **** On crée dans reisermess/xxx (tester si ça doit etre splitté ou non) xxx est composé de : <message> <0> <0> u<uid> <0> p<pid> <0> <F>from <0> <T>to <0> <len> RsrSmTp0 puis un lien dans reisertodo/xxx (idem) lsmtp-fsck : - On regarde tout ce qui se trouve dans reisermess pour voir s'il existe aussi un lien dans reisertodo. - Si ce n'est pas le cas, on check les fichiers pour voir s'ils sont complets : . On check RsrSmTp0 . puis <len> et si <0> <0> <u> s'y trouve bien . Si on est parano, on peut aussi checker \n.\n avant - S'il s'agit d'un fichier valide : lien dans reisertodo - S'il y a un intd, et un message valide, on vire l'intd [label1] - Si le fichier n'est pas valide, on vérifie si on a pas foiré à [label2] : intd crée, mais message toujours dans reisertodo. Dans ce cas, il faut retrouver les deux zéros de la fin et placer l'intd après, puis virer le fichier intd. - Si le fichier est à la fois dans mess et dans reisermess, on s'est planté en [label3] ou [label4]. Pour revenir avant, on vire le lien dans mess, on recrée le message d'après l'intd. - S'il ya à la fois un reisertodo et un todo, on s'est planté en label5. On vire le todo et on passe à l'étape précédente. lsmtp-send On regarde tout ce qui se trouve dans reisertodo et pour chaque fichier ; - On vérifie le trailer (RsrSmTp0), on récupère l'intd. [vérifier ce qu'il se passe en cas de crash ici] - On copie l'intd dans le répertoire intd, fsync [label1] - On ftruncate() le message, pas de fsync. [label2] - On fait un lien dans mess [label3] - On fait un lien dans todo [label4] - On retire le reisertodo [label5]