can not update exim

mjheidari

Verified User
Joined
Jun 29, 2014
Messages
23
when run ./build exim on custombuild this errors shows:
Code:
gcc -o exim
tls.o: In function `verify_callback':
tls.c:(.text+0x3c5): undefined reference to `OPENSSL_sk_push'
tls.o: In function `init_dh':
tls.c:(.text+0xff1): undefined reference to `DH_bits'
tls.o: In function `tls_expand_session_files':
tls.c:(.text+0x1353): undefined reference to `X509_getm_notBefore'
tls.c:(.text+0x1368): undefined reference to `X509_getm_notAfter'
tls.o: In function `setup_certs':
tls.c:(.text+0x1b1b): undefined reference to `OPENSSL_sk_pop'
tls.c:(.text+0x1b2c): undefined reference to `OPENSSL_sk_num'
tls.c:(.text+0x1b58): undefined reference to `OPENSSL_sk_push'
tls.c:(.text+0x1bdd): undefined reference to `OPENSSL_sk_num'
tls.o: In function `tls_servername_cb':
tls.c:(.text+0x1e47): undefined reference to `TLS_server_method'
tls.c:(.text+0x1efd): undefined reference to `SSL_CTX_get_options'
tls.c:(.text+0x1f0c): undefined reference to `SSL_CTX_set_options'
tls.o: In function `tls_refill':
tls.c:(.text+0x236c): undefined reference to `OPENSSL_sk_pop_free'
tls.o: In function `tls_close':
tls.c:(.text+0x2da3): undefined reference to `OPENSSL_sk_pop_free'
tls.o: In function `tls_validate_require_cipher':
tls.c:(.text+0x2e90): undefined reference to `TLS_server_method'
tls.o: In function `tls_version_report':
tls.c:(.text+0x2f71): undefined reference to `OpenSSL_version'
tls.c:(.text+0x2f7e): undefined reference to `OpenSSL_version'
tls.o: In function `tls_init':
tls.c:(.text+0x338f): undefined reference to `TLS_client_method'
tls.c:(.text+0x3399): undefined reference to `TLS_server_method'
tls.c:(.text+0x34df): undefined reference to `SSL_CTX_set_options'
tls.c:(.text+0x358f): undefined reference to `OPENSSL_sk_new_null'
tls.o: In function `tls_cert_not_before':
tls.c:(.text+0x42d1): undefined reference to `X509_getm_notBefore'
tls.o: In function `tls_cert_not_after':
tls.c:(.text+0x42e7): undefined reference to `X509_getm_notAfter'
tls.o: In function `tls_cert_version':
tls.c:(.text+0x4553): undefined reference to `X509_get_version'
tls.o: In function `tls_cert_subject_altname':
tls.c:(.text+0x478f): undefined reference to `OPENSSL_sk_pop'
tls.c:(.text+0x47c1): undefined reference to `ASN1_STRING_get0_data'
tls.c:(.text+0x47e1): undefined reference to `ASN1_STRING_get0_data'
tls.c:(.text+0x4801): undefined reference to `ASN1_STRING_get0_data'
tls.c:(.text+0x487a): undefined reference to `OPENSSL_sk_num'
tls.c:(.text+0x488a): undefined reference to `OPENSSL_sk_free'
tls.o: In function `tls_cert_ocsp_uri':
tls.c:(.text+0x48d8): undefined reference to `OPENSSL_sk_num'
tls.c:(.text+0x4920): undefined reference to `OPENSSL_sk_value'
tls.c:(.text+0x4954): undefined reference to `ASN1_STRING_get0_data'
tls.c:(.text+0x4981): undefined reference to `OPENSSL_sk_free'
tls.o: In function `tls_cert_crl_uri':
tls.c:(.text+0x49ca): undefined reference to `OPENSSL_sk_num'
tls.c:(.text+0x4a29): undefined reference to `OPENSSL_sk_value'
tls.c:(.text+0x4a3d): undefined reference to `OPENSSL_sk_num'
tls.c:(.text+0x4a53): undefined reference to `OPENSSL_sk_value'
tls.c:(.text+0x4a76): undefined reference to `ASN1_STRING_get0_data'
tls.c:(.text+0x4abd): undefined reference to `OPENSSL_sk_free'
pdkim/pdkim.a(signing.o): In function `exim_dkim_init':
signing.c:(.text+0xf): undefined reference to `OPENSSL_init_crypto'
pdkim/pdkim.a(signing.o): In function `exim_dkim_sign':
signing.c:(.text+0xe9): undefined reference to `EVP_MD_CTX_new'
signing.c:(.text+0x178): undefined reference to `EVP_MD_CTX_free'
signing.c:(.text+0x1ab): undefined reference to `EVP_MD_CTX_free'
collect2: error: ld returned 1 exit status
make[1]: *** [exim] Error 1
make[1]: Leaving directory `/usr/local/directadmin/custombuild/exim-4.92/build-Linux-x86_64'
make: *** [all] Error 2
 
An official repository for CentOS 7 offers only OpenSSL 1.0.2k-fips 26 Jan 2017

How did you install 1.0.2n ? Probably there is a conflict of multiple installations of OpenSSL and you might have more versions installed.
 
Last edited:
I've just checked sources of OpenSSL 1.0.2 and 1.1.0. The function EVP_MD_CTX_free(), OPENSSL_init_crypto(), etc... do not exist in OpenSSL 1.0.2, they were introduced in OpenSSL 1.1.0. A linker on your server tries to build Exim against a wrong OpenSSL version, or you have them all installed into one place (directories). Thus you have conflicting OpenSSL 1.0.2 and OpenSSL 1.1.0. It's not a standard situation, and it is not expected. So there is hardly a guide written for this case.

The best option would probably be to remove OpenSSL 1.1.0 and clear the server from other installed OpenSSL versions, and stick to a default OpenSSL version installed from rpm, but it might bring other issues if you run software that uses this OpenSSL 1.1.0 version.

Another option would be to modify library paths and build Exim against a desired OpenSSL version (but it is not clear where you installed the libraries of different versions of OpenSSL), see https://help.directadmin.com/item.php?id=125 for some clues.

I don't know how you installed OpenSSL 1.1.0 and why. Thus the only solution I can suggest is either to contact the person who installed it for you, or get someone else to fix it. I and other guys here are available for this kind of job, feel free to contact me or them for a commercial support.
 
add this lines to Makefile fix errors:

CFLAGS += -I/usr/local/ssl/include/openssl -I/usr/local/ssl/include
LDFLAGS += -L/usr/local/ssl/lib/
 
Back
Top