mirror of
https://github.com/vdukhovni/postfix
synced 2025-09-01 14:45:32 +00:00
postfix-2.4-20060930
This commit is contained in:
committed by
Viktor Dukhovni
parent
c66aa67bb6
commit
911ee6f582
@@ -12741,14 +12741,33 @@ Apologies for any names omitted.
|
|||||||
|
|
||||||
Cleanup: record loop detection. File: global/record.c.
|
Cleanup: record loop detection. File: global/record.c.
|
||||||
|
|
||||||
|
20060929
|
||||||
|
|
||||||
|
Workaround: AIX 5.[1-3] getaddrinfo() creates socket address
|
||||||
|
structures with a non-zero port value. This breaks the
|
||||||
|
smtp_bind_address etc. features, and breaks inet_interfaces
|
||||||
|
settings with only one IP address. Problem reported by
|
||||||
|
Hamish Marson. Files: util/sock_addr.[hc], util/myaddrinfo.c.
|
||||||
|
|
||||||
|
Bugfix (introduced with the Postfix TLS patch): memory leak
|
||||||
|
in verify_extract_peer(). The OpenSSL documentation provides
|
||||||
|
no information on how subjectAltNames are managed. Sam
|
||||||
|
Rushing, ironport. File: tls/tls_client.c.
|
||||||
|
|
||||||
|
Bugfix (introduced with Postfix 2.2): smtp_generic_maps
|
||||||
|
turned on MIME conversion. File: smtp/smtp_proto.c.
|
||||||
|
|
||||||
Wish list:
|
Wish list:
|
||||||
|
|
||||||
|
Update FILTER_README with mailing list suggestions to tag
|
||||||
|
with a badness indicator and then filter down-stream.
|
||||||
|
|
||||||
Either document or remove the internal_mail_filter_classes
|
Either document or remove the internal_mail_filter_classes
|
||||||
feature (it's disabled by default).
|
feature (it's disabled by default).
|
||||||
|
|
||||||
Build a command-line test driver for the cleanup engine.
|
Build a command-line test driver for the cleanup engine.
|
||||||
This allows us to generate arbitrary record sequences without
|
This allows us to test it with arbitrary record sequences
|
||||||
having to hijack mail from the queue.
|
without having to use a live mail queue.
|
||||||
|
|
||||||
Make null local-part handling configurable: either expand
|
Make null local-part handling configurable: either expand
|
||||||
into mailer-daemon (current bahavior) or disallow (strict
|
into mailer-daemon (current bahavior) or disallow (strict
|
||||||
|
@@ -35,6 +35,13 @@ mysqlclient library (and libm) to AUXLIBS, for example:
|
|||||||
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
|
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
|
||||||
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'
|
'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'
|
||||||
|
|
||||||
|
On Solaris, use this instead:
|
||||||
|
|
||||||
|
make -f Makefile.init makefiles \
|
||||||
|
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
|
||||||
|
'AUXLIBS=-L/usr/local/mysql/lib -R/usr/local/mysql/lib \
|
||||||
|
-lmysqlclient -lz -lm'
|
||||||
|
|
||||||
Then, just run 'make'. This requires libz, the compression library. Older mysql
|
Then, just run 'make'. This requires libz, the compression library. Older mysql
|
||||||
implementations build without libz.
|
implementations build without libz.
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
# Postfix queue message distribution in time and by sender domain
|
# Postfix queue message distribution in time and by sender domain
|
||||||
# or recipient domain. The program needs read access to the queue
|
# or recipient domain. The program needs read access to the queue
|
||||||
# directories and queue files, so it must run as the superuser or
|
# directories and queue files, so it must run as the superuser or
|
||||||
# the \fBmail_owner\fR specified in \fImain.cf\fR (typically
|
# the \fBmail_owner\fR specified in \fBmain.cf\fR (typically
|
||||||
# \fBpostfix\fR).
|
# \fBpostfix\fR).
|
||||||
#
|
#
|
||||||
# Options:
|
# Options:
|
||||||
@@ -73,8 +73,8 @@
|
|||||||
# the incoming and active queues. To display a different set of
|
# the incoming and active queues. To display a different set of
|
||||||
# queues, just list their directory names on the command line.
|
# queues, just list their directory names on the command line.
|
||||||
# Absolute paths are used as is, other paths are taken relative
|
# Absolute paths are used as is, other paths are taken relative
|
||||||
# to the \fImain.cf\fR \fBqueue_directory\fR parameter setting.
|
# to the \fBmain.cf\fR \fBqueue_directory\fR parameter setting.
|
||||||
# While \fImain.cf\fR supports the use of \fI$variable\fR expansion
|
# While \fBmain.cf\fR supports the use of \fI$variable\fR expansion
|
||||||
# in the definition of the \fBqueue_directory\fR parameter, the
|
# in the definition of the \fBqueue_directory\fR parameter, the
|
||||||
# \fBqshape\fR program does not. If you must use variable expansions
|
# \fBqshape\fR program does not. If you must use variable expansions
|
||||||
# in the \fBqueue_directory\fR setting, you must specify an explicit
|
# in the \fBqueue_directory\fR setting, you must specify an explicit
|
||||||
|
@@ -57,13 +57,24 @@ make -f Makefile.init makefiles \
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
<p> On Solaris, use this instead: </p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
make -f Makefile.init makefiles \
|
||||||
|
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
|
||||||
|
'AUXLIBS=-L/usr/local/mysql/lib -R/usr/local/mysql/lib \
|
||||||
|
-lmysqlclient -lz -lm'
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
<p> Then, just run 'make'. This requires libz, the compression
|
<p> Then, just run 'make'. This requires libz, the compression
|
||||||
library. Older mysql implementations build without libz. </p>
|
library. Older mysql implementations build without libz. </p>
|
||||||
|
|
||||||
<h2>Using MySQL tables</h2>
|
<h2>Using MySQL tables</h2>
|
||||||
|
|
||||||
<p> Once Postfix is built with mysql support, you can specify a
|
<p> Once Postfix is built with mysql support, you can specify a
|
||||||
map type in main.cf like this: </p>
|
map type in <a href="postconf.5.html">main.cf</a> like this: </p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
@@ -126,7 +137,7 @@ will be deferred until at least one of those hosts is reachable.
|
|||||||
Marcus, IC Group, Inc.</li>
|
Marcus, IC Group, Inc.</li>
|
||||||
|
|
||||||
<li> Liviu Daia revised the configuration interface and added the
|
<li> Liviu Daia revised the configuration interface and added the
|
||||||
main.cf configuration feature.</li>
|
<a href="postconf.5.html">main.cf</a> configuration feature.</li>
|
||||||
|
|
||||||
<li> Liviu Daia with further refinements from Jose Luis Tallon and
|
<li> Liviu Daia with further refinements from Jose Luis Tallon and
|
||||||
Victor Duchovni developed the common query, result_format, domain and
|
Victor Duchovni developed the common query, result_format, domain and
|
||||||
|
@@ -21,13 +21,13 @@ POSTALIAS(1) POSTALIAS(1)
|
|||||||
able for the use as NIS alias maps.
|
able for the use as NIS alias maps.
|
||||||
|
|
||||||
If the result files do not exist they will be created with
|
If the result files do not exist they will be created with
|
||||||
the same group and other read permissions as the source
|
the same group and other read permissions as their source
|
||||||
file.
|
file.
|
||||||
|
|
||||||
While a database update is in progress, signal delivery is
|
While a database update is in progress, signal delivery is
|
||||||
postponed, and an exclusive, advisory, lock is placed on
|
postponed, and an exclusive, advisory, lock is placed on
|
||||||
the entire database, in order to avoid surprises in spec-
|
the entire database, in order to avoid surprises in spec-
|
||||||
tator programs.
|
tator processes.
|
||||||
|
|
||||||
The format of Postfix alias input files is described in
|
The format of Postfix alias input files is described in
|
||||||
<a href="aliases.5.html"><b>aliases</b>(5)</a>.
|
<a href="aliases.5.html"><b>aliases</b>(5)</a>.
|
||||||
|
@@ -22,13 +22,13 @@ POSTMAP(1) POSTMAP(1)
|
|||||||
<b>makemap</b> <i>file</i><b>_</b><i>type file</i><b>_</b><i>name</i> < <i>file</i><b>_</b><i>name</i>
|
<b>makemap</b> <i>file</i><b>_</b><i>type file</i><b>_</b><i>name</i> < <i>file</i><b>_</b><i>name</i>
|
||||||
|
|
||||||
If the result files do not exist they will be created with
|
If the result files do not exist they will be created with
|
||||||
the same group and other read permissions as the source
|
the same group and other read permissions as their source
|
||||||
file.
|
file.
|
||||||
|
|
||||||
While the table update is in progress, signal delivery is
|
While the table update is in progress, signal delivery is
|
||||||
postponed, and an exclusive, advisory, lock is placed on
|
postponed, and an exclusive, advisory, lock is placed on
|
||||||
the entire table, in order to avoid surprises in spectator
|
the entire table, in order to avoid surprises in spectator
|
||||||
programs.
|
processes.
|
||||||
|
|
||||||
<b>INPUT FILE FORMAT</b>
|
<b>INPUT FILE FORMAT</b>
|
||||||
The format of a lookup table input file is as follows:
|
The format of a lookup table input file is as follows:
|
||||||
|
@@ -52,10 +52,10 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
print $1 }
|
print $1 }
|
||||||
' | tr -d '*!' | postsuper -d -
|
' | tr -d '*!' | postsuper -d -
|
||||||
|
|
||||||
Specify <b>-d ALL</b> to remove all messages; for example,
|
Specify "<b>-d ALL</b>" to remove all messages; for exam-
|
||||||
specify <b>-d ALL deferred</b> to delete mail in the
|
ple, specify "<b>-d ALL deferred</b>" to delete all mail
|
||||||
<b>deferred</b> queue. As a safety measure, the word <b>ALL</b>
|
in the <b>deferred</b> queue. As a safety measure, the
|
||||||
must be specified in upper case.
|
word <b>ALL</b> must be specified in upper case.
|
||||||
|
|
||||||
Warning: Postfix queue IDs are reused. There is a
|
Warning: Postfix queue IDs are reused. There is a
|
||||||
very small possibility that postsuper deletes the
|
very small possibility that postsuper deletes the
|
||||||
@@ -91,8 +91,8 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
If a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the program reads
|
If a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the program reads
|
||||||
queue IDs from standard input.
|
queue IDs from standard input.
|
||||||
|
|
||||||
Specify <b>-h ALL</b> to hold all messages; for example,
|
Specify "<b>-h ALL</b>" to hold all messages; for example,
|
||||||
specify <b>-h ALL deferred</b> to hold mail in the
|
specify "<b>-h ALL deferred</b>" to hold all mail in the
|
||||||
<b>deferred</b> queue. As a safety measure, the word <b>ALL</b>
|
<b>deferred</b> queue. As a safety measure, the word <b>ALL</b>
|
||||||
must be specified in upper case.
|
must be specified in upper case.
|
||||||
|
|
||||||
@@ -110,12 +110,12 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
If a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the program reads
|
If a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the program reads
|
||||||
queue IDs from standard input.
|
queue IDs from standard input.
|
||||||
|
|
||||||
Note: use "<b>postsuper -r</b>" to release mail that was
|
Note: specify "<b>postsuper -r</b>" to release mail that
|
||||||
kept on hold for a significant fraction of <b>$<a href="postconf.5.html#maximal_queue_lifetime">maxi</a>-</b>
|
was kept on hold for a significant fraction of
|
||||||
<b><a href="postconf.5.html#maximal_queue_lifetime">mal_queue_lifetime</a></b> or <b>$<a href="postconf.5.html#bounce_queue_lifetime">bounce_queue_lifetime</a></b>, or
|
<b>$<a href="postconf.5.html#maximal_queue_lifetime">maximal_queue_lifetime</a></b> or <b>$<a href="postconf.5.html#bounce_queue_lifetime">bounce_queue_lifetime</a></b>,
|
||||||
longer.
|
or longer.
|
||||||
|
|
||||||
Specify <b>-H ALL</b> to release all mail that is "on
|
Specify "<b>-H ALL</b>" to release all mail that is "on
|
||||||
hold". As a safety measure, the word <b>ALL</b> must be
|
hold". As a safety measure, the word <b>ALL</b> must be
|
||||||
specified in upper case.
|
specified in upper case.
|
||||||
|
|
||||||
@@ -131,9 +131,9 @@ POSTSUPER(1) POSTSUPER(1)
|
|||||||
Alternatively, if a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the
|
Alternatively, if a <i>queue</i><b>_</b><i>id</i> of <b>-</b> is specified, the
|
||||||
program reads queue IDs from standard input.
|
program reads queue IDs from standard input.
|
||||||
|
|
||||||
Specify <b>-r ALL</b> to requeue all messages. As a safety
|
Specify "<b>-r ALL</b>" to requeue all messages. As a
|
||||||
measure, the word <b>ALL</b> must be specified in upper
|
safety measure, the word <b>ALL</b> must be specified in
|
||||||
case.
|
upper case.
|
||||||
|
|
||||||
A requeued message is moved to the <b>maildrop</b> queue,
|
A requeued message is moved to the <b>maildrop</b> queue,
|
||||||
from where it is copied by the <a href="pickup.8.html"><b>pickup</b>(8)</a> and
|
from where it is copied by the <a href="pickup.8.html"><b>pickup</b>(8)</a> and
|
||||||
|
@@ -20,7 +20,7 @@ QSHAPE(1) QSHAPE(1)
|
|||||||
Postfix queue message distribution in time and by sender
|
Postfix queue message distribution in time and by sender
|
||||||
domain or recipient domain. The program needs read access
|
domain or recipient domain. The program needs read access
|
||||||
to the queue directories and queue files, so it must run
|
to the queue directories and queue files, so it must run
|
||||||
as the superuser or the <b><a href="postconf.5.html#mail_owner">mail_owner</a></b> specified in <i<a href="postconf.5.html">>main.cf</</a>i>
|
as the superuser or the <b><a href="postconf.5.html#mail_owner">mail_owner</a></b> specified in <a href="postconf.5.html"><b>main.cf</b></a>
|
||||||
(typically <b>postfix</b>).
|
(typically <b>postfix</b>).
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@@ -90,8 +90,8 @@ QSHAPE(1) QSHAPE(1)
|
|||||||
a different set of queues, just list their direc-
|
a different set of queues, just list their direc-
|
||||||
tory names on the command line. Absolute paths are
|
tory names on the command line. Absolute paths are
|
||||||
used as is, other paths are taken relative to the
|
used as is, other paths are taken relative to the
|
||||||
<i<a href="postconf.5.html">>main.cf</</a>i> <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> parameter setting. While
|
<a href="postconf.5.html"><b>main.cf</a> <a href="postconf.5.html#queue_directory">queue_directory</a></b> parameter setting. While
|
||||||
<i<a href="postconf.5.html">>main.cf</</a>i> supports the use of <i>$variable</i> expansion in
|
<a href="postconf.5.html"><b>main.cf</b></a> supports the use of <i>$variable</i> expansion in
|
||||||
the definition of the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> parameter,
|
the definition of the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> parameter,
|
||||||
the <b>qshape</b> program does not. If you must use vari-
|
the <b>qshape</b> program does not. If you must use vari-
|
||||||
able expansions in the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> setting, you
|
able expansions in the <b><a href="postconf.5.html#queue_directory">queue_directory</a></b> setting, you
|
||||||
|
@@ -439,11 +439,6 @@ SENDMAIL(1) SENDMAIL(1)
|
|||||||
process name in syslog records, so that "smtpd"
|
process name in syslog records, so that "smtpd"
|
||||||
becomes, for example, "postfix/smtpd".
|
becomes, for example, "postfix/smtpd".
|
||||||
|
|
||||||
<b><a href="postconf.5.html#trigger_timeout">trigger_timeout</a> (10s)</b>
|
|
||||||
The time limit for sending a trigger to a Postfix
|
|
||||||
daemon (for example, the <a href="pickup.8.html"><b>pickup</b>(8)</a> or <a href="qmgr.8.html"><b>qmgr</b>(8)</a> dae-
|
|
||||||
mon).
|
|
||||||
|
|
||||||
<b>FILES</b>
|
<b>FILES</b>
|
||||||
/var/spool/postfix, mail queue
|
/var/spool/postfix, mail queue
|
||||||
/etc/postfix, configuration files
|
/etc/postfix, configuration files
|
||||||
|
@@ -21,12 +21,12 @@ file formats are expected to be compatible with Sendmail version 8,
|
|||||||
and are expected to be suitable for the use as NIS alias maps.
|
and are expected to be suitable for the use as NIS alias maps.
|
||||||
|
|
||||||
If the result files do not exist they will be created with the
|
If the result files do not exist they will be created with the
|
||||||
same group and other read permissions as the source file.
|
same group and other read permissions as their source file.
|
||||||
|
|
||||||
While a database update is in progress, signal delivery is
|
While a database update is in progress, signal delivery is
|
||||||
postponed, and an exclusive, advisory, lock is placed on the
|
postponed, and an exclusive, advisory, lock is placed on the
|
||||||
entire database, in order to avoid surprises in spectator
|
entire database, in order to avoid surprises in spectator
|
||||||
programs.
|
processes.
|
||||||
|
|
||||||
The format of Postfix alias input files is described in
|
The format of Postfix alias input files is described in
|
||||||
\fBaliases\fR(5).
|
\fBaliases\fR(5).
|
||||||
|
@@ -23,12 +23,12 @@ file formats are expected to be compatible with:
|
|||||||
\fBmakemap \fIfile_type\fR \fIfile_name\fR < \fIfile_name\fR
|
\fBmakemap \fIfile_type\fR \fIfile_name\fR < \fIfile_name\fR
|
||||||
|
|
||||||
If the result files do not exist they will be created with the
|
If the result files do not exist they will be created with the
|
||||||
same group and other read permissions as the source file.
|
same group and other read permissions as their source file.
|
||||||
|
|
||||||
While the table update is in progress, signal delivery is
|
While the table update is in progress, signal delivery is
|
||||||
postponed, and an exclusive, advisory, lock is placed on the
|
postponed, and an exclusive, advisory, lock is placed on the
|
||||||
entire table, in order to avoid surprises in spectator
|
entire table, in order to avoid surprises in spectator
|
||||||
programs.
|
processes.
|
||||||
.SH "INPUT FILE FORMAT"
|
.SH "INPUT FILE FORMAT"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@@ -52,8 +52,8 @@ print $1 }
|
|||||||
.br
|
.br
|
||||||
\' | tr -d '*!' | postsuper -d -
|
\' | tr -d '*!' | postsuper -d -
|
||||||
.sp
|
.sp
|
||||||
Specify \fB-d ALL\fR to remove all messages; for example, specify
|
Specify "\fB-d ALL\fR" to remove all messages; for example, specify
|
||||||
\fB-d ALL deferred\fR to delete mail in the \fBdeferred\fR queue.
|
"\fB-d ALL deferred\fR" to delete all mail in the \fBdeferred\fR queue.
|
||||||
As a safety measure, the word \fBALL\fR must be specified in upper
|
As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
case.
|
case.
|
||||||
.sp
|
.sp
|
||||||
@@ -87,8 +87,8 @@ mail queue(s) (default: \fBincoming\fR, \fBactive\fR and
|
|||||||
If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
||||||
queue IDs from standard input.
|
queue IDs from standard input.
|
||||||
.sp
|
.sp
|
||||||
Specify \fB-h ALL\fR to hold all messages; for example, specify
|
Specify "\fB-h ALL\fR" to hold all messages; for example, specify
|
||||||
\fB-h ALL deferred\fR to hold mail in the \fBdeferred\fR queue.
|
"\fB-h ALL deferred\fR" to hold all mail in the \fBdeferred\fR queue.
|
||||||
As a safety measure, the word \fBALL\fR must be specified in upper
|
As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
case.
|
case.
|
||||||
.sp
|
.sp
|
||||||
@@ -104,11 +104,11 @@ mail queue(s) (default: \fBhold\fR) to the \fBdeferred\fR queue.
|
|||||||
If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
||||||
queue IDs from standard input.
|
queue IDs from standard input.
|
||||||
.sp
|
.sp
|
||||||
Note: use "\fBpostsuper -r\fR" to release mail that was kept on
|
Note: specify "\fBpostsuper -r\fR" to release mail that was kept on
|
||||||
hold for a significant fraction of \fB$maximal_queue_lifetime\fR
|
hold for a significant fraction of \fB$maximal_queue_lifetime\fR
|
||||||
or \fB$bounce_queue_lifetime\fR, or longer.
|
or \fB$bounce_queue_lifetime\fR, or longer.
|
||||||
.sp
|
.sp
|
||||||
Specify \fB-H ALL\fR to release all mail that is "on hold".
|
Specify "\fB-H ALL\fR" to release all mail that is "on hold".
|
||||||
As a safety measure, the word \fBALL\fR must be specified in upper
|
As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
case.
|
case.
|
||||||
.IP \fB-p\fR
|
.IP \fB-p\fR
|
||||||
@@ -124,7 +124,7 @@ command-line options.
|
|||||||
Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified,
|
Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified,
|
||||||
the program reads queue IDs from standard input.
|
the program reads queue IDs from standard input.
|
||||||
.sp
|
.sp
|
||||||
Specify \fB-r ALL\fR to requeue all messages. As a safety
|
Specify "\fB-r ALL\fR" to requeue all messages. As a safety
|
||||||
measure, the word \fBALL\fR must be specified in upper case.
|
measure, the word \fBALL\fR must be specified in upper case.
|
||||||
.sp
|
.sp
|
||||||
A requeued message is moved to the \fBmaildrop\fR queue,
|
A requeued message is moved to the \fBmaildrop\fR queue,
|
||||||
|
@@ -20,7 +20,7 @@ The \fBqshape\fR program helps the administrator understand the
|
|||||||
Postfix queue message distribution in time and by sender domain
|
Postfix queue message distribution in time and by sender domain
|
||||||
or recipient domain. The program needs read access to the queue
|
or recipient domain. The program needs read access to the queue
|
||||||
directories and queue files, so it must run as the superuser or
|
directories and queue files, so it must run as the superuser or
|
||||||
the \fBmail_owner\fR specified in \fImain.cf\fR (typically
|
the \fBmail_owner\fR specified in \fBmain.cf\fR (typically
|
||||||
\fBpostfix\fR).
|
\fBpostfix\fR).
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@@ -74,8 +74,8 @@ By default \fBqshape\fR displays the combined distribution of
|
|||||||
the incoming and active queues. To display a different set of
|
the incoming and active queues. To display a different set of
|
||||||
queues, just list their directory names on the command line.
|
queues, just list their directory names on the command line.
|
||||||
Absolute paths are used as is, other paths are taken relative
|
Absolute paths are used as is, other paths are taken relative
|
||||||
to the \fImain.cf\fR \fBqueue_directory\fR parameter setting.
|
to the \fBmain.cf\fR \fBqueue_directory\fR parameter setting.
|
||||||
While \fImain.cf\fR supports the use of \fI$variable\fR expansion
|
While \fBmain.cf\fR supports the use of \fI$variable\fR expansion
|
||||||
in the definition of the \fBqueue_directory\fR parameter, the
|
in the definition of the \fBqueue_directory\fR parameter, the
|
||||||
\fBqshape\fR program does not. If you must use variable expansions
|
\fBqshape\fR program does not. If you must use variable expansions
|
||||||
in the \fBqueue_directory\fR setting, you must specify an explicit
|
in the \fBqueue_directory\fR setting, you must specify an explicit
|
||||||
|
@@ -369,9 +369,6 @@ The syslog facility of Postfix logging.
|
|||||||
.IP "\fBsyslog_name (postfix)\fR"
|
.IP "\fBsyslog_name (postfix)\fR"
|
||||||
The mail system name that is prepended to the process name in syslog
|
The mail system name that is prepended to the process name in syslog
|
||||||
records, so that "smtpd" becomes, for example, "postfix/smtpd".
|
records, so that "smtpd" becomes, for example, "postfix/smtpd".
|
||||||
.IP "\fBtrigger_timeout (10s)\fR"
|
|
||||||
The time limit for sending a trigger to a Postfix daemon (for
|
|
||||||
example, the \fBpickup\fR(8) or \fBqmgr\fR(8) daemon).
|
|
||||||
.SH "FILES"
|
.SH "FILES"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@@ -57,6 +57,17 @@ make -f Makefile.init makefiles \
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
|
<p> On Solaris, use this instead: </p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
<pre>
|
||||||
|
make -f Makefile.init makefiles \
|
||||||
|
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
|
||||||
|
'AUXLIBS=-L/usr/local/mysql/lib -R/usr/local/mysql/lib \
|
||||||
|
-lmysqlclient -lz -lm'
|
||||||
|
</pre>
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
<p> Then, just run 'make'. This requires libz, the compression
|
<p> Then, just run 'make'. This requires libz, the compression
|
||||||
library. Older mysql implementations build without libz. </p>
|
library. Older mysql implementations build without libz. </p>
|
||||||
|
|
||||||
|
@@ -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 "20060903"
|
#define MAIL_RELEASE_DATE "20060930"
|
||||||
#define MAIL_VERSION_NUMBER "2.4"
|
#define MAIL_VERSION_NUMBER "2.4"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@@ -15,12 +15,12 @@
|
|||||||
/* and are expected to be suitable for the use as NIS alias maps.
|
/* and are expected to be suitable for the use as NIS alias maps.
|
||||||
/*
|
/*
|
||||||
/* If the result files do not exist they will be created with the
|
/* If the result files do not exist they will be created with the
|
||||||
/* same group and other read permissions as the source file.
|
/* same group and other read permissions as their source file.
|
||||||
/*
|
/*
|
||||||
/* While a database update is in progress, signal delivery is
|
/* While a database update is in progress, signal delivery is
|
||||||
/* postponed, and an exclusive, advisory, lock is placed on the
|
/* postponed, and an exclusive, advisory, lock is placed on the
|
||||||
/* entire database, in order to avoid surprises in spectator
|
/* entire database, in order to avoid surprises in spectator
|
||||||
/* programs.
|
/* processes.
|
||||||
/*
|
/*
|
||||||
/* The format of Postfix alias input files is described in
|
/* The format of Postfix alias input files is described in
|
||||||
/* \fBaliases\fR(5).
|
/* \fBaliases\fR(5).
|
||||||
|
@@ -17,12 +17,12 @@
|
|||||||
/* \fBmakemap \fIfile_type\fR \fIfile_name\fR < \fIfile_name\fR
|
/* \fBmakemap \fIfile_type\fR \fIfile_name\fR < \fIfile_name\fR
|
||||||
/*
|
/*
|
||||||
/* If the result files do not exist they will be created with the
|
/* If the result files do not exist they will be created with the
|
||||||
/* same group and other read permissions as the source file.
|
/* same group and other read permissions as their source file.
|
||||||
/*
|
/*
|
||||||
/* While the table update is in progress, signal delivery is
|
/* While the table update is in progress, signal delivery is
|
||||||
/* postponed, and an exclusive, advisory, lock is placed on the
|
/* postponed, and an exclusive, advisory, lock is placed on the
|
||||||
/* entire table, in order to avoid surprises in spectator
|
/* entire table, in order to avoid surprises in spectator
|
||||||
/* programs.
|
/* processes.
|
||||||
/* INPUT FILE FORMAT
|
/* INPUT FILE FORMAT
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
|
@@ -46,8 +46,8 @@
|
|||||||
/* .br
|
/* .br
|
||||||
/* \' | tr -d '*!' | postsuper -d -
|
/* \' | tr -d '*!' | postsuper -d -
|
||||||
/* .sp
|
/* .sp
|
||||||
/* Specify \fB-d ALL\fR to remove all messages; for example, specify
|
/* Specify "\fB-d ALL\fR" to remove all messages; for example, specify
|
||||||
/* \fB-d ALL deferred\fR to delete mail in the \fBdeferred\fR queue.
|
/* "\fB-d ALL deferred\fR" to delete all mail in the \fBdeferred\fR queue.
|
||||||
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
/* case.
|
/* case.
|
||||||
/* .sp
|
/* .sp
|
||||||
@@ -81,8 +81,8 @@
|
|||||||
/* If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
/* If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
||||||
/* queue IDs from standard input.
|
/* queue IDs from standard input.
|
||||||
/* .sp
|
/* .sp
|
||||||
/* Specify \fB-h ALL\fR to hold all messages; for example, specify
|
/* Specify "\fB-h ALL\fR" to hold all messages; for example, specify
|
||||||
/* \fB-h ALL deferred\fR to hold mail in the \fBdeferred\fR queue.
|
/* "\fB-h ALL deferred\fR" to hold all mail in the \fBdeferred\fR queue.
|
||||||
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
/* case.
|
/* case.
|
||||||
/* .sp
|
/* .sp
|
||||||
@@ -98,11 +98,11 @@
|
|||||||
/* If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
/* If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
|
||||||
/* queue IDs from standard input.
|
/* queue IDs from standard input.
|
||||||
/* .sp
|
/* .sp
|
||||||
/* Note: use "\fBpostsuper -r\fR" to release mail that was kept on
|
/* Note: specify "\fBpostsuper -r\fR" to release mail that was kept on
|
||||||
/* hold for a significant fraction of \fB$maximal_queue_lifetime\fR
|
/* hold for a significant fraction of \fB$maximal_queue_lifetime\fR
|
||||||
/* or \fB$bounce_queue_lifetime\fR, or longer.
|
/* or \fB$bounce_queue_lifetime\fR, or longer.
|
||||||
/* .sp
|
/* .sp
|
||||||
/* Specify \fB-H ALL\fR to release all mail that is "on hold".
|
/* Specify "\fB-H ALL\fR" to release all mail that is "on hold".
|
||||||
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
/* As a safety measure, the word \fBALL\fR must be specified in upper
|
||||||
/* case.
|
/* case.
|
||||||
/* .IP \fB-p\fR
|
/* .IP \fB-p\fR
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
/* Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified,
|
/* Alternatively, if a \fIqueue_id\fR of \fB-\fR is specified,
|
||||||
/* the program reads queue IDs from standard input.
|
/* the program reads queue IDs from standard input.
|
||||||
/* .sp
|
/* .sp
|
||||||
/* Specify \fB-r ALL\fR to requeue all messages. As a safety
|
/* Specify "\fB-r ALL\fR" to requeue all messages. As a safety
|
||||||
/* measure, the word \fBALL\fR must be specified in upper case.
|
/* measure, the word \fBALL\fR must be specified in upper case.
|
||||||
/* .sp
|
/* .sp
|
||||||
/* A requeued message is moved to the \fBmaildrop\fR queue,
|
/* A requeued message is moved to the \fBmaildrop\fR queue,
|
||||||
|
@@ -343,9 +343,6 @@
|
|||||||
/* .IP "\fBsyslog_name (postfix)\fR"
|
/* .IP "\fBsyslog_name (postfix)\fR"
|
||||||
/* The mail system name that is prepended to the process name in syslog
|
/* The mail system name that is prepended to the process name in syslog
|
||||||
/* records, so that "smtpd" becomes, for example, "postfix/smtpd".
|
/* records, so that "smtpd" becomes, for example, "postfix/smtpd".
|
||||||
/* .IP "\fBtrigger_timeout (10s)\fR"
|
|
||||||
/* The time limit for sending a trigger to a Postfix daemon (for
|
|
||||||
/* example, the \fBpickup\fR(8) or \fBqmgr\fR(8) daemon).
|
|
||||||
/* FILES
|
/* FILES
|
||||||
/* /var/spool/postfix, mail queue
|
/* /var/spool/postfix, mail queue
|
||||||
/* /etc/postfix, configuration files
|
/* /etc/postfix, configuration files
|
||||||
|
@@ -230,6 +230,11 @@ char *xfer_request[SMTP_STATE_LAST] = {
|
|||||||
"QUIT command",
|
"QUIT command",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define SMTP_MIME_DOWNGRADE(session, request) \
|
||||||
|
(var_disable_mime_oconv == 0 \
|
||||||
|
&& (session->features & SMTP_FEATURE_8BITMIME) == 0 \
|
||||||
|
&& strcmp(request->encoding, MAIL_ATTR_ENC_7BIT) != 0)
|
||||||
|
|
||||||
static int smtp_start_tls(SMTP_STATE *);
|
static int smtp_start_tls(SMTP_STATE *);
|
||||||
|
|
||||||
/* smtp_helo - perform initial handshake with SMTP server */
|
/* smtp_helo - perform initial handshake with SMTP server */
|
||||||
@@ -1172,7 +1177,9 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
|
|||||||
QUOTE_ADDRESS(session->scratch, vstring_str(session->scratch2));
|
QUOTE_ADDRESS(session->scratch, vstring_str(session->scratch2));
|
||||||
vstring_sprintf(next_command, "MAIL FROM:<%s>",
|
vstring_sprintf(next_command, "MAIL FROM:<%s>",
|
||||||
vstring_str(session->scratch));
|
vstring_str(session->scratch));
|
||||||
if (session->features & SMTP_FEATURE_SIZE) /* RFC 1870 */
|
/* XXX Don't announce SIZE if we're going to MIME downgrade. */
|
||||||
|
if (session->features & SMTP_FEATURE_SIZE /* RFC 1870 */
|
||||||
|
&& !SMTP_MIME_DOWNGRADE(session, request))
|
||||||
vstring_sprintf_append(next_command, " SIZE=%lu",
|
vstring_sprintf_append(next_command, " SIZE=%lu",
|
||||||
request->data_size);
|
request->data_size);
|
||||||
if (session->features & SMTP_FEATURE_8BITMIME) { /* RFC 1652 */
|
if (session->features & SMTP_FEATURE_8BITMIME) { /* RFC 1652 */
|
||||||
@@ -1619,13 +1626,13 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
|
|||||||
* transaction in progress.
|
* transaction in progress.
|
||||||
*/
|
*/
|
||||||
if (send_state == SMTP_STATE_DOT && nrcpt > 0) {
|
if (send_state == SMTP_STATE_DOT && nrcpt > 0) {
|
||||||
downgrading =
|
downgrading = SMTP_MIME_DOWNGRADE(session, request);
|
||||||
(var_disable_mime_oconv == 0
|
/* XXX Don't downgrade just because generic_maps is turned on. */
|
||||||
&& (session->features & SMTP_FEATURE_8BITMIME) == 0
|
|
||||||
&& strcmp(request->encoding, MAIL_ATTR_ENC_7BIT) != 0);
|
|
||||||
if (downgrading || smtp_generic_maps)
|
if (downgrading || smtp_generic_maps)
|
||||||
session->mime_state = mime_state_alloc(MIME_OPT_DOWNGRADE
|
session->mime_state = mime_state_alloc(downgrading ?
|
||||||
| MIME_OPT_REPORT_NESTING,
|
MIME_OPT_DOWNGRADE
|
||||||
|
| MIME_OPT_REPORT_NESTING :
|
||||||
|
MIME_OPT_REPORT_NESTING,
|
||||||
smtp_generic_maps ?
|
smtp_generic_maps ?
|
||||||
smtp_header_rewrite :
|
smtp_header_rewrite :
|
||||||
smtp_header_out,
|
smtp_header_out,
|
||||||
|
@@ -143,6 +143,13 @@ void smtpd_peer_init(SMTPD_STATE *state)
|
|||||||
* Milter applications as {if_name} and {if_addr}, then we also must be
|
* Milter applications as {if_name} and {if_addr}, then we also must be
|
||||||
* able to provide this via the XCLIENT command for Milter testing.
|
* able to provide this via the XCLIENT command for Milter testing.
|
||||||
*
|
*
|
||||||
|
* XXX If we make local or remote port information available to policy
|
||||||
|
* servers or Milter applications, then we must also make this testable
|
||||||
|
* with the XCLIENT command, otherwise there will be confusion.
|
||||||
|
*
|
||||||
|
* XXX If we make local or remote port information available via logging,
|
||||||
|
* then we must also support these attributes with the XFORWARD command.
|
||||||
|
*
|
||||||
* XXX If support were to be added for Milter applications in down-stream
|
* XXX If support were to be added for Milter applications in down-stream
|
||||||
* MTAs, then consistency demands that we propagate a lot of Sendmail
|
* MTAs, then consistency demands that we propagate a lot of Sendmail
|
||||||
* macro information via the XFORWARD command. Otherwise we could end up
|
* macro information via the XFORWARD command. Otherwise we could end up
|
||||||
|
@@ -565,7 +565,7 @@ static void verify_extract_peer(const char *nexthop, const char *hname,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sk_GENERAL_NAME_free(gens);
|
sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (dNSName_found) {
|
if (dNSName_found) {
|
||||||
|
@@ -400,8 +400,12 @@ int hostname_to_sockaddr(const char *hostname, const char *service,
|
|||||||
* might blow up. Instead we turn off IPV6_V6ONLY in inet_listen(), and
|
* might blow up. Instead we turn off IPV6_V6ONLY in inet_listen(), and
|
||||||
* supply a protocol-dependent hard-coded string value to getaddrinfo()
|
* supply a protocol-dependent hard-coded string value to getaddrinfo()
|
||||||
* below, so that it will convert into the appropriate wild-card address.
|
* below, so that it will convert into the appropriate wild-card address.
|
||||||
|
*
|
||||||
|
* XXX AIX 5.[1-3] getaddrinfo() may return a non-null port when a null
|
||||||
|
* service argument is specified.
|
||||||
*/
|
*/
|
||||||
struct addrinfo hints;
|
struct addrinfo hints;
|
||||||
|
int err;
|
||||||
|
|
||||||
memset((char *) &hints, 0, sizeof(hints));
|
memset((char *) &hints, 0, sizeof(hints));
|
||||||
hints.ai_family = inet_proto_info()->ai_family;
|
hints.ai_family = inet_proto_info()->ai_family;
|
||||||
@@ -423,7 +427,18 @@ int hostname_to_sockaddr(const char *hostname, const char *service,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return (getaddrinfo(hostname, service, &hints, res));
|
err = getaddrinfo(hostname, service, &hints, res);
|
||||||
|
#if defined(BROKEN_AI_NULL_SERVICE)
|
||||||
|
if (service == 0 && err == 0) {
|
||||||
|
struct addrinfo *r;
|
||||||
|
unsigned short *portp;
|
||||||
|
|
||||||
|
for (r = *res; r != 0; r = r->ai_next)
|
||||||
|
if (*(portp = SOCK_ADDR_PORTP(r->ai_addr)) != 0)
|
||||||
|
*portp = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return (err);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -500,8 +515,12 @@ int hostaddr_to_sockaddr(const char *hostaddr, const char *service,
|
|||||||
* ai_family=PF_UNSPEC, ai_flags=AI_NUMERICHOST, ai_socktype=SOCK_STREAM,
|
* ai_family=PF_UNSPEC, ai_flags=AI_NUMERICHOST, ai_socktype=SOCK_STREAM,
|
||||||
* ai_protocol=0 or IPPROTO_TCP, and service=0. The workaround is to
|
* ai_protocol=0 or IPPROTO_TCP, and service=0. The workaround is to
|
||||||
* ignore all but the first result.
|
* ignore all but the first result.
|
||||||
|
*
|
||||||
|
* XXX AIX 5.[1-3] getaddrinfo() may return a non-null port when a null
|
||||||
|
* service argument is specified.
|
||||||
*/
|
*/
|
||||||
struct addrinfo hints;
|
struct addrinfo hints;
|
||||||
|
int err;
|
||||||
|
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = inet_proto_info()->ai_family;
|
hints.ai_family = inet_proto_info()->ai_family;
|
||||||
@@ -524,7 +543,18 @@ int hostaddr_to_sockaddr(const char *hostaddr, const char *service,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return (getaddrinfo(hostaddr, service, &hints, res));
|
err = getaddrinfo(hostaddr, service, &hints, res);
|
||||||
|
#if defined(BROKEN_AI_NULL_SERVICE)
|
||||||
|
if (service == 0 && err == 0) {
|
||||||
|
struct addrinfo *r;
|
||||||
|
unsigned short *portp;
|
||||||
|
|
||||||
|
for (r = *res; r != 0; r = r->ai_next)
|
||||||
|
if (*(portp = SOCK_ADDR_PORTP(r->ai_addr)) != 0)
|
||||||
|
*portp = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return (err);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,6 +28,8 @@
|
|||||||
/* struct sockaddr *SOCK_ADDR_PTR(ptr)
|
/* struct sockaddr *SOCK_ADDR_PTR(ptr)
|
||||||
/* unsigned char SOCK_ADDR_FAMILY(ptr)
|
/* unsigned char SOCK_ADDR_FAMILY(ptr)
|
||||||
/* unsigned char SOCK_ADDR_LEN(ptr)
|
/* unsigned char SOCK_ADDR_LEN(ptr)
|
||||||
|
/* unsigned short SOCK_ADDR_PORT(ptr)
|
||||||
|
/* unsigned short *SOCK_ADDR_PORTP(ptr)
|
||||||
/*
|
/*
|
||||||
/* struct sockaddr_in *SOCK_ADDR_IN_PTR(ptr)
|
/* struct sockaddr_in *SOCK_ADDR_IN_PTR(ptr)
|
||||||
/* unsigned char SOCK_ADDR_IN_FAMILY(ptr)
|
/* unsigned char SOCK_ADDR_IN_FAMILY(ptr)
|
||||||
@@ -66,7 +68,9 @@
|
|||||||
/* address family and length of the real structure that hides
|
/* address family and length of the real structure that hides
|
||||||
/* inside a generic sockaddr structure. On systems where struct
|
/* inside a generic sockaddr structure. On systems where struct
|
||||||
/* sockaddr has no sa_len member, SOCK_ADDR_LEN() cannot be
|
/* sockaddr has no sa_len member, SOCK_ADDR_LEN() cannot be
|
||||||
/* used as lvalue.
|
/* used as lvalue. SOCK_ADDR_PORT() returns the IPv4 or IPv6
|
||||||
|
/* port number, in network byte order; it must not be used as
|
||||||
|
/* lvalue. SOCK_ADDR_PORTP() returns a pointer to the same.
|
||||||
/*
|
/*
|
||||||
/* The macros SOCK_ADDR_IN{,6}_{PTR,FAMILY,PORT,ADDR}() cast
|
/* The macros SOCK_ADDR_IN{,6}_{PTR,FAMILY,PORT,ADDR}() cast
|
||||||
/* a generic pointer to a specific socket address structure
|
/* a generic pointer to a specific socket address structure
|
||||||
|
@@ -45,6 +45,13 @@ extern int sock_addr_in_loopback(const struct sockaddr *);
|
|||||||
sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in))
|
sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SOCK_ADDR_PORT(sa) \
|
||||||
|
(SOCK_ADDR_PTR(sa)->sa_family == AF_INET6 ? \
|
||||||
|
SOCK_ADDR_IN6_PORT(sa) : SOCK_ADDR_IN_PORT(sa))
|
||||||
|
#define SOCK_ADDR_PORTP(sa) \
|
||||||
|
(SOCK_ADDR_PTR(sa)->sa_family == AF_INET6 ? \
|
||||||
|
&SOCK_ADDR_IN6_PORT(sa) : &SOCK_ADDR_IN_PORT(sa))
|
||||||
|
|
||||||
#define SOCK_ADDR_IN6_PTR(sa) ((struct sockaddr_in6 *)(sa))
|
#define SOCK_ADDR_IN6_PTR(sa) ((struct sockaddr_in6 *)(sa))
|
||||||
#define SOCK_ADDR_IN6_FAMILY(sa) SOCK_ADDR_IN6_PTR(sa)->sin6_family
|
#define SOCK_ADDR_IN6_FAMILY(sa) SOCK_ADDR_IN6_PTR(sa)->sin6_family
|
||||||
#define SOCK_ADDR_IN6_PORT(sa) SOCK_ADDR_IN6_PTR(sa)->sin6_port
|
#define SOCK_ADDR_IN6_PORT(sa) SOCK_ADDR_IN6_PTR(sa)->sin6_port
|
||||||
@@ -71,6 +78,9 @@ extern int sock_addr_in_loopback(const struct sockaddr *);
|
|||||||
#define SOCK_ADDR_LEN(sa) sizeof(struct sockaddr_in)
|
#define SOCK_ADDR_LEN(sa) sizeof(struct sockaddr_in)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define SOCK_ADDR_PORT(sa) SOCK_ADDR_IN_PORT(sa))
|
||||||
|
#define SOCK_ADDR_PORTP(sa) &SOCK_ADDR_IN_PORT(sa))
|
||||||
|
|
||||||
#define SOCK_ADDR_EQ_ADDR(sa, sb) \
|
#define SOCK_ADDR_EQ_ADDR(sa, sb) \
|
||||||
(SOCK_ADDR_FAMILY(sa) == AF_INET && SOCK_ADDR_FAMILY(sb) == AF_INET \
|
(SOCK_ADDR_FAMILY(sa) == AF_INET && SOCK_ADDR_FAMILY(sb) == AF_INET \
|
||||||
&& SOCK_ADDR_IN_ADDR(sa).s_addr == SOCK_ADDR_IN_ADDR(sb).s_addr)
|
&& SOCK_ADDR_IN_ADDR(sa).s_addr == SOCK_ADDR_IN_ADDR(sb).s_addr)
|
||||||
|
@@ -513,6 +513,7 @@ extern int opterr;
|
|||||||
# define HAS_IPV6
|
# define HAS_IPV6
|
||||||
#endif
|
#endif
|
||||||
#define BROKEN_AI_PASSIVE_NULL_HOST
|
#define BROKEN_AI_PASSIVE_NULL_HOST
|
||||||
|
#define BROKEN_AI_NULL_SERVICE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AIX4
|
#ifdef AIX4
|
||||||
|
Reference in New Issue
Block a user