DB4- und Cyrus-Update

Yoda

[Linux|FreeBSD] - User
Hi Leute,
ich hatte hier seit einiger Zeit ein cyrus-imapd (mit db4) mit Sendmail laufen. War damit bisher auch sehr zufrieden. Dann wollte ich mich mal mit OpenLDAP (mit db4) versuchen.
Dabei trat das Problem auf das OpenLDAP in seiner Abhängigkeit die db4-4.4.x brauchte und ich aber eine db4-4.3.29 drin hatte.

Den Fehler den ich jetzt gemacht hatte was der, das ich die db4 + cyrus-imapd einfach auf den aktuellsten Stand gebracht hatte. Nur leider funktioniert Cyrus jetzt nicht mehr. :grumble:
Dir DB4 habe ich jetzt in der Version db4-4.4.20 im System.

Damit mir sowas nicht nocheinmal vorkommt möchte ich jetzt gerne mal wissen wie man ein derartiges Update "richtig" durchführt.

mit

# db4_dump deliver.db
# db4_dump tls_sessions.db

werden doch keine Daten gedumpt, das sieht nur wie Versionsnummern aus.
Mit der Anleitung auf
http://www.sleepycat.com/docs/utility/db_dump.html
bin ich nicht weiter gekommen, denn ich weiss nicht in welchem der unzähligen *.db-Dateien nun meine kostbaren Daten sind...

Kann mir jemand sagen wie man bdb (db4) richtig dumpt und wieder einliest und wie man soein Update nächstes mal richtig macht?
Danke!
 
aktuell kämpfe ich mit diesem Problem:

bash-3.00# cyradm localhost -u cyrus
Segmentation fault (core dumped)
bash-3.00# sasldblistusers2
cyrus@erde.quarz.de: userPassword

Kann mir einer nen Tipp geben?
 
Last edited:
Diese User existieren in der DB

bash-3.00# sasldblistusers2
cyrus@erde.quarz.de: userPassword
mailing@erde.quarz.de: userPassword

Dann teste ich mal den "mailing":

bash-3.00# testsaslauthd -s pop3 -u mailing -p mailing
0: NO "authentication failed"

Wenn ich jetzt das Passwort vom User "mailing" ändern möchte

bash-3.00# saslpasswd2 mailing
Password:
Again (for verification):

dann erscheinen auf der Console folgende Meldungen:

Jun 25 23:15:18 erde saslpasswd2: setpass succeeded for mailing
Jun 25 23:15:18 erde saslpasswd2: Couldn't update db
Jun 25 23:15:18 erde last message repeated 2 times



Und wenn ich jetzt mal einen ganz anderen Test mache:

bash-3.00# echo "Test 03"|mail -s "Test 03" mailing

dann wird das Logfile solange mit Meldungen bombardiert, biss ich Sendmail und Cyrus einen Restart verpasse.

Die Konfiguration ist OK, immerhin lief alles ja schon ein paar Monate prima.
Es muss irgendetwas mit irgendwelchen Zugriffsrechten sein, obwohl ich alles dem User "cyrus" verpasst habe.

ich werde das Logfile und die beiden *.conf-Dateien mal anhängen.
Auch meine selbst geschriebene Anleitung, nach der ich damals den Server erfolgreich aufgesetzt hatte werd ich mal anhängen. Vielleicht ist dort ja schon ein Fehler drin, vielleicht hilft sie aber auch anderen beim aufsetzen eines eigenen IMAP-Servers....
 

Attachments

Hier, wegen der Vollständigkeit, noch sämtliche Zugriffsrechte:

bash-3.00# ls -la /var/imap/
total 5640
drwxr-x--- 11 cyrus mail 512 Jun 25 23:29 .
drwxr-xr-x 25 root wheel 512 Jun 25 21:01 ..
-rw------- 1 cyrus mail 144 Jun 25 23:29 annotations.db
drwxr-xr-x 2 cyrus mail 512 Jun 25 23:29 db
drwx------ 2 cyrus mail 512 Jun 25 23:29 db.backup1
drwx------ 2 cyrus mail 512 Jun 25 23:27 db.backup2
-rw------- 1 cyrus mail 2834432 Jun 25 23:27 deliver.db
-rw------- 1 cyrus mail 2834432 Jun 7 04:11 deliver.db.sik
-rw------- 1 cyrus mail 76 Jun 25 22:36 deliver.db.txt
drwxr-xr-x 2 cyrus mail 512 Feb 4 14:22 log
-rw------- 1 cyrus mail 5612 Jun 25 23:29 mailboxes.db
drwxr-xr-x 2 cyrus mail 512 Feb 4 14:22 msg
drwxr-xr-x 2 cyrus mail 2560 Jun 25 21:05 proc
drwxr-xr-x 2 cyrus mail 512 Feb 4 14:22 ptclient
-rw-r--r-- 1 cyrus mail 5609 Feb 4 14:31 server.pem
drwxr-xr-x 2 cyrus mail 512 Jun 25 23:29 socket
-rw------- 1 cyrus mail 32768 Apr 8 04:29 tls_sessions.db
drwx------ 16 cyrus mail 512 Feb 9 23:17 user



bash-3.00# ls -la /usr/pkg/etc/sasldb.db
-rw------- 1 cyrus wheel 16384 Jun 25 23:15 /usr/pkg/etc/sasldb.db




Das Verzeichnis "/var/spool/imap/" habe ich nicht angefasst. Wenn bei der Installation von cyrus/imapd/db4 dort nicht kaputt gemacht wurde (ich gehe davon aus) dann sollte dort auch alles I.O. sein.
 
Welche Cyrus Version setzt Du ein?

Ich hab die cyrus-imapd-2.2.13_2 drauf und db43-4.3.29. Das sind etwas andere Versionen, allerdings hatte bei der 1. Installation bei Cyrus 2.3 das Problem, dass der gecrashed ist. Vielleicht liegt es daran?

HTH

Edit: War etwas zu schnell... Ich setz das Ganze auf FreeBSD 6.0 ein, aber vielleicht hilft's ja trotzdem.
 
xbit said:
Welche Cyrus Version setzt Du ein?

Ich hab die cyrus-imapd-2.2.13_2 drauf und db43-4.3.29. Das sind etwas andere Versionen, allerdings hatte bei der 1. Installation bei Cyrus 2.3 das Problem, dass der gecrashed ist. Vielleicht liegt es daran?

HTH

Edit: War etwas zu schnell... Ich setz das Ganze auf FreeBSD 6.0 ein, aber vielleicht hilft's ja trotzdem.

Ich hatte es zuerst auch auf FreeBSD laufen, bin dann aber (auf dem Server) nach NetBSD gewechselt und hab es dort auch recht schnell hin bekommen.

Mit der db4-4.3.29 und cyrus-imapd-2.2.? hatte ich es auch bis vor kurzem prima am laufen...


Das sind die PKGs mit Versionsnummern von allen relevanten PKGs:

bash-3.00# pkg_info | egrep -i 'cyrus|imap|db4'
cyrus-sasl-2.1.21 Simple Authentication and Security Layer
db4-4.4.20 Berkeley DB version 4 from Sleepycat Software
cyrus-imapd-2.2.12nb5 Cyrus IMAP server
p5-IMAP-Admin-1.6.1nb2 Perl5 module for administration of RFC-2060 IMAP servers
cyrus-saslauthd-2.1.20 Cyrus SASL plaintext authentication daemon
fetchmail-6.2.5.5 Batch mail retrieval/forwarding utility for pop2, pop3, apop, imap
 
Wenn du die Versin von db aufgefrisch hast und sendmail / cyrus nun die neue Version nutzen soll (Neukompilierung), musst du sehr wahrscheinlich die vorhandenen db's migrieren. Im Paket von db 4.x sind, wenn ich mich richtig erinnere, Tools zum Convertieren dabei. Lass dir mal die Files im Package mit pkg_info -L dbxyz anzeigen.
Das Backup der sasldb.db nicht vergessen!
 
j_t said:
Wenn du die Versin von db aufgefrisch hast und sendmail / cyrus nun die neue Version nutzen soll (Neukompilierung), musst du sehr wahrscheinlich die vorhandenen db's migrieren. Im Paket von db 4.x sind, wenn ich mich richtig erinnere, Tools zum Convertieren dabei. Lass dir mal die Files im Package mit pkg_info -L dbxyz anzeigen.
Das Backup der sasldb.db nicht vergessen!

Ja, das habe ich auch schon gelesen. Das soll so gehen:
db4_dump sasldb.db > sasldb.db.txt
db4_load sasldb.db.txt > sasldb.db

Nur das funktioniert bei mir nicht mehr. Ich hatte mir extra das alte PKG von NetBSD geholt und das alte db4_dump genommen um die *.db's zu dumpen. Leider zeigt er bei einer Datenbank in der Größe von ca. 2,8MB nur 5 oder 6 Zeilen die unter anderem VERSION und soetwas nebensächliches enthalten aber nicht meine 2,8MB-Daten. Wenn ich dagegen den passwd-Test aus der man-Page mache dann bekomme ich einen Eindruck davon wie der erzeugte Code aussehen sollte. Nur soetwas kommt beim besten Willen nicht.... :grumble:

Trotdem Danke für Deine Unterstützung.

Was jetzt viel wichtiger ist (denn das reparieren ist jetzt nicht sooo wichtig), ist eine saubere Anleitung für eine ordentliches Update (um es nächstes mal richtig zu machen). Oder/und eine kurze Liste aller *.db-Dateien mit einem Hinweis wasfür Daten darin sind. Die einzige DB über die ich das jetzt weiss ist die sasldb.db, damit ich mir eine brauchbare Anleitung selber zusammen knobeln kann.
Aber z.B. weiß ich nicht was die deliver.db (oder so ähnlich) zu bedeuten hat (das ist die mit den 2,8MB).
 
Ja, benutzt denn niemand den cyrus-imapd in Verbindung mit der Berkeley DB? Und wird die denn auch nie einem Update unterzogen? Das kann doch nicht sein!

Kann keiner etwas dazu sagen?
 
Bei mir funktioniert ein Dump. Mein oller Cyrus hat allerdings noch eine BDB3.

/usr/local/etc# db3_dump sasldb
VERSION=3
format=bytevalue
type=hash
h_nelem=141
HEADER=END
[..]
DATA=END

Moeglicherweise brauchst du noch Optionen beim Aufruf von db4_dump oder die Version des Tools ist nicht die passende.
Was sagt denn Herr Google dazu?
 
j_t said:
Bei mir funktioniert ein Dump. Mein oller Cyrus hat allerdings noch eine BDB3.

/usr/local/etc# db3_dump sasldb
VERSION=3
format=bytevalue
type=hash
h_nelem=141
HEADER=END
[..]
DATA=END

Moeglicherweise brauchst du noch Optionen beim Aufruf von db4_dump oder die Version des Tools ist nicht die passende.
Was sagt denn Herr Google dazu?
Ich glaube in der Handhabung ist es zwischen der bdb3 und der bdb4 nicht so ein großer Unterschied. Die Tools haben ja auch die gleichen Namen.
Bei mir hat er bei einem Dump immer nur den Header ausgegeben (ich denke dann waren auch keine Parameter nötig), Daten kamen keine, vielleicht hab ich die db ja auch schon kaput bekommen (glaug ich aber nicht).
Was Herr Google gesagt hat, hatte ich ja alles ausprobiert bevor ich hier gepostet hatte. Der hatte aber auch keine besseren Ideen, deshalb bin ich ja hier.

Ich glaube in Zukunft werde ich mir mal OpenLDAP+PostgreSQL mal näher ansehen und dann alles in einer Datenbank haben mir der ich mich aus kenne.
Danke!
 
Die saslb ist ansich eine feine Sache. Ich habe auch mit etwa 800 Datensaetzen in der sasldb keinerlei Probleme. Poste doch mal den genauen Output des dump.
Was zeigt ein "strings sasldb"? Sind dort noch die Nutzdaten enthalten?
 
j_t said:
Die saslb ist ansich eine feine Sache. Ich habe auch mit etwa 800 Datensaetzen in der sasldb keinerlei Probleme. Poste doch mal den genauen Output des dump.
Was zeigt ein "strings sasldb"? Sind dort noch die Nutzdaten enthalten?
Hier der gesammte Output:

bash-3.00# strings sasldb.db
erde.quarz.de
xxxxxxxxxxxyycyrus
userPassword
mailingmailing
erde.quarz.de
userPassword

bash-3.00# db4_dump sasldb.db
db4_dump: sasldb.db: unexpected file type or format
db4_dump: open: sasldb.db: Invalid argument

bash-3.00# /root/db4-4.3.29/bin/db4_dump sasldb.db
db_dump: sasldb.db: unexpected file type or format
db_dump: open: sasldb.db: Invalid argument
 
Was ist eigentlich in der DB drin, ist die wichtig?: "deliver.db"

bash-3.00# db4_dump deliver.db
VERSION=3
format=bytevalue
type=btree
db_pagesize=16384
HEADER=END
DATA=END


bash-3.00# strings deliver.db | head -n40
?p?d?(?
>P>D>P>D>
=t=h=(=
<H<<<
;l;`;$;
:L:@:
9|9p949(9
8\8P8
7x7<707
6d6X6
5D585
4l4`4$4
3L3@3
2t2h2,2 2
1T1H1
0t080,0
/`/T/
.|.@.4.
-h-\- -
,L,@,
+t+h+,+ +
*T*H*
)|)p)4)()
(\(P(
'|'p'4'('
?x?x?x?x?x?x?x?x?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?|?p?L?L?L?L?L?L?L?L?L?@?
>l>`>$>
=L=@=
<p<d<(<(<(<
;<;<;<;<;<;0;H5<5
4l4`4$4
3D383
2l2`2 2
1H1<1
0p0d0(0
/\/P/$/
.x.l.
%x%<%0%
$d$X$
#D#8#
 
Ich glaube es ist vielleicht besser wenn ich mich nach einem anderen MTA umsehe... das habe ich gemacht:
- Courier-imap ist cool (prio auf Speed);
- Cyrus-imap ist noch cooler (Prio auf Sicherheit und Zuverlässigkeit);
- Dovecot scheint am coolsten zu sein (Prio auf Sicherheit / + direkte Anbindung an PostgreSQL oder MySQL möglich);

http://wiki.dovecot.org/
http://wiki.dovecot.org/DovecotPostgresql
http://wiki.dovecot.org/MailboxFormat


Ich werde das mal testen.
Wenn das alle meine Anforderungen erfüllt, komme ich (zumindest in Bezug auf MTA) erstmal ohne OpenLDAP aus.

Danke nochmal für die Hilfe! :-)
 
Ein MTA ist es voellig anderes, wie zum sendmail oder postfix. Du willst anscheinend den Server fuer die Postbox wechseln.
Echte Maenner benutzen uebrigens den guten Cyrus Imapd...
;-)
 
j_t said:
Ein MTA ist es voellig anderes, wie zum sendmail oder postfix. Du willst anscheinend den Server fuer die Postbox wechseln.
Stimmt!
Da war ich im Gedanken wo anders als ich das gepostet hatte, hab jetzt Feierabend und will nach Hause.... :-)

j_t said:
Echte Maenner benutzen uebrigens den guten Cyrus Imapd...
;-)
Den hab ich ja auch noch laufen, aber Dovecot (ist ja noch jung) scheint sich aber zu einem würdigen Nachfolger zu entwickeln.
Ausserdem kann er, was Cyrus nicht kann => ich spare mir erstmal LDAP.
Ich teste ihn mal. Das ist ja auch nur für zu Hause....
 
Yoda said:
[...]
und wie man so ein Update nächstes mal richtig macht?
[...]
Code:
Update Cyrus IMAPd

   This section describes HOWTO update the IMAPd from version 2.1.x to
   2.2.x

   Update is critical and can mean complete data loss

   Please test this procedure on a test/pre-production server first. Also
   have close look to install-upgrade.html that comes with the
   cyrus-imapd distribution. Please note, that you shoud plan a downtime
   for the production server to have the time to solve problems. Also
   note, that nobody I cannot take responsibility for the update
   procedure provided here

   Cyrus changed the format of the dbd databases used for internal
   storage of mailboxlist flags etc.

   A convert script comes with the distribution. The most important
   database is /var/imap/mailboxes.db. Without that database cyrus-imapd
   will NOT run. This requires a backup. Lets do a dump and a backup of
   the database.
/etc/init.d/cyrus stop # be sure no cyrus process is running

lsof /var/imap/mailboxes.db # be sure NO process is accessing the mailbox file

su - cyrus
/usr/cyrus/bin/ctl_mboxlist -d > /tmp/mailbox.db.dump
cp /var/imap/mailboxes.db /var/imap/mailboxes.db.old

   Convert the /var/imap/mailboxes.db
/usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley /var/imap/mailboxes.db.new skiplist
mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db

   Convert all the »seen« databases:
find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb \{\} flat \{\}.new skiplist \; -exec mv \{\}.new \{\} \;

   Converting the sieve scripts
   /usr/local/cyrus-imapd-2.2.3/tools/masssievec /usr/cyrus/bin/sievec

Das ist ein Exzerpt aus der Datei "Postfix-Cyrus-Web-cyradm-HOWTO.txt" aus
dem Paket http://www.web-cyradm.org//web-cyradm-0.5.4-1.tar.gz

Hilft Dir vielleicht weiter.
 
Last edited:
Back
Top