systemadmin.es » Correo » Errror al instalar qmail con chkuser: qmail-smtpd.c:(.text+0x127b): undefined reference to `b64decode’

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 Imprimir

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>