exim 4.84からexim 4.94にアップグレードしようとしています。
私のeximローカル/ Makefileには以下が含まれています。
SUPPORT_TLS=yes
TLS_LIBS=-L/MYPATH/lib/ -lssl -lcrypto -ldl
TLS_INCLUDE=-I/MYPATH/include/openssl/
USE_OPENSSL=yes
build-Linux-x86_64 ディレクトリでコンパイルされたバイナリを確認すると、次のような結果が得られます。コンパイルされたOpenSSLはランタイムOpenSSLと一致します。
$ build-Linux-x86_64/exim -d-all+acl --version
Exim version 4.94 #2 built 05-Jun-2020 13:15:11
Copyright (c) University of Cambridge, 1995 - 2018
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018
Support for: crypteq iconv() OpenSSL DANE DKIM DNSSEC Event OCSP PIPE_CONNECT PRDR TCP_Fast_Open
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch dbm dbmjz dbmnz dnsdb
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile autoreply pipe smtp
Fixed never_users: 0
Configure owner: 0:0
Size of off_t: 8
Compiler: GCC [4.9.2]
Library version: Glibc: Compile: 2.19
Runtime: 2.19
Library version: BDB: Compile: Berkeley DB 4.8.30: (April 9, 2010)
Runtime: Berkeley DB 4.8.30: (April 9, 2010)
Library version: OpenSSL: Compile: OpenSSL 1.0.2l 25 May 2017
Runtime: OpenSSL 1.0.2l 25 May 2017
: built on: reproducible build, date unspecified
Library version: PCRE: Compile: 8.36
Runtime: 8.36 2014-09-26
しかし、make installを使用してインストールし、最終的なバイナリを確認したら、次のような結果を得ます。
$ exim-4.94-2 -d-all+acl --version
Exim version 4.94 #2 built 05-Jun-2020 13:15:11
Copyright (c) University of Cambridge, 1995 - 2018
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2018
Support for: crypteq iconv() OpenSSL DANE DKIM DNSSEC Event OCSP PIPE_CONNECT PRDR TCP_Fast_Open
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch dbm dbmjz dbmnz dnsdb
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile autoreply pipe smtp
Fixed never_users: 0
Configure owner: 0:0
Size of off_t: 8
Compiler: GCC [4.9.2]
Library version: Glibc: Compile: 2.19
Runtime: 2.19
Library version: BDB: Compile: Berkeley DB 4.8.30: (April 9, 2010)
Runtime: Berkeley DB 4.8.30: (April 9, 2010)
Library version: OpenSSL: Compile: OpenSSL 1.0.2l 25 May 2017
Runtime: OpenSSL 1.0.1t 3 May 2016
: built on: Fri Mar 1 20:47:13 2019
Library version: PCRE: Compile: 8.36
Runtime: 8.36 2014-09-26
ランタイムのOpenSSLバージョンは、私がコンパイルしたものではなく、システムから取得したものです。
ここで何が問題なのかご存知ですか?
編集する:
確認すると、両方のファイルが同じで、eximバイナリを/ tmpなどの任意のディレクトリにコピーすると、正しいランタイムが表示されます。これは私のbinディレクトリでのみ発生します。
ベストアンサー1
Eximはシステムの共有ライブラリを使用します。 Eximではなく実行時にシステムによってロードされます。これがバイナリが同じ理由です。
したがって、デフォルトでコンパイルされたOpenSSLを使用したい場合は、少なくとも3つのオプションがあります(特定の順序はありません)。
Eximを実行する前に、LD_LIBRARY_PATHを使用してローカルのOpenSSLバージョンをポイントしてください。その後、システムローダーはまずその場所から共有ライブラリをインポートするように指示します。
Eximは静的バイナリにコンパイルされます。これは、バイナリにすでにOpenSSLライブラリが組み込まれていることを意味します。動的ロードはありません。
システム全体で使用できるようにコンパイルされたOpenSSLをシステムにインストールします。
OpenSSLは機密ライブラリであるため、いつでも完全に更新できます。ディストリビューションによっては、セキュリティ更新プログラムを入手できるようにパッケージのバージョンをインストールする方が良いかもしれません。