Errror al instalar qmail con chkuser: qmail-smtpd.c:(.text+0x127b): undefined reference to `b64decode’
Al intentar instalar qmail con chkuser para reducir los bounces y reducir el tráfico innecesario puede salir el error “undefined reference to b64decode”
qmail-smtpd.o: In function `auth_cram': qmail-smtpd.c:(.text+0xef9): undefined reference to `b64encode' qmail-smtpd.c:(.text+0xf6d): undefined reference to `b64decode' qmail-smtpd.o: In function `auth_plain': qmail-smtpd.c:(.text+0x10d6): undefined reference to `b64decode' qmail-smtpd.c:(.text+0x11ff): undefined reference to `b64decode' qmail-smtpd.o: In function `auth_login': qmail-smtpd.c:(.text+0x1241): undefined reference to `b64decode' qmail-smtpd.c:(.text+0x127b): undefined reference to `b64decode' qmail-smtpd.o:qmail-smtpd.c:(.text+0x12de): more undefined references to `b64decode' follow collect2: ld returned 1 exit status make: *** [qmail-smtpd] Error 1
Este error se produce si tenemos instalado el parche qmail-smtpd-auth. Si hacemos un diff de una versión que compila correctamente y la que no funciona veremos el error:
$ diff Makefile ../netqmail-1.06.chkuser/Makefile 2a3,8 > VPOPMAIL_HOME=/home/vpopmail > SMTPD_CHKUSER_OBJ=chkuser.o dns.o > VPOPMAIL_LIBS=`head -1 $(VPOPMAIL_HOME)/etc/lib_deps` `cat dns.lib` > > > 306a313,318 > > chkuser.o: \ > compile chkuser.c chkuser.h chkuser_settings.h > ./compile chkuser.c > > 1543,1544c1555,1556 < fs.a auto_qmail.o base64.o socket.lib < ./load qmail-smtpd rcpthosts.o commands.o timeoutread.o \ --- > fs.a auto_qmail.o socket.lib $(SMTPD_CHKUSER_OBJ) > ./load qmail-smtpd $(SMTPD_CHKUSER_OBJ) rcpthosts.o commands.o timeoutread.o \ 1548,1549c1560,1562 < alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \ < socket.lib` --- > alloc.a substdio.a error.a str.a fs.a auto_qmail.o \ > $(VPOPMAIL_LIBS) \ > `cat socket.lib`
Vemos como falta compilar con base64.o, por lo que debemos modificar el Makefile para que lo incluya. Quedaría así:
qmail-smtpd: \
load qmail-smtpd.o rcpthosts.o commands.o timeoutread.o \
timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
open.a sig.a case.a env.a stralloc.a alloc.a substdio.a error.a str.a \
fs.a auto_qmail.o base64.o socket.lib $(SMTPD_CHKUSER_OBJ)
./load qmail-smtpd $(SMTPD_CHKUSER_OBJ) rcpthosts.o commands.o timeoutread.o \
timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
alloc.a substdio.a error.a str.a fs.a auto_qmail.o base64.o \
$(VPOPMAIL_LIBS) \
`cat socket.lib`
A continuación ya podremos instalarlo normalmente:
# make setup check
Finalmente, en el caso que nos de el siguiente error:
./install install: fatal: unable to write .../bin/qmail-lspawn: text busy make: *** [setup] Error 111
Deberemos parar los daemons de qmail para poder reinstalarlo correctamente con el patch chkuser. Por ejemplo:
# for i in $(ls /service/ | grep qmail); do svc -d /service/$i; done ; make setup check; for i in $(ls /service/ | grep qmail); do svc -u /service/$i; done
A continuación podemos probar el patch intentando mandar un correo mediante telnet:
[root@shuVak netqmail-1.06]# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.systemadmin.es ESMTP helo ejemplo.com 250 mail.systemadmin.es mail from ejemplo@ejemplo.com 250 ok rcpt to: noexiste@systemadmin.es 511 sorry, no mailbox here by that name (#5.1.1 - chkuser) rcpt to: jprats@systemadmin.es 250 ok
Relacionados
Imprimir
Deja un comentario: