[dovecot] krijg system user niet aan de praat

Pagina: 1
Acties:

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Mijn oude dovecot 0.99 werkt zonder problemen, maar naar een upgrade naar 1.0RC15 (debian etch) werkt het niet meer. Hett is de bedoeling dat gebruikers uit /etc/passwd met hun gewone user account gegevens kunnen inloggen. Simpeler kan niet zou je zeggen.
De auth daemon wil niet starten:
code:
1
2
3
4
dovecot: 2007-07-13 22:06:29 Info: Dovecot v1.0.rc15 starting up
server:/usr/share/doc/dovecot-common# dovecot: 2007-07-13 22:06:31 Error: Auth process died too early - shutting down
dovecot: 2007-07-13 22:06:31 Error: child 26335 (auth) killed with signal 4
dovecot: 2007-07-13 22:06:31 Error: Temporary failure in creating login processes, slowing down for now


Mijn /etc/dovecot/dovecot.conf ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
protocols = pop3 imap imaps
listen = *
log_path = /dev/stderr
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_processes_count = 2
   mail_location = maildir:~/Maildir
mail_extra_groups = mail
protocol imap {
}
  
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
  mechanisms = plain
  userdb passwd {
  }
  #passdb pam {
  passdb shadow {
  }
  user = root
}
dict {
}
plugin {
}

Kent iemand dit probleem? De dovecot website en Google hebben me niets wijzer kunnen maken.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Moet er aan het eind van regel 22 geen { staan?

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
die { staat wel in regel 22. Foutje van mij bij het maken van het topic. Ik pas het even aan.

Ik heb nu als test de volgende userdb en passdb configuratie:
code:
1
2
3
4
5
6
  userdb passwd-file {
    args = /etc/dovecot.users
  }
  passdb passwd-file {
    args = /etc/dovecot.users
  }

De /etc/dovecot/dovecot.users file heeft het volgende format:
code:
1
2
user:{plain}password
user2:{plain}password2

Dit geeft precies hetzelfde resultaat.

Het vreemde is dat het 2 seconden duurt voordat de auth daemon er mee ophoudt. Zie de timestamps in mijn log. Als ik binnen die tijd inlog met telnet, krijg ik nog wel een response.

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Geen dovecot gebruikers hier die dit ook tegen komen? De server draait trouwens debian Etch.

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Heb je al andere authenticatiemethodes geprobeerd?
Dovecot gebruik ik zelf niet, maar ik kwam nog wel dit tegen.

  • smesjz
  • Registratie: Juli 2002
  • Niet online
Heb je rawlog al gebruikt?
Evt. met strace/gdb?

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Weer wat geleerd, strace is echt nuttig om processen die zich misdragen te monitoren! Ik had dovecot op een andere machine geinstalleerd, en daarbij een foutje in de configuratie gemaakt. Die kon ik met strace zo achterhalen.
Helaas kreeg ik daarna op de tweede machine (Ubuntu Feisty) exact hetzelfde resultaat. Debian Etch heeft 1.0RC15, Feisty heeft RC17 aan boord.
Ik heb strace op dovecot losgelaten, met het volgende resultaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[pid  8674] set_tid_address(0xb7791708 <unfinished ...>
[pid  8674] <... set_tid_address resumed> ) = 8674
[pid  8674] rt_sigaction(SIGRTMIN, {0xb797d450, [], SA_SIGINFO}, NULL, 8) = 0
[pid  8674] rt_sigaction(SIGRT_1, {0xb797d3c0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
[pid  8674] rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
[pid  8674] getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
[pid  8674] uname({sys="Linux", node="xxx.yyy", ...}) = 0
[pid  8674] brk(0)                      = 0x807f000
[pid  8674] brk(0x80a0000)              = 0x80a0000
[pid  8674] rt_sigaction(SIGILL, {0xb7c93aa0, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0
[pid  8674] --- SIGILL (Illegal instruction) @ 0 (0) ---
[pid  8674] rt_sigaction(SIGILL, {SIG_DFL}, {0xb7c93aa0, [ILL], SA_RESTART}, 8) = 0
[pid  8674] rt_sigaction(SIGILL, {0xb7c93aa0, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0
[pid  8674] --- SIGILL (Illegal instruction) @ 0 (0) ---
Process 8674 detached
[pid  8673] unlink("/var/run/dovecot/auth-worker.8674") = 0
[pid  8673] waitpid(-1, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGILL}], WNOHANG) = 8674
[pid  8673] write(2, "child 8674 (auth) killed with signal 4", 38child 8674 (auth) killed with signal 4) = 38

Ik interpreteer dit als dat de dovecot authdaemon een illegal instruction uitvoert, maar ik begrijp niet wat.
Gdb heb ik niet geprobeerd, dat heeft ook alleen zin na het opnieuw compileren. Rawlog ken ik nog niet. De threat waar GlowMouse naar verwijst gaat over een imap process dat struikelt. Ik denk niet dat ik daar wat vind, maar zal er nog even naar kijken.

edit:
over die mail tread: de suggestie dat dovecot en zijn dependencies niet voor de juiste CPU zijn gecompileerd zal het niet zijn. Als het niet x86 was, zou ik wel meer merken. Daarnaas is de server waar ik dovecot op draai een 486 en mijn PC waar ik een tweede test op gedaan hebt een Athlon XP. Beide x86, maar toch behoorlijk verschillend.

[ Voor 7% gewijzigd door Sir Isaac op 15-07-2007 20:57 ]


  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Een update:
op mijn PC draait dovecot inmiddels wel. Dus zou het toch aan compilatie voor een verkeerde x86 processor kunnen liggen. Dat lijkt ook ondersteunt te worden door de betekenis van het SIGILL signaal dat naar dovecot-auth wordt gestuurd. Citaat van wikipedia:
Many platforms implement new instructions or provide additional registers on subsequent hardware revisions, so applications compiled for more recent hardware may generate illegal instructions when run on older hardware that does not recognise the new opcodes. An example might be attempting to use MMX instructions on an Intel 80486 processor, which didn't support the feature.

Ik ga dovecot toch maar even hercompileren.

En dan nog een vraag:
Debian wordt toch gecompileerd voor de i386? Hoe kun je zien voor wat voor processor een binary is gecompileerd?
En dan het antwoord:
uit de debian/rules file van het source package:
code:
1
2
3
4
5
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
        ./configure \
                    --host=$(DEB_HOST_GNU_TYPE) \
                    --build=$(DEB_BUILD_GNU_TYPE) \

de beide dpkg-architecture commando's geven i486-linux-gnu als resultaat. Het is dus in ieder geval de bedoeling van de package maintainer om voor een 486 te compileren.
Nu nog checken of dat gelukt is. (tip welkom)
De ELF headers van dovecot-auth zijn
code:
1
2
3
4
readelf -e /usr/lib/dovecot/dovecot-auth:
...
Machine:        Intel 80386
...

Toch voor i386 gecompileerd? Het wordt er niet duidelijker op.

update:
"Intel 80386" in de ELF header slaat op alle x86 processoren, en betekent in deze context dus niets. Weet iemand een andere tool of uit te vogelen voor welke processor een binary is gecompileerd?

[ Voor 46% gewijzigd door Sir Isaac op 16-07-2007 09:14 ]


  • smesjz
  • Registratie: Juli 2002
  • Niet online
Sir Isaac schreef op zondag 15 juli 2007 @ 22:27:
Een update:
op mijn PC draait dovecot inmiddels wel. Dus zou het toch aan compilatie voor een verkeerde x86 processor kunnen liggen. Dat lijkt ook ondersteunt te worden door de betekenis van het SIGILL signaal dat naar dovecot-auth wordt gestuurd. Citaat van wikipedia:
Many platforms implement new instructions or provide additional registers on subsequent hardware revisions, so applications compiled for more recent hardware may generate illegal instructions when run on older hardware that does not recognise the new opcodes. An example might be attempting to use MMX instructions on an Intel 80486 processor, which didn't support the feature.

Ik ga dovecot toch maar even hercompileren.

En dan nog een vraag:
Debian wordt toch gecompileerd voor de i386? Hoe kun je zien voor wat voor processor een binary is gecompileerd?
Dit artikel gaat over compiler opties en architectuur specifieke flags:
http://linuxreviews.org/howtos/compiling/

Wel interessant om te lezen.

Welke GCC versie gebruik je overigens?

Als je dovecot zelf compiled, werkt het dan wel?

Dus zonder de debian/* map, maar gewoon via ./configure dus.

Of dit iets is voor de Dovecot mailinglist weet ik niet, zo veel mensen (en zeker Timo niet) draaien Dovecot op een 486 :)

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Ik het source package gedownload, de aanroep van configure in de rules file aangepast zoals hier onder staat. Verder heb ik de dependencies op ldap, mysql, kerberos en andere zut die ik niet nodig heb eruit gegooid. Nu werkt alles prima.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
debian/rules:
<...>
        ./configure --with-ssl=openssl \
                    --with-sqlite \
                    --host=i486 \
                    --build=i486 \
                    --prefix=/usr \
                    --sysconfdir=/etc/dovecot \
                    --libexecdir=\$${prefix}/lib \
                    --localstatedir=/var \
                    --mandir=\$${prefix}/share/man \
                    --infodir=\$${prefix}/share/info \
                    --with-moduledir=\$${prefix}/lib/dovecot/modules
<...>


Timo zou dovecot ook eens moeten draaien op een 486. Dat gaat perfect: veel sneller dan courier. Verder ben ik aan deze computer gehecht: hij doet al meer dan 12 jaar trouw dienst.

  • smesjz
  • Registratie: Juli 2002
  • Niet online
Sir Isaac schreef op zaterdag 21 juli 2007 @ 15:52:
Ik het source package gedownload, de aanroep van configure in de rules file aangepast zoals hier onder staat. Verder heb ik de dependencies op ldap, mysql, kerberos en andere zut die ik niet nodig heb eruit gegooid. Nu werkt alles prima.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
debian/rules:
<...>
        ./configure --with-ssl=openssl \
                    --with-sqlite \
                    --host=i486 \
                    --build=i486 \
                    --prefix=/usr \
                    --sysconfdir=/etc/dovecot \
                    --libexecdir=\$${prefix}/lib \
                    --localstatedir=/var \
                    --mandir=\$${prefix}/share/man \
                    --infodir=\$${prefix}/share/info \
                    --with-moduledir=\$${prefix}/lib/dovecot/modules
<...>


Timo zou dovecot ook eens moeten draaien op een 486. Dat gaat perfect: veel sneller dan courier. Verder ben ik aan deze computer gehecht: hij doet al meer dan 12 jaar trouw dienst.
Mooi dat het nou werkt, ik neem aan dat je de oude config.log niet meer hebt? Ben wel benieuwd wat ie voor build, host settings heeft..

Afijn, als Timo Dovecot ontwikkelde (en compilede) op een 486 konden we nog wel een paar jaar wachten op versie 1.0 :)

Je zou het die strace uitvoer op de mailinglist kunnen posten, maar ik weet niet in hoeverre het een Dovecot probleem is en wat er sinds versie 1.0rc15 is aangepast (1.0.2 is nu current)..

  • Sir Isaac
  • Registratie: September 2002
  • Laatst online: 21-05-2025
Een config.log zit niet bij een Debian package. Omdat het voorals nog een fout bij het maken van een het package lijkt, stuur ik nog niets naar de dovecot mailing lijst.
Compileren en editen moet je niet op zo'n machine doen, maar het is geen slecht idee om server software op verschillende hardware te testen. En als je ambitie is een snelle server te maken, is een 486 best nuttig. Maar dit is of-topic geouwehoer. Ik ben benieuwd naar de reactie van de debian package maintainer.
Pagina: 1