2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +00:00

postfix-2.12-20140626

This commit is contained in:
Wietse Venema 2014-06-26 00:00:00 -05:00 committed by Viktor Dukhovni
parent f9922d6a8a
commit 39fcc2e5c3
11 changed files with 118 additions and 89 deletions

View File

@ -20023,3 +20023,20 @@ Apologies for any names omitted.
Cleanup: don't leak build directory information via SHLIB_ENV Cleanup: don't leak build directory information via SHLIB_ENV
in makedefs.out. Files: Makefile.in, conf/postfix-files. in makedefs.out. Files: Makefile.in, conf/postfix-files.
20140626
Cleanup: construction debris. Files: Makefile.in,
conf/postfix-script.
Cleanup: replace expanded MAIL_VERSION with $mail_version
in main.cf installation parameter settings, to permit safe
upgrade of a running mail system. File: postfix-install.
Cleanup: replace expanded MAIL_VERSION with $mail_version
in built-in default installation parameter settings, for
consistency with main.cf. File: makedefs, postfix-install,
conf/post-install.
Cleanup: removed $mail_version from the default shlib_directory
value. Files: global/mail_params.h, proto/INSTALL.html.

View File

@ -185,15 +185,15 @@ shared-library support.
(Specify "make makefiles shared=no" to explicitly disable Postfix shared- (Specify "make makefiles shared=no" to explicitly disable Postfix shared-
library support). library support).
This installs shared libraries in $shlib_directory, typically, /usr/lib/ This installs shared libraries in $shlib_directory, typically /usr/lib/postfix
postfix/version or /usr/local/lib/postfix/version, with names like libpostfix- or /usr/local/lib/postfix, with file names libpostfix-name.so, where the name
name.so, where the name is a source-code directory name such as "util" or is a source-code directory name such as "util" or "global", and the version is
"global", and the version is the Postfix release version: x.y.z for stable the Postfix release version: x.y.z for stable releases, x.y-date for snapshot
releases, x.y-date for snapshot (development) releases, or x.y-date-nonprod for (development) releases, or x.y-date-nonprod for non-production releases.
non-production releases.
See section 4.3.3 "Customizing Postfix shared libraries and database plugins" See section 4.3.3 "Customizing Postfix shared libraries and database plugins"
below for how to customize the Postfix shared-library location and version. below for how to customize the Postfix shared-library location and version,
including support to upgrade a running mail system.
4.3.2 Turning on Postfix database-plugin support 4.3.2 Turning on Postfix database-plugin support
@ -249,8 +249,8 @@ plugins specify, for example:
If you intend to upgrade Postfix without stopping the mail system, then you If you intend to upgrade Postfix without stopping the mail system, then you
should append the Postfix release version to the shlib_directory pathname, to should append the Postfix release version to the shlib_directory pathname, to
eliminate the possibility that programs from the old Postfix version will link eliminate the possibility that programs will link with shared libraries or
with files from the new Postfix version. For example: database plugins from the wrong Postfix version. For example:
$ make makefiles shared=yes \ $ make makefiles shared=yes \
shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ... shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ...

View File

@ -59,10 +59,10 @@ meta/makedefs.out: conf/makedefs.out
meta/postfix-files: conf/postfix-files conf/makedefs.out Makefile meta/postfix-files: conf/postfix-files conf/makedefs.out Makefile
rm -f $@ rm -f $@
(if [ "${SHLIB_DIR_OVERRIDE}" = "no" -o "${SHLIB_DIR}" = "" ]; then \ (if [ "${SHLIB_DIR}" = "no" -o "${SHLIB_DIR}" = "" ]; then \
sed -e '/^\$$shlib_directory/d' \ sed -e '/^\$$shlib_directory/d' \
-e '/dynamicmaps.cf/d' conf/postfix-files; \ -e '/dynamicmaps.cf/d' conf/postfix-files; \
elif [ "${PLUGIN_LD}" = "" ]; then \ elif [ "${PLUGIN_LD}" = ":" -o "${PLUGIN_LD}" = "" ]; then \
sed -e '/dynamicmaps.cf/d' \ sed -e '/dynamicmaps.cf/d' \
-e '/^\$$shlib_directory\/\$${LIB_PREFIX}/d' \ -e '/^\$$shlib_directory\/\$${LIB_PREFIX}/d' \
conf/postfix-files | $(EXPAND); \ conf/postfix-files | $(EXPAND); \

View File

@ -185,15 +185,15 @@ shared-library support.
(Specify "make makefiles shared=no" to explicitly disable Postfix shared- (Specify "make makefiles shared=no" to explicitly disable Postfix shared-
library support). library support).
This installs shared libraries in $shlib_directory, typically, /usr/lib/ This installs shared libraries in $shlib_directory, typically /usr/lib/postfix
postfix/version or /usr/local/lib/postfix/version, with names like libpostfix- or /usr/local/lib/postfix, with file names libpostfix-name.so, where the name
name.so, where the name is a source-code directory name such as "util" or is a source-code directory name such as "util" or "global", and the version is
"global", and the version is the Postfix release version: x.y.z for stable the Postfix release version: x.y.z for stable releases, x.y-date for snapshot
releases, x.y-date for snapshot (development) releases, or x.y-date-nonprod for (development) releases, or x.y-date-nonprod for non-production releases.
non-production releases.
See section 4.3.3 "Customizing Postfix shared libraries and database plugins" See section 4.3.3 "Customizing Postfix shared libraries and database plugins"
below for how to customize the Postfix shared-library location and version. below for how to customize the Postfix shared-library location and version,
including support to upgrade a running mail system.
44..33..22 TTuurrnniinngg oonn PPoossttffiixx ddaattaabbaassee--pplluuggiinn ssuuppppoorrtt 44..33..22 TTuurrnniinngg oonn PPoossttffiixx ddaattaabbaassee--pplluuggiinn ssuuppppoorrtt
@ -249,8 +249,8 @@ plugins specify, for example:
If you intend to upgrade Postfix without stopping the mail system, then you If you intend to upgrade Postfix without stopping the mail system, then you
should append the Postfix release version to the shlib_directory pathname, to should append the Postfix release version to the shlib_directory pathname, to
eliminate the possibility that programs from the old Postfix version will link eliminate the possibility that programs will link with shared libraries or
with files from the new Postfix version. For example: database plugins from the wrong Postfix version. For example:
$ make makefiles shared=yes \ $ make makefiles shared=yes \
shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ... shlib_directory=/usr/local/lib/postfix/MAIL_VERSION ...

18
postfix/conf/postfix-script Normal file → Executable file
View File

@ -258,8 +258,9 @@ check-warn)
test "$shlib_directory" = "no" || todo="$shlib_directory $todo" test "$shlib_directory" = "no" || todo="$shlib_directory $todo"
todo="$meta_directory $todo" todo="$meta_directory $todo"
} }
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
for dir in `echo "$todo" | tr ' ' '\12' | sort -u` for dir in $todo
do do
ls -lLd $dir | (grep " root " >/dev/null || ls -lLd $dir | (grep " root " >/dev/null ||
$WARN not owned by root: $dir) $WARN not owned by root: $dir)
@ -273,17 +274,22 @@ check-warn)
test -n "$check_shared_files" && { test -n "$check_shared_files" && {
todo="$daemon_directory/* $todo" todo="$daemon_directory/* $todo"
test "$shlib_directory" = "no" || test "$shlib_directory" = "no" ||
todo="$shlib_directory/libpostfix* $todo" todo="$shlib_directory/* $todo"
todo="$meta_directory/* $todo"
} }
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
find $todo ! -user root \ find $todo ! -user root \
-exec $WARN not owned by root: {} \; -exec $WARN not owned by root: {} \;
todo="$config_directory/." todo="$config_directory/."
test -n "$check_shared_files" && todo="$daemon_directory/. $todo" test -n "$check_shared_files" && {
# FIXME don't scan non-Postfix files under /usr/local/lib. todo="$daemon_directory/. $todo"
test "$shlib_directory" = "no" || test "$shlib_directory" = "no" ||
todo="$shlib_directory/libpostfix* $shlib_directory/postfix* $todo" todo="$shlib_directory/. $todo"
todo="$meta_directory/. $todo"
}
todo=`echo "$todo" | tr ' ' '\12' | sort -u`
find $todo \ find $todo \
\( -perm -020 -o -perm -002 \) -type f \ \( -perm -020 -o -perm -002 \) -type f \

View File

@ -283,18 +283,18 @@ $ make
<p> (Specify "make makefiles shared=no" to explicitly disable Postfix <p> (Specify "make makefiles shared=no" to explicitly disable Postfix
shared-library support). </p> shared-library support). </p>
<p> This installs shared libraries in $<a href="postconf.5.html#shlib_directory">shlib_directory</a>, typically, <p> This installs shared libraries in $<a href="postconf.5.html#shlib_directory">shlib_directory</a>, typically
/usr/lib/postfix/<i>version</i> or /usr/local/lib/postfix/<i>version</i>, /usr/lib/postfix or /usr/local/lib/postfix, with file names
with names like libpostfix-<i>name</i>.so, where the <i>name</i> libpostfix-<i>name</i>.so, where the <i>name</i> is a source-code
is a source-code directory name such as "util" or "global", and the directory name such as "util" or "global", and the <i>version</i>
<i>version</i> is the Postfix release version: <i>x.y.z</i> for is the Postfix release version: <i>x.y.z</i> for stable releases,
stable releases, <i>x.y</i>-<i>date</i> for snapshot (development) <i>x.y</i>-<i>date</i> for snapshot (development) releases, or
releases, or <i>x.y</i>-<i>date</i>-nonprod for non-production <i>x.y</i>-<i>date</i>-nonprod for non-production releases. </p>
releases. </p>
<p> See section 4.3.3 "Customizing Postfix shared libraries and <p> See section 4.3.3 "Customizing Postfix shared libraries and
database plugins" below for how to customize the Postfix shared-library database plugins" below for how to customize the Postfix shared-library
location and version. location and version, including support to upgrade a running mail
system. </p>
<h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix <h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix
database-plugin support </a></h4> database-plugin support </a></h4>
@ -371,8 +371,8 @@ $ make makefiles shared=yes <a href="postconf.5.html#shlib_directory">shlib_dire
<p> If you intend to upgrade Postfix without stopping the mail <p> If you intend to upgrade Postfix without stopping the mail
system, then you should append the Postfix release version to the system, then you should append the Postfix release version to the
<a href="postconf.5.html#shlib_directory">shlib_directory</a> pathname, to eliminate the possibility that programs <a href="postconf.5.html#shlib_directory">shlib_directory</a> pathname, to eliminate the possibility that programs
from the old Postfix version will link with files from the new will link with shared libraries or database plugins from the wrong
Postfix version. For example: </p> Postfix version. For example: </p>
<blockquote> <blockquote>
<pre> <pre>

View File

@ -720,26 +720,14 @@ CCARGS="-I. -I../../include $CCARGS"
# command-line arguments. In the specific example above, gmake would # command-line arguments. In the specific example above, gmake would
# eat up the "$" and "m" before it even invokes makedefs, and it # eat up the "$" and "m" before it even invokes makedefs, and it
# ould replace "'${mail_version}'" and "'$(mail_version)'" with # ould replace "'${mail_version}'" and "'$(mail_version)'" with
# nothing. # nothing.
# #
# We could work around this by documenting that $$ must be used (and # Requiring people to specify $$ is not a good option. Instead we
# fix $$ in the case that people use traditional make). But this # replace the string MAIL_VERSION in "make makefiles name=value"
# would be non-intuitive and bad from a usability point of view. # parameter values with a form that depends on usage context: the
# # actual release version in actual pathnames, the unexpanded
# We could work around this by documenting that people must pass # $mail_version in main.cf parameter values and built-in default
# name=value via the environment instead of the command line, as in # parameter settings.
# "shlib_directory=/some/where/'$mail_version' make makefiles", or
# that they issue "export" or "setenv" commands depending on their
# interactive shell. That would be non-intuitive and bad usability.
#
# Even if we did any of the above, we would not want to pass the
# unexpanded $mail_version via CCARGS, because that requires extra
# quoting with `echo "$parm_val" | sed 's/[$]/\\\\$$/'` which is
# just too ugly to be portable.
#
# The upshot of all this is that we will expand MAIL_VERSION in the
# "make makefiles parameter=value" command line, and that we pass
# the expanded text via CCARGS. This is clumsier but cleaner.
# Helper function to determine DEF_MAIL_VERSION. # Helper function to determine DEF_MAIL_VERSION.
@ -793,6 +781,22 @@ expand_mail_version()
s/\$mail_version/$mail_version/g s/\$mail_version/$mail_version/g
" "
} }
# Helper to invoke the above. global: parm_name, parm_val, cparm_val, CCARGS.
process_input_parameter()
{
case "$parm_val" in
*MAIL_VERSION*)
cparm_val=`echo "$parm_val"|sed 's/MAIL_VERSION/\\\\$$mail_version/g'`||
exit 1
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
*) cparm_val="$parm_val";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$cparm_val\\\""
}
# Optionally override installation-parameter default settings. # Optionally override installation-parameter default settings.
command_directory_macro=DEF_COMMAND_DIR command_directory_macro=DEF_COMMAND_DIR
@ -817,12 +821,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\" eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in case "$parm_val" in
"") ;; "") ;;
/*) case "$parm_val" in /*) process_input_parameter;;
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
*) error "$parm_name must specify an absolute path name";; *) error "$parm_name must specify an absolute path name";;
esac esac
done done
@ -837,12 +836,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\" eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in case "$parm_val" in
"") ;; "") ;;
/*|no) case "$parm_val" in /*|no) process_input_parameter;;
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
*) error "$parm_name must specify \"no\" or an absolute path name";; *) error "$parm_name must specify \"no\" or an absolute path name";;
esac esac
done done
@ -855,12 +849,7 @@ do
eval parm_macro=\"\$${parm_name}_macro\" eval parm_macro=\"\$${parm_name}_macro\"
case "$parm_val" in case "$parm_val" in
"") ;; "") ;;
*) case "$parm_val" in *) process_input_parameter;;
*MAIL_VERSION*)
parm_val=`expand_MAIL_VERSION "$parm_val"` || exit 1
eval ${parm_name}=\""\$parm_val"\";;
esac
CCARGS="$CCARGS -D$parm_macro=\\\"$parm_val\\\"";;
esac esac
done done

View File

@ -493,7 +493,7 @@ test -f $CONFIG_DIRECTORY/main.cf && {
case "$junk" in case "$junk" in
"") eval unset $name;; "") eval unset $name;;
esac esac
eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -h $name\`} || eval : \${$name=\`bin/postconf -c $CONFIG_DIRECTORY -hx $name\`} ||
exit 1 exit 1
done done
} }
@ -506,7 +506,7 @@ do
case "$junk" in case "$junk" in
"") eval unset $name;; "") eval unset $name;;
esac esac
eval : \${$name=\`bin/postconf -c conf -d -h $name\`} || exit 1 eval : \${$name=\`bin/postconf -c conf -d -hx $name\`} || exit 1
done done
# Override settings manually. # Override settings manually.
@ -800,6 +800,23 @@ do
# Postfix releases, and software should not suddenly be installed in # Postfix releases, and software should not suddenly be installed in
# the wrong place when Postfix is being upgraded. # the wrong place when Postfix is being upgraded.
case "$mail_version" in
"") mail_version="`bin/postconf -dhx mail_version`" || exit 1
esac
# Undo MAIL_VERSION expansion. If someone really wants the expanded
# mail version in main.cf, we're sorry.
for name in $CONFIG_PARAMS sample_directory
do
eval junk=\$$name
case "$junk" in
*"$mail_version"*)
val=`echo "$junk" | sed "s/$mail_version/"'$mail_version/g'` || exit 1
eval ${name}='"$val"'
esac
done
bin/postconf -c $CONFIG_DIRECTORY -e \ bin/postconf -c $CONFIG_DIRECTORY -e \
"daemon_directory = $daemon_directory" \ "daemon_directory = $daemon_directory" \
"data_directory = $data_directory" \ "data_directory = $data_directory" \

View File

@ -283,18 +283,18 @@ $ make
<p> (Specify "make makefiles shared=no" to explicitly disable Postfix <p> (Specify "make makefiles shared=no" to explicitly disable Postfix
shared-library support). </p> shared-library support). </p>
<p> This installs shared libraries in $shlib_directory, typically, <p> This installs shared libraries in $shlib_directory, typically
/usr/lib/postfix/<i>version</i> or /usr/local/lib/postfix/<i>version</i>, /usr/lib/postfix or /usr/local/lib/postfix, with file names
with names like libpostfix-<i>name</i>.so, where the <i>name</i> libpostfix-<i>name</i>.so, where the <i>name</i> is a source-code
is a source-code directory name such as "util" or "global", and the directory name such as "util" or "global", and the <i>version</i>
<i>version</i> is the Postfix release version: <i>x.y.z</i> for is the Postfix release version: <i>x.y.z</i> for stable releases,
stable releases, <i>x.y</i>-<i>date</i> for snapshot (development) <i>x.y</i>-<i>date</i> for snapshot (development) releases, or
releases, or <i>x.y</i>-<i>date</i>-nonprod for non-production <i>x.y</i>-<i>date</i>-nonprod for non-production releases. </p>
releases. </p>
<p> See section 4.3.3 "Customizing Postfix shared libraries and <p> See section 4.3.3 "Customizing Postfix shared libraries and
database plugins" below for how to customize the Postfix shared-library database plugins" below for how to customize the Postfix shared-library
location and version. location, including support to upgrade a running mail system safely.
</p>
<h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix <h4><a name="dynamicmaps_enable"> 4.3.2 Turning on Postfix
database-plugin support </a></h4> database-plugin support </a></h4>
@ -371,8 +371,8 @@ $ make makefiles shared=yes shlib_directory=/usr/local/lib/postfix ...
<p> If you intend to upgrade Postfix without stopping the mail <p> If you intend to upgrade Postfix without stopping the mail
system, then you should append the Postfix release version to the system, then you should append the Postfix release version to the
shlib_directory pathname, to eliminate the possibility that programs shlib_directory pathname, to eliminate the possibility that programs
from the old Postfix version will link with files from the new will link with shared libraries or database plugins from the wrong
Postfix version. For example: </p> Postfix version. For example: </p>
<blockquote> <blockquote>
<pre> <pre>

View File

@ -3794,7 +3794,7 @@ extern char *var_local_dsn_filter;
*/ */
#define VAR_SHLIB_DIR "shlib_directory" #define VAR_SHLIB_DIR "shlib_directory"
#ifndef DEF_SHLIB_DIR #ifndef DEF_SHLIB_DIR
#define DEF_SHLIB_DIR "/usr/lib/postfix/$mail_version" #define DEF_SHLIB_DIR "/usr/lib/postfix"
#endif #endif
extern char *var_shlib_dir; extern char *var_shlib_dir;

View File

@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20140625" #define MAIL_RELEASE_DATE "20140626"
#define MAIL_VERSION_NUMBER "2.12" #define MAIL_VERSION_NUMBER "2.12"
#ifdef SNAPSHOT #ifdef SNAPSHOT