mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-31 06:05:37 +00:00
snapshot-20010524
This commit is contained in:
committed by
Viktor Dukhovni
parent
92370560ec
commit
ca0dd40ea2
@@ -5187,13 +5187,18 @@ Apologies for any names omitted.
|
|||||||
|
|
||||||
20010522
|
20010522
|
||||||
|
|
||||||
Feature: "postsuper -r queueID" re-queues a message. The
|
Feature: "postsuper -r queueID" re-queues a message, and
|
||||||
message is moved to the maildrop queue so that the pickup
|
"postsuper -R" re-queues all mail. The message is moved to
|
||||||
daemon will copy it to a new file with the "right" name
|
the maildrop queue so that the pickup daemon will copy it
|
||||||
that matches the queue file inode number, and so that
|
to a new queue file, and so that address rewriting will be
|
||||||
address rewriting will be done again. This is useful after
|
done again. This is useful after changes of address rewriting
|
||||||
changes of address rewriting or virtual mappings.
|
or virtual mappings.
|
||||||
|
|
||||||
Feature: "postsuper -R" re-queues all mail. This is useful
|
20010523
|
||||||
after restoring a Postfix queue from another machine, or
|
|
||||||
from backup.
|
Feature: "postsuper -s" (which is done by default) renames
|
||||||
|
queue files whose queue ID does not match the message file
|
||||||
|
inode number.
|
||||||
|
|
||||||
|
Bugfix: memory leak in the LDAP client module. Alain
|
||||||
|
Thivillon,France Teaser - Groupe Firstream.
|
||||||
|
@@ -12,20 +12,22 @@ server state just like RSET. This behavior cannot be disabled.
|
|||||||
Major changes with snapshot-20010522
|
Major changes with snapshot-20010522
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
Revision of some fine details in the light of the new RFC 2821 and
|
This release contains revisions of some fine details in the light
|
||||||
RFC 2822 standards. Changes that may affect interoperability are
|
of the new RFC 2821 and RFC 2822 standards. Changes that may affect
|
||||||
listed above under "incompatible changes".
|
interoperability are listed above under "incompatible changes".
|
||||||
|
|
||||||
|
The postsuper tool can rename files whose queue ID does not match
|
||||||
|
the queue file inode number. This is necessary when a Postfix mail
|
||||||
|
queue is restored from another machine or from backups. The feature
|
||||||
|
is selected with the -s option, which is the default.
|
||||||
|
|
||||||
The postsuper queue maintenance tool was extended with options to
|
The postsuper queue maintenance tool was extended with options to
|
||||||
read queue IDs from standard input (which makes it easier to drive
|
read queue IDs from standard input. This makes the tool easier to
|
||||||
the tool from scripts).
|
drive from scripts.
|
||||||
|
|
||||||
The postsuper queue maintenance tool has a new -r (requeue) option
|
The postsuper queue maintenance tool has a new -r (requeue) option
|
||||||
for subjecting queue files to another iteration of address rewriting.
|
for subjecting queue files to another iteration of address rewriting.
|
||||||
|
|
||||||
The postsuper -R option requeues all mail. This is necessary after
|
|
||||||
restoring Postfix queues from another machine or from backups.
|
|
||||||
|
|
||||||
Major changes with snapshot-20010502
|
Major changes with snapshot-20010502
|
||||||
====================================
|
====================================
|
||||||
|
|
||||||
|
@@ -174,9 +174,6 @@ check)
|
|||||||
\( -perm -020 -o -perm -002 \) \
|
\( -perm -020 -o -perm -002 \) \
|
||||||
-exec $WARN group or other writable: {} \;
|
-exec $WARN group or other writable: {} \;
|
||||||
|
|
||||||
find $queue_directory/* $config_directory/* -name '*core' \
|
|
||||||
-exec $WARN core file: {} \; 2>/dev/null
|
|
||||||
|
|
||||||
test -d maildrop || {
|
test -d maildrop || {
|
||||||
$WARN creating missing Postfix maildrop directory
|
$WARN creating missing Postfix maildrop directory
|
||||||
mkdir maildrop || exit 1
|
mkdir maildrop || exit 1
|
||||||
@@ -254,10 +251,11 @@ EOF
|
|||||||
$command_directory/postconf -e hash_queue_names="$found$missing"
|
$command_directory/postconf -e hash_queue_names="$found$missing"
|
||||||
}
|
}
|
||||||
|
|
||||||
# See if all queue files are in the right place.
|
# See if all queue files are in the right place. This is slow.
|
||||||
|
# We must scan all queues for mis-named queue files before the
|
||||||
|
# mail system can run.
|
||||||
|
|
||||||
$command_directory/postsuper active
|
$command_directory/postsuper || exit 1
|
||||||
$command_directory/postsuper &
|
|
||||||
|
|
||||||
find corrupt -type f -exec $WARN damaged message: {} \;
|
find corrupt -type f -exec $WARN damaged message: {} \;
|
||||||
|
|
||||||
|
@@ -174,9 +174,6 @@ check)
|
|||||||
\( -perm -020 -o -perm -002 \) \
|
\( -perm -020 -o -perm -002 \) \
|
||||||
-exec $WARN group or other writable: {} \;
|
-exec $WARN group or other writable: {} \;
|
||||||
|
|
||||||
find $queue_directory/* $config_directory/* -name '*core' \
|
|
||||||
-exec $WARN core file: {} \; 2>/dev/null
|
|
||||||
|
|
||||||
test -d maildrop || {
|
test -d maildrop || {
|
||||||
$WARN creating missing Postfix maildrop directory
|
$WARN creating missing Postfix maildrop directory
|
||||||
mkdir maildrop || exit 1
|
mkdir maildrop || exit 1
|
||||||
@@ -255,10 +252,11 @@ EOF
|
|||||||
$command_directory/postconf -e hash_queue_names="$found$missing"
|
$command_directory/postconf -e hash_queue_names="$found$missing"
|
||||||
}
|
}
|
||||||
|
|
||||||
# See if all queue files are in the right place.
|
# See if all queue files are in the right place. This is slow.
|
||||||
|
# We must scan all queues for mis-named queue files before the
|
||||||
|
# mail system can run.
|
||||||
|
|
||||||
$command_directory/postsuper active
|
$command_directory/postsuper || exit 1
|
||||||
$command_directory/postsuper &
|
|
||||||
|
|
||||||
find corrupt -type f -exec $WARN damaged message: {} \;
|
find corrupt -type f -exec $WARN damaged message: {} \;
|
||||||
|
|
||||||
|
@@ -3063,13 +3063,61 @@ that the file name will collide with another queue file.
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
To avoid queue file name collisions when copying queue files,
|
<ul>
|
||||||
restore the incoming, active and deferred queue files under the
|
|
||||||
maildrop directory instead.
|
<li>If your Postfix queue is empty, and if you run a Postfix release
|
||||||
|
after 20010524, you can use this procedure to copy a Postfix
|
||||||
|
queue from another machine or to restore it from backup.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
As of late 2000, Postfix queues are all hashed (for example, file
|
<ul>
|
||||||
|
|
||||||
|
<li> Stop Postfix, if it was running.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li> Execute the <b>mailq</b> command. If there is any output, do
|
||||||
|
not complete this procedure, but use the second procedure instead.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li> Copy or restore the queue to the usual place.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li> Run the <b>postsuper</b> command. This command will rename
|
||||||
|
queue files so that the name matches the message file inode number.
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li> If your Postfix queue is not empty, or if you are running a
|
||||||
|
Postfix release prior to 20010524, use the following procedure
|
||||||
|
instead.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>Stop Postfix, if it was running.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li> To avoid queue file name collisions when restoring queue files,
|
||||||
|
copy or restore the incoming, active and deferred queue files under
|
||||||
|
the maildrop directory instead.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li>While the next step is going on, don't submit new mail locally,
|
||||||
|
because that could collide with the files you are restoring under
|
||||||
|
the maildrop directory.
|
||||||
|
|
||||||
|
<p>
|
||||||
|
|
||||||
|
<li>As of late 2000, Postfix queues are all hashed (for example, file
|
||||||
ABCDEF is stored as A/B/ABCDEF), so you need an additional step to
|
ABCDEF is stored as A/B/ABCDEF), so you need an additional step to
|
||||||
move files down from their subdirectories.
|
move files down from their subdirectories.
|
||||||
|
|
||||||
@@ -3083,15 +3131,15 @@ move files down from their subdirectories.
|
|||||||
# postfix start
|
# postfix start
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
While all this is going on, don't submit new mail locally, because
|
|
||||||
that could collide with the files you are restoring under the
|
|
||||||
maildrop directory.
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
When Postfix is started, it will pick up queue files from the
|
<li>When Postfix is started, it will pick up queue files from the
|
||||||
maildrop directory and will give them proper queue file names.
|
maildrop directory and will give them proper queue file names.
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<a name="bind"><h3>Undefined symbols: ___dn_expand, ___res_init etc.</h3></a>
|
<a name="bind"><h3>Undefined symbols: ___dn_expand, ___res_init etc.</h3></a>
|
||||||
|
@@ -6,59 +6,59 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
|
|
||||||
|
|
||||||
<b>NAME</b>
|
<b>NAME</b>
|
||||||
postsuper - Postfix super intendent
|
postsuper - Postfix superintendent
|
||||||
|
|
||||||
<b>SYNOPSIS</b>
|
<b>SYNOPSIS</b>
|
||||||
<b>postsuper</b> [<b>-psv</b>] [<b>-d</b> <i>queue_id</i>] [<b>-r</b> <i>queue_id</i>] [<i>directory</i>
|
<b>postsuper</b> [<b>-psv</b>] [<b>-d</b> <i>queue_id</i>] [<b>-r</b> <i>queue_id</i>] [<i>directory</i>
|
||||||
<i>...</i>]
|
<i>...</i>]
|
||||||
|
|
||||||
<b>DESCRIPTION</b>
|
<b>DESCRIPTION</b>
|
||||||
The <b>postsuper</b> command does small maintenance jobs. Use of
|
The <b>postsuper</b> command does maintenance jobs on the Postfix
|
||||||
the command is restricted to the super-user.
|
queue. Use of the command is restricted to the super-user.
|
||||||
|
|
||||||
By default, <b>postsuper</b> performs the operations requested
|
By default, <b>postsuper</b> performs the operations requested
|
||||||
with the <b>-s</b> and <b>-p</b> command-line options on the named Post-
|
with the <b>-s</b> and <b>-p</b> command-line options on all Postfix
|
||||||
fix queue directories (default: all). Directory names are
|
queue directories - this includes the <b>incoming</b>, <b>active</b> and
|
||||||
relative to the Postfix top-level queue directory.
|
<b>deferred</b> directories with mail files and the <b>bounce</b>, <b>defer</b>
|
||||||
|
and <b>flush</b> directories with log files.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
<b>-d</b> This option ignores any <i>directory</i> argument(s).
|
<b>-d</b> <i>queue_id</i>
|
||||||
Delete one message queue file with the named queue
|
Delete one message with the named queue ID from the
|
||||||
ID. Specify multiple <b>-d</b> options to delete multiple
|
named mail queue(s) (default: <b>incoming</b>, <b>active</b> and
|
||||||
queue files by name.
|
<b>deferred</b>). If a <i>queue_id</i> of <b>-</b> is specified, the
|
||||||
|
|
||||||
Alternatively, if a <i>queue_id</i> of <b>-</b> is specified, the
|
|
||||||
program reads queue IDs from standard input.
|
program reads queue IDs from standard input.
|
||||||
|
|
||||||
The <b>postsuper</b> exit status is non-zero when no mes-
|
Specify <b>-d</b> <b>ALL</b> to remove all messages; for example,
|
||||||
sage queue file was deleted.
|
specify <b>-d</b> <b>ALL</b> <b>deferred</b> to delete mail in the
|
||||||
|
<b>deferred</b> queue. As a safety measure, the word <b>ALL</b>
|
||||||
|
must be specified in upper case.
|
||||||
|
|
||||||
<b>There</b> <b>is</b> <b>a</b> <b>very</b> <b>small</b> <b>possibility</b> <b>that</b> <b>postsuper</b>
|
<b>Postfix</b> <b>queue</b> <b>IDs</b> <b>are</b> <b>reused.</b> <b>There</b> <b>is</b> <b>a</b> <b>very</b>
|
||||||
<b>deletes</b> <b>the</b> <b>wrong</b> <b>message</b> <b>file</b> <b>when</b> <b>it</b> <b>is</b> <b>executed</b>
|
<b>small</b> <b>possibility</b> <b>that</b> <b>postsuper</b> <b>deletes</b> <b>the</b> <b>wrong</b>
|
||||||
<b>while</b> <b>the</b> <b>Postfix</b> <b>mail</b> <b>system</b> <b>is</b> <b>running.</b>
|
<b>message</b> <b>file</b> <b>when</b> <b>it</b> <b>is</b> <b>executed</b> <b>while</b> <b>the</b> <b>Postfix</b>
|
||||||
|
<b>mail</b> <b>system</b> <b>is</b> <b>running.</b>
|
||||||
|
|
||||||
The scenario is as follows:
|
The scenario is as follows:
|
||||||
|
|
||||||
<b>o</b> The Postfix queue manager deletes the file
|
1) The Postfix queue manager deletes the mes-
|
||||||
that <b>postsuper</b> was supposed to delete,
|
sage that <b>postsuper</b> is supposed to delete,
|
||||||
because Postfix was finished with the mes-
|
because Postfix is finished with the mes-
|
||||||
sage.
|
sage.
|
||||||
|
|
||||||
<b>o</b> New mail arrives, and the new message is
|
2) New mail arrives, and the new message is
|
||||||
given the same queue ID as the message that
|
given the same queue ID as the message that
|
||||||
<b>postsuper</b> was supposed to delete. The prob-
|
<b>postsuper</b> is supposed to delete. The proba-
|
||||||
ability for reusing a deleted queue ID is
|
bility for reusing a deleted queue ID is
|
||||||
about 1 in 2**15 (the number of different
|
about 1 in 2**15 (the number of different
|
||||||
microsecond values that the system clock can
|
microsecond values that the system clock can
|
||||||
distinguish within a second).
|
distinguish within a second).
|
||||||
|
|
||||||
<b>o</b> <b>postsuper</b> deletes the new message file,
|
3) <b>postsuper</b> deletes the new message, instead
|
||||||
instead of the old file that should have
|
of the old message that it should have
|
||||||
been deleted.
|
deleted.
|
||||||
|
|
||||||
<b>-r</b> This option ignores any <i>directory</i> argument(s).
|
|
||||||
Requeue one message queue file with the named queue
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -71,33 +71,49 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
POSTSUPER(1) POSTSUPER(1)
|
POSTSUPER(1) POSTSUPER(1)
|
||||||
|
|
||||||
|
|
||||||
ID. Specify multiple <b>-r</b> options to requeue multi-
|
<b>-p</b> Purge old temporary files that are left over after
|
||||||
ple queue files by name.
|
system or software crashes.
|
||||||
|
|
||||||
Alternatively, if a <i>queue_id</i> of <b>-</b> is specified, the
|
<b>-r</b> <i>queue_id</i>
|
||||||
program reads queue IDs from standard input.
|
Requeue the message with the named queue ID from
|
||||||
|
the named mail queue(s) (default: <b>incoming</b>, <b>active</b>
|
||||||
|
and <b>deferred</b>). To requeue multiple messages, spec-
|
||||||
|
ify multiple <b>-r</b> command-line options. Alterna-
|
||||||
|
tively, if a <i>queue_id</i> of <b>-</b> is specified, the pro-
|
||||||
|
gram reads queue IDs from standard input.
|
||||||
|
|
||||||
The queue file is moved to the maildrop queue, from
|
Specify <b>-r</b> <b>ALL</b> to requeue all messages. As a safety
|
||||||
where it is copied by the pickup daemon to a new
|
measure, the word <b>ALL</b> must be specified in upper
|
||||||
file whose name is guaranteed to match the queue
|
case.
|
||||||
file inode number. This feature is useful for queue
|
|
||||||
files from another machine or for files restored
|
|
||||||
from backup. The new queue file is subjected again
|
|
||||||
to address rewriting and substitution.
|
|
||||||
|
|
||||||
The <b>postsuper</b> exit status is non-zero when no mes-
|
A requeued message is moved to the <b>maildrop</b> queue,
|
||||||
sage queue file was requeued.
|
from where it is copied by the pickup daemon to a
|
||||||
|
new file whose name is guaranteed to match the new
|
||||||
|
queue file inode number. The new queue file is sub-
|
||||||
|
jected again to mail address rewriting and substi-
|
||||||
|
tution. This is useful when rewriting rules or vir-
|
||||||
|
tual mappings have changed.
|
||||||
|
|
||||||
<b>-s</b> Structure check. Move queue files that are in the
|
Postfix queue IDs are reused. There is a very
|
||||||
wrong place in the file system hierarchy and remove
|
small possibility that <b>postsuper</b> requeues the wrong
|
||||||
subdirectories that are no longer needed. File
|
message file when it is executed while the Postfix
|
||||||
rearrangements are necessary after a change in the
|
mail system is running, but no harm should be done.
|
||||||
<b>hash</b><i>_</i><b>queue</b><i>_</i><b>names</b> and/or <b>hash</b><i>_</i><b>queue</b><i>_</i><b>depth</b> configura-
|
|
||||||
tion parameters. It is highly recommended to run
|
|
||||||
this check once before Postfix startup.
|
|
||||||
|
|
||||||
<b>-p</b> Purge stale files (files that are left over after
|
<b>-s</b> Structure check and structure repair. It is highly
|
||||||
system or software crashes).
|
recommended to perform this operation once before
|
||||||
|
Postfix startup.
|
||||||
|
|
||||||
|
<b>o</b> Rename files whose name does not match the
|
||||||
|
message file inode number. This operation is
|
||||||
|
necessary after restoring a mail queue from
|
||||||
|
a different machine, or from backup media.
|
||||||
|
|
||||||
|
<b>o</b> Move queue files that are in the wrong place
|
||||||
|
in the file system hierarchy and remove sub-
|
||||||
|
directories that are no longer needed. File
|
||||||
|
position rearrangements are necessary after
|
||||||
|
a change in the <b>hash</b><i>_</i><b>queue</b><i>_</i><b>names</b> and/or
|
||||||
|
<b>hash</b><i>_</i><b>queue</b><i>_</i><b>depth</b> configuration parameters.
|
||||||
|
|
||||||
<b>-v</b> Enable verbose logging for debugging purposes. Mul-
|
<b>-v</b> Enable verbose logging for debugging purposes. Mul-
|
||||||
tiple <b>-v</b> options make the software increasingly
|
tiple <b>-v</b> options make the software increasingly
|
||||||
@@ -107,6 +123,24 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
Problems are reported to the standard error stream and to
|
Problems are reported to the standard error stream and to
|
||||||
<b>syslogd</b>.
|
<b>syslogd</b>.
|
||||||
|
|
||||||
|
<b>postsuper</b> reports the number of messages deleted with <b>-d</b>,
|
||||||
|
the number of messages requeued with <b>-r</b>, and the number of
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
POSTSUPER(1) POSTSUPER(1)
|
||||||
|
|
||||||
|
|
||||||
|
messages whose queue file name was fixed with <b>-s</b>. The
|
||||||
|
report is written to the standard error stream and to <b>sys-</b>
|
||||||
|
<b>logd</b>.
|
||||||
|
|
||||||
<b>CONFIGURATION</b> <b>PARAMETERS</b>
|
<b>CONFIGURATION</b> <b>PARAMETERS</b>
|
||||||
See the Postfix <b>main.cf</b> file for syntax details and for
|
See the Postfix <b>main.cf</b> file for syntax details and for
|
||||||
default values.
|
default values.
|
||||||
@@ -125,18 +159,6 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
<b>AUTHOR(S)</b>
|
<b>AUTHOR(S)</b>
|
||||||
Wietse Venema
|
Wietse Venema
|
||||||
IBM T.J. Watson Research
|
IBM T.J. Watson Research
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
2
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
POSTSUPER(1) POSTSUPER(1)
|
|
||||||
|
|
||||||
|
|
||||||
P.O. Box 704
|
P.O. Box 704
|
||||||
Yorktown Heights, NY 10598, USA
|
Yorktown Heights, NY 10598, USA
|
||||||
|
|
||||||
@@ -151,28 +173,6 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
postsuper
|
postsuper
|
||||||
\-
|
\-
|
||||||
Postfix super intendent
|
Postfix superintendent
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
@@ -14,27 +14,30 @@ Postfix super intendent
|
|||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.ad
|
.ad
|
||||||
.fi
|
.fi
|
||||||
The \fBpostsuper\fR command does small maintenance jobs. Use of
|
The \fBpostsuper\fR command does maintenance jobs on the Postfix
|
||||||
the command is restricted to the super-user.
|
queue. Use of the command is restricted to the super-user.
|
||||||
|
|
||||||
By default, \fBpostsuper\fR performs the operations requested with the
|
By default, \fBpostsuper\fR performs the operations requested with the
|
||||||
\fB-s\fR and \fB-p\fR command-line options on the named Postfix queue
|
\fB-s\fR and \fB-p\fR command-line options on all Postfix queue
|
||||||
directories (default: all).
|
directories - this includes the \fBincoming\fR, \fBactive\fR and
|
||||||
Directory names are relative to the Postfix top-level queue directory.
|
\fBdeferred\fR directories with mail files and the \fBbounce\fR,
|
||||||
|
\fBdefer\fR and \fBflush\fR directories with log files.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
.IP \fB-d \fIqueue_id\fR
|
.IP "\fB-d \fIqueue_id\fR"
|
||||||
This option ignores any \fIdirectory\fR argument(s).
|
Delete one message with the named queue ID from the named
|
||||||
Delete one message queue file with the named queue ID. Specify
|
mail queue(s) (default: \fBincoming\fR, \fBactive\fR and
|
||||||
multiple \fB-d\fR options to delete multiple queue files by name.
|
\fBdeferred\fR).
|
||||||
|
If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
||||||
|
queue IDs from standard input.
|
||||||
.sp
|
.sp
|
||||||
Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified, the
|
Specify \fB-d ALL\fR to remove all messages; for example, specify
|
||||||
program reads queue IDs from standard input.
|
\fB-d ALL deferred\fR to delete mail in the \fBdeferred\fR queue.
|
||||||
.sp
|
As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
The \fBpostsuper\fR exit status is non-zero when no message queue
|
case.
|
||||||
file was deleted.
|
|
||||||
.sp
|
.sp
|
||||||
.ft B
|
.ft B
|
||||||
|
Postfix queue IDs are reused.
|
||||||
There is a very small possibility that postsuper deletes the
|
There is a very small possibility that postsuper deletes the
|
||||||
wrong message file when it is executed while the Postfix mail
|
wrong message file when it is executed while the Postfix mail
|
||||||
system is running.
|
system is running.
|
||||||
@@ -42,47 +45,61 @@ system is running.
|
|||||||
.sp
|
.sp
|
||||||
The scenario is as follows:
|
The scenario is as follows:
|
||||||
.RS
|
.RS
|
||||||
.IP \(bu
|
.IP 1)
|
||||||
The Postfix queue manager deletes the file that \fBpostsuper\fR
|
The Postfix queue manager deletes the message that \fBpostsuper\fR
|
||||||
was supposed to delete, because Postfix was finished with the
|
is supposed to delete, because Postfix is finished with the
|
||||||
message.
|
message.
|
||||||
.IP \(bu
|
.IP 2)
|
||||||
New mail arrives, and the new message is given the same queue ID
|
New mail arrives, and the new message is given the same queue ID
|
||||||
as the message that \fBpostsuper\fR was supposed to delete.
|
as the message that \fBpostsuper\fR is supposed to delete.
|
||||||
The probability for reusing a deleted queue ID is about 1 in 2**15
|
The probability for reusing a deleted queue ID is about 1 in 2**15
|
||||||
(the number of different microsecond values that the system clock
|
(the number of different microsecond values that the system clock
|
||||||
can distinguish within a second).
|
can distinguish within a second).
|
||||||
.IP \(bu
|
.IP 3)
|
||||||
\fBpostsuper\fR deletes the new message file, instead of the
|
\fBpostsuper\fR deletes the new message, instead of the old
|
||||||
old file that should have been deleted.
|
message that it should have deleted.
|
||||||
.RE
|
.RE
|
||||||
.IP \fB-r \fIqueue_id\fR
|
|
||||||
This option ignores any \fIdirectory\fR argument(s).
|
|
||||||
Requeue one message queue file with the named queue ID. Specify
|
|
||||||
multiple \fB-r\fR options to requeue multiple queue files by name.
|
|
||||||
.sp
|
|
||||||
Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified, the
|
|
||||||
program reads queue IDs from standard input.
|
|
||||||
.sp
|
|
||||||
The queue file is moved to the maildrop queue, from where
|
|
||||||
it is copied by the pickup daemon to a new file whose name
|
|
||||||
is guaranteed to match the queue file inode number. This
|
|
||||||
feature is useful for queue files from another machine or
|
|
||||||
for files restored from backup. The new queue file is
|
|
||||||
subjected again to address rewriting and substitution.
|
|
||||||
.sp
|
|
||||||
The \fBpostsuper\fR exit status is non-zero when no message queue
|
|
||||||
file was requeued.
|
|
||||||
.IP \fB-s\fR
|
|
||||||
Structure check. Move queue files that are in the wrong place
|
|
||||||
in the file system hierarchy and remove subdirectories that are
|
|
||||||
no longer needed. File rearrangements are necessary after a change
|
|
||||||
in the \fBhash_queue_names\fR and/or \fBhash_queue_depth\fR
|
|
||||||
configuration parameters. It is highly recommended to run this
|
|
||||||
check once before Postfix startup.
|
|
||||||
.IP \fB-p\fR
|
.IP \fB-p\fR
|
||||||
Purge stale files (files that are left over after system or
|
Purge old temporary files that are left over after system or
|
||||||
software crashes).
|
software crashes.
|
||||||
|
.IP "\fB-r \fIqueue_id\fR"
|
||||||
|
Requeue the message with the named queue ID from the named
|
||||||
|
mail queue(s) (default: \fBincoming\fR, \fBactive\fR and
|
||||||
|
\fBdeferred\fR).
|
||||||
|
To requeue multiple messages, specify multiple \fB-r\fR
|
||||||
|
command-line options.
|
||||||
|
Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified,
|
||||||
|
the program reads queue IDs from standard input.
|
||||||
|
.sp
|
||||||
|
Specify \fB-r ALL\fR to requeue all messages. As a safety
|
||||||
|
measure, the word \fBALL\fR must be specified in upper case.
|
||||||
|
.sp
|
||||||
|
A requeued message is moved to the \fBmaildrop\fR queue, from
|
||||||
|
where it is copied by the pickup daemon to a new file whose name
|
||||||
|
is guaranteed to match the new queue file inode number. The
|
||||||
|
new queue file is subjected again to mail address rewriting and
|
||||||
|
substitution. This is useful when rewriting rules or virtual
|
||||||
|
mappings have changed.
|
||||||
|
.sp
|
||||||
|
Postfix queue IDs are reused.
|
||||||
|
There is a very small possibility that \fBpostsuper\fR requeues
|
||||||
|
the wrong message file when it is executed while the Postfix mail
|
||||||
|
system is running, but no harm should be done.
|
||||||
|
.IP \fB-s\fR
|
||||||
|
Structure check and structure repair. It is highly recommended
|
||||||
|
to perform this operation once before Postfix startup.
|
||||||
|
.RS
|
||||||
|
.IP \(bu
|
||||||
|
Rename files whose name does not match the message file inode
|
||||||
|
number. This operation is necessary after restoring a mail queue
|
||||||
|
from a different machine, or from backup media.
|
||||||
|
.IP \(bu
|
||||||
|
Move queue files that are in the wrong place in the file system
|
||||||
|
hierarchy and remove subdirectories that are no longer needed.
|
||||||
|
File position rearrangements are necessary after a change in the
|
||||||
|
\fBhash_queue_names\fR and/or \fBhash_queue_depth\fR
|
||||||
|
configuration parameters.
|
||||||
|
.RE
|
||||||
.IP \fB-v\fR
|
.IP \fB-v\fR
|
||||||
Enable verbose logging for debugging purposes. Multiple \fB-v\fR
|
Enable verbose logging for debugging purposes. Multiple \fB-v\fR
|
||||||
options make the software increasingly verbose.
|
options make the software increasingly verbose.
|
||||||
@@ -91,6 +108,11 @@ options make the software increasingly verbose.
|
|||||||
.fi
|
.fi
|
||||||
Problems are reported to the standard error stream and to
|
Problems are reported to the standard error stream and to
|
||||||
\fBsyslogd\fR.
|
\fBsyslogd\fR.
|
||||||
|
|
||||||
|
\fBpostsuper\fR reports the number of messages deleted with \fB-d\fR,
|
||||||
|
the number of messages requeued with \fB-r\fR, and the number of
|
||||||
|
messages whose queue file name was fixed with \fB-s\fR. The report
|
||||||
|
is written to the standard error stream and to \fBsyslogd\fR.
|
||||||
.SH CONFIGURATION PARAMETERS
|
.SH CONFIGURATION PARAMETERS
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@@ -65,7 +65,7 @@ const char *get_file_id(int fd)
|
|||||||
result = vstring_alloc(1);
|
result = vstring_alloc(1);
|
||||||
if (fstat(fd, &st) < 0)
|
if (fstat(fd, &st) < 0)
|
||||||
msg_fatal("fstat: %m");
|
msg_fatal("fstat: %m");
|
||||||
vstring_sprintf(result, "%X", (int) st.st_ino);
|
vstring_sprintf(result, "%lX", (long) st.st_ino);
|
||||||
return (vstring_str(result));
|
return (vstring_str(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -388,11 +388,13 @@ VSTREAM *mail_queue_enter(const char *queue_name, int mode)
|
|||||||
for (count = 0;; count++) {
|
for (count = 0;; count++) {
|
||||||
vstring_sprintf(id_buf, "%05X%s", (int) tv.tv_usec, file_id);
|
vstring_sprintf(id_buf, "%05X%s", (int) tv.tv_usec, file_id);
|
||||||
mail_queue_path(path_buf, queue_name, STR(id_buf));
|
mail_queue_path(path_buf, queue_name, STR(id_buf));
|
||||||
|
#if 0
|
||||||
if (access(STR(path_buf), X_OK) == 0) { /* collision. */
|
if (access(STR(path_buf), X_OK) == 0) { /* collision. */
|
||||||
if ((int) ++tv.tv_usec < 0)
|
if ((int) ++tv.tv_usec < 0)
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (sane_rename(STR(temp_path), STR(path_buf)) == 0) /* success */
|
if (sane_rename(STR(temp_path), STR(path_buf)) == 0) /* success */
|
||||||
break;
|
break;
|
||||||
if (errno == EPERM || errno == EISDIR) {/* collision. weird. */
|
if (errno == EPERM || errno == EISDIR) {/* collision. weird. */
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* Version of this program.
|
* Version of this program.
|
||||||
*/
|
*/
|
||||||
#define VAR_MAIL_VERSION "mail_version"
|
#define VAR_MAIL_VERSION "mail_version"
|
||||||
#define DEF_MAIL_VERSION "Snapshot-20010522"
|
#define DEF_MAIL_VERSION "Snapshot-20010524"
|
||||||
extern char *var_mail_version;
|
extern char *var_mail_version;
|
||||||
|
|
||||||
/* LICENSE
|
/* LICENSE
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -584,6 +584,8 @@ static const char *dict_ldap_lookup(DICT *dict, const char *name)
|
|||||||
ldap_msgfree(res);
|
ldap_msgfree(res);
|
||||||
if (filter_buf != 0)
|
if (filter_buf != 0)
|
||||||
vstring_free(filter_buf);
|
vstring_free(filter_buf);
|
||||||
|
if (escaped_name != 0)
|
||||||
|
vstring_free(escaped_name);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we had an error, return nothing, Otherwise, return the result, if
|
* If we had an error, return nothing, Otherwise, return the result, if
|
||||||
|
Reference in New Issue
Block a user