From: Wietse Venema and so on. In some cases, optimization is turned off automatically. Postfix can be built with Postfix shared libraries (files named
+libpostfix-*.so.*). These files are needed to dynamically
+load Postfix database clients with the Debian-style dynamicmaps.cf
+feature. Postfix shared libraries add minor run-time overhead and
+result in smaller Postfix executable files. Although Debian-style dynamicmaps.cf support is functional, it
+is not yet used. Postfix database clients are still built into the
+Postfix library files. Postfix database clients may become plugins
+at some later point in time. Postfix shared-library support is evolving. Support exists for
+Linux, FreeBSD and MacOS X. Shared-library builds will become the
+default once the build system stops changing. For now, specify "shared=yes" on the "make makefiles"
+command line to build Postfix with shared-library support. 4.3 - Building with optional features
+4.3 - Building with Postfix shared libraries (Postfix ≥ 2.12)
+
+
+
+
+
+$ make makefiles shared=yes ...other arguments...
+$ make makefiles shared=no ...other arguments...
+$ make
+
+4.4 - Building with optional features
By default, Postfix builds as a mail system with relatively few
bells and whistles. Support for third-party databases etc.
@@ -277,7 +305,64 @@ Postfix 2.2
systems that have IPv6 support. See the IPV6_README file for details.
All Postfix configuration parameters can be changed by editing +a Postfix configuration file, except for one: the parameter that +specifies the location of Postfix configuration files. In order to +build Postfix with a configuration directory other than /etc/postfix, +use:
+ +++ ++$ make makefiles config_directory=/some/where ...other arguments... +$ make ++
Parameters whose defaults can be specified in this way are +listed below. See the postconf(5) manpage for a description +(command: "nroff -man man/man5/postconf.5 | less").
+ ++ ++ ++ +
+ ++ + parameter name typical default + + command_directory /usr/sbin + + config_directory /etc/postfix + + default_database_type hash + + daemon_directory /usr/libexec/postfix + + data_directory /var/lib/postfix + + html_directory no + + mailq_path /usr/bin/mailq + + manpage_directory /usr/local/man + + newaliases_path /usr/bin/newaliases + + queue_directory /var/spool/postfix + + readme_directory no + + sendmail_path /usr/sbin/sendmail + + shlib_directory /usr/local/lib
All Postfix configuration parameters can be changed by editing a Postfix configuration file, except for one: the parameter that @@ -295,7 +380,9 @@ $ make
IMPORTANT: Be sure to get the quotes right. These details matter a lot.
-Parameters whose defaults can be specified in this way are:
+Parameters whose defaults can be specified in this way are +listed below. See the postconf(5) manpage for a description +(command: "nroff -man man/man5/postconf.5 | less").
@@ -347,7 +434,7 @@ defaultNote: the data_directory parameter (for caches and pseudo-random numbers) was introduced with Postfix version 2.5.
-4.5 - Overriding other compile-time features
+4.6 - Overriding other compile-time features
The general method to override Postfix compile-time features is as follows:
@@ -381,7 +468,7 @@ off Postfix features at compile time: DB support. By default, Berkeley DB support is compiled in on platforms that are known to support this feature. If you override this, then you probably should also override DEF_DB_TYPE as described -in section 4.4. +in section 4.5.a non-default optimization level. The default is -O. Specify OPT= to turn off optimization. + -DNO_DEVPOLL Do not build with Solaris /dev/poll support. By default, /dev/poll @@ -432,6 +519,12 @@ Specify DEBUG= to turn off debugging. + SHLIB_VERSION=version Specifies a +non-default Postfix shared-library version number. The default is +to use the Postfix version: X.Y.Z for stable releases, X.Y-DATE for +snapshot releases, X.Y-DATE-nonprod for non-production releases. + systems that have IPv6 support. See the IPV6_README file for details. - WARN="warning_flags..." Specifies non-default gcc compiler warning options for use when "make" is invoked in a source subdirectory only. @@ -439,7 +532,7 @@ non-default gcc compiler warning options for use when -4.6 - Support for thousands of processes
+4.7 - Support for thousands of processes
The number of connections that Postfix can manage simultaneously is limited by the number of processes that it can run. This number @@ -487,7 +580,7 @@ operating system is configured to handle thousands of connections. See the TUNING_README guide for examples of how to increase the number of open sockets or files.
-4.7 - Compiling Postfix, at last
+4.8 - Compiling Postfix, at last
If the command
diff --git a/postfix/html/LDAP_README.html b/postfix/html/LDAP_README.html index 10b3f937e..820d4bd5e 100644 --- a/postfix/html/LDAP_README.html +++ b/postfix/html/LDAP_README.html @@ -55,6 +55,9 @@ it to each.Building Postfix with LDAP support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/html/LMDB_README.html b/postfix/html/LMDB_README.html index 35e486f54..d80007f56 100644 --- a/postfix/html/LMDB_README.html +++ b/postfix/html/LMDB_README.html @@ -44,6 +44,9 @@ the database file without the ".lmdb" suffix.
Building Postfix with LMDB support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+Postfix normally does not enable LMDB support. To build Postfix with LMDB support, use something like:
diff --git a/postfix/html/MYSQL_README.html b/postfix/html/MYSQL_README.html index 1b50298ec..d85e6ba04 100644 --- a/postfix/html/MYSQL_README.html +++ b/postfix/html/MYSQL_README.html @@ -33,6 +33,9 @@ clients by using the Postfix proxymap(8) service.Building Postfix with MySQL support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/html/PCRE_README.html b/postfix/html/PCRE_README.html index 6e619c616..7385d6f54 100644 --- a/postfix/html/PCRE_README.html +++ b/postfix/html/PCRE_README.html @@ -32,6 +32,9 @@ itself can be found at http://www.pcre.org/.
Building Postfix with PCRE support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/html/PGSQL_README.html b/postfix/html/PGSQL_README.html index c7e3fed4f..f7c643d4f 100644 --- a/postfix/html/PGSQL_README.html +++ b/postfix/html/PGSQL_README.html @@ -33,6 +33,9 @@ clients by using the Postfix proxymap(8) service.
Building Postfix with PostgreSQL support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/html/SMTPD_POLICY_README.html b/postfix/html/SMTPD_POLICY_README.html index 5770535b4..aaccc22f5 100644 --- a/postfix/html/SMTPD_POLICY_README.html +++ b/postfix/html/SMTPD_POLICY_README.html @@ -104,6 +104,8 @@ etrn_domain= stress= Postfix version 2.9 and later: ccert_pubkey_fingerprint=68:B3:29:DA:98:93:E3:40:99:C7:D8:AD:5C:B9:C9:40 +Postfix version 2.12 and later: +client_port=1234 [empty line] diff --git a/postfix/html/SQLITE_README.html b/postfix/html/SQLITE_README.html index c452f4052..e1987243c 100644 --- a/postfix/html/SQLITE_README.html +++ b/postfix/html/SQLITE_README.html @@ -26,6 +26,9 @@ databases: you can use one for a virtual(5) table,
Building Postfix with SQLite support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+The Postfix SQLite client utilizes the sqlite3 library, which can be obtained from:
diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 71b730a25..694425732 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -9535,6 +9535,18 @@ earlier: "/etc/postfix/post-install set-permissions". + + +shlib_directory +(default: see 'postconf -d' output) + + The location of Postfix shared libraries (libpostfix-*.so.*). +This parameter defaults to "no" when Postfix shared libraries are +disabled at compile time.
+ +This feature is available in Postfix 2.12 and later.
+ +show_user_unknown_table_name diff --git a/postfix/html/postfix.1.html b/postfix/html/postfix.1.html index b002433d1..cdd2ee683 100644 --- a/postfix/html/postfix.1.html +++ b/postfix/html/postfix.1.html @@ -127,86 +127,87 @@ POSTFIX(1) POSTFIX(1) The following main.cf configuration parameters are exported as environ- ment variables with the same names: + config_directory (see 'postconf -d' output) + The default location of the Postfix main.cf and master.cf con- + figuration files. + command_directory (see 'postconf -d' output) The location of all postfix administrative commands. daemon_directory (see 'postconf -d' output) The directory with Postfix support programs and daemon programs. - config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and master.cf con- - figuration files. - - queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue directory. + html_directory (see 'postconf -d' output) + The location of Postfix HTML files that describe how to build, + configure or operate a specific Postfix subsystem or feature. mail_owner (postfix) - The UNIX system account that owns the Postfix queue and most + The UNIX system account that owns the Postfix queue and most Postfix daemon processes. - setgid_group (postdrop) - The group ownership of set-gid Postfix commands and of group- - writable Postfix directories. - - sendmail_path (see 'postconf -d' output) - A Sendmail compatibility feature that specifies the location of - the Postfix sendmail(1) command. - - newaliases_path (see 'postconf -d' output) - Sendmail compatibility feature that specifies the location of - the newaliases(1) command. - mailq_path (see 'postconf -d' output) Sendmail compatibility feature that specifies where the Postfix mailq(1) command is installed. - html_directory (see 'postconf -d' output) - The location of Postfix HTML files that describe how to build, - configure or operate a specific Postfix subsystem or feature. - manpage_directory (see 'postconf -d' output) Where the Postfix manual pages are installed. + newaliases_path (see 'postconf -d' output) + Sendmail compatibility feature that specifies the location of + the newaliases(1) command. + + queue_directory (see 'postconf -d' output) + The location of the Postfix top-level queue directory. + readme_directory (see 'postconf -d' output) The location of Postfix README files that describe how to build, configure or operate a specific Postfix subsystem or feature. + sendmail_path (see 'postconf -d' output) + A Sendmail compatibility feature that specifies the location of + the Postfix sendmail(1) command. + + setgid_group (postdrop) + The group ownership of set-gid Postfix commands and of group- + writable Postfix directories. + Available in Postfix version 2.5 and later: data_directory (see 'postconf -d' output) The directory with Postfix-writable data files (for example: caches, pseudo-random numbers). - Other configuration parameters: + Available in Postfix version 2.12 and later: - config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and master.cf con- - figuration files. + shlib_directory (see 'postconf -d' output) + The location of Postfix shared libraries (libpostfix-*.so.*). + + Other configuration parameters: import_environment (see 'postconf -d' output) - The list of environment parameters that a Postfix process will + The list of environment parameters that a Postfix process will import from a non-Postfix parent process. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the process name in - syslog records, so that "smtpd" becomes, for example, "post- + The mail system name that is prepended to the process name in + syslog records, so that "smtpd" becomes, for example, "post- fix/smtpd". Available in Postfix version 2.6 and later: multi_instance_directories (empty) - An optional list of non-default Postfix configuration directo- - ries; these directories belong to additional Postfix instances - that share the Postfix executable files and documentation with - the default Postfix instance, and that are started, stopped, + An optional list of non-default Postfix configuration directo- + ries; these directories belong to additional Postfix instances + that share the Postfix executable files and documentation with + the default Postfix instance, and that are started, stopped, etc., together with the default Postfix instance. multi_instance_wrapper (empty) - The pathname of a multi-instance manager command that the post- - fix(1) command invokes when the multi_instance_directories + The pathname of a multi-instance manager command that the post- + fix(1) command invokes when the multi_instance_directories parameter value is non-empty. multi_instance_group (empty) @@ -216,15 +217,15 @@ POSTFIX(1) POSTFIX(1) The optional instance name of this Postfix instance. multi_instance_enable (no) - Allow this Postfix instance to be started, stopped, etc., by a + Allow this Postfix instance to be started, stopped, etc., by a multi-instance manager. FILES - Prior to Postfix version 2.6, all of the following files were in $con- + Prior to Postfix version 2.6, all of the following files were in $con- fig_directory. Some files are now in $daemon_directory so that they can be shared among multiple instances that run the same Postfix version. - Use the command "postconf config_directory" or "postconf daemon_direc- + Use the command "postconf config_directory" or "postconf daemon_direc- tory" to expand the names into their actual values. $config_directory/main.cf, Postfix configuration parameters @@ -232,6 +233,7 @@ POSTFIX(1) POSTFIX(1) $daemon_directory/postfix-files, file/directory permissions $daemon_directory/postfix-script, administrative commands $daemon_directory/post-install, post-installation configuration + $daemon_directory/dynamicmaps.cf, plug-in database clients SEE ALSO Commands: diff --git a/postfix/makedefs b/postfix/makedefs index 5f3bcc747..24af0dd14 100644 --- a/postfix/makedefs +++ b/postfix/makedefs @@ -69,6 +69,22 @@ # .IP \fBOPT=\fIoptimization_level\fR # Specifies a non-default optimization level. The default is \fB-O\fR. # Specify \fBOPT=\fR to turn off optimization. +# .IP \fIinstallation_parameter\fB=\fIvalue\fR... +# Override the compiled-in default value of the specified +# installation parameter(s). The following parameters are +# supported in this context: +# +# command_directory config_directory daemon_directory +# data_directory default_database_type html_directory +# mailq_path manpage_directory newaliases_path queue_directory +# readme_directory sendmail_path shlib_directory +# +# See the postconf(5) manpage for a description of these +# parameters. +# .IP \fBSHLIB_VERSION=\fIversion\fR +# Specifies a non-default shared-library version for Postfix +# libraries. By default, the version equals the default value +# for the $mail_version parameter. # .IP \fBWARN=\fIwarning_flags\fR # Specifies non-default gcc compiler warning options for use when # "make" is invoked in a source subdirectory only. @@ -155,8 +171,18 @@ case "$SYSTEM.$RELEASE" in FreeBSD.7*) SYSTYPE=FREEBSD7 ;; FreeBSD.8*) SYSTYPE=FREEBSD8 + : ${SHLIB_SUFFIX=.so} + : ${SHLIB_CFLAGS=-fPIC} + : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'} + : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} + : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ;; FreeBSD.9*) SYSTYPE=FREEBSD9 + : ${SHLIB_SUFFIX=.so} + : ${SHLIB_CFLAGS=-fPIC} + : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'} + : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} + : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ;; DragonFly.*) SYSTYPE=DRAGONFLY ;; @@ -361,6 +387,12 @@ EOF rm -f makedefs.test makedefs.test.[co] fi;; esac + SYSLIBS="$SYSLIBS -ldl" + : ${SHLIB_SUFFIX=.so} + : ${SHLIB_CFLAGS=-fPIC} + : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'} + : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} + : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ;; Linux.3*) SYSTYPE=LINUX3 case "$CCARGS" in @@ -392,6 +424,12 @@ EOF } done done + SYSLIBS="$SYSLIBS -ldl" + : ${SHLIB_SUFFIX=.so} + : ${SHLIB_CFLAGS=-fPIC} + : ${SHLIB_LD='gcc -shared -Wl,-soname,${LIB}'} + : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} + : ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"} ;; GNU.0*|GNU/kFreeBSD.[567]*) SYSTYPE=GNU0 @@ -501,6 +539,11 @@ ReliantUNIX-?.5.43) SYSTYPE=ReliantUnix543 case $RELEASE in ?.*|1[0-1].*) CCARGS="$CCARGS -DNO_KQUEUE";; esac + : ${SHLIB_CFLAGS=-fPIC} + : ${SHLIB_SUFFIX=.dylib} + : ${SHLIB_LD='cc -shared -Wl,-flat_namespace -Wl,-undefined,dynamic_lookup -Wl,-install_name,@rpath/${LIB}'} + : ${SHLIB_RPATH='-Wl,-rpath,${SHLIB_DIR}'} + : ${SHLIB_ENV="DYLD_LIBRARY_PATH=`pwd`/lib"} ;; dcosx.1*) SYSTYPE=DCOSX1 RANLIB=echo @@ -617,6 +660,150 @@ case "$CC" in *CC) error "Don't use CC. That's the C++ compiler";; *) : ${OPT='-O'};; esac + +# Snapshot only. +CCARGS="$CCARGS -DSNAPSHOT" + +# Non-production: needs thorough testing, or major changes are still +# needed before the code stabilizes. +CCARGS="$CCARGS -DNONPROD" + +# Workaround: prepend Postfix include files before other include files. +CCARGS="-I. -I../../include $CCARGS" + +# Optionally override installation-parameter default settings. + +command_directory_macro=DEF_COMMAND_DIR +config_directory_macro=DEF_CONFIG_DIR +daemon_directory_macro=DEF_DAEMON_DIR +data_directory_macro=DEF_DATA_DIR +mailq_path_macro=DEF_MAILQ_PATH +newaliases_path_macro=DEF_NEWALIAS_PATH +queue_directory_macro=DEF_QUEUE_DIR +sendmail_path_macro=DEF_SENDMAIL_PATH +shlib_directory_macro=DEF_SHLIB_DIR + +for parm_name in command_directory config_directory daemon_directory \ + data_directory mailq_path newaliases_path \ + queue_directory sendmail_path shlib_directory +do + eval parm_val=\"\$$parm_name\" + eval parm_macro=\"\$${parm_name}_macro\" + case "$parm_val" in + "") ;; + /*) CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";; + *) error "$parm_name must specify an absolute path name";; + esac +done + +html_directory_macro=DEF_HTML_DIR +manpage_directory_macro=DEF_MANPAGE_DIR +readme_directory_macro=DEF_README_DIR + +for parm_name in html_directory manpage_directory +do + eval parm_val=\"\$$parm_name\" + eval parm_macro=\"\$${parm_name}_macro\" + case "$parm_val" in + "") ;; + /*|no) CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";; + *) error "$parm_name must specify \"no\" or an absolute path name";; + esac +done + +default_database_type_macro=DEF_DB_TYPE + +for parm_name in default_database_type +do + eval parm_val=\"\$$parm_name\" + eval parm_macro=\"\$${parm_name}_macro\" + case "$parm_val" in + "") ;; + *) CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";; + esac +done + +# The following are for non-shared libsasl and libmilter builds. + +_AR=$AR +_RANLIB=$RANLIB + +# Choose between shared and non-shared library builds. + +case "$shared" in +yes) + if [ -z "$SHLIB_SUFFIX" ] + then + error "Shared libraries are requested, but not supported on this platform" + fi + AR=: + RANLIB=: + CCARGS="$CCARGS -DUSE_DYNAMIC_LIBS" + + # Determine the shared-library installation directory. + case "$shlib_directory" in + /*) # CCARGS was already updated above. + ;; + "") trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15 + sed -n '/_SHLIB_DIR/,/^$/p' src/global/mail_params.h >makedefs.test.c + cat >>makedefs.test.c <<'EOF' +#include +#include +int main(void) +{ + printf("%s\n", DEF_SHLIB_DIR); + fflush(stdout); + exit(ferror(stdout) ? 1 : 0); +} +EOF + eval ${CC-gcc} ${CCARGS} -o makedefs.test makedefs.test.c || exit 1 + shlib_directory=`./makedefs.test` || exit 1 + rm -f makedefs.test makedefs.test.[co] + ;; + *) # shlib_directory was already checked above. + error "Can't happen in $0 - $shlib_directory is not an absolute path" + ;; + esac + + # Determine the shared-library version. + test -z "$SHLIB_VERSION" && { + trap 'rm -f makedefs.test makedefs.test.[co]' 1 2 3 15 + cat >makedefs.test.c <<'EOF' +#include +#include +#include +int main(void) +{ + printf("%s\n", DEF_MAIL_VERSION); + fflush(stdout); + exit(ferror(stdout) ? 1 : 0); +} +EOF + eval ${CC-gcc} -Isrc/global ${CCARGS} -o makedefs.test makedefs.test.c || exit 1 + SHLIB_VERSION=`./makedefs.test` || exit 1 + rm -f makedefs.test makedefs.test.[co] + } + LIB_PREFIX=postfix- + LIB_SUFFIX=${SHLIB_SUFFIX}.${SHLIB_VERSION} + ;; + +no|"") + shlib_directory=no + CCARGS="$CCARGS -UUSE_DYNAMIC_LIBS -UDEF_SHLIB_DIR -DDEF_SHLIB_DIR=\\\"no\\\"" + SHLIB_CFLAGS= + SHLIB_SUFFIX= + SHLIB_LD=: + SHLIB_RPATH= + SHLIB_ENV= + LIB_PREFIX= + LIB_SUFFIX=.a + ;; + +*) echo "Specify \"shared=yes\" or \"shared=no\"" 1>&2 + exit 1 + ;; +esac + # # "gcc -W" 3.4.2 no longer reports functions that fail to return a # result. Use "gcc -Wall -Wno-comment" instead. We'll figure out @@ -631,20 +818,13 @@ ${WARN='-Wall -Wno-comment -Wformat -Wimplicit -Wmissing-prototypes \ export SYSTYPE AR ARFL RANLIB SYSLIBS CC OPT DEBUG AWK OPTS -# Snapshot only. -CCARGS="$CCARGS -DSNAPSHOT" - -# Non-production: needs thorough testing, or major changes are still -# needed before the code stabilizes. -#CCARGS="$CCARGS -DNONPROD" - -# Workaround: prepend Postfix include files before other include files. -CCARGS="-I. -I../../include $CCARGS" sed 's/ / /g' < ) { s;\bsendmail_fix_line_endings\b;$&;g; s;\bservice_throttle_time\b;$&;g; s;\bsetgid_group\b;$&;g; + s;\bshlib_directory\b;$&;g; s;\bconnection_cache_service_name\b;$&;g; s;\bconnection_cache_status_update_time\b;$&;g; diff --git a/postfix/postfix-install b/postfix/postfix-install index 6b2a261a0..3a2f63623 100644 --- a/postfix/postfix-install +++ b/postfix/postfix-install @@ -147,6 +147,12 @@ # .IP readme_directory # The final destination directory for the Postfix README files. # This parameter setting is recorded in the installed main.cf file. +# .IP shlib_directory +# The final destination directory for Postfix shared-library files. +# The built-in default value is specified at compile time. +# If you change this at installation time, then you should specify +# only "standard" system directories. Otherwise, additional +# configuration will be required with ldconfig(1) or equivalent. # SEE ALSO # post-install(1) post-installation procedure # FILES @@ -364,6 +370,8 @@ README files. Specify \"no\" if you do not want to install these files." html_directory_prompt="the final destination directory for the Postfix HTML files. Specify \"no\" if you do not want to install these files." +shlib_directory_prompt="the final destination directory for Postfix shared-library files." + # Default settings, just to get started. : ${install_root=/} @@ -426,8 +434,8 @@ grep setgid_group $CONFIG_DIRECTORY/main.cf >/dev/null 2>&1 || { } CONFIG_PARAMS="command_directory daemon_directory data_directory \ -html_directory mail_owner mailq_path manpage_directory newaliases_path \ -queue_directory readme_directory sendmail_path setgid_group" +html_directory mail_owner mailq_path manpage_directory newaliases_path \ +queue_directory readme_directory sendmail_path setgid_group shlib_directory" # Extract parameter settings from the installed main.cf file. @@ -489,7 +497,7 @@ case "$manpage_directory" in exit 1;; esac -for path in "$html_directory" "$readme_directory" +for path in "$html_directory" "$readme_directory" "$shlib_directory" do case "$path" in /*) ;; @@ -517,12 +525,16 @@ do done for path in command_directory config_directory daemon_directory data_directory \ - manpage_directory queue_directory html_directory readme_directory + manpage_directory queue_directory shlib_directory html_directory \ + readme_directory do - eval test -f $install_root\$$path && { + case "$path" in + no) ;; + *) eval test -f $install_root\$$path && { echo $0: Error: \"$path\" specifies a regular file. 1>&2 exit 1 - } + };; + esac done test -d $tempdir || mkdir -p $tempdir || exit 1 @@ -569,12 +581,15 @@ SENDMAIL_PATH=$install_root$sendmail_path HTML_DIRECTORY=$install_root$html_directory MANPAGE_DIRECTORY=$install_root$manpage_directory README_DIRECTORY=$install_root$readme_directory +SHLIB_DIRECTORY=$install_root$shlib_directory # Avoid repeated tests for existence of these; default permissions suffice. test -d $DAEMON_DIRECTORY || mkdir -p $DAEMON_DIRECTORY || exit 1 test -d $COMMAND_DIRECTORY || mkdir -p $COMMAND_DIRECTORY || exit 1 -test -d $COMMAND_DIRECTORY || mkdir -p $COMMAND_DIRECTORY || exit 1 +test -d $QUEUE_DIRECTORY || mkdir -p $QUEUE_DIRECTORY || exit 1 +test "$shlib_directory" = "no" -o -d $SHLIB_DIRECTORY || + mkdir -p $SHLIB_DIRECTORY || exit 1 test "$html_directory" = "no" -o -d $HTML_DIRECTORY || mkdir -p $HTML_DIRECTORY || exit 1 test "$readme_directory" = "no" -o -d $README_DIRECTORY || @@ -662,6 +677,9 @@ do f) echo $path | (IFS=/ read prefix file; IFS="$BACKUP_IFS" case $prefix in + '$shlib_directory') + compare_or_replace $mode "$owner" "$group" lib/$file \ + $SHLIB_DIRECTORY/$file || exit 1;; '$daemon_directory') compare_or_replace $mode "$owner" "$group" libexec/$file \ $DAEMON_DIRECTORY/$file || exit 1;; @@ -743,6 +761,7 @@ bin/postconf -c $CONFIG_DIRECTORY -e \ "manpage_directory = $manpage_directory" \ "sample_directory = $sample_directory" \ "readme_directory = $readme_directory" \ + "shlib_directory = $shlib_directory" \ || exit 1 # If Postfix is being installed locally from source code, do the diff --git a/postfix/proto/INSTALL.html b/postfix/proto/INSTALL.html index 383e9faec..3ffc85495 100644 --- a/postfix/proto/INSTALL.html +++ b/postfix/proto/INSTALL.html @@ -229,7 +229,35 @@ $ make and so on. In some cases, optimization is turned off automatically.
-4.3 - Building with optional features
+4.3 - Building with Postfix shared libraries (Postfix ≥ 2.12)
+ +Postfix can be built with Postfix shared libraries (files named +libpostfix-*.so.*). These files are needed to dynamically +load Postfix database clients with the Debian-style dynamicmaps.cf +feature. Postfix shared libraries add minor run-time overhead and +result in smaller Postfix executable files.
+ +Although Debian-style dynamicmaps.cf support is functional, it +is not yet used. Postfix database clients are still built into the +Postfix library files. Postfix database clients may become plugins +at some later point in time.
+ +Postfix shared-library support is evolving. Support exists for +Linux, FreeBSD and MacOS X. Shared-library builds will become the +default once the build system stops changing.
+ +For now, specify "shared=yes" on the "make makefiles" +command line to build Postfix with shared-library support.
+ +++ ++$ make makefiles shared=yes ...other arguments... +$ make makefiles shared=no ...other arguments... +$ make ++4.4 - Building with optional features
By default, Postfix builds as a mail system with relatively few bells and whistles. Support for third-party databases etc. @@ -277,7 +305,64 @@ Postfix 2.24.4 - Overriding built-in parameter default settings
+4.5 - Overriding built-in parameter default settings
+ +4.5.1 - Postfix 2.12 and later
+ +All Postfix configuration parameters can be changed by editing +a Postfix configuration file, except for one: the parameter that +specifies the location of Postfix configuration files. In order to +build Postfix with a configuration directory other than /etc/postfix, +use:
+ +++ ++$ make makefiles config_directory=/some/where ...other arguments... +$ make ++Parameters whose defaults can be specified in this way are +listed below. See the postconf(5) manpage for a description +(command: "nroff -man man/man5/postconf.5 | less").
+ ++ ++ ++ +
+ ++ + parameter name typical default + + command_directory /usr/sbin + + config_directory /etc/postfix + + default_database_type hash + + daemon_directory /usr/libexec/postfix + + data_directory /var/lib/postfix + + html_directory no + + mailq_path /usr/bin/mailq + + manpage_directory /usr/local/man + + newaliases_path /usr/bin/newaliases + + queue_directory /var/spool/postfix + + readme_directory no + + sendmail_path /usr/sbin/sendmail + + shlib_directory /usr/local/lib 4.5.2 - All Postfix versions
All Postfix configuration parameters can be changed by editing a Postfix configuration file, except for one: the parameter that @@ -295,7 +380,9 @@ $ make
IMPORTANT: Be sure to get the quotes right. These details matter a lot.
-Parameters whose defaults can be specified in this way are:
+Parameters whose defaults can be specified in this way are +listed below. See the postconf(5) manpage for a description +(command: "nroff -man man/man5/postconf.5 | less").
@@ -347,7 +434,7 @@ defaultNote: the data_directory parameter (for caches and pseudo-random numbers) was introduced with Postfix version 2.5.
-4.5 - Overriding other compile-time features
+4.6 - Overriding other compile-time features
The general method to override Postfix compile-time features is as follows:
@@ -381,7 +468,7 @@ off Postfix features at compile time: DB support. By default, Berkeley DB support is compiled in on platforms that are known to support this feature. If you override this, then you probably should also override DEF_DB_TYPE as described -in section 4.4. +in section 4.5.a non-default optimization level. The default is -O. Specify OPT= to turn off optimization. + -DNO_DEVPOLL Do not build with Solaris /dev/poll support. By default, /dev/poll @@ -432,6 +519,12 @@ Specify DEBUG= to turn off debugging. + SHLIB_VERSION=version Specifies a +non-default Postfix shared-library version number. The default is +to use the Postfix version: X.Y.Z for stable releases, X.Y-DATE for +snapshot releases, X.Y-DATE-nonprod for non-production releases. + WARN="warning_flags..." Specifies non-default gcc compiler warning options for use when "make" is invoked in a source subdirectory only. @@ -439,7 +532,7 @@ non-default gcc compiler warning options for use when -4.6 - Support for thousands of processes
+4.7 - Support for thousands of processes
The number of connections that Postfix can manage simultaneously is limited by the number of processes that it can run. This number @@ -487,7 +580,7 @@ operating system is configured to handle thousands of connections. See the TUNING_README guide for examples of how to increase the number of open sockets or files.
-4.7 - Compiling Postfix, at last
+4.8 - Compiling Postfix, at last
If the command
diff --git a/postfix/proto/LDAP_README.html b/postfix/proto/LDAP_README.html index 62905a7f1..af16bc55e 100644 --- a/postfix/proto/LDAP_README.html +++ b/postfix/proto/LDAP_README.html @@ -55,6 +55,9 @@ it to each.Building Postfix with LDAP support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/proto/LMDB_README.html b/postfix/proto/LMDB_README.html index a0d4c332a..e7bcdcba8 100644 --- a/postfix/proto/LMDB_README.html +++ b/postfix/proto/LMDB_README.html @@ -44,6 +44,9 @@ the database file without the ".lmdb" suffix.
Building Postfix with LMDB support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+Postfix normally does not enable LMDB support. To build Postfix with LMDB support, use something like:
diff --git a/postfix/proto/MYSQL_README.html b/postfix/proto/MYSQL_README.html index 5ec69fccb..5d99c5de9 100644 --- a/postfix/proto/MYSQL_README.html +++ b/postfix/proto/MYSQL_README.html @@ -33,6 +33,9 @@ clients by using the Postfix proxymap(8) service.Building Postfix with MySQL support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/proto/Makefile.in b/postfix/proto/Makefile.in index b22e0a958..afaa99888 100644 --- a/postfix/proto/Makefile.in +++ b/postfix/proto/Makefile.in @@ -94,6 +94,8 @@ README = ../README_FILES/ADDRESS_CLASS_README \ MAN = ../man/man5/postconf.5 +TOP = ../INSTALL + AWK = awk '{ print; if (NR == 1) print ".pl 9999\n.ll 65" }' SRCTOMAN= ../mantools/srctoman POSTLINK= ../mantools/postlink @@ -104,7 +106,7 @@ MAKEAAA = ../mantools/makereadme MAKESOHO= ../mantools/make_soho_readme DEPSOHO = SASL_README.html STANDARD_CONFIGURATION_README.html -update: $(CONFIG) $(HTML) $(README) $(MAN) +update: $(CONFIG) $(HTML) $(README) $(MAN) $(TOP) clean: : @@ -486,3 +488,7 @@ clobber: (cat postconf.html.prolog; ../mantools/xpostconf postconf.proto | \ ../mantools/postconf2html | ../mantools/postlink; \ cat postconf.html.epilog ) | $(DETAB) > $@ + +../INSTALL: ../README_FILES/INSTALL + rm -f $@ + col -b < $? > $@ diff --git a/postfix/proto/PCRE_README.html b/postfix/proto/PCRE_README.html index f48a82dce..c25b9aedc 100644 --- a/postfix/proto/PCRE_README.html +++ b/postfix/proto/PCRE_README.html @@ -32,6 +32,9 @@ itself can be found at http://www.pcre.org/.
Building Postfix with PCRE support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/proto/PGSQL_README.html b/postfix/proto/PGSQL_README.html index eb31a9826..907c69429 100644 --- a/postfix/proto/PGSQL_README.html +++ b/postfix/proto/PGSQL_README.html @@ -33,6 +33,9 @@ clients by using the Postfix proxymap(8) service.
Building Postfix with PostgreSQL support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+These instructions assume that you build Postfix from source code as described in the INSTALL document. Some modification may be required if you build Postfix from a vendor-specific source diff --git a/postfix/proto/SMTPD_POLICY_README.html b/postfix/proto/SMTPD_POLICY_README.html index 8a38c0ee1..37e8cc02b 100644 --- a/postfix/proto/SMTPD_POLICY_README.html +++ b/postfix/proto/SMTPD_POLICY_README.html @@ -104,6 +104,8 @@ etrn_domain= stress= Postfix version 2.9 and later: ccert_pubkey_fingerprint=68:B3:29:DA:98:93:E3:40:99:C7:D8:AD:5C:B9:C9:40 +Postfix version 2.12 and later: +client_port=1234 [empty line] diff --git a/postfix/proto/SQLITE_README.html b/postfix/proto/SQLITE_README.html index 676e411ac..2894aa1c5 100644 --- a/postfix/proto/SQLITE_README.html +++ b/postfix/proto/SQLITE_README.html @@ -26,6 +26,9 @@ access(5) table, and one for an aliases(5) table if you want.
Building Postfix with SQLite support
+[Note: instructions to build as a dynamicmaps.cf-style plugin +will be added later.]
+The Postfix SQLite client utilizes the sqlite3 library, which can be obtained from:
diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index cd82f401c..023e28145 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -15897,3 +15897,11 @@ status code or explanatory text of successful or unsuccessful deliveries. See default_delivery_status_filter for details.This feature is available in Postfix 2.12 and later.
+ +%PARAM shlib_directory see 'postconf -d' output + +The location of Postfix shared libraries (libpostfix-*.so.*). +This parameter defaults to "no" when Postfix shared libraries are +disabled at compile time.
+ +This feature is available in Postfix 2.12 and later.
diff --git a/postfix/src/anvil/Makefile.in b/postfix/src/anvil/Makefile.in index 14772fa32..3d6539bb7 100644 --- a/postfix/src/anvil/Makefile.in +++ b/postfix/src/anvil/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = anvil INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/bounce/Makefile.in b/postfix/src/bounce/Makefile.in index 8c98151db..f070b2182 100644 --- a/postfix/src/bounce/Makefile.in +++ b/postfix/src/bounce/Makefile.in @@ -15,14 +15,16 @@ TESTPROG= PROG = bounce SAMPLES = ../../conf/bounce.cf.default INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c all: $(PROG) ../../conf/bounce.cf.default $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) # Eliminate dependency on installed Postfix. ../../conf/bounce.cf.default: template_test.ref annotate.sh diff --git a/postfix/src/cleanup/Makefile.in b/postfix/src/cleanup/Makefile.in index 289cea262..25d04197d 100644 --- a/postfix/src/cleanup/Makefile.in +++ b/postfix/src/cleanup/Makefile.in @@ -18,13 +18,15 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= cleanup_masquerade cleanup_milter PROG = cleanup INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libmilter.a ../../lib/libglobal.a \ - ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/libmilter.a \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out @@ -88,15 +90,15 @@ root_tests: cleanup_masquerade_test: cleanup_masquerade cleanup_masq.ref rm -f cleanup_masq.tmp - ./cleanup_masquerade '' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade 'xxx' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade 'yyy' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade '' !a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade '' a.b.c,b.c xxx@a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade '' !a.b.c,b.c xxx@a.b.c >>cleanup_masq.tmp - ./cleanup_masquerade '' a.b.c,b.c xxx@aaa.b.c >>cleanup_masq.tmp - ./cleanup_masquerade '' a.b.c,b.c xxx@b.c >>cleanup_masq.tmp - ./cleanup_masquerade 'fail:whatever' xy xxx@b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade 'xxx' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade 'yyy' a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' !a.b.c,b.c xxx@aa.a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' a.b.c,b.c xxx@a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' !a.b.c,b.c xxx@a.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' a.b.c,b.c xxx@aaa.b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade '' a.b.c,b.c xxx@b.c >>cleanup_masq.tmp + $(SHLIB_ENV) ./cleanup_masquerade 'fail:whatever' xy xxx@b.c >>cleanup_masq.tmp diff cleanup_masq.ref cleanup_masq.tmp rm -f cleanup_masq.tmp @@ -109,10 +111,10 @@ bug1_test: cleanup_milter bug1.file bug1.in bug1.ref bug1.text.ref \ ../postcat/postcat cp bug1.file bug1.file.tmp chmod u+w bug1.file.tmp - ./cleanup_milter/dev/null >bug1.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >bug1.tmp diff bug1.ref bug1.tmp - ../postcat/postcat bug1.file.tmp 2>/dev/null >bug1.tmp + $(SHLIB_ENV) ../postcat/postcat bug1.file.tmp 2>/dev/null >bug1.tmp diff bug1.text.ref bug1.tmp rm -f bug1.file.tmp bug1.tmp @@ -120,10 +122,10 @@ bug2_test: cleanup_milter bug2.file bug2.in bug2.ref bug2.text.ref \ ../postcat/postcat cp bug2.file bug2.file.tmp chmod u+w bug2.file.tmp - ./cleanup_milter /dev/null >bug2.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >bug2.tmp diff bug2.ref bug2.tmp - ../postcat/postcat bug2.file.tmp 2>/dev/null >bug2.tmp + $(SHLIB_ENV) ../postcat/postcat bug2.file.tmp 2>/dev/null >bug2.tmp diff bug2.text.ref bug2.tmp rm -f bug2.file.tmp bug2.tmp @@ -131,10 +133,10 @@ bug3_test: cleanup_milter bug3.file bug3.in bug3.ref bug3.text.ref \ ../postcat/postcat cp bug3.file bug3.file.tmp chmod u+w bug3.file.tmp - ./cleanup_milter /dev/null >bug3.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >bug3.tmp diff bug3.ref bug3.tmp - ../postcat/postcat bug3.file.tmp 2>/dev/null >bug3.tmp + $(SHLIB_ENV) ../postcat/postcat bug3.file.tmp 2>/dev/null >bug3.tmp diff bug3.text.ref bug3.tmp rm -f bug3.file.tmp bug3.tmp @@ -144,8 +146,8 @@ cleanup_milter_test: cleanup_milter test-queue-file cleanup_milter.in1 \ cleanup_milter.ref1 ../postcat/postcat cp test-queue-file test-queue-file.tmp chmod u+w test-queue-file.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref1 cleanup_milter.tmp rm -f test-queue-file.tmp cleanup_milter.tmp @@ -153,8 +155,8 @@ cleanup_milter_test2: cleanup_milter test-queue-file2 cleanup_milter.in2 \ cleanup_milter.ref2 ../postcat/postcat cp test-queue-file2 test-queue-file2.tmp chmod u+w test-queue-file2.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref2 cleanup_milter.tmp rm -f test-queue-file2.tmp cleanup_milter.tmp @@ -162,8 +164,8 @@ cleanup_milter_test3: cleanup_milter test-queue-file3 cleanup_milter.in3 \ cleanup_milter.ref3 ../postcat/postcat cp test-queue-file3 test-queue-file3.tmp chmod u+w test-queue-file3.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref3 cleanup_milter.tmp rm -f test-queue-file3.tmp cleanup_milter.tmp @@ -172,18 +174,18 @@ cleanup_milter_test4: cleanup_milter test-queue-file4 cleanup_milter.in4a \ test-queue-file4 ../postcat/postcat cp test-queue-file4 test-queue-file4.tmp chmod u+w test-queue-file4.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref4 cleanup_milter.tmp cp test-queue-file4 test-queue-file4.tmp chmod u+w test-queue-file4.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref4 cleanup_milter.tmp cp test-queue-file4 test-queue-file4.tmp chmod u+w test-queue-file4.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref4 cleanup_milter.tmp rm -f test-queue-file4.tmp cleanup_milter.tmp @@ -191,8 +193,8 @@ cleanup_milter_test5: cleanup_milter test-queue-file5 cleanup_milter.in5 \ cleanup_milter.ref5 ../postcat/postcat cp test-queue-file5 test-queue-file5.tmp chmod u+w test-queue-file5.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref5 cleanup_milter.tmp rm -f test-queue-file5.tmp cleanup_milter.tmp @@ -203,8 +205,8 @@ cleanup_milter_test6a: cleanup_milter test-queue-file6 cleanup_milter.in6a \ cleanup_milter.ref6a test-queue-file6 ../postcat/postcat cp test-queue-file6 test-queue-file6.tmp chmod u+w test-queue-file6.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref6a cleanup_milter.tmp rm -f test-queue-file6.tmp cleanup_milter.tmp @@ -212,8 +214,8 @@ cleanup_milter_test6b: cleanup_milter test-queue-file6 cleanup_milter.in6b \ cleanup_milter.ref6b ../postcat/postcat cp test-queue-file6 test-queue-file6.tmp chmod u+w test-queue-file6.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref6b cleanup_milter.tmp rm -f test-queue-file6.tmp cleanup_milter.tmp @@ -221,8 +223,8 @@ cleanup_milter_test6c: cleanup_milter test-queue-file6 cleanup_milter.in6c \ cleanup_milter.ref6c ../postcat/postcat cp test-queue-file6 test-queue-file6.tmp chmod u+w test-queue-file6.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref6c cleanup_milter.tmp rm -f test-queue-file6.tmp cleanup_milter.tmp @@ -230,8 +232,8 @@ cleanup_milter_test7: cleanup_milter test-queue-file7 cleanup_milter.in7 \ cleanup_milter.ref7 ../postcat/postcat cp test-queue-file7 test-queue-file7.tmp chmod u+w test-queue-file7.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref7 cleanup_milter.tmp rm -f test-queue-file7.tmp cleanup_milter.tmp @@ -239,8 +241,8 @@ cleanup_milter_test8: cleanup_milter test-queue-file8 cleanup_milter.in8 \ cleanup_milter.ref8 ../postcat/postcat cp test-queue-file8 test-queue-file8.tmp chmod u+w test-queue-file8.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref8 cleanup_milter.tmp rm -f test-queue-file8.tmp cleanup_milter.tmp @@ -248,8 +250,8 @@ cleanup_milter_test9: cleanup_milter test-queue-file9 cleanup_milter.in9 \ cleanup_milter.ref9 ../postcat/postcat cp test-queue-file9 test-queue-file9.tmp chmod u+w test-queue-file9.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref9 cleanup_milter.tmp rm -f test-queue-file9.tmp cleanup_milter.tmp @@ -257,8 +259,8 @@ cleanup_milter_test10a: cleanup_milter test-queue-file10 cleanup_milter.in10a \ cleanup_milter.ref10a ../postcat/postcat cp test-queue-file10 test-queue-file10.tmp chmod u+w test-queue-file10.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref10a cleanup_milter.tmp rm -f test-queue-file10.tmp cleanup_milter.tmp @@ -266,8 +268,8 @@ cleanup_milter_test10b: cleanup_milter test-queue-file10 cleanup_milter.in10b \ cleanup_milter.ref10b ../postcat/postcat cp test-queue-file10 test-queue-file10.tmp chmod u+w test-queue-file10.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref10b cleanup_milter.tmp rm -f test-queue-file10.tmp cleanup_milter.tmp @@ -275,8 +277,8 @@ cleanup_milter_test10c: cleanup_milter test-queue-file10 cleanup_milter.in10c \ cleanup_milter.ref10c ../postcat/postcat cp test-queue-file10 test-queue-file10.tmp chmod u+w test-queue-file10.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref10c cleanup_milter.tmp rm -f test-queue-file10.tmp cleanup_milter.tmp @@ -284,8 +286,8 @@ cleanup_milter_test10d: cleanup_milter test-queue-file10 cleanup_milter.in10c \ cleanup_milter.ref10d ../postcat/postcat cp test-queue-file10 test-queue-file10.tmp chmod u+w test-queue-file10.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref10d cleanup_milter.tmp rm -f test-queue-file10.tmp cleanup_milter.tmp @@ -293,8 +295,8 @@ cleanup_milter_test10e: cleanup_milter test-queue-file10 cleanup_milter.in10c \ cleanup_milter.ref10e ../postcat/postcat cp test-queue-file10 test-queue-file10.tmp chmod u+w test-queue-file10.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref10e cleanup_milter.tmp rm -f test-queue-file10.tmp cleanup_milter.tmp @@ -302,8 +304,8 @@ cleanup_milter_test11: cleanup_milter test-queue-file11 cleanup_milter.in11 \ cleanup_milter.ref11 ../postcat/postcat cp test-queue-file11 test-queue-file11.tmp chmod u+w test-queue-file11.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref11 cleanup_milter.tmp rm -f test-queue-file11.tmp cleanup_milter.tmp @@ -311,8 +313,8 @@ cleanup_milter_test12: cleanup_milter test-queue-file12 cleanup_milter.in12 \ cleanup_milter.ref12 ../postcat/postcat cp test-queue-file12 test-queue-file12.tmp chmod u+w test-queue-file12.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref12 cleanup_milter.tmp rm -f test-queue-file12.tmp cleanup_milter.tmp @@ -320,8 +322,8 @@ cleanup_milter_test13a: cleanup_milter test-queue-file13a cleanup_milter.in13a \ cleanup_milter.ref13a ../postcat/postcat cp test-queue-file13a test-queue-file13a.tmp chmod u+w test-queue-file13a.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref13a cleanup_milter.tmp rm -f test-queue-file13a.tmp cleanup_milter.tmp @@ -329,8 +331,8 @@ cleanup_milter_test13b: cleanup_milter test-queue-file13b cleanup_milter.in13b \ cleanup_milter.ref13b ../postcat/postcat cp test-queue-file13b test-queue-file13b.tmp chmod u+w test-queue-file13b.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref13b cleanup_milter.tmp rm -f test-queue-file13b.tmp cleanup_milter.tmp @@ -338,8 +340,8 @@ cleanup_milter_test13c: cleanup_milter test-queue-file13c cleanup_milter.in13c \ cleanup_milter.ref13c ../postcat/postcat cp test-queue-file13c test-queue-file13c.tmp chmod u+w test-queue-file13c.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref13c cleanup_milter.tmp rm -f test-queue-file13c.tmp cleanup_milter.tmp @@ -347,8 +349,8 @@ cleanup_milter_test13d: cleanup_milter test-queue-file13d cleanup_milter.in13d \ cleanup_milter.ref13d ../postcat/postcat cp test-queue-file13d test-queue-file13d.tmp chmod u+w test-queue-file13d.tmp - ./cleanup_milter /dev/null >cleanup_milter.tmp + $(SHLIB_ENV) ./cleanup_milter /dev/null >cleanup_milter.tmp diff cleanup_milter.ref13d cleanup_milter.tmp rm -f test-queue-file13d.tmp cleanup_milter.tmp @@ -356,9 +358,9 @@ cleanup_milter_test14a: cleanup_milter test-queue-file14 cleanup_milter.in14a \ cleanup_milter.ref14a1 ../postcat/postcat cleanup_milter.ref14a2 cp test-queue-file14 test-queue-file14a.tmp chmod u+w test-queue-file14a.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14a1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14a.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14a.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14a2 cleanup_milter.tmp2 rm -f test-queue-file14a.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -366,9 +368,9 @@ cleanup_milter_test14b: cleanup_milter test-queue-file14 cleanup_milter.in14b \ cleanup_milter.ref14b1 ../postcat/postcat cleanup_milter.ref14b2 cp test-queue-file14 test-queue-file14b.tmp chmod u+w test-queue-file14b.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14b1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14b.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14b.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14b2 cleanup_milter.tmp2 rm -f test-queue-file14b.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -376,9 +378,9 @@ cleanup_milter_test14c: cleanup_milter test-queue-file14 cleanup_milter.in14c \ cleanup_milter.ref14c1 ../postcat/postcat cleanup_milter.ref14c2 cp test-queue-file14 test-queue-file14c.tmp chmod u+w test-queue-file14c.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14c1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14c.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14c.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14c2 cleanup_milter.tmp2 rm -f test-queue-file14c.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -386,9 +388,9 @@ cleanup_milter_test14d: cleanup_milter test-queue-file14 cleanup_milter.in14d \ cleanup_milter.ref14d1 ../postcat/postcat cleanup_milter.ref14d2 cp test-queue-file14 test-queue-file14d.tmp chmod u+w test-queue-file14d.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14d1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14d.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14d.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14d2 cleanup_milter.tmp2 rm -f test-queue-file14d.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -396,9 +398,9 @@ cleanup_milter_test14e: cleanup_milter test-queue-file14 cleanup_milter.in14e \ cleanup_milter.ref14e1 ../postcat/postcat cleanup_milter.ref14e2 cp test-queue-file14 test-queue-file14e.tmp chmod u+w test-queue-file14e.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14e1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14e.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14e.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14e2 cleanup_milter.tmp2 rm -f test-queue-file14e.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -406,9 +408,9 @@ cleanup_milter_test14f: cleanup_milter test-queue-file14 cleanup_milter.in14f \ cleanup_milter.ref14f1 ../postcat/postcat cleanup_milter.ref14f2 cp test-queue-file14 test-queue-file14f.tmp chmod u+w test-queue-file14f.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14f1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14f.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14f.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14f2 cleanup_milter.tmp2 rm -f test-queue-file14f.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -416,9 +418,9 @@ cleanup_milter_test14g: cleanup_milter test-queue-file14 cleanup_milter.in14g \ cleanup_milter.ref14g1 ../postcat/postcat cleanup_milter.ref14g2 cp test-queue-file14 test-queue-file14g.tmp chmod u+w test-queue-file14g.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref14g1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file14g.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file14g.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref14g2 cleanup_milter.tmp2 rm -f test-queue-file14g.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -426,9 +428,9 @@ cleanup_milter_test15a: cleanup_milter test-queue-file15 cleanup_milter.in15a \ cleanup_milter.ref15a1 ../postcat/postcat cleanup_milter.ref15a2 cp test-queue-file15 test-queue-file15a.tmp chmod u+w test-queue-file15a.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15a1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15a.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15a.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15a2 cleanup_milter.tmp2 rm -f test-queue-file15a.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -436,9 +438,9 @@ cleanup_milter_test15b: cleanup_milter test-queue-file15 cleanup_milter.in15b \ cleanup_milter.ref15b1 ../postcat/postcat cleanup_milter.ref15b2 cp test-queue-file15 test-queue-file15b.tmp chmod u+w test-queue-file15b.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15b1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15b.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15b.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15b2 cleanup_milter.tmp2 rm -f test-queue-file15b.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -446,9 +448,9 @@ cleanup_milter_test15c: cleanup_milter test-queue-file15 cleanup_milter.in15c \ cleanup_milter.ref15c1 ../postcat/postcat cleanup_milter.ref15c2 cp test-queue-file15 test-queue-file15c.tmp chmod u+w test-queue-file15c.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15c1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15c.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15c.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15c2 cleanup_milter.tmp2 rm -f test-queue-file15c.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -456,9 +458,9 @@ cleanup_milter_test15d: cleanup_milter test-queue-file15 cleanup_milter.in15d \ cleanup_milter.ref15d1 ../postcat/postcat cleanup_milter.ref15d2 cp test-queue-file15 test-queue-file15d.tmp chmod u+w test-queue-file15d.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15d1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15d.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15d.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15d2 cleanup_milter.tmp2 rm -f test-queue-file15d.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -466,9 +468,9 @@ cleanup_milter_test15e: cleanup_milter test-queue-file15 cleanup_milter.in15e \ cleanup_milter.ref15e1 ../postcat/postcat cleanup_milter.ref15e2 cp test-queue-file15 test-queue-file15e.tmp chmod u+w test-queue-file15e.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15e1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15e.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15e.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15e2 cleanup_milter.tmp2 rm -f test-queue-file15e.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -476,9 +478,9 @@ cleanup_milter_test15f: cleanup_milter test-queue-file15 cleanup_milter.in15f \ cleanup_milter.ref15f1 ../postcat/postcat cleanup_milter.ref15f2 cp test-queue-file15 test-queue-file15f.tmp chmod u+w test-queue-file15f.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15f1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15f.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15f.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15f2 cleanup_milter.tmp2 rm -f test-queue-file15f.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -486,9 +488,9 @@ cleanup_milter_test15g: cleanup_milter test-queue-file15 cleanup_milter.in15g \ cleanup_milter.ref15g1 ../postcat/postcat cleanup_milter.ref15g2 cp test-queue-file15 test-queue-file15g.tmp chmod u+w test-queue-file15g.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15g1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15g.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15g.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15g2 cleanup_milter.tmp2 rm -f test-queue-file15g.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -496,9 +498,9 @@ cleanup_milter_test15h: cleanup_milter test-queue-file15 cleanup_milter.in15h \ cleanup_milter.ref15h1 ../postcat/postcat cleanup_milter.ref15h2 cp test-queue-file15 test-queue-file15h.tmp chmod u+w test-queue-file15h.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15h1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15h.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15h.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15h2 cleanup_milter.tmp2 rm -f test-queue-file15h.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 @@ -506,9 +508,9 @@ cleanup_milter_test15i: cleanup_milter test-queue-file15 cleanup_milter.in15i \ cleanup_milter.ref15i1 ../postcat/postcat cleanup_milter.ref15i2 cp test-queue-file15 test-queue-file15i.tmp chmod u+w test-queue-file15i.tmp - ./cleanup_milter cleanup_milter.tmp1 + $(SHLIB_ENV) ./cleanup_milter cleanup_milter.tmp1 diff cleanup_milter.ref15i1 cleanup_milter.tmp1 - ../postcat/postcat -ov test-queue-file15i.tmp 2>/dev/null >cleanup_milter.tmp2 + $(SHLIB_ENV) ../postcat/postcat -ov test-queue-file15i.tmp 2>/dev/null >cleanup_milter.tmp2 diff cleanup_milter.ref15i2 cleanup_milter.tmp2 rm -f test-queue-file15i.tmp cleanup_milter.tmp1 cleanup_milter.tmp2 diff --git a/postfix/src/cleanup/cleanup_masquerade.c b/postfix/src/cleanup/cleanup_masquerade.c index a8540308c..9bf9761bf 100644 --- a/postfix/src/cleanup/cleanup_masquerade.c +++ b/postfix/src/cleanup/cleanup_masquerade.c @@ -219,6 +219,7 @@ int main(int argc, char **argv) vstream_printf("address: %s\n", argv[3]); state.errs = 0; + state.queue_id = "NOQUEUE"; cleanup_masquerade_external(&state, addr, masq_domains); vstream_printf("result: %s\n", STR(addr)); diff --git a/postfix/src/discard/Makefile.in b/postfix/src/discard/Makefile.in index 00a5d5c34..797f1c619 100644 --- a/postfix/src/discard/Makefile.in +++ b/postfix/src/discard/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = discard INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/dns/Makefile.in b/postfix/src/dns/Makefile.in index bbc5e9884..a82915f89 100644 --- a/postfix/src/dns/Makefile.in +++ b/postfix/src/dns/Makefile.in @@ -8,13 +8,13 @@ TESTSRC = test_dns_lookup.c test_alias_token.c DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) CFLAGS = $(DEBUG) $(OPT) $(DEFS) INCL = -LIB = libdns.a +LIB = lib$(LIB_PREFIX)dns$(LIB_SUFFIX) TESTPROG= test_dns_lookup dns_rr_to_pa dns_rr_to_sa dns_sa_to_rr dns_rr_eq_sa -LIBS = ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include -.c.o:; $(CC) $(CFLAGS) -c $*.c +.c.o:; $(CC) $(SHLIB_CFLAGS) $(CFLAGS) -c $*.c all: $(LIB) @@ -33,6 +33,7 @@ root_tests: $(LIB): $(OBJS) $(AR) $(ARFL) $(LIB) $? $(RANLIB) $(LIB) + $(SHLIB_LD) -o $(LIB) $(OBJS) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) @@ -69,22 +70,22 @@ dns_rr_eq_sa: $(LIB) $(LIBS) mv junk $@.o dns_rr_to_pa_test: dns_rr_to_pa dns_rr_to_pa.in dns_rr_to_pa.ref - ./dns_rr_to_pa `cat dns_rr_to_pa.in` >dns_rr_to_pa.tmp + $(SHLIB_ENV) ./dns_rr_to_pa `cat dns_rr_to_pa.in` >dns_rr_to_pa.tmp diff dns_rr_to_pa.ref dns_rr_to_pa.tmp rm -f dns_rr_to_pa.tmp dns_rr_to_sa_test: dns_rr_to_sa dns_rr_to_sa.in dns_rr_to_sa.ref - ./dns_rr_to_sa `cat dns_rr_to_sa.in` >dns_rr_to_sa.tmp + $(SHLIB_ENV) ./dns_rr_to_sa `cat dns_rr_to_sa.in` >dns_rr_to_sa.tmp diff dns_rr_to_sa.ref dns_rr_to_sa.tmp rm -f dns_rr_to_sa.tmp dns_sa_to_rr_test: dns_sa_to_rr dns_sa_to_rr.in dns_sa_to_rr.ref - ./dns_sa_to_rr `cat dns_sa_to_rr.in` >dns_sa_to_rr.tmp + $(SHLIB_ENV) ./dns_sa_to_rr `cat dns_sa_to_rr.in` >dns_sa_to_rr.tmp diff dns_sa_to_rr.ref dns_sa_to_rr.tmp rm -f dns_sa_to_rr.tmp dns_rr_eq_sa_test: dns_rr_eq_sa dns_rr_eq_sa.in dns_rr_eq_sa.ref - ./dns_rr_eq_sa `cat dns_rr_eq_sa.in` >dns_rr_eq_sa.tmp + $(SHLIB_ENV) ./dns_rr_eq_sa `cat dns_rr_eq_sa.in` >dns_rr_eq_sa.tmp diff dns_rr_eq_sa.ref dns_rr_eq_sa.tmp rm -f dns_rr_eq_sa.tmp diff --git a/postfix/src/dnsblog/Makefile.in b/postfix/src/dnsblog/Makefile.in index ec5391912..6cfc08b83 100644 --- a/postfix/src/dnsblog/Makefile.in +++ b/postfix/src/dnsblog/Makefile.in @@ -8,13 +8,15 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = dnsblog INC_DIR = ../../include -LIBS = ../../lib/libdns.a ../../lib/libmaster.a ../../lib/libglobal.a \ - ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/error/Makefile.in b/postfix/src/error/Makefile.in index a9453126f..2aafa5b40 100644 --- a/postfix/src/error/Makefile.in +++ b/postfix/src/error/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = error INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/flush/Makefile.in b/postfix/src/flush/Makefile.in index b3533bd50..b60ed87a1 100644 --- a/postfix/src/flush/Makefile.in +++ b/postfix/src/flush/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = flush INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/fsstone/Makefile.in b/postfix/src/fsstone/Makefile.in index bfc9842ac..2456448ef 100644 --- a/postfix/src/fsstone/Makefile.in +++ b/postfix/src/fsstone/Makefile.in @@ -8,7 +8,8 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = fsstone INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c diff --git a/postfix/src/global/Makefile.in b/postfix/src/global/Makefile.in index 2e7ec04ec..306b92b24 100644 --- a/postfix/src/global/Makefile.in +++ b/postfix/src/global/Makefile.in @@ -98,7 +98,7 @@ TESTSRC = rec2stream.c stream2rec.c recdump.c DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) CFLAGS = $(DEBUG) $(OPT) $(DEFS) INCL = -LIB = libglobal.a +LIB = lib$(LIB_PREFIX)global$(LIB_SUFFIX) TESTPROG= domain_list dot_lockfile mail_addr_crunch mail_addr_find \ mail_addr_map mail_date maps mynetworks mypwd namadr_list \ off_cvt quote_822_local rec2stream recdump resolve_clnt \ @@ -109,12 +109,12 @@ TESTPROG= domain_list dot_lockfile mail_addr_crunch mail_addr_find \ data_redirect addr_match_list safe_ultostr verify_sender_addr \ mail_version mail_dict server_acl -LIBS = ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include MAKES = -.c.o:; $(CC) $(CFLAGS) -c $*.c +.c.o:; $(CC) $(SHLIB_CFLAGS) $(CFLAGS) -c $*.c all: $(LIB) @@ -128,6 +128,7 @@ test: $(TESTPROG) $(LIB): $(OBJS) $(AR) $(ARFL) $(LIB) $? $(RANLIB) $(LIB) + $(SHLIB_LD) -o $(LIB) $(OBJS) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) @@ -311,7 +312,7 @@ server_acl: server_acl.c $(LIB) $(LIBS) tests: tok822_test mime_tests strip_addr_test tok822_limit_test \ xtext_test scache_multi_test ehlo_mask_test \ namadr_list_test mail_conf_time_test header_body_checks_tests \ - mail_version_test server_acl_test resolve_local_test maps_test + mail_version_test server_acl_test resolve_local_test maps_test \ safe_ultostr_test mime_tests: mime_test mime_nest mime_8bit mime_dom mime_trunc mime_cvt \ @@ -324,117 +325,117 @@ header_body_checks_tests: header_body_checks_null_test \ root_tests: rewrite_clnt_test resolve_clnt_test verify_sender_addr_test tok822_test: tok822_parse tok822_parse.in tok822_parse.ref - ./tok822_parse tok822_parse.tmp 2>&1 + $(SHLIB_ENV) ./tok822_parse tok822_parse.tmp 2>&1 diff tok822_parse.ref tok822_parse.tmp rm -f tok822_parse.tmp mime_test: mime_state mime_test.in mime_test.ref - ./mime_state mime_test.tmp + $(SHLIB_ENV) ./mime_state mime_test.tmp diff mime_test.ref mime_test.tmp rm -f mime_test.tmp mime_nest: mime_state mime_nest.in mime_nest.ref - ./mime_state mime_nest.tmp + $(SHLIB_ENV) ./mime_state mime_nest.tmp diff mime_nest.ref mime_nest.tmp rm -f mime_nest.tmp mime_8bit: mime_state mime_8bit.in mime_8bit.ref - ./mime_state mime_8bit.tmp + $(SHLIB_ENV) ./mime_state mime_8bit.tmp diff mime_8bit.ref mime_8bit.tmp rm -f mime_8bit.tmp mime_dom: mime_state mime_dom.in mime_dom.ref - ./mime_state mime_dom.tmp + $(SHLIB_ENV) ./mime_state mime_dom.tmp diff mime_dom.ref mime_dom.tmp rm -f mime_dom.tmp mime_trunc: mime_state mime_trunc.in mime_trunc.ref - ./mime_state mime_trunc.tmp + $(SHLIB_ENV) ./mime_state mime_trunc.tmp diff mime_trunc.ref mime_trunc.tmp rm -f mime_trunc.tmp mime_cvt: mime_state mime_cvt.in mime_cvt.ref - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_cvt.ref mime_cvt.tmp rm -f mime_cvt.tmp mime_cvt2: mime_state mime_cvt.in2 mime_cvt.ref2 - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_cvt.ref2 mime_cvt.tmp rm -f mime_cvt.tmp mime_cvt3: mime_state mime_cvt.in3 mime_cvt.ref3 - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_cvt.ref3 mime_cvt.tmp rm -f mime_cvt.tmp mime_garb1: mime_state mime_garb1.in mime_garb1.ref - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_garb1.ref mime_cvt.tmp rm -f mime_cvt.tmp mime_garb2: mime_state mime_garb2.in mime_garb2.ref - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_garb2.ref mime_cvt.tmp rm -f mime_cvt.tmp mime_garb3: mime_state mime_garb3.in mime_garb3.ref - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_garb3.ref mime_cvt.tmp rm -f mime_cvt.tmp mime_garb4: mime_state mime_garb4.in mime_garb4.ref - ./mime_state mime_cvt.tmp + $(SHLIB_ENV) ./mime_state mime_cvt.tmp diff mime_garb4.ref mime_cvt.tmp rm -f mime_cvt.tmp tok822_limit_test: tok822_parse tok822_limit.in tok822_limit.ref - ./tok822_parse tok822_limit.tmp + $(SHLIB_ENV) ./tok822_parse tok822_limit.tmp diff tok822_limit.ref tok822_limit.tmp rm -f tok822_limit.tmp strip_addr_test: strip_addr strip_addr.ref - ./strip_addr 2>strip_addr.tmp + $(SHLIB_ENV) ./strip_addr 2>strip_addr.tmp diff strip_addr.ref strip_addr.tmp rm -f strip_addr.tmp xtext_test: xtext - ./xtext xtext.tmp + $(SHLIB_ENV) ./xtext xtext.tmp od -cb xtext.ref cmp xtext.ref xtext.tmp rm -f xtext.ref xtext.tmp mail_version_test: mail_version mail_version.in mail_version.ref - ./mail_version mail_version.tmp + $(SHLIB_ENV) ./mail_version mail_version.tmp diff mail_version.ref mail_version.tmp rm -f mail_version.tmp server_acl_test: server_acl server_acl.in server_acl.ref - ./server_acl server_acl.tmp 2>&1 + $(SHLIB_ENV) ./server_acl server_acl.tmp 2>&1 diff server_acl.ref server_acl.tmp rm -f server_acl.tmp resolve_local_test: resolve_local resolve_local.in resolve_local.ref - sh resolve_local.in >resolve_local.tmp 2>&1 + $(SHLIB_ENV) sh resolve_local.in >resolve_local.tmp 2>&1 diff resolve_local.ref resolve_local.tmp rm -f resolve_local.tmp maps_test: maps maps.in maps.ref - sh maps.in >maps.tmp 2>&1 + $(SHLIB_ENV) sh maps.in >maps.tmp 2>&1 diff maps.ref maps.tmp rm -f maps.tmp surrogate_test: mail_dict surrogate.ref cp /dev/null surrogate.tmp - echo get foo|./mail_dict ldap:/xx write >>surrogate.tmp 2>&1 - echo get foo|./mail_dict ldap:/xx read >>surrogate.tmp 2>&1 - echo get foo|./mail_dict mysql:/xx write >>surrogate.tmp 2>&1 - echo get foo|./mail_dict mysql:/xx read >>surrogate.tmp 2>&1 - echo get foo|./mail_dict pgsql:/xx write >>surrogate.tmp 2>&1 - echo get foo|./mail_dict pgsql:/xx read >>surrogate.tmp 2>&1 - echo get foo|./mail_dict sqlite:/xx write >>surrogate.tmp 2>&1 - echo get foo|./mail_dict sqlite:/xx read >>surrogate.tmp 2>&1 - echo get foo|./mail_dict memcache:/xx read >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict ldap:/xx write >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict ldap:/xx read >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict mysql:/xx write >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict mysql:/xx read >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict pgsql:/xx write >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict pgsql:/xx read >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict sqlite:/xx write >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict sqlite:/xx read >>surrogate.tmp 2>&1 + echo get foo| $(SHLIB_ENV) ./mail_dict memcache:/xx read >>surrogate.tmp 2>&1 diff surrogate.ref surrogate.tmp rm -f surrogate.tmp @@ -447,7 +448,7 @@ rewrite_clnt_test: rewrite_clnt rewrite_clnt.in rewrite_clnt.ref esac @test -n "`postconf -h remote_header_rewrite_domain`" || { \ echo 'This test requires non-empty remote_header_rewrite_domain'; exit 1; } - ./rewrite_clnt rewrite_clnt.tmp + $(SHLIB_ENV) ./rewrite_clnt rewrite_clnt.tmp sed -e "s/MYDOMAIN/`postconf -h mydomain`/" \ -e "s/INVALID_DOMAIN/`postconf -h remote_header_rewrite_domain`/" \ rewrite_clnt.ref | diff - rewrite_clnt.tmp @@ -466,7 +467,7 @@ resolve_clnt_test: resolve_clnt resolve_clnt.in resolve_clnt.ref echo 'This test requires no transport map'; exit 1; } sed -e "s/MYDOMAIN/`postconf -h mydomain`/g" \ -e "s/MYHOSTNAME/`postconf -h myhostname`/g" \ - resolve_clnt.in | ./resolve_clnt >resolve_clnt.tmp + resolve_clnt.in | $(SHLIB_ENV) ./resolve_clnt >resolve_clnt.tmp sed -e "s/MYDOMAIN/`postconf -h mydomain`/g" \ -e "s/MYHOSTNAME/`postconf -h myhostname`/g" \ -e "s/RELAYHOST/`postconf -h mydomain`/g" \ @@ -482,12 +483,12 @@ verify_sender_addr_test: verify_sender_addr verify_sender_addr.ref esac @test "X`postconf -h append_dot_mydomain`" = Xyes || { \ echo 'This test requires append_dot_mydomain=yes'; exit 1; } - (./verify_sender_addr aa@bb 0; \ - ./verify_sender_addr aa@bb 1; \ - ./verify_sender_addr aa 0; \ - ./verify_sender_addr aa 1; \ - ./verify_sender_addr '' 0; \ - ./verify_sender_addr '' 1) | \ + ($(SHLIB_ENV) ./verify_sender_addr aa@bb 0; \ + $(SHLIB_ENV) ./verify_sender_addr aa@bb 1; \ + $(SHLIB_ENV) ./verify_sender_addr aa 0; \ + $(SHLIB_ENV) ./verify_sender_addr aa 1; \ + $(SHLIB_ENV) ./verify_sender_addr '' 0; \ + $(SHLIB_ENV) ./verify_sender_addr '' 1) | \ sed 's/[A-Z0-9][A-Z0-9]*@/STAMP@/' > verify_sender_addr.tmp sed -e "s/MYDOMAIN/`postconf -h mydomain`/g" \ -e "s/MYORIGIN/`postconf -h myorigin`/g" \ @@ -498,12 +499,12 @@ verify_sender_addr_test: verify_sender_addr verify_sender_addr.ref rm -f verify_sender_addr.tmp scache_multi_test: scache scache_multi.in scache_multi.ref - ./scache scache_multi.tmp + $(SHLIB_ENV) ./scache scache_multi.tmp diff scache_multi.ref scache_multi.tmp rm -f scache_multi.tmp ehlo_mask_test: ehlo_mask ehlo_mask.in ehlo_mask.ref - ./ehlo_mask ehlo_mask.tmp + $(SHLIB_ENV) ./ehlo_mask ehlo_mask.tmp diff ehlo_mask.ref ehlo_mask.tmp rm -f ehlo_mask.tmp @@ -513,29 +514,29 @@ namadr_list_test: namadr_list namadr_list.in namadr_list.ref rm -f namadr_list.tmp mail_conf_time_test: mail_conf_time mail_conf_time.ref - ./mail_conf_time >mail_conf_time.tmp + $(SHLIB_ENV) ./mail_conf_time >mail_conf_time.tmp diff mail_conf_time.ref mail_conf_time.tmp rm -f mail_conf_time.tmp safe_ultostr_test: safe_ultostr safe_ultostr.in safe_ultostr.ref - ./safe_ultostr safe_ultostr.tmp 2>&1 + $(SHLIB_ENV) ./safe_ultostr safe_ultostr.tmp 2>&1 diff safe_ultostr.ref safe_ultostr.tmp rm -f safe_ultostr.tmp header_body_checks_null_test: header_body_checks header_body_checks_null.ref - ./header_body_checks "" "" "" "" \ + $(SHLIB_ENV) ./header_body_checks "" "" "" "" \ header_body_checks_null.tmp 2>&1 cmp header_body_checks_null.ref header_body_checks_null.tmp - ./header_body_checks static:dunno static:dunno static:dunno static:dunno \ + $(SHLIB_ENV) ./header_body_checks static:dunno static:dunno static:dunno static:dunno \ header_body_checks_null.tmp 2>&1 cmp header_body_checks_null.ref header_body_checks_null.tmp - ./header_body_checks static:ok static:ok static:ok static:ok \ + $(SHLIB_ENV) ./header_body_checks static:ok static:ok static:ok static:ok \ header_body_checks_null.tmp 2>&1 cmp header_body_checks_null.ref header_body_checks_null.tmp rm -f header_body_checks_null.tmp header_body_checks_warn_test: header_body_checks header_body_checks_warn.ref - ./header_body_checks static:warn static:warn static:warn static:warn \ + $(SHLIB_ENV) ./header_body_checks static:warn static:warn static:warn static:warn \ header_body_checks_warn.tmp 2>&1 cmp header_body_checks_warn.ref header_body_checks_warn.tmp rm -f header_body_checks_warn.tmp @@ -545,7 +546,7 @@ header_body_checks_prepend_test: header_body_checks header_body_checks_prepend.r echo /./ prepend header: mime >header_body_checks_mime echo /./ prepend header: nest >header_body_checks_nest echo /./ prepend body >header_body_checks_body - ./header_body_checks regexp:header_body_checks_head regexp:header_body_checks_mime \ + $(SHLIB_ENV) ./header_body_checks regexp:header_body_checks_head regexp:header_body_checks_mime \ regexp:header_body_checks_nest regexp:header_body_checks_body \ header_body_checks_prepend.tmp 2>&1 cmp header_body_checks_prepend.ref header_body_checks_prepend.tmp @@ -556,7 +557,7 @@ header_body_checks_prepend_test: header_body_checks header_body_checks_prepend.r # errors. We can eliminate this restriction by allowing individual # map types to advertise whether they can handle null queries. header_body_checks_ignore_test: header_body_checks header_body_checks_ignore.ref - ./header_body_checks static:ignore static:ignore static:ignore static:ignore \ + $(SHLIB_ENV) ./header_body_checks static:ignore static:ignore static:ignore static:ignore \ header_body_checks_ignore.tmp 2>&1 cmp header_body_checks_ignore.ref header_body_checks_ignore.tmp rm -f header_body_checks_ignore.tmp header_body_checks_head header_body_checks_mime header_body_checks_nest header_body_checks_body @@ -566,7 +567,7 @@ header_body_checks_replace_test: header_body_checks header_body_checks_replace.r echo /./ replace header: mime >header_body_checks_mime echo /./ replace header: nest >header_body_checks_nest echo /./ replace body >header_body_checks_body - ./header_body_checks regexp:header_body_checks_head regexp:header_body_checks_mime \ + $(SHLIB_ENV) ./header_body_checks regexp:header_body_checks_head regexp:header_body_checks_mime \ regexp:header_body_checks_nest regexp:header_body_checks_body \ header_body_checks_replace.tmp 2>&1 cmp header_body_checks_replace.ref header_body_checks_replace.tmp @@ -930,46 +931,10 @@ dict_memcache.o: dict_memcache.c dict_memcache.o: dict_memcache.h dict_memcache.o: memcache_proto.h dict_memcache.o: string_list.h -dict_mysql.o: ../../include/argv.h -dict_mysql.o: ../../include/dict.h -dict_mysql.o: ../../include/events.h -dict_mysql.o: ../../include/find_inet.h -dict_mysql.o: ../../include/match_list.h -dict_mysql.o: ../../include/msg.h -dict_mysql.o: ../../include/myflock.h -dict_mysql.o: ../../include/mymalloc.h -dict_mysql.o: ../../include/myrand.h -dict_mysql.o: ../../include/split_at.h -dict_mysql.o: ../../include/stringops.h dict_mysql.o: ../../include/sys_defs.h -dict_mysql.o: ../../include/vbuf.h -dict_mysql.o: ../../include/vstream.h -dict_mysql.o: ../../include/vstring.h -dict_mysql.o: cfg_parser.h -dict_mysql.o: db_common.h dict_mysql.o: dict_mysql.c -dict_mysql.o: dict_mysql.h -dict_mysql.o: string_list.h -dict_pgsql.o: ../../include/argv.h -dict_pgsql.o: ../../include/dict.h -dict_pgsql.o: ../../include/events.h -dict_pgsql.o: ../../include/find_inet.h -dict_pgsql.o: ../../include/match_list.h -dict_pgsql.o: ../../include/msg.h -dict_pgsql.o: ../../include/myflock.h -dict_pgsql.o: ../../include/mymalloc.h -dict_pgsql.o: ../../include/myrand.h -dict_pgsql.o: ../../include/split_at.h -dict_pgsql.o: ../../include/stringops.h dict_pgsql.o: ../../include/sys_defs.h -dict_pgsql.o: ../../include/vbuf.h -dict_pgsql.o: ../../include/vstream.h -dict_pgsql.o: ../../include/vstring.h -dict_pgsql.o: cfg_parser.h -dict_pgsql.o: db_common.h dict_pgsql.o: dict_pgsql.c -dict_pgsql.o: dict_pgsql.h -dict_pgsql.o: string_list.h dict_proxy.o: ../../include/argv.h dict_proxy.o: ../../include/attr.h dict_proxy.o: ../../include/dict.h @@ -1415,8 +1380,11 @@ mail_date.o: mail_date.c mail_date.o: mail_date.h mail_dict.o: ../../include/argv.h mail_dict.o: ../../include/dict.h +mail_dict.o: ../../include/dynamicmaps.h mail_dict.o: ../../include/msg.h mail_dict.o: ../../include/myflock.h +mail_dict.o: ../../include/mymalloc.h +mail_dict.o: ../../include/stringops.h mail_dict.o: ../../include/sys_defs.h mail_dict.o: ../../include/vbuf.h mail_dict.o: ../../include/vstream.h @@ -1429,6 +1397,7 @@ mail_dict.o: dict_proxy.h mail_dict.o: dict_sqlite.h mail_dict.o: mail_dict.c mail_dict.o: mail_dict.h +mail_dict.o: mail_params.h mail_error.o: ../../include/name_mask.h mail_error.o: ../../include/sys_defs.h mail_error.o: ../../include/vbuf.h @@ -1736,6 +1705,7 @@ mkmap_open.o: ../../include/dict.h mkmap_open.o: ../../include/dict_cdb.h mkmap_open.o: ../../include/dict_db.h mkmap_open.o: ../../include/dict_dbm.h +mkmap_open.o: ../../include/dynamicmaps.h mkmap_open.o: ../../include/dict_fail.h mkmap_open.o: ../../include/dict_lmdb.h mkmap_open.o: ../../include/dict_sdbm.h diff --git a/postfix/src/global/mail_conf.c b/postfix/src/global/mail_conf.c index ae0ae9886..9ad465e2c 100644 --- a/postfix/src/global/mail_conf.c +++ b/postfix/src/global/mail_conf.c @@ -194,10 +194,10 @@ void mail_conf_suck(void) /* mail_conf_flush - discard configuration dictionary */ -void mail_conf_flush(void) +void mail_conf_flush(void) { if (dict_handle(CONFIG_DICT) != 0) - dict_unregister(CONFIG_DICT); + dict_unregister(CONFIG_DICT); } /* mail_conf_eval - expand macros in string */ diff --git a/postfix/src/global/mail_dict.c b/postfix/src/global/mail_dict.c index 6dbf6eecc..78507a1f8 100644 --- a/postfix/src/global/mail_dict.c +++ b/postfix/src/global/mail_dict.c @@ -10,6 +10,12 @@ /* DESCRIPTION /* This module registers dictionary types that depend on higher-level /* Postfix-specific interfaces and protocols. +/* +/* This also initializes the support for run-time loading of +/* lookup tables, if applicable. +/* +/* The latter requires basic parameter initialization +/* by either mail_conf_read() or mail_params_init(). /* LICENSE /* .ad /* .fi @@ -29,6 +35,9 @@ #include #include +#include +#include +#include /* Global library. */ @@ -39,6 +48,8 @@ #include #include #include +#include +#include typedef struct { char *type; @@ -69,11 +80,20 @@ void mail_dict_init(void) { const DICT_OPEN_INFO *dp; +#ifdef USE_DYNAMIC_LIBS + char *path; + + path = concatenate(var_daemon_dir, "/", "dynamicmaps.cf", (char *) 0); + dymap_init(path); + myfree(path); +#endif + for (dp = dict_open_info; dp->type; dp++) dict_open_register(dp->type, dp->open); } #ifdef TEST + /* * Proof-of-concept test program. */ diff --git a/postfix/src/global/mail_params.c b/postfix/src/global/mail_params.c index 6e4378c2f..af28425ad 100644 --- a/postfix/src/global/mail_params.c +++ b/postfix/src/global/mail_params.c @@ -29,6 +29,7 @@ /* char *var_data_dir; /* char *var_command_dir; /* char *var_queue_dir; +/* char *var_shlib_dir; /* int var_use_limit; /* int var_idle_limit; /* int var_event_drain; @@ -223,6 +224,7 @@ char *var_daemon_dir; char *var_data_dir; char *var_command_dir; char *var_queue_dir; +char *var_shlib_dir; int var_use_limit; int var_event_drain; int var_idle_limit; @@ -554,6 +556,7 @@ void mail_params_init() VAR_DATA_DIR, DEF_DATA_DIR, &var_data_dir, 1, 0, VAR_COMMAND_DIR, DEF_COMMAND_DIR, &var_command_dir, 1, 0, VAR_QUEUE_DIR, DEF_QUEUE_DIR, &var_queue_dir, 1, 0, + VAR_SHLIB_DIR, DEF_SHLIB_DIR, &var_shlib_dir, 1, 0, VAR_PID_DIR, DEF_PID_DIR, &var_pid_dir, 1, 0, VAR_INET_INTERFACES, DEF_INET_INTERFACES, &var_inet_interfaces, 0, 0, VAR_PROXY_INTERFACES, DEF_PROXY_INTERFACES, &var_proxy_interfaces, 0, 0, diff --git a/postfix/src/global/mail_params.h b/postfix/src/global/mail_params.h index 174fdf906..cd0c84843 100644 --- a/postfix/src/global/mail_params.h +++ b/postfix/src/global/mail_params.h @@ -3777,6 +3777,22 @@ extern char *var_virt_dsn_filter; #define DEF_LOCAL_DSN_FILTER "$" VAR_DSN_FILTER extern char *var_local_dsn_filter; + /* + * Location of shared-library files. + * + * If the files will be installed into a known directory, such as a directory + * that is processed with the ldconfig(1) command, then the shlib_directory + * parameter may be configured at installation time. + * + * Otherwise, the shlib_directory parameter must be specified at compile time, + * and it cannot be changed afterwards. + */ +#define VAR_SHLIB_DIR "shlib_directory" +#ifndef DEF_SHLIB_DIR +#define DEF_SHLIB_DIR "/usr/local/lib" +#endif +extern char *var_shlib_dir; + /* LICENSE /* .ad /* .fi diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 0f5cb367e..73c31170a 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20140507" +#define MAIL_RELEASE_DATE "20140508" #define MAIL_VERSION_NUMBER "2.12" #ifdef SNAPSHOT diff --git a/postfix/src/global/mkmap_open.c b/postfix/src/global/mkmap_open.c index dfa9bc2ff..70c79836e 100644 --- a/postfix/src/global/mkmap_open.c +++ b/postfix/src/global/mkmap_open.c @@ -72,6 +72,10 @@ #include #include +#ifdef USE_DYNAMIC_LIBS +#include +#endif + /* Global library. */ #include "mkmap.h" @@ -83,7 +87,7 @@ * We use a different table (in dict_open.c) when querying maps. */ typedef struct { - char *type; + const char *type; MKMAP *(*before_open) (const char *); } MKMAP_OPEN_INFO; @@ -161,12 +165,27 @@ MKMAP *mkmap_open(const char *type, const char *path, MKMAP *mkmap; const MKMAP_OPEN_INFO *mp; +#ifdef USE_DYNAMIC_LIBS + MKMAP_OPEN_INFO oi; + +#endif + /* * Find out what map type to use. */ for (mp = mkmap_types; /* void */ ; mp++) { - if (mp->type == 0) + if (mp->type == 0) { +#ifdef USE_DYNAMIC_LIBS + /* Either returns a handle, or raises a fatal error */ + oi.before_open = + (MKMAP *(*) (const char *)) dymap_get_mkmap_fn(type); + oi.type = type; + mp = &oi; + break; +#else msg_fatal("unsupported map type for this operation: %s", type); +#endif + } if (strcmp(type, mp->type) == 0) break; } diff --git a/postfix/src/local/Makefile.in b/postfix/src/local/Makefile.in index e11bc7540..1471a6327 100644 --- a/postfix/src/local/Makefile.in +++ b/postfix/src/local/Makefile.in @@ -14,12 +14,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) PROG = local TESTPROG= INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/master/Makefile.in b/postfix/src/master/Makefile.in index d1be8fec7..88a0c71af 100644 --- a/postfix/src/master/Makefile.in +++ b/postfix/src/master/Makefile.in @@ -14,15 +14,16 @@ HDRS = mail_server.h master_proto.h mail_flow.h INT_HDR = master.h DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) CFLAGS = $(DEBUG) $(OPT) $(DEFS) -LIB = libmaster.a +LIB = lib$(LIB_PREFIX)master$(LIB_SUFFIX) PROG = master TESTPROG= -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include BIN_DIR = ../../libexec -.c.o:; $(CC) $(CFLAGS) -c $*.c +.c.o:; $(CC) `for i in $(LIB_OBJ); do [ $$i = $@ ] && echo $(SHLIB_CFLAGS); done` $(CFLAGS) -c $*.c all: $(PROG) $(LIB) @@ -32,7 +33,7 @@ Makefile: Makefile.in cat ../../conf/makedefs.out $? >$@ $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) test: $(TESTPROG) @@ -43,6 +44,7 @@ root_tests: $(LIB): $(LIB_OBJ) $(AR) $(ARFL) $(LIB) $? $(RANLIB) $(LIB) + $(SHLIB_LD) -o $(LIB) $(LIB_OBJ) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR)/$(LIB) @@ -51,7 +53,7 @@ $(LIB_DIR)/$(LIB): $(LIB) $(BIN_DIR)/$(PROG): $(PROG) cp $(PROG) $(BIN_DIR) -update: $(LIB_DIR)/$(LIB) $(BIN_DIR)/$(PROG) +update: $(LIB_DIR)/$(LIB) $(BIN_DIR)/$(PROG) $(HDRS) -for i in $(HDRS); \ do \ cmp -s $$i $(INC_DIR)/$$i 2>/dev/null || cp $$i $(INC_DIR); \ diff --git a/postfix/src/master/event_server.c b/postfix/src/master/event_server.c index 876800db0..b3f958662 100644 --- a/postfix/src/master/event_server.c +++ b/postfix/src/master/event_server.c @@ -608,11 +608,6 @@ NORETURN event_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) */ mail_conf_suck(); - /* - * Register dictionaries that use higher-level interfaces and protocols. - */ - mail_dict_init(); - /* * After database open error, continue execution with reduced * functionality. @@ -692,6 +687,12 @@ NORETURN event_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) if (redo_syslog_init) msg_syslog_init(mail_task(var_procname), LOG_PID, LOG_FACILITY); + /* + * Register higher-level dictionaries and initialize the support for + * dynamically-loaded dictionarles. + */ + mail_dict_init(); + /* * If not connected to stdin, stdin must not be a terminal. */ diff --git a/postfix/src/master/multi_server.c b/postfix/src/master/multi_server.c index c4f9d82ce..72e3425db 100644 --- a/postfix/src/master/multi_server.c +++ b/postfix/src/master/multi_server.c @@ -604,11 +604,6 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) */ mail_conf_suck(); - /* - * Register dictionaries that use higher-level interfaces and protocols. - */ - mail_dict_init(); - /* * After database open error, continue execution with reduced * functionality. @@ -688,6 +683,12 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...) if (redo_syslog_init) msg_syslog_init(mail_task(var_procname), LOG_PID, LOG_FACILITY); + /* + * Register higher-level dictionaries and initialize the support for + * dynamically-loaded dictionarles. + */ + mail_dict_init(); + /* * If not connected to stdin, stdin must not be a terminal. */ diff --git a/postfix/src/master/single_server.c b/postfix/src/master/single_server.c index 8dc765004..8c4e83dee 100644 --- a/postfix/src/master/single_server.c +++ b/postfix/src/master/single_server.c @@ -482,11 +482,6 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) */ mail_conf_suck(); - /* - * Register dictionaries that use higher-level interfaces and protocols. - */ - mail_dict_init(); - /* * After database open error, continue execution with reduced * functionality. @@ -566,6 +561,12 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...) if (redo_syslog_init) msg_syslog_init(mail_task(var_procname), LOG_PID, LOG_FACILITY); + /* + * Register higher-level dictionaries and initialize the support for + * dynamically-loaded dictionarles. + */ + mail_dict_init(); + /* * If not connected to stdin, stdin must not be a terminal. */ diff --git a/postfix/src/master/trigger_server.c b/postfix/src/master/trigger_server.c index 591c3543c..68b5f6b58 100644 --- a/postfix/src/master/trigger_server.c +++ b/postfix/src/master/trigger_server.c @@ -485,11 +485,6 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. */ mail_conf_suck(); - /* - * Register dictionaries that use higher-level interfaces and protocols. - */ - mail_dict_init(); - /* * After database open error, continue execution with reduced * functionality. @@ -569,6 +564,12 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,.. if (redo_syslog_init) msg_syslog_init(mail_task(var_procname), LOG_PID, LOG_FACILITY); + /* + * Register higher-level dictionaries and initialize the support for + * dynamically-loaded dictionarles. + */ + mail_dict_init(); + /* * If not connected to stdin, stdin must not be a terminal. */ diff --git a/postfix/src/milter/Makefile.in b/postfix/src/milter/Makefile.in index 99b646902..2266d18aa 100644 --- a/postfix/src/milter/Makefile.in +++ b/postfix/src/milter/Makefile.in @@ -9,7 +9,8 @@ INCL = LIB = libmilter.a TESTPROG= milter test-milter -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include MAKES = @@ -30,12 +31,12 @@ tests: root_tests: $(LIB): $(OBJS) - $(AR) $(ARFL) $(LIB) $? - $(RANLIB) $(LIB) + $(_AR) $(ARFL) $(LIB) $? + $(_RANLIB) $(LIB) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) - $(RANLIB) $(LIB_DIR)/$(LIB) + $(_RANLIB) $(LIB_DIR)/$(LIB) update: $(LIB_DIR)/$(LIB) $(HDRS) -for i in $(HDRS); \ diff --git a/postfix/src/oqmgr/Makefile.in b/postfix/src/oqmgr/Makefile.in index 3604e3249..780061d71 100644 --- a/postfix/src/oqmgr/Makefile.in +++ b/postfix/src/oqmgr/Makefile.in @@ -14,12 +14,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = qmgr INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/pickup/Makefile.in b/postfix/src/pickup/Makefile.in index 07e39f2e1..ea876c22a 100644 --- a/postfix/src/pickup/Makefile.in +++ b/postfix/src/pickup/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = pickup INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/pipe/Makefile.in b/postfix/src/pipe/Makefile.in index cfbd2e0d7..9763faa49 100644 --- a/postfix/src/pipe/Makefile.in +++ b/postfix/src/pipe/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = pipe INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postalias/Makefile.in b/postfix/src/postalias/Makefile.in index a2e11f86a..2f731eb80 100644 --- a/postfix/src/postalias/Makefile.in +++ b/postfix/src/postalias/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postalias INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postcat/Makefile.in b/postfix/src/postcat/Makefile.in index 1760824c6..1abda27a0 100644 --- a/postfix/src/postcat/Makefile.in +++ b/postfix/src/postcat/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postcat INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postconf/Makefile.in b/postfix/src/postconf/Makefile.in index 4db4defef..45d894760 100644 --- a/postfix/src/postconf/Makefile.in +++ b/postfix/src/postconf/Makefile.in @@ -21,18 +21,20 @@ DUMMIES = makes_dummy # for "make -j" PROG = postconf SAMPLES = ../../conf/main.cf.default INC_DIR = ../../include -LIBS = ../../lib/libxsasl.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/libxsasl.a \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) ../../conf/main.cf.default: $(PROG) Makefile rm -f $@ (echo "# DO NOT EDIT THIS FILE. EDIT THE MAIN.CF FILE INSTEAD. THE"; \ echo "# TEXT HERE JUST SHOWS DEFAULT SETTINGS BUILT INTO POSTFIX."; \ - echo "#"; ./$(PROG) -d -c ../../conf) | \ + echo "#"; $(SHLIB_ENV) ./$(PROG) -d -c ../../conf) | \ egrep -v '^(myhostname|mydomain|mynetworks|process_name|process_id) ' >$@ $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postconf/postconf.c b/postfix/src/postconf/postconf.c index 23bcbb082..973628ee8 100644 --- a/postfix/src/postconf/postconf.c +++ b/postfix/src/postconf/postconf.c @@ -849,6 +849,7 @@ int main(int argc, char **argv) * If showing map types, show them and exit */ if (pcf_cmd_mode & PCF_SHOW_MAPS) { + mail_conf_read(); mail_dict_init(); pcf_show_maps(); } diff --git a/postfix/src/postdrop/Makefile.in b/postfix/src/postdrop/Makefile.in index cfdc692c8..955994335 100644 --- a/postfix/src/postdrop/Makefile.in +++ b/postfix/src/postdrop/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postdrop INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out @@ -63,6 +64,7 @@ postdrop.o: ../../include/clean_env.h postdrop.o: ../../include/cleanup_user.h postdrop.o: ../../include/iostuff.h postdrop.o: ../../include/mail_conf.h +postdrop.o: ../../include/mail_dict.h postdrop.o: ../../include/mail_params.h postdrop.o: ../../include/mail_proto.h postdrop.o: ../../include/mail_queue.h diff --git a/postfix/src/postdrop/postdrop.c b/postfix/src/postdrop/postdrop.c index 232217d85..24a0f117d 100644 --- a/postfix/src/postdrop/postdrop.c +++ b/postfix/src/postdrop/postdrop.c @@ -135,6 +135,7 @@ #include #include #include +#include #include #include @@ -312,6 +313,7 @@ int main(int argc, char **argv) * Mail submission access control. Should this be in the user-land gate, * or in the daemon process? */ + mail_dict_init(); if ((errstr = check_user_acl_byuid(var_submit_acl, uid)) != 0) msg_fatal("User %s(%ld) is not allowed to submit mail", errstr, (long) uid); diff --git a/postfix/src/postfix/Makefile.in b/postfix/src/postfix/Makefile.in index 71e1224e1..4b72df12f 100644 --- a/postfix/src/postfix/Makefile.in +++ b/postfix/src/postfix/Makefile.in @@ -9,12 +9,13 @@ FILES = Makefile $(SRCS) $(HDRS) INC_DIR = ../../include TESTPROG= PROG = postfix -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postfix/postfix.c b/postfix/src/postfix/postfix.c index 183c825e5..e528d9a2d 100644 --- a/postfix/src/postfix/postfix.c +++ b/postfix/src/postfix/postfix.c @@ -116,48 +116,49 @@ /* .fi /* The following \fBmain.cf\fR configuration parameters are /* exported as environment variables with the same names: +/* .IP "\fBconfig_directory (see 'postconf -d' output)\fR" +/* The default location of the Postfix main.cf and master.cf +/* configuration files. /* .IP "\fBcommand_directory (see 'postconf -d' output)\fR" /* The location of all postfix administrative commands. /* .IP "\fBdaemon_directory (see 'postconf -d' output)\fR" /* The directory with Postfix support programs and daemon programs. -/* .IP "\fBconfig_directory (see 'postconf -d' output)\fR" -/* The default location of the Postfix main.cf and master.cf -/* configuration files. -/* .IP "\fBqueue_directory (see 'postconf -d' output)\fR" -/* The location of the Postfix top-level queue directory. +/* .IP "\fBhtml_directory (see 'postconf -d' output)\fR" +/* The location of Postfix HTML files that describe how to build, +/* configure or operate a specific Postfix subsystem or feature. /* .IP "\fBmail_owner (postfix)\fR" /* The UNIX system account that owns the Postfix queue and most Postfix /* daemon processes. -/* .IP "\fBsetgid_group (postdrop)\fR" -/* The group ownership of set-gid Postfix commands and of group-writable -/* Postfix directories. -/* .IP "\fBsendmail_path (see 'postconf -d' output)\fR" -/* A Sendmail compatibility feature that specifies the location of -/* the Postfix \fBsendmail\fR(1) command. -/* .IP "\fBnewaliases_path (see 'postconf -d' output)\fR" -/* Sendmail compatibility feature that specifies the location of the -/* \fBnewaliases\fR(1) command. /* .IP "\fBmailq_path (see 'postconf -d' output)\fR" /* Sendmail compatibility feature that specifies where the Postfix /* \fBmailq\fR(1) command is installed. -/* .IP "\fBhtml_directory (see 'postconf -d' output)\fR" -/* The location of Postfix HTML files that describe how to build, -/* configure or operate a specific Postfix subsystem or feature. /* .IP "\fBmanpage_directory (see 'postconf -d' output)\fR" /* Where the Postfix manual pages are installed. +/* .IP "\fBnewaliases_path (see 'postconf -d' output)\fR" +/* Sendmail compatibility feature that specifies the location of the +/* \fBnewaliases\fR(1) command. +/* .IP "\fBqueue_directory (see 'postconf -d' output)\fR" +/* The location of the Postfix top-level queue directory. /* .IP "\fBreadme_directory (see 'postconf -d' output)\fR" /* The location of Postfix README files that describe how to build, /* configure or operate a specific Postfix subsystem or feature. +/* .IP "\fBsendmail_path (see 'postconf -d' output)\fR" +/* A Sendmail compatibility feature that specifies the location of +/* the Postfix \fBsendmail\fR(1) command. +/* .IP "\fBsetgid_group (postdrop)\fR" +/* The group ownership of set-gid Postfix commands and of group-writable +/* Postfix directories. /* .PP /* Available in Postfix version 2.5 and later: /* .IP "\fBdata_directory (see 'postconf -d' output)\fR" /* The directory with Postfix-writable data files (for example: /* caches, pseudo-random numbers). /* .PP +/* Available in Postfix version 2.12 and later: +/* .IP "\fBshlib_directory (see 'postconf -d' output)\fR" +/* The location of Postfix shared libraries (libpostfix-*.so.*). +/* .PP /* Other configuration parameters: -/* .IP "\fBconfig_directory (see 'postconf -d' output)\fR" -/* The default location of the Postfix main.cf and master.cf -/* configuration files. /* .IP "\fBimport_environment (see 'postconf -d' output)\fR" /* The list of environment parameters that a Postfix process will /* import from a non-Postfix parent process. @@ -204,6 +205,7 @@ /* $daemon_directory/postfix-files, file/directory permissions /* $daemon_directory/postfix-script, administrative commands /* $daemon_directory/post-install, post-installation configuration +/* $daemon_directory/dynamicmaps.cf, plug-in database clients /* SEE ALSO /* Commands: /* postalias(1), create/update/query alias database @@ -505,6 +507,7 @@ int main(int argc, char **argv) check_setenv(VAR_DATA_DIR, var_data_dir); /* main.cf */ check_setenv(VAR_QUEUE_DIR, var_queue_dir); /* main.cf */ check_setenv(VAR_CONFIG_DIR, var_config_dir); /* main.cf */ + check_setenv(VAR_SHLIB_DIR, var_shlib_dir); /* main.cf */ /* * Do we want to keep adding things here as shell scripts evolve? diff --git a/postfix/src/postkick/Makefile.in b/postfix/src/postkick/Makefile.in index 72fde2102..74f1cddae 100644 --- a/postfix/src/postkick/Makefile.in +++ b/postfix/src/postkick/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postkick INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postlock/Makefile.in b/postfix/src/postlock/Makefile.in index de6546bd3..1715d719c 100644 --- a/postfix/src/postlock/Makefile.in +++ b/postfix/src/postlock/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postlock INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postlog/Makefile.in b/postfix/src/postlog/Makefile.in index effad6c4e..0cc872842 100644 --- a/postfix/src/postlog/Makefile.in +++ b/postfix/src/postlog/Makefile.in @@ -9,12 +9,13 @@ FILES = Makefile $(SRCS) $(HDRS) INC_DIR = ../../include TESTPROG= PROG = postlog -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postmap/Makefile.in b/postfix/src/postmap/Makefile.in index 75e7b21ec..5f7dc6ad7 100644 --- a/postfix/src/postmap/Makefile.in +++ b/postfix/src/postmap/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postmap INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postmulti/Makefile.in b/postfix/src/postmulti/Makefile.in index 2c8f4137f..b37583ef8 100644 --- a/postfix/src/postmulti/Makefile.in +++ b/postfix/src/postmulti/Makefile.in @@ -9,12 +9,13 @@ FILES = Makefile $(SRCS) $(HDRS) INC_DIR = ../../include TESTPROG= PROG = postmulti -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postqueue/Makefile.in b/postfix/src/postqueue/Makefile.in index 396ab97c6..6ba697223 100644 --- a/postfix/src/postqueue/Makefile.in +++ b/postfix/src/postqueue/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postqueue INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postscreen/Makefile.in b/postfix/src/postscreen/Makefile.in index ecbf3da13..a5951b32c 100644 --- a/postfix/src/postscreen/Makefile.in +++ b/postfix/src/postscreen/Makefile.in @@ -17,13 +17,16 @@ TESTPROG= PROG = postscreen INC_DIR = ../../include # Fake libdns dependency, for early-binding shared-library builds. -LIBS = ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a \ - ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/postsuper/Makefile.in b/postfix/src/postsuper/Makefile.in index fe86fda94..e38b62420 100644 --- a/postfix/src/postsuper/Makefile.in +++ b/postfix/src/postsuper/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = postsuper INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/posttls-finger/Makefile.in b/postfix/src/posttls-finger/Makefile.in index c5ab762be..1b427b083 100644 --- a/postfix/src/posttls-finger/Makefile.in +++ b/postfix/src/posttls-finger/Makefile.in @@ -8,8 +8,10 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= INC_DIR = ../../include PROG = posttls-finger -LIBS = ../../lib/libtls.a ../../lib/libdns.a \ - ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c @@ -21,7 +23,7 @@ Makefile: Makefile.in cat ../../conf/makedefs.out $? >$@ posttls-finger: $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) test: $(TESTPROG) diff --git a/postfix/src/proxymap/Makefile.in b/postfix/src/proxymap/Makefile.in index 96358faa3..387bb890f 100644 --- a/postfix/src/proxymap/Makefile.in +++ b/postfix/src/proxymap/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = proxymap INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/qmgr/Makefile.in b/postfix/src/qmgr/Makefile.in index bd63a9b43..1286518ea 100644 --- a/postfix/src/qmgr/Makefile.in +++ b/postfix/src/qmgr/Makefile.in @@ -16,12 +16,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = qmgr INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/qmqpd/Makefile.in b/postfix/src/qmqpd/Makefile.in index f99e26695..4a0098e2c 100644 --- a/postfix/src/qmqpd/Makefile.in +++ b/postfix/src/qmqpd/Makefile.in @@ -8,12 +8,15 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = qmqpd INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libdns.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/scache/Makefile.in b/postfix/src/scache/Makefile.in index c6ab06562..274fb8aaa 100644 --- a/postfix/src/scache/Makefile.in +++ b/postfix/src/scache/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = scache INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/sendmail/Makefile.in b/postfix/src/sendmail/Makefile.in index 02111628f..740d745a2 100644 --- a/postfix/src/sendmail/Makefile.in +++ b/postfix/src/sendmail/Makefile.in @@ -8,12 +8,13 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = sendmail INC_DIR = ../../include -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/showq/Makefile.in b/postfix/src/showq/Makefile.in index d4cd349cb..ecfea376b 100644 --- a/postfix/src/showq/Makefile.in +++ b/postfix/src/showq/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = showq INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/smtp/Makefile.in b/postfix/src/smtp/Makefile.in index e5013e4a2..bc284e68d 100644 --- a/postfix/src/smtp/Makefile.in +++ b/postfix/src/smtp/Makefile.in @@ -14,13 +14,17 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= smtp_unalias smtp_map11 PROG = smtp INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a \ - ../../lib/libxsasl.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/libxsasl.a \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out @@ -69,8 +73,8 @@ smtp_map11: smtp_map11.c $(LIBS) # This needs trivial-rewrite service and myorigin==mydomain smtp_map11_test: smtp_map11 map11_map smtp_map11.ref - ../postmap/postmap map11_map - ./smtp_map11 hash:map11_map foo@example.com bar@example.com \ + $(SHLIB_ENV) ../postmap/postmap map11_map + $(SHLIB_ENV) ./smtp_map11 hash:map11_map foo@example.com bar@example.com \ baz@example.com foo@example.net >smtp_map11.tmp 2>&1 sed -e "s/MYDOMAIN/`postconf -h mydomain`/" \ -e "s/MYHOSTNAME/`postconf -h myhostname`/" smtp_map11.ref | \ diff --git a/postfix/src/smtp/smtp.h b/postfix/src/smtp/smtp.h index e966ff6b1..70f8dbe67 100644 --- a/postfix/src/smtp/smtp.h +++ b/postfix/src/smtp/smtp.h @@ -322,7 +322,7 @@ typedef struct SMTP_SESSION { time_t expire_time; /* session reuse expiration time */ int reuse_count; /* # of times reused (for logging) */ - int dead; /* No further I/O allowed */ + int forbidden; /* No further I/O allowed */ #ifdef USE_SASL_AUTH char *sasl_mechanism_list; /* server mechanism list */ @@ -416,7 +416,7 @@ extern HBC_CALL_BACKS smtp_hbc_callbacks[]; * connections and other reasons why connections cannot be cached. */ #define THIS_SESSION_IS_CACHED \ - (!THIS_SESSION_IS_DEAD && session->expire_time > 0) + (!THIS_SESSION_IS_FORBIDDEN && session->expire_time > 0) #define THIS_SESSION_IS_EXPIRED \ (THIS_SESSION_IS_CACHED \ @@ -424,27 +424,27 @@ extern HBC_CALL_BACKS smtp_hbc_callbacks[]; || (var_smtp_reuse_count > 0 \ && session->reuse_count >= var_smtp_reuse_count))) -#define THIS_SESSION_IS_BAD \ - (!THIS_SESSION_IS_DEAD && session->expire_time < 0) +#define THIS_SESSION_IS_THROTTLED \ + (!THIS_SESSION_IS_FORBIDDEN && session->expire_time < 0) -#define THIS_SESSION_IS_DEAD \ - (session->dead != 0) +#define THIS_SESSION_IS_FORBIDDEN \ + (session->forbidden != 0) /* Bring the bad news. */ #define DONT_CACHE_THIS_SESSION \ (session->expire_time = 0) -#define DONT_CACHE_BAD_SESSION \ +#define DONT_CACHE_THROTTLED_SESSION \ (session->expire_time = -1) -#define DONT_USE_DEAD_SESSION \ - (session->dead = 1) +#define DONT_USE_FORBIDDEN_SESSION \ + (session->forbidden = 1) /* Initialization. */ #define USE_NEWBORN_SESSION \ - (session->dead = 0) + (session->forbidden = 0) #define CACHE_THIS_SESSION_UNTIL(when) \ (session->expire_time = (when)) diff --git a/postfix/src/smtp/smtp_connect.c b/postfix/src/smtp/smtp_connect.c index 3ae3af90b..19c374fa6 100644 --- a/postfix/src/smtp/smtp_connect.c +++ b/postfix/src/smtp/smtp_connect.c @@ -368,7 +368,7 @@ static void smtp_cleanup_session(SMTP_STATE *state) { DELIVER_REQUEST *request = state->request; SMTP_SESSION *session = state->session; - int bad_session; + int throttled; /* * Inform the postmaster of trouble. @@ -397,7 +397,7 @@ static void smtp_cleanup_session(SMTP_STATE *state) * physical bindings; caching a session under its own hostname provides * no performance benefit, given the way smtp_connect() works. */ - bad_session = THIS_SESSION_IS_BAD; /* smtp_quit() may fail */ + throttled = THIS_SESSION_IS_THROTTLED; /* smtp_quit() may fail */ if (THIS_SESSION_IS_EXPIRED) smtp_quit(state); /* also disables caching */ if (THIS_SESSION_IS_CACHED @@ -417,7 +417,7 @@ static void smtp_cleanup_session(SMTP_STATE *state) * next-hop destination. Otherwise we could end up skipping over the * available and more preferred servers. */ - if (HAVE_NEXTHOP_STATE(state) && !bad_session) + if (HAVE_NEXTHOP_STATE(state) && !throttled) FREE_NEXTHOP_STATE(state); /* @@ -539,7 +539,7 @@ static void smtp_connect_local(SMTP_STATE *state, const char *path) */ if ((session->features & SMTP_FEATURE_FROM_CACHE) == 0 && smtp_helo(state) != 0) { - if (!THIS_SESSION_IS_DEAD + if (!THIS_SESSION_IS_FORBIDDEN && vstream_ferror(session->stream) == 0 && vstream_feof(session->stream) == 0) smtp_quit(state); @@ -889,11 +889,13 @@ static void smtp_connect_inet(SMTP_STATE *state, const char *nexthop, * * Opportunistic (a.k.a. on-demand) session caching on request by the * queue manager. This is turned temporarily when a destination has a - * high volume of mail in the active queue. + * high volume of mail in the active queue. When the surge reaches + * its end, the queue manager requests that connections be retrieved + * but not stored. */ if (addr_list && (state->misc_flags & SMTP_MISC_FLAG_FIRST_NEXTHOP)) { smtp_cache_policy(state, domain); - if (state->misc_flags & SMTP_MISC_FLAG_CONN_STORE) + if (state->misc_flags & SMTP_MISC_FLAG_CONN_CACHE_MASK) SET_NEXTHOP_STATE(state, dest); } @@ -1004,7 +1006,7 @@ static void smtp_connect_inet(SMTP_STATE *state, const char *nexthop, * When a TLS handshake fails, the stream is marked * "dead" to avoid further I/O over a broken channel. */ - if (!THIS_SESSION_IS_DEAD + if (!THIS_SESSION_IS_FORBIDDEN && vstream_ferror(session->stream) == 0 && vstream_feof(session->stream) == 0) smtp_quit(state); diff --git a/postfix/src/smtp/smtp_proto.c b/postfix/src/smtp/smtp_proto.c index fbae51f2d..1661eee83 100644 --- a/postfix/src/smtp/smtp_proto.c +++ b/postfix/src/smtp/smtp_proto.c @@ -826,7 +826,7 @@ static int smtp_start_tls(SMTP_STATE *state) * We must avoid further I/O, the peer is in an undefined state. */ (void) vstream_fpurge(session->stream, VSTREAM_PURGE_BOTH); - DONT_USE_DEAD_SESSION; + DONT_USE_FORBIDDEN_SESSION; /* * If TLS is optional, try delivery to the same server over a @@ -2002,7 +2002,7 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state, "unreadable mail queue entry"); /* Bailing out, abort stream with prejudice */ (void) vstream_fpurge(session->stream, VSTREAM_PURGE_BOTH); - DONT_USE_DEAD_SESSION; + DONT_USE_FORBIDDEN_SESSION; /* If bounce_append() succeeded, status is still 0 */ if (state->status == 0) (void) mark_corrupt(state->src); diff --git a/postfix/src/smtp/smtp_trouble.c b/postfix/src/smtp/smtp_trouble.c index b3b4aacc5..2262e6cf0 100644 --- a/postfix/src/smtp/smtp_trouble.c +++ b/postfix/src/smtp/smtp_trouble.c @@ -265,7 +265,7 @@ static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue) * Don't cache this session. We can't talk to this server. */ if (throttle_queue && session) - DONT_CACHE_BAD_SESSION; + DONT_CACHE_THROTTLED_SESSION; return (-1); } diff --git a/postfix/src/smtpd/Makefile.in b/postfix/src/smtpd/Makefile.in index 87160dc28..b0c375ef9 100644 --- a/postfix/src/smtpd/Makefile.in +++ b/postfix/src/smtpd/Makefile.in @@ -17,14 +17,19 @@ TESTPROG= smtpd_token smtpd_check PROG = smtpd INC_DIR = ../../include # Fake libdns dependency, for early-binding shared-library builds. -LIBS = ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a \ - ../../lib/libxsasl.a ../../lib/libmilter.a ../../lib/libdns.a \ - ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/libxsasl.a \ + ../../lib/libmilter.a \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out @@ -76,66 +81,66 @@ root_tests: # This requires that the DNS server can query porcupine.org. smtpd_check_test: smtpd_check smtpd_check.in smtpd_check.ref smtpd_check_access - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_check.ref smtpd_check.tmp rm -f smtpd_check.tmp smtpd_check_access.* # This requires that the DNS server can query porcupine.org. smtpd_check_test2: smtpd_check smtpd_check.in2 smtpd_check.ref2 smtpd_check_access - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_check.ref2 smtpd_check.tmp rm -f smtpd_check.tmp smtpd_check_access.* smtpd_check_test4: smtpd_check smtpd_check.in4 smtpd_check.ref4 smtpd_check_access - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_check.ref4 smtpd_check.tmp rm -f smtpd_check.tmp smtpd_check_access.* smtpd_acl_test: smtpd_check smtpd_acl.in smtpd_acl.ref smtpd_check_access - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_acl.ref smtpd_check.tmp rm -f smtpd_check.tmp smtpd_check_access.* # This requires that the DNS server can query porcupine.org. smtpd_exp_test: smtpd_check smtpd_exp.in smtpd_exp.ref - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_exp.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_exp.tmp 2>&1 diff smtpd_exp.ref smtpd_exp.tmp rm -f smtpd_exp.tmp smtpd_check_access.* smtpd_check_dsn_test: smtpd_check smtpd_check_dsn.in smtpd_check_dsn.ref smtpd_check_access - ../postmap/postmap hash:smtpd_check_access - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap hash:smtpd_check_access + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_check_dsn.ref smtpd_check.tmp rm -f smtpd_check.tmp smtpd_check_access.* # This requires that 168,100.189.7 is a local or virtual interface. smtpd_check_backup_test: smtpd_check smtpd_check_backup.in smtpd_check_backup.ref - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_check_backup.ref smtpd_check.tmp rm -f smtpd_check.tmp smtpd_token_test: smtpd_token smtpd_token.in smtpd_token.ref - ./smtpd_token smtpd_token.tmp 2>&1 + $(SHLIB_ENV) ./smtpd_token smtpd_token.tmp 2>&1 diff smtpd_token.ref smtpd_token.tmp rm -f smtpd_token.tmp # This requires that the DNS server can query porcupine.org and rfc-ignorant.org smtpd_dnswl_test: smtpd_check smtpd_dnswl.in smtpd_dnswl.ref - ./smtpd_check smtpd_dnswl.tmp 2>&1 + $(SHLIB_ENV) ./smtpd_check smtpd_dnswl.tmp 2>&1 diff smtpd_dnswl.ref smtpd_dnswl.tmp rm -f smtpd_dnswl.tmp smtpd_error_test: smtpd_check smtpd_error.in smtpd_error.ref - ./smtpd_check smtpd_check.tmp 2>&1 + $(SHLIB_ENV) ./smtpd_check smtpd_check.tmp 2>&1 diff smtpd_error.ref smtpd_check.tmp rm -f smtpd_check.tmp diff --git a/postfix/src/smtpstone/Makefile.in b/postfix/src/smtpstone/Makefile.in index 79a3ecad6..e589503c3 100644 --- a/postfix/src/smtpstone/Makefile.in +++ b/postfix/src/smtpstone/Makefile.in @@ -8,7 +8,8 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= INC_DIR = ../../include PROG = smtp-source smtp-sink qmqp-source qmqp-sink -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c diff --git a/postfix/src/spawn/Makefile.in b/postfix/src/spawn/Makefile.in index 33c075a9e..b48005563 100644 --- a/postfix/src/spawn/Makefile.in +++ b/postfix/src/spawn/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = spawn INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/tls/Makefile.in b/postfix/src/tls/Makefile.in index 1af941902..3daf50b51 100644 --- a/postfix/src/tls/Makefile.in +++ b/postfix/src/tls/Makefile.in @@ -16,15 +16,17 @@ TESTSRC = DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE) CFLAGS = $(DEBUG) $(OPT) $(DEFS) INCL = -LIB = libtls.a +LIB = lib$(LIB_PREFIX)tls$(LIB_SUFFIX) TESTPROG= tls_dh tls_mgr tls_rsa tls_dane -LIBS = ../../lib/libdns.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include MAKES = -.c.o:; $(CC) $(CFLAGS) -c $*.c +.c.o:; $(CC) $(SHLIB_CFLAGS) $(CFLAGS) -c $*.c all: $(LIB) @@ -42,6 +44,7 @@ root_tests: $(LIB): $(OBJS) $(AR) $(ARFL) $(LIB) $? $(RANLIB) $(LIB) + $(SHLIB_LD) -o $(LIB) $(OBJS) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) diff --git a/postfix/src/tlsmgr/Makefile.in b/postfix/src/tlsmgr/Makefile.in index 6ee269582..5f2cd95ed 100644 --- a/postfix/src/tlsmgr/Makefile.in +++ b/postfix/src/tlsmgr/Makefile.in @@ -9,13 +9,16 @@ TESTPROG= PROG = tlsmgr INC_DIR = ../../include # Fake libdns dependency, for early-binding shared-library builds. -LIBS = ../../lib/libmaster.a ../../lib/libtls.a ../../lib/libdns.a \ - ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/tlsproxy/Makefile.in b/postfix/src/tlsproxy/Makefile.in index 137752a9f..0435f0dd5 100644 --- a/postfix/src/tlsproxy/Makefile.in +++ b/postfix/src/tlsproxy/Makefile.in @@ -8,13 +8,16 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = tlsproxy INC_DIR = ../../include -LIBS = ../../lib/libtls.a ../../lib/libmaster.a ../../lib/libglobal.a \ - ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)tls$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)dns$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/trivial-rewrite/Makefile.in b/postfix/src/trivial-rewrite/Makefile.in index c1860672f..516c851d8 100644 --- a/postfix/src/trivial-rewrite/Makefile.in +++ b/postfix/src/trivial-rewrite/Makefile.in @@ -8,7 +8,9 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) LIB = TESTPROG= PROG = trivial-rewrite -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include BIN_DIR = ../../libexec @@ -18,7 +20,7 @@ BIN_DIR = ../../libexec all: $(PROG) $(LIB) $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/util/Makefile.in b/postfix/src/util/Makefile.in index 5ab223260..b1e1e84d1 100644 --- a/postfix/src/util/Makefile.in +++ b/postfix/src/util/Makefile.in @@ -21,6 +21,7 @@ SRCS = alldig.c allprint.c argv.c argv_split.c attr_clnt.c attr_print0.c \ readlline.c ring.c safe_getenv.c safe_open.c \ sane_accept.c sane_connect.c sane_link.c sane_rename.c \ sane_socketpair.c sane_time.c scan_dir.c set_eugid.c set_ugid.c \ + load_lib.c dynamicmaps.c \ sigdelay.c skipblanks.c sock_addr.c spawn_command.c split_at.c \ split_nameval.c stat_as.c strcasecmp.c stream_connect.c \ stream_listen.c stream_recv_fd.c stream_send_fd.c stream_trigger.c \ @@ -51,6 +52,7 @@ OBJS = alldig.o allprint.o argv.o argv_split.o attr_clnt.o attr_print0.o \ host_port.o htable.o inet_addr_host.o inet_addr_list.o \ inet_addr_local.o inet_connect.o inet_listen.o inet_proto.o \ inet_trigger.o line_wrap.o lowercase.o lstat_as.o mac_expand.o \ + load_lib.o dynamicmaps.o \ mac_parse.o make_dirs.o mask_addr.o match_list.o match_ops.o msg.o \ msg_output.o msg_syslog.o msg_vstream.o mvect.o myaddrinfo.o myflock.o \ mymalloc.o myrand.o mystrtok.o name_code.o name_mask.o netstring.o \ @@ -89,6 +91,7 @@ HDRS = argv.h attr.h attr_clnt.h auto_clnt.h base64_code.h binhash.h \ mymalloc.h myrand.h name_code.h name_mask.h netstring.h nvtable.h \ open_as.h open_lock.h percentm.h posix_signals.h readlline.h ring.h \ safe.h safe_open.h sane_accept.h sane_connect.h sane_fsops.h \ + load_lib.h dynamicmaps.h \ sane_socketpair.h sane_time.h scan_dir.h set_eugid.h set_ugid.h \ sigdelay.h sock_addr.h spawn_command.h split_at.h stat_as.h \ stringops.h sys_defs.h timed_connect.h timed_wait.h trigger.h \ @@ -103,7 +106,7 @@ DEFS = -I. -D$(SYSTYPE) CFLAGS = $(DEBUG) $(OPT) $(DEFS) FILES = Makefile $(SRCS) $(HDRS) INCL = -LIB = libutil.a +LIB = lib$(LIB_PREFIX)util$(LIB_SUFFIX) TESTPROG= dict_open dup2_pass_on_exec events exec_command fifo_open \ fifo_rdonly_bug fifo_rdwr_bug fifo_trigger fsspace fullname \ inet_addr_host inet_addr_local mac_parse make_dirs msg_syslog \ @@ -120,7 +123,7 @@ TESTPROG= dict_open dup2_pass_on_exec events exec_command fifo_open \ LIB_DIR = ../../lib INC_DIR = ../../include -.c.o:; $(CC) $(CFLAGS) -c $*.c +.c.o:; $(CC) $(SHLIB_CFLAGS) $(CFLAGS) -c $*.c all: $(LIB) @@ -134,6 +137,7 @@ test: $(TESTPROG) $(LIB): $(OBJS) $(AR) $(ARFL) $(LIB) $? $(RANLIB) $(LIB) + $(SHLIB_LD) -o $(LIB) $(OBJS) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) @@ -475,128 +479,128 @@ tests: valid_hostname_test mac_expand_test dict_test unescape_test \ root_tests: valid_hostname_test: valid_hostname valid_hostname.in valid_hostname.ref - ./valid_hostname valid_hostname.tmp + $(SHLIB_ENV) ./valid_hostname valid_hostname.tmp diff valid_hostname.ref valid_hostname.tmp rm -f valid_hostname.tmp mac_expand_test: mac_expand mac_expand.in mac_expand.ref - ./mac_expand mac_expand.tmp 2>&1 + $(SHLIB_ENV) ./mac_expand mac_expand.tmp 2>&1 diff mac_expand.ref mac_expand.tmp rm -f mac_expand.tmp unescape_test: unescape unescape.in unescape.ref - ./unescape unescape.tmp + $(SHLIB_ENV) ./unescape unescape.tmp diff -b unescape.ref unescape.tmp rm -f unescape.tmp hex_quote_test: hex_quote - ./hex_quote hex_quote.tmp + $(SHLIB_ENV) ./hex_quote hex_quote.tmp od -cb hex_quote.ref cmp hex_quote.ref hex_quote.tmp rm -f hex_quote.ref hex_quote.tmp ctable_test: ctable - ./ctable ctable.tmp 2>&1 + $(SHLIB_ENV) ./ctable ctable.tmp 2>&1 diff ctable.ref ctable.tmp rm -f ctable.tmp # On Linux, following test may require "modprobe ipv6" to enable IPv6. inet_addr_list_test: inet_addr_list - ./inet_addr_list `cat inet_addr_list.in` >inet_addr_list.tmp 2>&1 + $(SHLIB_ENV) ./inet_addr_list `cat inet_addr_list.in` >inet_addr_list.tmp 2>&1 diff inet_addr_list.ref inet_addr_list.tmp rm -f inet_addr_list.tmp sane_basename_test: sane_basename - ./sane_basename sane_basename.tmp 2>&1 + $(SHLIB_ENV) ./sane_basename sane_basename.tmp 2>&1 diff sane_basename.ref sane_basename.tmp rm -f sane_basename.tmp base64_code_test: base64_code - ./base64_code + $(SHLIB_ENV) ./base64_code attr_scan64_test: attr_print64 attr_scan64 attr_scan64.ref - (./attr_print64 2>&3 | (sleep 1; ./attr_scan64)) >attr_scan64.tmp 2>&1 3>&1 + ($(SHLIB_ENV) ./attr_print64 2>&3 | (sleep 1; $(SHLIB_ENV) ./attr_scan64)) >attr_scan64.tmp 2>&1 3>&1 diff attr_scan64.ref attr_scan64.tmp rm -f attr_scan64.tmp attr_scan0_test: attr_print0 attr_scan0 attr_scan0.ref - (./attr_print0 2>&3 | (sleep 1; ./attr_scan0)) >attr_scan0.tmp 2>&1 3>&1 + ($(SHLIB_ENV) ./attr_print0 2>&3 | (sleep 1; $(SHLIB_ENV) ./attr_scan0)) >attr_scan0.tmp 2>&1 3>&1 diff attr_scan0.ref attr_scan0.tmp rm -f attr_scan0.tmp dict_test: dict_open testdb dict_test.in dict_test.ref rm -f testdb.db testdb.dir testdb.pag - ../postmap/postmap -N hash:testdb - ./dict_open hash:testdb write < dict_test.in > dict_test.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap -N hash:testdb + $(SHLIB_ENV) ./dict_open hash:testdb write < dict_test.in > dict_test.tmp 2>&1 diff dict_test.ref dict_test.tmp - ../postmap/postmap -n hash:testdb - ./dict_open hash:testdb write < dict_test.in > dict_test.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap -n hash:testdb + $(SHLIB_ENV) ./dict_open hash:testdb write < dict_test.in > dict_test.tmp 2>&1 diff dict_test.ref dict_test.tmp rm -f testdb.db testdb.dir testdb.pag dict_test.tmp dict_pcre_test: dict_open dict_pcre.in dict_pcre.map dict_pcre.ref - ./dict_open pcre:dict_pcre.map read dict_pcre.tmp 2>&1 + $(SHLIB_ENV) ./dict_open pcre:dict_pcre.map read dict_pcre.tmp 2>&1 diff dict_pcre.ref dict_pcre.tmp rm -f dict_pcre.tmp dict_regexp_test: dict_open dict_regexp.in dict_regexp.map dict_regexp.ref - ./dict_open regexp:dict_regexp.map read dict_regexp.tmp 2>&1 + $(SHLIB_ENV) ./dict_open regexp:dict_regexp.map read dict_regexp.tmp 2>&1 diff dict_regexp.ref dict_regexp.tmp rm -f dict_regexp.tmp dict_cidr_test: dict_open dict_cidr.in dict_cidr.map dict_cidr.ref - ./dict_open cidr:dict_cidr.map read dict_cidr.tmp 2>&1 + $(SHLIB_ENV) ./dict_open cidr:dict_cidr.map read dict_cidr.tmp 2>&1 diff dict_cidr.ref dict_cidr.tmp rm -f dict_cidr.tmp dict_seq_test: dict_open testdb dict_seq.in dict_seq.ref rm -f testdb.db testdb.dir testdb.pag - ./dict_open hash:testdb create sync < dict_seq.in > dict_seq.tmp 2>&1 + $(SHLIB_ENV) ./dict_open hash:testdb create sync < dict_seq.in > dict_seq.tmp 2>&1 diff dict_seq.ref dict_seq.tmp rm -f testdb.db testdb.dir testdb.pag dict_seq.tmp host_port_test: host_port host_port.in host_port.ref - ./host_port host_port.tmp 2>&1 + $(SHLIB_ENV) ./host_port host_port.tmp 2>&1 diff host_port.ref host_port.tmp rm -f host_port.tmp attr_scan_plain_test: attr_print_plain attr_scan_plain attr_scan_plain.ref - (./attr_print_plain 2>&3 | (sleep 1; ./attr_scan_plain)) >attr_scan_plain.tmp 2>&1 3>&1 + ($(SHLIB_ENV) ./attr_print_plain 2>&3 | (sleep 1; $(SHLIB_ENV) ./attr_scan_plain)) >attr_scan_plain.tmp 2>&1 3>&1 diff attr_scan_plain.ref attr_scan_plain.tmp rm -f attr_scan_plain.tmp htable_test: htable /usr/share/dict/words - ./htable < /usr/share/dict/words + $(SHLIB_ENV) ./htable < /usr/share/dict/words hex_code_test: hex_code - ./hex_code + $(SHLIB_ENV) ./hex_code timecmp_test: timecmp - ./timecmp + $(SHLIB_ENV) ./timecmp myaddrinfo_test: myaddrinfo myaddrinfo.ref myaddrinfo.ref2 - ./myaddrinfo all belly.porcupine.org 168.100.189.2 >myaddrinfo.tmp 2>&1 + $(SHLIB_ENV) ./myaddrinfo all belly.porcupine.org 168.100.189.2 >myaddrinfo.tmp 2>&1 diff myaddrinfo.ref myaddrinfo.tmp rm -f myaddrinfo.tmp - ./myaddrinfo all null.porcupine.org 10.0.0.0 >myaddrinfo.tmp 2>&1 + $(SHLIB_ENV) ./myaddrinfo all null.porcupine.org 10.0.0.0 >myaddrinfo.tmp 2>&1 diff myaddrinfo.ref2 myaddrinfo.tmp rm -f myaddrinfo.tmp myaddrinfo4_test: myaddrinfo4 myaddrinfo4.ref myaddrinfo4.ref2 - ./myaddrinfo4 all belly.porcupine.org 168.100.189.2 >myaddrinfo4.tmp 2>&1 + $(SHLIB_ENV) ./myaddrinfo4 all belly.porcupine.org 168.100.189.2 >myaddrinfo4.tmp 2>&1 diff myaddrinfo4.ref myaddrinfo4.tmp - ./myaddrinfo4 all null.porcupine.org 10.0.0.0 >myaddrinfo4.tmp 2>&1 + $(SHLIB_ENV) ./myaddrinfo4 all null.porcupine.org 10.0.0.0 >myaddrinfo4.tmp 2>&1 diff myaddrinfo4.ref2 myaddrinfo4.tmp rm -f myaddrinfo4.tmp format_tv_test: format_tv format_tv.in format_tv.ref - ./format_tv format_tv.tmp + $(SHLIB_ENV) ./format_tv format_tv.tmp diff format_tv.ref format_tv.tmp rm -f format_tv.tmp ip_match_test: ip_match ip_match.in ip_match.ref - ./ip_match ip_match.tmp + $(SHLIB_ENV) ./ip_match ip_match.tmp diff ip_match.ref ip_match.tmp rm -f ip_match.tmp @@ -605,76 +609,76 @@ name_mask_tests: name_mask_test0 name_mask_test1 name_mask_test2 \ name_mask_test7 name_mask_test8 name_mask_test9 name_mask_test0: name_mask name_mask.in name_mask.ref0 - ./name_mask IGNORE IGNORE < name_mask.in > name_mask.tmp 2>&0 + $(SHLIB_ENV) ./name_mask IGNORE IGNORE < name_mask.in > name_mask.tmp 2>&0 diff name_mask.ref0 name_mask.tmp rm -f name_mask.tmp name_mask_test1: name_mask name_mask.in name_mask.ref1 - ./name_mask NUMBER,WARN NUMBER < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN NUMBER < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref1 name_mask.tmp rm -f name_mask.tmp name_mask_test2: name_mask name_mask.in name_mask.ref2 - ./name_mask NUMBER,RETURN NUMBER < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,RETURN NUMBER < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref2 name_mask.tmp rm -f name_mask.tmp name_mask_test3: name_mask name_mask.in name_mask.ref3 - ./name_mask WARN NUMBER < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask WARN NUMBER < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref3 name_mask.tmp rm -f name_mask.tmp name_mask_test4: name_mask name_mask.in name_mask.ref4 - ./name_mask RETURN NUMBER < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask RETURN NUMBER < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref4 name_mask.tmp rm -f name_mask.tmp name_mask_test5: name_mask name_mask.in name_mask.ref5 - ./name_mask NUMBER,WARN RETURN < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN RETURN < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref5 name_mask.tmp rm -f name_mask.tmp name_mask_test6: name_mask name_mask.in name_mask.ref6 - ./name_mask NUMBER,WARN WARN < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN WARN < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref6 name_mask.tmp rm -f name_mask.tmp name_mask_test7: name_mask name_mask.in name_mask.ref7 - ./name_mask NUMBER,WARN IGNORE < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN IGNORE < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref7 name_mask.tmp rm -f name_mask.tmp name_mask_test8: name_mask name_mask.in name_mask.ref8 - ./name_mask NUMBER,WARN NUMBER,COMMA < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN NUMBER,COMMA < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref8 name_mask.tmp rm -f name_mask.tmp name_mask_test9: name_mask name_mask.in name_mask.ref9 - ./name_mask NUMBER,WARN NUMBER,PIPE < name_mask.in > name_mask.tmp 2>&1 + $(SHLIB_ENV) ./name_mask NUMBER,WARN NUMBER,PIPE < name_mask.in > name_mask.tmp 2>&1 diff name_mask.ref9 name_mask.tmp rm -f name_mask.tmp base32_code_test: base32_code - ./base32_code + $(SHLIB_ENV) ./base32_code dict_thash_test: ../postmap/postmap dict_thash.map - ../postmap/postmap -s texthash:dict_thash.map >dict_thash.tmp 2>&1 + $(SHLIB_ENV) ../postmap/postmap -s texthash:dict_thash.map >dict_thash.tmp 2>&1 sort dict_thash.tmp | diff -b dict_thash.map - rm -f dict_thash.tmp surrogate_test: dict_open surrogate.ref cp /dev/null surrogate.tmp - echo get foo|./dict_open cidr:/xx write >>surrogate.tmp 2>&1 - echo get foo|./dict_open cidr:/xx read >>surrogate.tmp 2>&1 - echo get foo|./dict_open pcre:/xx write >>surrogate.tmp 2>&1 - echo get foo|./dict_open pcre:/xx read >>surrogate.tmp 2>&1 - echo get foo|./dict_open regexp:/xx write >>surrogate.tmp 2>&1 - echo get foo|./dict_open regexp:/xx read >>surrogate.tmp 2>&1 - echo get foo|./dict_open unix:xx write >>surrogate.tmp 2>&1 - echo get foo|./dict_open unix:xx read >>surrogate.tmp 2>&1 - echo get foo|./dict_open texthash:/xx write >>surrogate.tmp 2>&1 - echo get foo|./dict_open texthash:/xx read >>surrogate.tmp 2>&1 - echo get foo|./dict_open hash:/xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open cidr:/xx write >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open cidr:/xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open pcre:/xx write >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open pcre:/xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open regexp:/xx write >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open regexp:/xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open unix:xx write >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open unix:xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open texthash:/xx write >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open texthash:/xx read >>surrogate.tmp 2>&1 + echo get foo|$(SHLIB_ENV) ./dict_open hash:/xx read >>surrogate.tmp 2>&1 diff surrogate.ref surrogate.tmp rm -f surrogate.tmp diff --git a/postfix/src/util/dict_open.c b/postfix/src/util/dict_open.c index c8706da4e..3dfff403c 100644 --- a/postfix/src/util/dict_open.c +++ b/postfix/src/util/dict_open.c @@ -280,6 +280,7 @@ #include #include #include +#include /* * lookup table for available map types. @@ -382,9 +383,20 @@ DICT *dict_open3(const char *dict_type, const char *dict_name, dict_type, dict_name); if (dict_open_hash == 0) dict_open_init(); - if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) + if ((dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type)) == 0) { +#ifdef USE_DYNAMIC_LIBS + dymap_open_t open_fn; + + if ((open_fn = dymap_get_open_fn(dict_type)) == 0) + return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags, + "unsupported dictionary type: %s", dict_type)); + dict_open_register(dict_type, open_fn); + dp = (DICT_OPEN_INFO *) htable_find(dict_open_hash, dict_type); +#else return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags, "unsupported dictionary type: %s", dict_type)); +#endif + } if ((dict = dp->open(dict_name, open_flags, dict_flags)) == 0) return (dict_surrogate(dict_type, dict_name, open_flags, dict_flags, "cannot open %s:%s: %m", dict_type, dict_name)); @@ -449,6 +461,9 @@ ARGV *dict_mapnames() dp = (DICT_OPEN_INFO *) ht[0]->value; argv_add(mapnames, dp->type, ARGV_END); } +#ifdef USE_DYNAMIC_LIBS + dymap_list(mapnames); +#endif qsort((void *) mapnames->argv, mapnames->argc, sizeof(mapnames->argv[0]), dict_sort_alpha_cpp); myfree((char *) ht_info); diff --git a/postfix/src/util/dynamicmaps.c b/postfix/src/util/dynamicmaps.c new file mode 100644 index 000000000..5221b3c0a --- /dev/null +++ b/postfix/src/util/dynamicmaps.c @@ -0,0 +1,248 @@ +/*++ +/* NAME +/* dynamicmaps 3 +/* SUMMARY +/* load dictionaries dynamically +/* SYNOPSIS +/* #include +/* +/* typedef void *(*dymap_mkmap_t) (const char *) +/* typedef DICT *(*dymap_open_t) (const char *, int, int) +/* +/* void dymap_init(const char *path) +/* +/* ARGV *dymap_list(ARGV *map_names) +/* +/* dymap_open_t dymap_get_open_fn(const char *dict_type) +/* +/* dymap_mkmap_t dymap_get_mkmap_fn(const char *dict_type) +/* DESCRIPTION +/* This module reads the dynamicmaps.cf file and performs +/* run-time loading of Postfix dictionaries. Each dynamicmaps.cf +/* entry specifies the name of a dictionary type, the pathname +/* of a shared-library object, the name of an "open" function +/* for access to individual dictionary entries, and optionally +/* the name of a "mkmap" function for bulk-mode dictionary +/* creation. +/* +/* dymap_init() must be called at least once before any other +/* functions in this module. This function reads the specified +/* configuration file which is in dynamicmaps.cf format, and +/* may be called multiple times during a process lifetime. +/* +/* dymap_list() appends to its argument the names of dictionary +/* types available in dynamicmaps.cf. +/* +/* dymap_get_open_fn() loads the specified dictionary and +/* returns a function pointer to its "open" function. +/* +/* dymap_get_mkmap_fn() loads the specified dictionary and +/* returns a function pointer to its "mkmap" function. +/* SEE ALSO +/* load_lib(3) low-level run-time linker adapter +/* DIAGNOSTICS +/* Fatal errors: memory allocation problem, dictionary or +/* dictionary function not available. Panic: invalid use. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* LaMont Jones +/* Hewlett-Packard Company +/* 3404 Harmony Road +/* Fort Collins, CO 80528, USA +/* +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + + /* + * System library. + */ +#include +#include +#include + + /* + * Utility library. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef USE_DYNAMIC_LIBS + + /* + * Contents of one dynamicmaps.cf entry. + */ +typedef struct { + const char *dict_type; + const char *soname; + const char *open_name; + const char *mkmap_name; +} DICT_DL_INFO; + +static DICT_DL_INFO *dict_dlinfo; + +#define STREQ(x, y) (strcmp((x), (y)) == 0) + +/* dymap_init - initialize dictionary type to soname etc. mapping */ + +void dymap_init(const char *path) +{ + VSTREAM *conf_fp; + VSTRING *buf; + char *cp; + ARGV *argv; + static MVECT vector; + int nelm = 0; + int linenum = 0; + + if (dict_dlinfo != 0) + mvect_free(&vector); + + dict_dlinfo = + (DICT_DL_INFO *) mvect_alloc(&vector, sizeof(DICT_DL_INFO), 3, 0, 0); + + /* Silently ignore missing dynamic maps file. */ + if ((conf_fp = vstream_fopen(path, O_RDONLY, 0)) != 0) { + buf = vstring_alloc(100); + while (vstring_get_nonl(buf, conf_fp) != VSTREAM_EOF) { + cp = vstring_str(buf); + linenum++; + if (*cp == '#' || *cp == '\0') + continue; + argv = argv_split(cp, " \t"); + if (argv->argc != 3 && argv->argc != 4) { + msg_fatal("%s: Expected \"dict_type .so-name open-function" + " [mkmap-function]\" at line %d", path, linenum); + } + if (STREQ(argv->argv[0], "*")) { + msg_warn("%s: wildcard dynamic map entry no longer supported.", + path); + continue; + } + if (argv->argv[1][0] != '/') { + msg_fatal("%s: .so name must begin with a \"/\" at line %d", + path, linenum); + } + if (nelm >= vector.nelm) { + dict_dlinfo = (DICT_DL_INFO *) mvect_realloc(&vector, vector.nelm + 3); + } + dict_dlinfo[nelm].dict_type = mystrdup(argv->argv[0]); + dict_dlinfo[nelm].soname = mystrdup(argv->argv[1]); + dict_dlinfo[nelm].open_name = mystrdup(argv->argv[2]); + if (argv->argc == 4) + dict_dlinfo[nelm].mkmap_name = mystrdup(argv->argv[3]); + else + dict_dlinfo[nelm].mkmap_name = NULL; + nelm++; + argv_free(argv); + } + vstring_free(buf); + vstream_fclose(conf_fp); + } + if (nelm >= vector.nelm) { + dict_dlinfo = (DICT_DL_INFO *) mvect_realloc(&vector, vector.nelm + 1); + } + dict_dlinfo[nelm].dict_type = NULL; + dict_dlinfo[nelm].soname = NULL; + dict_dlinfo[nelm].open_name = NULL; + dict_dlinfo[nelm].mkmap_name = NULL; +} + +/* dymap_list - enumerate dynamically-linked database type names */ + +ARGV *dymap_list(ARGV *map_names) +{ + static const char myname[] = "dymap_list"; + DICT_DL_INFO *dl; + + if (!dict_dlinfo) + msg_panic("%s: dlinfo==NULL", myname); + if (map_names == 0) + map_names = argv_alloc(2); + for (dl = dict_dlinfo; dl->dict_type; dl++) { + argv_add(map_names, dl->dict_type, ARGV_END); + } + return (map_names); +} + +/* dymap_find - find dynamically-linked database metadata */ + +static DICT_DL_INFO *dymap_find(const char *dict_type) +{ + static const char myname[] = "dymap_find"; + DICT_DL_INFO *dp; + + if (!dict_dlinfo) + msg_panic("%s: dlinfo==NULL", myname); + + for (dp = dict_dlinfo; dp->dict_type; dp++) { + if (STREQ(dp->dict_type, dict_type)) + return dp; + } + return (0); +} + +/* dymap_get_open_fn - look up "dict_foo_open" function */ + +dymap_open_t dymap_get_open_fn(const char *dict_type) +{ + struct stat st; + LIB_FN fn[2]; + dymap_open_t open_fn; + DICT_DL_INFO *dl; + + if ((dl = dymap_find(dict_type)) == 0 + || stat(dl->soname, &st) < 0 + || dl->open_name == 0) + return (0); + fn[0].name = dl->open_name; + fn[0].ptr = (void **) &open_fn; + fn[1].name = NULL; + load_library_symbols(dl->soname, fn, NULL); + return (open_fn); +} + +/* dymap_get_mkmap_fn - look up "mkmap_foo_open" function */ + +dymap_mkmap_t dymap_get_mkmap_fn(const char *dict_type) +{ + struct stat st; + LIB_FN fn[2]; + dymap_mkmap_t mkmap_fn; + DICT_DL_INFO *dl; + + dl = dymap_find(dict_type); + if (!dl) + msg_fatal("unsupported dictionary type: %s. " + "Is the postfix-%s package installed?", + dict_type, dict_type); + if (stat(dl->soname, &st) < 0) { + msg_fatal("unsupported dictionary type: %s (%s not found). " + "Is the postfix-%s package installed?", + dict_type, dl->soname, dict_type); + } + if (!dl->mkmap_name) + msg_fatal("unsupported dictionary type: %s does not support " + "bulk-mode creation.", dict_type); + fn[0].name = dl->mkmap_name; + fn[0].ptr = (void **) &mkmap_fn; + fn[1].name = NULL; + load_library_symbols(dl->soname, fn, NULL); + return (mkmap_fn); +} + +#endif diff --git a/postfix/src/util/dynamicmaps.h b/postfix/src/util/dynamicmaps.h new file mode 100644 index 000000000..5afca96b9 --- /dev/null +++ b/postfix/src/util/dynamicmaps.h @@ -0,0 +1,49 @@ +#ifndef _DYNAMICMAPS_H_INCLUDED_ +#define _DYNAMICMAPS_H_INCLUDED_ + +/*++ +/* NAME +/* dynamicmaps 3h +/* SUMMARY +/* load dictionaries dynamically +/* SYNOPSIS +/* #include +/* DESCRIPTION +/* .nf + + /* + * Utility library. + */ +#include + + /* + * External interface. + */ +#ifdef USE_DYNAMIC_LIBS + +typedef DICT *(*dymap_open_t) (const char *, int, int); +typedef void *(*dymap_mkmap_t) (const char *); + +extern void dymap_init(const char *); +extern ARGV *dymap_list(ARGV *); +extern dymap_open_t dymap_get_open_fn(const char *); +extern dymap_mkmap_t dymap_get_mkmap_fn(const char *); + +#endif +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* LaMont Jones +/* Hewlett-Packard Company +/* 3404 Harmony Road +/* Fort Collins, CO 80528, USA +/* +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +#endif diff --git a/postfix/src/util/load_lib.c b/postfix/src/util/load_lib.c new file mode 100644 index 000000000..b1ae5fa16 --- /dev/null +++ b/postfix/src/util/load_lib.c @@ -0,0 +1,129 @@ +/*++ +/* NAME +/* load_lib 3 +/* SUMMARY +/* library loading wrappers +/* SYNOPSIS +/* #include +/* +/* extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *); +/* const char *libname; +/* LIB_FN *libfuncs; +/* LIB_FN *libdata; +/* +/* DESCRIPTION +/* This module loads functions from libraries, returning pointers +/* to the named functions. +/* +/* load_library_symbols() loads all of the desired functions, and +/* returns zero for success, or exits via msg_fatal(). +/* +/* SEE ALSO +/* msg(3) diagnostics interface +/* DIAGNOSTICS +/* Problems are reported via the msg(3) diagnostics routines: +/* library not found, symbols not found, other fatal errors. +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* LaMont Jones +/* Hewlett-Packard Company +/* 3404 Harmony Road +/* Fort Collins, CO 80528, USA +/* +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +/* System libraries. */ + +#include "sys_defs.h" +#include +#include +#include +#if defined(HAS_DLOPEN) +#include +#elif defined(HAS_SHL_LOAD) +#include +#endif + +/* Application-specific. */ + +#include "msg.h" +#include "load_lib.h" + +int load_library_symbols(const char *libname, LIB_FN *libfuncs, + LIB_FN *libdata) +{ + static const char *myname = "load_library_symbols"; + LIB_FN *fn; + +#if defined(HAS_DLOPEN) + void *handle; + char *emsg; + + if ((handle = dlopen(libname, RTLD_NOW)) == 0) { + emsg = dlerror(); + msg_fatal("%s: dlopen failure loading %s: %s", myname, libname, emsg); + } + if (libfuncs) { + for (fn = libfuncs; fn->name; fn++) { + if ((*(fn->ptr) = dlsym(handle, fn->name)) == 0) { + emsg = dlerror(); + msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname, + fn->name, libname, emsg); + } + if (msg_verbose > 1) { + msg_info("loaded %s = %lx", fn->name, *((long *) (fn->ptr))); + } + } + } + if (libdata) { + for (fn = libdata; fn->name; fn++) { + if ((*(fn->ptr) = dlsym(handle, fn->name)) == 0) { + emsg = dlerror(); + msg_fatal("%s: dlsym failure looking up %s in %s: %s", myname, + fn->name, libname, emsg); + } + if (msg_verbose > 1) { + msg_info("loaded %s = %lx", fn->name, *((long *) (fn->ptr))); + } + } + } +#elif defined(HAS_SHL_LOAD) + shl_t handle; + + handle = shl_load(libname, BIND_IMMEDIATE, 0); + + if (libfuncs) { + for (fn = libfuncs; fn->name; fn++) { + if (shl_findsym(&handle, fn->name, TYPE_PROCEDURE, fn->ptr) != 0) { + msg_fatal("%s: shl_findsym failure looking up %s in %s: %m", + myname, fn->name, libname); + } + if (msg_verbose > 1) { + msg_info("loaded %s = %x", fn->name, *((long *) (fn->ptr))); + } + } + } + if (libdata) { + for (fn = libdata; fn->name; fn++) { + if (shl_findsym(&handle, fn->name, TYPE_DATA, fn->ptr) != 0) { + msg_fatal("%s: shl_findsym failure looking up %s in %s: %m", + myname, fn->name, libname); + } + if (msg_verbose > 1) { + msg_info("loaded %s = %x", fn->name, *((long *) (fn->ptr))); + } + } + } +#else + msg_fatal("%s: need dlopen or shl_load support for dynamic libraries", + myname); +#endif + return 0; +} diff --git a/postfix/src/util/load_lib.h b/postfix/src/util/load_lib.h new file mode 100644 index 000000000..231894c53 --- /dev/null +++ b/postfix/src/util/load_lib.h @@ -0,0 +1,41 @@ +#ifndef _LOAD_LIB_H_INCLUDED_ +#define _LOAD_LIB_H_INCLUDED_ + +/*++ +/* NAME +/* load_lib 3h +/* SUMMARY +/* library loading wrappers +/* SYNOPSIS +/* #include "load_lib.h" +/* DESCRIPTION +/* .nf + + /* + * External interface. + */ +/* NULL name terminates list */ +typedef struct LIB_FN { + const char *name; + void **ptr; +} LIB_FN; + +extern int load_library_symbols(const char *, LIB_FN *, LIB_FN *); + +/* LICENSE +/* .ad +/* .fi +/* The Secure Mailer license must be distributed with this software. +/* AUTHOR(S) +/* LaMont Jones +/* Hewlett-Packard Company +/* 3404 Harmony Road +/* Fort Collins, CO 80528, USA +/* +/* Wietse Venema +/* IBM T.J. Watson Research +/* P.O. Box 704 +/* Yorktown Heights, NY 10598, USA +/*--*/ + +#endif diff --git a/postfix/src/util/sys_defs.h b/postfix/src/util/sys_defs.h index 6edde1e56..b9bf8ff27 100644 --- a/postfix/src/util/sys_defs.h +++ b/postfix/src/util/sys_defs.h @@ -73,6 +73,7 @@ #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases" #define NATIVE_COMMAND_DIR "/usr/sbin" #define NATIVE_DAEMON_DIR "/usr/libexec/postfix" +#define HAS_DLOPEN #endif #ifdef FREEBSD2 @@ -260,7 +261,7 @@ #ifndef NO_POSIX_GETPW_R # define HAVE_POSIX_GETPW_R #endif - +#define HAS_DLOPEN #endif /* @@ -780,6 +781,7 @@ extern int initgroups(const char *, int); #define STATFS_IN_SYS_VFS_H #define PREPEND_PLUS_TO_OPTSTRING #define HAS_POSIX_REGEXP +#define HAS_DLOPEN #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail" #define NATIVE_MAILQ_PATH "/usr/bin/mailq" #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases" @@ -966,6 +968,7 @@ extern int h_errno; /* imports too much stuff */ #define USE_STATFS #define STATFS_IN_SYS_VFS_H #define HAS_POSIX_REGEXP +#define HAS_DLOPEN #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail" #define NATIVE_MAILQ_PATH "/usr/bin/mailq" #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases" @@ -1005,6 +1008,7 @@ extern int h_errno; /* imports too much stuff */ #define USE_STATFS #define STATFS_IN_SYS_VFS_H #define HAS_POSIX_REGEXP +#define HAS_SHL_LOAD #define NATIVE_SENDMAIL_PATH "/usr/sbin/sendmail" #define NATIVE_MAILQ_PATH "/usr/bin/mailq" #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases" @@ -1046,6 +1050,7 @@ extern int h_errno; #define USE_STATFS #define STATFS_IN_SYS_VFS_H #define HAS_POSIX_REGEXP +#define HAS_SHL_LOAD #define NATIVE_SENDMAIL_PATH "/usr/bin/sendmail" #define NATIVE_MAILQ_PATH "/usr/bin/mailq" #define NATIVE_NEWALIAS_PATH "/usr/bin/newaliases" diff --git a/postfix/src/verify/Makefile.in b/postfix/src/verify/Makefile.in index 78d985f13..932893057 100644 --- a/postfix/src/verify/Makefile.in +++ b/postfix/src/verify/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) TESTPROG= PROG = verify INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/virtual/Makefile.in b/postfix/src/virtual/Makefile.in index 068bc8232..d648e9940 100644 --- a/postfix/src/virtual/Makefile.in +++ b/postfix/src/virtual/Makefile.in @@ -8,12 +8,14 @@ CFLAGS = $(DEBUG) $(OPT) $(DEFS) PROG = virtual TESTPROG= INC_DIR = ../../include -LIBS = ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PREFIX)master$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PREFIX)util$(LIB_SUFFIX) .c.o:; $(CC) $(CFLAGS) -c $*.c $(PROG): $(OBJS) $(LIBS) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) + $(CC) $(CFLAGS) $(SHLIB_RPATH) -o $@ $(OBJS) $(LIBS) $(SYSLIBS) $(OBJS): ../../conf/makedefs.out diff --git a/postfix/src/xsasl/Makefile.in b/postfix/src/xsasl/Makefile.in index 0a46cbc64..3abdfca3d 100644 --- a/postfix/src/xsasl/Makefile.in +++ b/postfix/src/xsasl/Makefile.in @@ -13,7 +13,8 @@ INCL = LIB = libxsasl.a TESTPROG= -LIBS = ../../lib/libglobal.a ../../lib/libutil.a +LIBS = ../../lib/lib$(LIB_PERFIX)global$(LIB_SUFFIX) \ + ../../lib/lib$(LIB_PERFIX)util$(LIB_SUFFIX) LIB_DIR = ../../lib INC_DIR = ../../include MAKES = @@ -34,12 +35,12 @@ tests: root_tests: $(LIB): $(OBJS) - $(AR) $(ARFL) $(LIB) $? - $(RANLIB) $(LIB) + $(_AR) $(ARFL) $(LIB) $? + $(_RANLIB) $(LIB) $(LIB_DIR)/$(LIB): $(LIB) cp $(LIB) $(LIB_DIR) - $(RANLIB) $(LIB_DIR)/$(LIB) + $(_RANLIB) $(LIB_DIR)/$(LIB) update: $(LIB_DIR)/$(LIB) $(HDRS) -for i in $(HDRS); \