Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by majortermi » 2003-08-04 12:55

Wenn ich mich mit "sieveshell" am Sieve-Server (Cyrus IMAP) anmelden möchte, tritt folgendes Problem auf:

Code: Select all

p15105683:~ # sieveshell --authname=root localhost
connecting to localhost
Please enter your password: <Passwort eingegeben>
Please enter your password: <Passwort eingegeben>
Bad protocol from MANAGESIEVE server: lost connection
In den Logs erscheinen folgende Meldung:

Code: Select all

Aug  4 12:47:18 p15105683 perl: krb_mk_req() failed: No ticket file (tf_util) (76)
Aug  4 12:47:18 p15105683 timsieved[18685]: DIGEST-MD5 server step 1
Aug  4 12:47:18 p15105683 perl: DIGEST-MD5 client step 2
Aug  4 12:47:21 p15105683 timsieved[18685]: DIGEST-MD5 server step 2
Aug  4 12:47:23 p15105683 timsieved[18685]: attempting server step after doneflag
Aug  4 12:47:23 p15105683 master[8316]: process 18685 exited, signaled to death by 11
Ein Signal "11" dürfte wohl ein segmentation fault sein, bei der Suche mit Google habe ich herausgefunden, das dies passieren kann, wenn Libraries, die von Cyrus IMAP / Sieve genutzt werden gegen eine andere Version von Libraries gelinkt wurden, als Cyrus IMAP / Sieve selbst. Ich habe dies allerdings mit "ldd" in meinem Fall überprüft und es trifft nicht zu.

Daher meine Frage: Wodurch kann der segmentation fault sonst noch hervorgerufen werden bzw. wie kann ich dafür sorgen, dass der "master" bzw. "timsieved" Prozess detailliertere Log-Meldungen schreibt?

Ã?brigens: Mit "cyradm" kann ich mich hingegen problemlos einloggen, wobei hier interessanterweise auch zweimal nach dem Passwort gefragt wird und ein Login nur funktioniert, wenn ich "--auth plain" angebe (ist okay, schließlich benutze ich saslauthd mit PAM, da kann MD5 nicht funktionieren).
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by captaincrunch » 2003-08-04 12:59

Ich würde folgendes probieren :
Im ersten Terminal die sieveshell starten. In einem zweiten mal ein strace auf die PID loslassen, einloggen und schauen, was strace dazu meint.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by majortermi » 2003-08-04 13:18

CaptainCrunch wrote:Ich würde folgendes probieren :
Im ersten Terminal die sieveshell starten. In einem zweiten mal ein strace auf die PID loslassen, einloggen und schauen, was strace dazu meint.
Danke für den Tipp!
Das sieht folgendermaßen aus:
Vor erster Eingabe das Passworts:

Code: Select all

p15105683:~ # strace -p 24060
Process 23942 attached - interrupt to quit
select(1, [0], NULL, NULL, {563, 920000}
Nach erster Eingabe des Passworts:

Code: Select all

time(NULL)                              = 1059995387
read(0, "{336+}rn", 4096)             = 8
time(NULL)                              = 1059995387
select(1, [0], NULL, NULL, {600, 0})    = 1 (in [0], left {599, 960000})
time(NULL)                              = 1059995387
read(0, "dXNlcm5hbWU9InJvb3QiLHJlYWxtPSJw"..., 4096) = 338
time([1059995387])                      = 1059995387
getpid()                                = 24060
rt_sigaction(SIGPIPE, {0x402890ac, [], SA_RESTORER, 0x401df678}, {SIG_IGN}, 8) = 0
send(5, "<39>Aug  4 13:09:47 timsieved[24"..., 62, 0) = 62
rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
open("/etc/sasldb2", O_RDONLY|O_LARGEFILE) = 9
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0660, st_size=12288, ...}) = 0
_llseek(9, 0, [0], SEEK_SET)            = 0
read(9, "\0\0\0\0\0\0\0\0\0\0\0\0a256\07\0\0\0\020\0\0\010"..., 256) = 256
close(9)                                = 0
stat64("/var/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
old_mmap(NULL, 274432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x414fd000
open("/etc/sasldb2", O_RDONLY|O_LARGEFILE) = 9
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0660, st_size=12288, ...}) = 0
pread(9, "\0\0\0\0\0\0\0\0\0\0\0\0a256\07\0\0\0\020\0\0\010"..., 4096, 0) = 4096
pread(9, "\0\0\0\01\0\0\02\0\0\0\0\0\0\0\0\0\0\010\000817\02"..., 4096, 8192) = 4096
close(9)                                = 0
munmap(0x414fd000, 274432)              = 0
open("/etc/sasldb2", O_RDONLY|O_LARGEFILE) = 9
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0660, st_size=12288, ...}) = 0
_llseek(9, 0, [0], SEEK_SET)            = 0
read(9, "\0\0\0\0\0\0\0\0\0\0\0\0a256\07\0\0\0\020\0\0\010"..., 256) = 256
close(9)                                = 0
stat64("/var/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0
old_mmap(NULL, 274432, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x414fd000
open("/etc/sasldb2", O_RDONLY|O_LARGEFILE) = 9
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0660, st_size=12288, ...}) = 0
pread(9, "\0\0\0\0\0\0\0\0\0\0\0\0a256\07\0\0\0\020\0\0\010"..., 4096, 0) = 4096
pread(9, "\0\0\0\01\0\0\01\0\0\0\0\0\0\0\0\0\0\010\000917\02"..., 4096, 4096) = 4096
close(9)                                = 0
munmap(0x414fd000, 274432)              = 0
socket(PF_UNIX, SOCK_STREAM, 0)         = 9
connect(9, {sa_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or directory)
close(9)                                = 0
open("/etc/passwd", O_RDONLY)           = 9
fcntl64(9, F_GETFD)                     = 0
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0644, st_size=1064, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
read(9, "root:x:0:0:root:/root:/bin/bashn"..., 4096) = 1064
close(9)                                = 0
munmap(0x40018000, 4096)                = 0
open("/etc/group", O_RDONLY)            = 9
fcntl64(9, F_GETFD)                     = 0
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
fstat64(9, {st_mode=S_IFREG|0644, st_size=276, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40018000
_llseek(9, 0, [0], SEEK_CUR)            = 0
read(9, "root:x:0:nbin:x:1:nsys:x:2:nkmem"..., 4096) = 276
read(9, "", 4096)                       = 0
close(9)                                = 0
munmap(0x40018000, 4096)                = 0
write(1, "NO "Authentication Error"rn", 27) = 27
time(NULL)                              = 1059995387
select(1, [0], NULL, NULL, {600, 0})    = 1 (in [0], left {588, 260000})
Nach zweiter Eingabe des Passworts:

Code: Select all

time(NULL)                              = 1059995399
read(0, "AUTHENTICATE "PLAIN" {24+}rncm9v"..., 4096) = 54
time([1059995399])                      = 1059995399
getpid()                                = 24060
rt_sigaction(SIGPIPE, {0x402890ac, [], SA_RESTORER, 0x401df678}, {SIG_IGN}, 8) = 0
send(5, "<35>Aug  4 13:09:59 timsieved[24"..., 75, 0) = 75
rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 24060 detached
Ich habe auch noch folgendes herausgefunden:
Bei der zweiten Passwort-Abfrage kann man eingeben, was man will, das Passwort muss nur bei der ersten Abfrage korrekt sein.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by captaincrunch » 2003-08-04 13:20

Ich hätte auch noch eine (triviale) Sache gefunden : http://marc.theaimsgroup.com/?l=info-cy ... 806406&w=2

Ansonsten : welche Versionen vom Cyrus, Sieve und vor allem der BerkeleyDB setzt du ein ?

Nachtrag : Du loggst dich als root ein. Gibt's ein IMAP-Postfach für root ? Siehe hier : http://marc.theaimsgroup.com/?l=info-cy ... 927152&w=2
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by majortermi » 2003-08-04 13:31

CaptainCrunch wrote:Ich hätte auch noch eine (triviale) Sache gefunden : http://marc.theaimsgroup.com/?l=info-cy ... 806406&w=2
Das war es leider nicht: Ich habe 5x ein "reconstruct" laufen lassen, der Fehler tritt aber weiterhin auf.
Ansonsten : welche Versionen vom Cyrus, Sieve und vor allem der BerkeleyDB setzt du ein ?
Ich benutze folgende Versionen:
cyrus-imapd-2.1.11 (CMU Sieve 2.1)
cyrus-sasl-2.1.7
db-4.0.14
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by captaincrunch » 2003-08-04 13:33

Hilft dir der zweite Link weiter ? Ich war wohl nicht schnell genug beim editieren ... ;)
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

majortermi
Userprojekt
Userprojekt
Posts: 930
Joined: 2002-06-17 16:09

Re: Cyrus IMAPd - SEGFAULT beim "sieveshell"-Login

Post by majortermi » 2003-08-04 13:55

CaptainCrunch wrote:Hilft dir der zweite Link weiter ? Ich war wohl nicht schnell genug beim editieren ... ;)
Vielen Dank, das war es. Es gab zwar auch noch ein anderes Problem, das lies sich aber anhand der Fehlermeldungen leicht finden.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...