PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cyrus Mail Backup rücksichern



Ghostmaster
26.01.04, 16:56
Hallo,

mir ist meine HDD eingegangen, habe aber ein Backup meiner Cyrus IMAP Files auf einer eigen HDD gemacht.

Wie kann ich die Daten jetzt wieder rücksichern das ich Sie über Squirrelmail wieder öffnen kann??

habe keine scripte dafür gefunden kennt einer von euch welche?

Danke
für eure Hilfe
lg Martin

stefaan
26.01.04, 23:40
Servus!

Dazu brauchst du die Mailboxen (normal unter /var/spool/imap/*/user/...) und die Verzeichnisstruktur der Mailboxen (mailboxes.db, normal unter /var/lib/imap).

Einspielen, mit dem User cyrus reconstruct -rf mailbox (rekursiv, f bindet die Dateien aus dem Dateisystem ein).

Eine halbwegs aktuelle mailboxes.db solltest du schon haben, sonst wirds anstrengend. Bis jetzt habe ich nur einzelne Mailboxen wiederhergestellt, das ist mit reconstruct gut gegangen.
Aber den ganzen Server will ich nicht unbedingt neu einspielen, obwohl ein tägliches komplettes Backup vorhanden ist ;)

Grüße, Stefan

Joke17
14.03.04, 00:41
servus,

da hab ich auch mal gerade ne frage zu. hab schon mit reconstruct mein glück versucht. allerdings muss ich gestehen, dass ich mich natürlich vorher nicht genug erkundigt habe und somit hab ich nur den /var/spool/cyrus/user ordner gesichert, wo halt die mailboxen drin sind mit den ganzen mails.
hab ich jetzt hinterher die möglichkeit, die mails wieder zurück zu bekommen? wäre schade wenn nicht.

danke
tImo

stefaan
14.03.04, 09:07
Servus!

Naja, ich habs schon beschrieben:
Hast du irgendwo noch eine alte mailboxes.db? Wäre ganz gut.

Wenn nicht, mit "su cyrus" den Benutzer wechseln und mit "reconstruct -rf (user.name)" versuchen.
Cyrus vorher stoppen :D

Grüße, Stefan

steve-bracket
14.03.04, 09:28
Original geschrieben von stefaan
Servus!

Dazu brauchst du die Mailboxen (normal unter /var/spool/imap/*/user/...) und die Verzeichnisstruktur der Mailboxen (mailboxes.db, normal unter /var/lib/imap).

Einspielen, mit dem User cyrus reconstruct -rf mailbox (rekursiv, f bindet die Dateien aus dem Dateisystem ein).



Hi

Meines Wissens sind in der mailboxes.db sämtliche Ordner der Mailbox(en) erfasst (user1.abc, user2.xyz, user3.myorder usw....).
Wenn diese vorhanden ist dürfte ein Backup keine Problem sein.
Reconstruct macht ja nichts anderes als in die *.db zu schauen und für die dort angeführten Ordner die darin liegenden Mails einzubinden.
Wobei ich jetzt nicht weiß in welchem File/DB diese Information steht, bzw. welche Aktionen reconstruct durchführt.
Das Thema Backup allgemein ist bei Cyrus aber wohl eher heikel.
(im Vergleich zu anderen Imap-Servern)

Gruß
Steve

Joke17
14.03.04, 12:53
ja ich merk das wohl.
die datenbanken sind ja halt mein problem, denn genau die hab ich natürlich nicht gesichert.
man, sonst shit... alles meine mails wech, ich fass es nicht.

naja, trotzdem danke.
ich werd mich dann nu erstmal nach nem anderen imapserver umschaun.

mfg
tImo

singmai
09.07.12, 22:39
Hallo, vielleicht komme ich ja ein wenig spät.

root@home:/var/spool/cyrus# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.5 (squeeze)
Release: 6.0.5
Codename: squeeze
root@home:/var/spool/cyrus# uname -a
Linux home 2.6.32-5-686 #1 SMP Sun May 6 04:01:19 UTC 2012 i686 GNU/Linux

"reconstruct" wollte nicht funktionieren, die Option -f wurde reklamiert. Ein älteres backup enthielt keine Datenbank mehr. Also habe ich mir ein shell-script geschrieben:


#!/bin/bash

CD=/usr/sbin/cyrdeliver
std=/home/cyrus_old/mail
# std=/home/mail_o_1311806062

workdir () {
for i in `ls -1 $3 | sort -n`; do
if test -d $3/$i; then
workdir $1 $2.$i $3/$i
elif echo $i | grep "[1-9].*[.]" 2>&1 > /dev/null; then
su $1 -c "cat $3/$i | $CD -a $1 -m $2 && echo ok"
echo "$3/$i finished"
fi
# echo "$i : $1 : $2 : $3"
done
}

n=97
while test $n -le 122; do
f=$(echo -e \\`printf "x%x" $n`)
# echo $f
let n=$n+1
if test x`ls -1 $std/$f` = xuser; then
for i in `ls -1 $std/$f/user`; do
workdir $i user.$i $std/$f/user/$i
# su $i -c "ls && echo hallo $i"
done
fi
done

Es ist sehr einfach und ohne ausreichende Fehlerkontrolle, nach einiger Zeit waren aber alle Mails wieder ab richtigen Platz.
Als Vorarbeit hatte ich alle Mailboxen eingerichtet. Diese Arbeit könnte natürlich auch in die Funktion "workdir" eingebracht werden, es bekommt als 2. Parameter ja die Mailbox geliefert.
Damit der rekursive Aufruf in workdir nicht zu einer Art Forkbomb mutiert, sollte die Verzeichnisstruktur keine rekursiven Links enthalten. Alternativ muss die Funktion entsprechend gesichert werden.

Das Script erwartet einen Verzeichnisbaum, der dem unter /var/spool/cyrus/mail entspricht. Dieser wird der Variablen "std" übergeben. Es sucht dann alle alphabetischen Verzeichnisse auf und prüft auf Inhalt. Wird ein Mailboxeintrag gefunden, dann werden alle Verzeichnisse durch die Funktion workdir rekursiv durchlaufen und Dateien nach dem Muster "n." mit den entsprechenden Parametern im Kontext des jeweiligen Users an cyrdeliver übergeben. Dazu muss das Script mit root-Rechten laufen.

mfg
Maik