mirror of
https://github.com/vdukhovni/postfix
synced 2025-09-02 23:25:31 +00:00
postfix-2.2-20040721
This commit is contained in:
committed by
Viktor Dukhovni
parent
a360b3aff1
commit
2e9bf3b2a0
@@ -9567,6 +9567,13 @@ Apologies for any names omitted.
|
|||||||
test the effects of collisions in the time or in name space
|
test the effects of collisions in the time or in name space
|
||||||
domains. File: global/scache.c.
|
domains. File: global/scache.c.
|
||||||
|
|
||||||
|
20040721
|
||||||
|
|
||||||
|
Feature: the session cache server now logs cache hit and
|
||||||
|
miss statistics every $session_cache_status_update_time
|
||||||
|
seconds (default: 600s), as well as upon process exit.
|
||||||
|
File: scache/scache.c.
|
||||||
|
|
||||||
Open problems:
|
Open problems:
|
||||||
|
|
||||||
Low: update events.c so that 1-second timer requests do
|
Low: update events.c so that 1-second timer requests do
|
||||||
|
@@ -7,6 +7,14 @@ snapshot release). Patches are issued for the official release
|
|||||||
and change the patchlevel and the release date. Patches are never
|
and change the patchlevel and the release date. Patches are never
|
||||||
issued for snapshot releases.
|
issued for snapshot releases.
|
||||||
|
|
||||||
|
Major changes with snapshot Postfix-2.2-20040721
|
||||||
|
================================================
|
||||||
|
|
||||||
|
The session cache manager now logs cache hit and miss statistics
|
||||||
|
every $session_cache_status_update_time seconds (default: 600s).
|
||||||
|
It reports the hit and miss rates for lookups by domain, as well
|
||||||
|
as for lookups by network address.
|
||||||
|
|
||||||
Incompatible changes with snapshot Postfix-2.2-20040720
|
Incompatible changes with snapshot Postfix-2.2-20040720
|
||||||
=======================================================
|
=======================================================
|
||||||
|
|
||||||
@@ -18,7 +26,7 @@ Major changes with snapshot Postfix-2.2-20040720
|
|||||||
Selective SMTP session caching. Instead of disconnecting immediately
|
Selective SMTP session caching. Instead of disconnecting immediately
|
||||||
after a mail transaction, the SMTP client can save the open session
|
after a mail transaction, the SMTP client can save the open session
|
||||||
to a session cache daemon, so that any SMTP client process can use
|
to a session cache daemon, so that any SMTP client process can use
|
||||||
the same session for another mail transaction.
|
that session for another mail transaction.
|
||||||
|
|
||||||
This feature introduces the scache (session cache) server, which
|
This feature introduces the scache (session cache) server, which
|
||||||
is added to your master.cf file when you upgrade Postfix.
|
is added to your master.cf file when you upgrade Postfix.
|
||||||
@@ -69,7 +77,8 @@ specified.
|
|||||||
Limitations:
|
Limitations:
|
||||||
|
|
||||||
- SMTP session caching does not work with TLS (the necessary support
|
- SMTP session caching does not work with TLS (the necessary support
|
||||||
for object passivation and re-activation does not exist).
|
for object passivation and re-activation does not exist without
|
||||||
|
closing the connection).
|
||||||
|
|
||||||
- SMTP session caching assumes that SASL credentials are valid for
|
- SMTP session caching assumes that SASL credentials are valid for
|
||||||
all hostnames or domain names that map onto the same IP address
|
all hostnames or domain names that map onto the same IP address
|
||||||
|
@@ -5038,6 +5038,16 @@ The default time unit is s (seconds).
|
|||||||
maintains a limited pool of cached sessions. </p>
|
maintains a limited pool of cached sessions. </p>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="session_cache_status_update_time">session_cache_status_update_time</a>
|
||||||
|
(default: 600s)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> How frequently the <a href="scache.8.html">scache(8)</a> server logs usage statistics with
|
||||||
|
session cache hit and miss rates for logical destinations and for
|
||||||
|
physical endpoints. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="session_cache_ttl_limit">session_cache_ttl_limit</a>
|
<DT><b><a name="session_cache_ttl_limit">session_cache_ttl_limit</a>
|
||||||
|
@@ -98,14 +98,20 @@ SCACHE(8) SCACHE(8)
|
|||||||
The maximal time-to-live value that the session
|
The maximal time-to-live value that the session
|
||||||
cache server allows.
|
cache server allows.
|
||||||
|
|
||||||
|
<b>session_cache_status_update_time (600s)</b>
|
||||||
|
How frequently the <a href="scache.8.html">scache(8)</a> server logs usage
|
||||||
|
statistics with session cache hit and miss rates
|
||||||
|
for logical destinations and for physical end-
|
||||||
|
points.
|
||||||
|
|
||||||
<b>MISCELLANEOUS CONTROLS</b>
|
<b>MISCELLANEOUS CONTROLS</b>
|
||||||
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
||||||
The default location of the Postfix main.cf and
|
The default location of the Postfix main.cf and
|
||||||
master.cf configuration files.
|
master.cf configuration files.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
||||||
How much time a Postfix daemon process may take to
|
How much time a Postfix daemon process may take to
|
||||||
handle a request before it is terminated by a
|
handle a request before it is terminated by a
|
||||||
built-in watchdog timer.
|
built-in watchdog timer.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
|
||||||
@@ -113,23 +119,23 @@ SCACHE(8) SCACHE(8)
|
|||||||
over an internal communication channel.
|
over an internal communication channel.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
||||||
The maximum amount of time that an idle Postfix
|
The maximum amount of time that an idle Postfix
|
||||||
daemon process waits for the next service request
|
daemon process waits for the next service request
|
||||||
before exiting.
|
before exiting.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
||||||
The process ID of a Postfix command or daemon pro-
|
The process ID of a Postfix command or daemon pro-
|
||||||
cess.
|
cess.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
|
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
|
||||||
The process name of a Postfix command or daemon
|
The process name of a Postfix command or daemon
|
||||||
process.
|
process.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
||||||
The syslog facility of Postfix logging.
|
The syslog facility of Postfix logging.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
|
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
|
||||||
The mail system name that is prepended to the pro-
|
The mail system name that is prepended to the pro-
|
||||||
cess name in syslog records, so that "smtpd"
|
cess name in syslog records, so that "smtpd"
|
||||||
becomes, for example, "postfix/smtpd".
|
becomes, for example, "postfix/smtpd".
|
||||||
|
|
||||||
@@ -140,7 +146,7 @@ SCACHE(8) SCACHE(8)
|
|||||||
syslogd(8), system logging
|
syslogd(8), system logging
|
||||||
|
|
||||||
<b>LICENSE</b>
|
<b>LICENSE</b>
|
||||||
The Secure Mailer license must be distributed with this
|
The Secure Mailer license must be distributed with this
|
||||||
software.
|
software.
|
||||||
|
|
||||||
<b>HISTORY</b>
|
<b>HISTORY</b>
|
||||||
|
@@ -67,19 +67,20 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b>BUGS</b>
|
<b>BUGS</b>
|
||||||
SMTP session caching does not work with TLS. The necessary
|
SMTP session caching does not work with TLS. The necessary
|
||||||
support for object passivation and re-activation does not
|
support for TLS object passivation and re-activation does
|
||||||
exist.
|
not exist without closing the session, which defeats the
|
||||||
|
purpose.
|
||||||
|
|
||||||
SMTP session caching assumes that SASL credentials are
|
SMTP session caching assumes that SASL credentials are
|
||||||
valid for all destinations that map onto the same IP
|
valid for all destinations that map onto the same IP
|
||||||
address and TCP port.
|
address and TCP port.
|
||||||
|
|
||||||
<b>CONFIGURATION PARAMETERS</b>
|
<b>CONFIGURATION PARAMETERS</b>
|
||||||
Changes to <b>main.cf</b> are picked up automatically, as <a href="smtp.8.html">smtp(8)</a>
|
Changes to <b>main.cf</b> are picked up automatically, as <a href="smtp.8.html">smtp(8)</a>
|
||||||
processes run for only a limited amount of time. Use the
|
processes run for only a limited amount of time. Use the
|
||||||
command "<b>postfix reload</b>" to speed up a change.
|
command "<b>postfix reload</b>" to speed up a change.
|
||||||
|
|
||||||
The text below provides only a parameter summary. See
|
The text below provides only a parameter summary. See
|
||||||
<a href="postconf.5.html">postconf(5)</a> for more details including examples.
|
<a href="postconf.5.html">postconf(5)</a> for more details including examples.
|
||||||
|
|
||||||
<b>COMPATIBILITY CONTROLS</b>
|
<b>COMPATIBILITY CONTROLS</b>
|
||||||
@@ -93,7 +94,7 @@ SMTP(8) SMTP(8)
|
|||||||
Never send EHLO at the start of an SMTP session.
|
Never send EHLO at the start of an SMTP session.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b>
|
||||||
Defer mail delivery when no MX record resolves to
|
Defer mail delivery when no MX record resolves to
|
||||||
an IP address.
|
an IP address.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_line_length_limit">smtp_line_length_limit</a> (990)</b>
|
<b><a href="postconf.5.html#smtp_line_length_limit">smtp_line_length_limit</a> (990)</b>
|
||||||
@@ -101,17 +102,17 @@ SMTP(8) SMTP(8)
|
|||||||
that Postfix will send via SMTP.
|
that Postfix will send via SMTP.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a> (10s)</b>
|
<b><a href="postconf.5.html#smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a> (10s)</b>
|
||||||
How long the Postfix SMTP client pauses before
|
How long the Postfix SMTP client pauses before
|
||||||
sending ".<CR><LF>" in order to work around the PIX
|
sending ".<CR><LF>" in order to work around the PIX
|
||||||
firewall "<CR><LF>.<CR><LF>" bug.
|
firewall "<CR><LF>.<CR><LF>" bug.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_pix_workaround_threshold_time">smtp_pix_workaround_threshold_time</a> (500s)</b>
|
<b><a href="postconf.5.html#smtp_pix_workaround_threshold_time">smtp_pix_workaround_threshold_time</a> (500s)</b>
|
||||||
How long a message must be queued before the PIX
|
How long a message must be queued before the PIX
|
||||||
firewall "<CR><LF>.<CR><LF>" bug workaround is
|
firewall "<CR><LF>.<CR><LF>" bug workaround is
|
||||||
turned on.
|
turned on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
|
||||||
Quote addresses in SMTP MAIL FROM and RCPT TO com-
|
Quote addresses in SMTP MAIL FROM and RCPT TO com-
|
||||||
mands as required by <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
|
mands as required by <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
|
||||||
@@ -119,7 +120,7 @@ SMTP(8) SMTP(8)
|
|||||||
(go away, do not try again later).
|
(go away, do not try again later).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_skip_quit_response">smtp_skip_quit_response</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_skip_quit_response">smtp_skip_quit_response</a> (yes)</b>
|
||||||
Do not wait for the response to the SMTP QUIT com-
|
Do not wait for the response to the SMTP QUIT com-
|
||||||
mand.
|
mand.
|
||||||
|
|
||||||
Available in Postfix version 2.0 and earlier:
|
Available in Postfix version 2.0 and earlier:
|
||||||
@@ -132,7 +133,7 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.0 and later:
|
Available in Postfix version 2.0 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#disable_mime_output_conversion">disable_mime_output_conversion</a> (no)</b>
|
<b><a href="postconf.5.html#disable_mime_output_conversion">disable_mime_output_conversion</a> (no)</b>
|
||||||
Disable the conversion of 8BITMIME format to 7BIT
|
Disable the conversion of 8BITMIME format to 7BIT
|
||||||
format.
|
format.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#mime_boundary_length_limit">mime_boundary_length_limit</a> (2048)</b>
|
<b><a href="postconf.5.html#mime_boundary_length_limit">mime_boundary_length_limit</a> (2048)</b>
|
||||||
@@ -147,43 +148,43 @@ SMTP(8) SMTP(8)
|
|||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_send_xforward_command">smtp_send_xforward_command</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_send_xforward_command">smtp_send_xforward_command</a> (no)</b>
|
||||||
Send the non-standard XFORWARD command when the
|
Send the non-standard XFORWARD command when the
|
||||||
Postfix SMTP server EHLO response announces XFOR-
|
Postfix SMTP server EHLO response announces XFOR-
|
||||||
WARD support.
|
WARD support.
|
||||||
|
|
||||||
<b>SASL AUTHENTICATION CONTROLS</b>
|
<b>SASL AUTHENTICATION CONTROLS</b>
|
||||||
<b><a href="postconf.5.html#smtp_sasl_auth_enable">smtp_sasl_auth_enable</a> (no)</b>
|
<b><a href="postconf.5.html#smtp_sasl_auth_enable">smtp_sasl_auth_enable</a> (no)</b>
|
||||||
Enable SASL authentication in the Postfix SMTP
|
Enable SASL authentication in the Postfix SMTP
|
||||||
client.
|
client.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_password_maps</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_password_maps</a> (empty)</b>
|
||||||
Optional SMTP client lookup tables with one user-
|
Optional SMTP client lookup tables with one user-
|
||||||
name:password entry per remote hostname or domain.
|
name:password entry per remote hostname or domain.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_sasl_security_options">smtp_sasl_security_options</a> (noplaintext, noanonymous)</b>
|
<b><a href="postconf.5.html#smtp_sasl_security_options">smtp_sasl_security_options</a> (noplaintext, noanonymous)</b>
|
||||||
What authentication mechanisms the Postfix SMTP
|
What authentication mechanisms the Postfix SMTP
|
||||||
client is allowed to use.
|
client is allowed to use.
|
||||||
|
|
||||||
<b>RESOURCE AND RATE CONTROLS</b>
|
<b>RESOURCE AND RATE CONTROLS</b>
|
||||||
<b><a href="postconf.5.html#smtp_destination_concurrency_limit">smtp_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destina</a>-</b>
|
<b><a href="postconf.5.html#smtp_destination_concurrency_limit">smtp_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destina</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_concurrency_limit">tion_concurrency_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_concurrency_limit">tion_concurrency_limit</a>)</b>
|
||||||
The maximal number of parallel deliveries to the
|
The maximal number of parallel deliveries to the
|
||||||
same destination via the smtp message delivery
|
same destination via the smtp message delivery
|
||||||
transport.
|
transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_destination_recipient_limit">smtp_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destina</a>-</b>
|
<b><a href="postconf.5.html#smtp_destination_recipient_limit">smtp_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destina</a>-</b>
|
||||||
<b><a href="postconf.5.html#default_destination_recipient_limit">tion_recipient_limit</a>)</b>
|
<b><a href="postconf.5.html#default_destination_recipient_limit">tion_recipient_limit</a>)</b>
|
||||||
The maximal number of recipients per delivery via
|
The maximal number of recipients per delivery via
|
||||||
the smtp message delivery transport.
|
the smtp message delivery transport.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
|
||||||
The SMTP client time limit for completing a TCP
|
The SMTP client time limit for completing a TCP
|
||||||
connection, or zero (use the operating system
|
connection, or zero (use the operating system
|
||||||
built-in time limit).
|
built-in time limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
|
||||||
The SMTP client time limit for sending the HELO or
|
The SMTP client time limit for sending the HELO or
|
||||||
EHLO command, and for receiving the initial server
|
EHLO command, and for receiving the initial server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_xforward_timeout">smtp_xforward_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_xforward_timeout">smtp_xforward_timeout</a> (300s)</b>
|
||||||
@@ -191,30 +192,30 @@ SMTP(8) SMTP(8)
|
|||||||
command, and for receiving the server response.
|
command, and for receiving the server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
|
||||||
The SMTP client time limit for sending the MAIL
|
The SMTP client time limit for sending the MAIL
|
||||||
FROM command, and for receiving the server
|
FROM command, and for receiving the server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
|
||||||
The SMTP client time limit for sending the SMTP
|
The SMTP client time limit for sending the SMTP
|
||||||
RCPT TO command, and for receiving the server
|
RCPT TO command, and for receiving the server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
|
||||||
The SMTP client time limit for sending the SMTP
|
The SMTP client time limit for sending the SMTP
|
||||||
DATA command, and for receiving the server
|
DATA command, and for receiving the server
|
||||||
response.
|
response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
|
||||||
The SMTP client time limit for sending the SMTP
|
The SMTP client time limit for sending the SMTP
|
||||||
message content.
|
message content.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
|
||||||
The SMTP client time limit for sending the SMTP
|
The SMTP client time limit for sending the SMTP
|
||||||
".", and for receiving the server response.
|
".", and for receiving the server response.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_quit_timeout">smtp_quit_timeout</a> (300s)</b>
|
<b><a href="postconf.5.html#smtp_quit_timeout">smtp_quit_timeout</a> (300s)</b>
|
||||||
The SMTP client time limit for sending the QUIT
|
The SMTP client time limit for sending the QUIT
|
||||||
command, and for receiving the server response.
|
command, and for receiving the server response.
|
||||||
|
|
||||||
Available in Postfix version 2.1 and later:
|
Available in Postfix version 2.1 and later:
|
||||||
@@ -225,23 +226,23 @@ SMTP(8) SMTP(8)
|
|||||||
lookups, or zero (no limit).
|
lookups, or zero (no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
|
||||||
The maximal number of SMTP sessions per delivery
|
The maximal number of SMTP sessions per delivery
|
||||||
request before giving up or delivering to a fall-
|
request before giving up or delivering to a fall-
|
||||||
back relay host, or zero (no limit).
|
back relay host, or zero (no limit).
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
|
||||||
The SMTP client time limit for sending the RSET
|
The SMTP client time limit for sending the RSET
|
||||||
command, and for receiving the server response.
|
command, and for receiving the server response.
|
||||||
|
|
||||||
Available in Postfix version 2.2 and later:
|
Available in Postfix version 2.2 and later:
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_domains">smtp_connection_cache_domains</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_domains">smtp_connection_cache_domains</a> (empty)</b>
|
||||||
The SMTP destinations for which SMTP connection
|
The SMTP destinations for which SMTP connection
|
||||||
caching is enabled.
|
caching is enabled.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_reuse_limit">smtp_connection_cache_reuse_limit</a> (10)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_reuse_limit">smtp_connection_cache_reuse_limit</a> (10)</b>
|
||||||
When SMTP session caching is enabled, the number of
|
When SMTP session caching is enabled, the number of
|
||||||
times that an SMTP session is reused before it is
|
times that an SMTP session is reused before it is
|
||||||
closed.
|
closed.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_connection_cache_time_limit">smtp_connection_cache_time_limit</a> (2s)</b>
|
<b><a href="postconf.5.html#smtp_connection_cache_time_limit">smtp_connection_cache_time_limit</a> (2s)</b>
|
||||||
@@ -251,46 +252,46 @@ SMTP(8) SMTP(8)
|
|||||||
|
|
||||||
<b>TROUBLE SHOOTING CONTROLS</b>
|
<b>TROUBLE SHOOTING CONTROLS</b>
|
||||||
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
|
||||||
The increment in verbose logging level when a
|
The increment in verbose logging level when a
|
||||||
remote client or server matches a pattern in the
|
remote client or server matches a pattern in the
|
||||||
<a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
<a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
|
||||||
Optional list of remote client or server hostname
|
Optional list of remote client or server hostname
|
||||||
or network address patterns that cause the verbose
|
or network address patterns that cause the verbose
|
||||||
logging level to increase by the amount specified
|
logging level to increase by the amount specified
|
||||||
in $<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
in $<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
|
||||||
The recipient of postmaster notifications about
|
The recipient of postmaster notifications about
|
||||||
mail delivery problems that are caused by policy,
|
mail delivery problems that are caused by policy,
|
||||||
resource, software or protocol errors.
|
resource, software or protocol errors.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
|
||||||
The list of error classes that are reported to the
|
The list of error classes that are reported to the
|
||||||
postmaster.
|
postmaster.
|
||||||
|
|
||||||
<b>MISCELLANEOUS CONTROLS</b>
|
<b>MISCELLANEOUS CONTROLS</b>
|
||||||
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
|
||||||
Where the Postfix SMTP client should deliver mail
|
Where the Postfix SMTP client should deliver mail
|
||||||
when it detects a "mail loops back to myself" error
|
when it detects a "mail loops back to myself" error
|
||||||
condition.
|
condition.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
|
||||||
The default location of the Postfix main.cf and
|
The default location of the Postfix main.cf and
|
||||||
master.cf configuration files.
|
master.cf configuration files.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
|
||||||
How much time a Postfix daemon process may take to
|
How much time a Postfix daemon process may take to
|
||||||
handle a request before it is terminated by a
|
handle a request before it is terminated by a
|
||||||
built-in watchdog timer.
|
built-in watchdog timer.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
|
||||||
Disable DNS lookups in the Postfix SMTP and LMTP
|
Disable DNS lookups in the Postfix SMTP and LMTP
|
||||||
clients.
|
clients.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#fallback_relay">fallback_relay</a> (empty)</b>
|
<b><a href="postconf.5.html#fallback_relay">fallback_relay</a> (empty)</b>
|
||||||
Optional list of relay hosts for SMTP destinations
|
Optional list of relay hosts for SMTP destinations
|
||||||
that can't be found or that are unreachable.
|
that can't be found or that are unreachable.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
|
||||||
@@ -302,25 +303,25 @@ SMTP(8) SMTP(8)
|
|||||||
over an internal communication channel.
|
over an internal communication channel.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
|
||||||
The maximum amount of time that an idle Postfix
|
The maximum amount of time that an idle Postfix
|
||||||
daemon process waits for the next service request
|
daemon process waits for the next service request
|
||||||
before exiting.
|
before exiting.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
|
||||||
The maximal number of connection requests before a
|
The maximal number of connection requests before a
|
||||||
Postfix daemon process terminates.
|
Postfix daemon process terminates.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
||||||
The process ID of a Postfix command or daemon pro-
|
The process ID of a Postfix command or daemon pro-
|
||||||
cess.
|
cess.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
|
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
|
||||||
The process name of a Postfix command or daemon
|
The process name of a Postfix command or daemon
|
||||||
process.
|
process.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
|
||||||
The network interface addresses that this mail sys-
|
The network interface addresses that this mail sys-
|
||||||
tem receives mail on by way of a proxy or network
|
tem receives mail on by way of a proxy or network
|
||||||
address translation unit.
|
address translation unit.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
|
||||||
@@ -328,22 +329,22 @@ SMTP(8) SMTP(8)
|
|||||||
client should bind to when making a connection.
|
client should bind to when making a connection.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||||
The hostname to send in the SMTP EHLO or HELO com-
|
The hostname to send in the SMTP EHLO or HELO com-
|
||||||
mand.
|
mand.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b>
|
<b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b>
|
||||||
What mechanisms when the SMTP client uses to look
|
What mechanisms when the SMTP client uses to look
|
||||||
up a host's IP address.
|
up a host's IP address.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_randomize_addresses">smtp_randomize_addresses</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_randomize_addresses">smtp_randomize_addresses</a> (yes)</b>
|
||||||
Randomize the order of equal-preference MX host
|
Randomize the order of equal-preference MX host
|
||||||
addresses.
|
addresses.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
|
||||||
The syslog facility of Postfix logging.
|
The syslog facility of Postfix logging.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
|
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
|
||||||
The mail system name that is prepended to the pro-
|
The mail system name that is prepended to the pro-
|
||||||
cess name in syslog records, so that "smtpd"
|
cess name in syslog records, so that "smtpd"
|
||||||
becomes, for example, "postfix/smtpd".
|
becomes, for example, "postfix/smtpd".
|
||||||
|
|
||||||
@@ -359,7 +360,7 @@ SMTP(8) SMTP(8)
|
|||||||
<a href="SASL_README.html">SASL_README</a>, Postfix SASL howto
|
<a href="SASL_README.html">SASL_README</a>, Postfix SASL howto
|
||||||
|
|
||||||
<b>LICENSE</b>
|
<b>LICENSE</b>
|
||||||
The Secure Mailer license must be distributed with this
|
The Secure Mailer license must be distributed with this
|
||||||
software.
|
software.
|
||||||
|
|
||||||
<b>AUTHOR(S)</b>
|
<b>AUTHOR(S)</b>
|
||||||
|
@@ -2639,6 +2639,10 @@ The default time unit is s (seconds).
|
|||||||
.SH session_cache_service (default: scache)
|
.SH session_cache_service (default: scache)
|
||||||
The name of the scache(8) session cache service. This service
|
The name of the scache(8) session cache service. This service
|
||||||
maintains a limited pool of cached sessions.
|
maintains a limited pool of cached sessions.
|
||||||
|
.SH session_cache_status_update_time (default: 600s)
|
||||||
|
How frequently the scache(8) server logs usage statistics with
|
||||||
|
session cache hit and miss rates for logical destinations and for
|
||||||
|
physical endpoints.
|
||||||
.SH session_cache_ttl_limit (default: 2s)
|
.SH session_cache_ttl_limit (default: 2s)
|
||||||
The maximal time-to-live value that the session cache server
|
The maximal time-to-live value that the session cache server
|
||||||
allows. Requests that specify a larger TTL will be stored with the
|
allows. Requests that specify a larger TTL will be stored with the
|
||||||
|
@@ -100,6 +100,10 @@ postconf(5) for more details including examples.
|
|||||||
.IP "\fBsession_cache_ttl_limit (2s)\fR"
|
.IP "\fBsession_cache_ttl_limit (2s)\fR"
|
||||||
The maximal time-to-live value that the session cache server
|
The maximal time-to-live value that the session cache server
|
||||||
allows.
|
allows.
|
||||||
|
.IP "\fBsession_cache_status_update_time (600s)\fR"
|
||||||
|
How frequently the scache(8) server logs usage statistics with
|
||||||
|
session cache hit and miss rates for logical destinations and for
|
||||||
|
physical endpoints.
|
||||||
.SH "MISCELLANEOUS CONTROLS"
|
.SH "MISCELLANEOUS CONTROLS"
|
||||||
.na
|
.na
|
||||||
.nf
|
.nf
|
||||||
|
@@ -71,8 +71,8 @@ other trouble.
|
|||||||
.ad
|
.ad
|
||||||
.fi
|
.fi
|
||||||
SMTP session caching does not work with TLS. The necessary
|
SMTP session caching does not work with TLS. The necessary
|
||||||
support for object passivation and re-activation does not
|
support for TLS object passivation and re-activation does not
|
||||||
exist.
|
exist without closing the session, which defeats the purpose.
|
||||||
|
|
||||||
SMTP session caching assumes that SASL credentials are valid for
|
SMTP session caching assumes that SASL credentials are valid for
|
||||||
all destinations that map onto the same IP address and TCP port.
|
all destinations that map onto the same IP address and TCP port.
|
||||||
|
@@ -6928,3 +6928,9 @@ allows. Requests that specify a larger TTL will be stored with the
|
|||||||
maximum allowed TTL. The purpose of this additional control is to
|
maximum allowed TTL. The purpose of this additional control is to
|
||||||
protect the infrastructure against careless people. The cache TTL
|
protect the infrastructure against careless people. The cache TTL
|
||||||
is already bounded by $max_idle. </p>
|
is already bounded by $max_idle. </p>
|
||||||
|
|
||||||
|
%PARAM session_cache_status_update_time 600s
|
||||||
|
|
||||||
|
<p> How frequently the scache(8) server logs usage statistics with
|
||||||
|
session cache hit and miss rates for logical destinations and for
|
||||||
|
physical endpoints. </p>
|
||||||
|
@@ -1799,6 +1799,10 @@ extern char *var_scache_service;
|
|||||||
#define DEF_SCACHE_TTL_LIM "2s"
|
#define DEF_SCACHE_TTL_LIM "2s"
|
||||||
extern int var_scache_ttl_lim;
|
extern int var_scache_ttl_lim;
|
||||||
|
|
||||||
|
#define VAR_SCACHE_STAT_TIME "session_cache_status_update_time"
|
||||||
|
#define DEF_SCACHE_STAT_TIME "600s"
|
||||||
|
extern int var_scache_stat_time;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Address verification service.
|
* Address verification service.
|
||||||
*/
|
*/
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change the patchlevel and the release date. Snapshots change the
|
* Patches change the patchlevel and the release date. Snapshots change the
|
||||||
* release date only.
|
* release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20040720"
|
#define MAIL_RELEASE_DATE "20040721"
|
||||||
#define MAIL_VERSION_NUMBER "2.2"
|
#define MAIL_VERSION_NUMBER "2.2"
|
||||||
|
|
||||||
#define VAR_MAIL_VERSION "mail_version"
|
#define VAR_MAIL_VERSION "mail_version"
|
||||||
|
@@ -43,7 +43,7 @@
|
|||||||
/* The code maintains two types of association: a) physical
|
/* The code maintains two types of association: a) physical
|
||||||
/* endpoint to file descriptor, and b) logical endpoint
|
/* endpoint to file descriptor, and b) logical endpoint
|
||||||
/* to physical endpoint. Physical endpoints are stored and
|
/* to physical endpoint. Physical endpoints are stored and
|
||||||
/* look up under their low-level session details such as
|
/* looked up under their low-level session details such as
|
||||||
/* numerical addresses, while logical endpoints are stored
|
/* numerical addresses, while logical endpoints are stored
|
||||||
/* and looked up by the domain name that humans use. One logical
|
/* and looked up by the domain name that humans use. One logical
|
||||||
/* endpoint can refer to multiple physical endpoints, one
|
/* endpoint can refer to multiple physical endpoints, one
|
||||||
@@ -153,8 +153,8 @@
|
|||||||
* Driver program for cache regression tests. Although all variants are
|
* Driver program for cache regression tests. Although all variants are
|
||||||
* relatively simple to verify by hand for single session storage, more
|
* relatively simple to verify by hand for single session storage, more
|
||||||
* sophisticated instrumentation is needed to demonstrate that the
|
* sophisticated instrumentation is needed to demonstrate that the
|
||||||
* multi-sessin cache manager properly handles collisions in the time domain
|
* multi-session cache manager properly handles collisions in the time
|
||||||
* and in the various name space domains.
|
* domain and in all the name space domains.
|
||||||
*/
|
*/
|
||||||
static SCACHE *scache;
|
static SCACHE *scache;
|
||||||
static VSTRING *endp_prop;
|
static VSTRING *endp_prop;
|
||||||
|
@@ -23,9 +23,6 @@
|
|||||||
/* Idle time after which the client disconnects.
|
/* Idle time after which the client disconnects.
|
||||||
/* .IP ttl_limit
|
/* .IP ttl_limit
|
||||||
/* Upper bound on the time that a connection is allowed to persist.
|
/* Upper bound on the time that a connection is allowed to persist.
|
||||||
/* .IP endp_ttl
|
|
||||||
/* How long the session should be cached. When information
|
|
||||||
/* expires it is purged automatically.
|
|
||||||
/* DIAGNOSTICS
|
/* DIAGNOSTICS
|
||||||
/* Fatal error: memory allocation problem;
|
/* Fatal error: memory allocation problem;
|
||||||
/* panic: internal consistency failure.
|
/* panic: internal consistency failure.
|
||||||
|
@@ -59,8 +59,8 @@
|
|||||||
* destination hash table entry.
|
* destination hash table entry.
|
||||||
*
|
*
|
||||||
* Likewise, each endpoint has an entry in the endpoint hash table, and each
|
* Likewise, each endpoint has an entry in the endpoint hash table, and each
|
||||||
* endpoint->session binding is kept in a circular list under its hash table
|
* endpoint->session binding is kept in a circular list under its endpoint
|
||||||
* entry.
|
* hash table entry.
|
||||||
*
|
*
|
||||||
* We do not attempt to limit the number of destination or endpoint entries,
|
* We do not attempt to limit the number of destination or endpoint entries,
|
||||||
* nor do we attempt to limit the number of sessions. Doing so would require
|
* nor do we attempt to limit the number of sessions. Doing so would require
|
||||||
|
@@ -84,6 +84,10 @@
|
|||||||
/* .IP "\fBsession_cache_ttl_limit (2s)\fR"
|
/* .IP "\fBsession_cache_ttl_limit (2s)\fR"
|
||||||
/* The maximal time-to-live value that the session cache server
|
/* The maximal time-to-live value that the session cache server
|
||||||
/* allows.
|
/* allows.
|
||||||
|
/* .IP "\fBsession_cache_status_update_time (600s)\fR"
|
||||||
|
/* How frequently the scache(8) server logs usage statistics with
|
||||||
|
/* session cache hit and miss rates for logical destinations and for
|
||||||
|
/* physical endpoints.
|
||||||
/* MISCELLANEOUS CONTROLS
|
/* MISCELLANEOUS CONTROLS
|
||||||
/* .ad
|
/* .ad
|
||||||
/* .fi
|
/* .fi
|
||||||
@@ -129,6 +133,7 @@
|
|||||||
/* System library. */
|
/* System library. */
|
||||||
|
|
||||||
#include <sys_defs.h>
|
#include <sys_defs.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
/* Utility library. */
|
/* Utility library. */
|
||||||
|
|
||||||
@@ -136,6 +141,7 @@
|
|||||||
#include <iostuff.h>
|
#include <iostuff.h>
|
||||||
#include <htable.h>
|
#include <htable.h>
|
||||||
#include <ring.h>
|
#include <ring.h>
|
||||||
|
#include <events.h>
|
||||||
|
|
||||||
/* Global library. */
|
/* Global library. */
|
||||||
|
|
||||||
@@ -154,6 +160,7 @@
|
|||||||
* Tunable parameters.
|
* Tunable parameters.
|
||||||
*/
|
*/
|
||||||
int var_scache_ttl_lim;
|
int var_scache_ttl_lim;
|
||||||
|
int var_scache_stat_time;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Request parameters.
|
* Request parameters.
|
||||||
@@ -169,6 +176,15 @@ static VSTRING *scache_endp_prop;
|
|||||||
*/
|
*/
|
||||||
static SCACHE *scache;
|
static SCACHE *scache;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Statistics.
|
||||||
|
*/
|
||||||
|
static int scache_dest_hits;
|
||||||
|
static int scache_dest_miss;
|
||||||
|
static int scache_endp_hits;
|
||||||
|
static int scache_endp_miss;
|
||||||
|
time_t scache_start_time;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Silly little macros.
|
* Silly little macros.
|
||||||
*/
|
*/
|
||||||
@@ -235,6 +251,7 @@ static void scache_find_endp_service(VSTREAM *client_stream)
|
|||||||
ATTR_TYPE_NUM, MAIL_ATTR_STATUS, SCACHE_STAT_FAIL,
|
ATTR_TYPE_NUM, MAIL_ATTR_STATUS, SCACHE_STAT_FAIL,
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
||||||
ATTR_TYPE_END);
|
ATTR_TYPE_END);
|
||||||
|
scache_endp_miss++;
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
attr_print(client_stream, ATTR_FLAG_NONE,
|
attr_print(client_stream, ATTR_FLAG_NONE,
|
||||||
@@ -246,11 +263,12 @@ static void scache_find_endp_service(VSTREAM *client_stream)
|
|||||||
msg_warn("%s: cannot send file descriptor: %m", myname);
|
msg_warn("%s: cannot send file descriptor: %m", myname);
|
||||||
if (close(fd) < 0)
|
if (close(fd) < 0)
|
||||||
msg_warn("close(%d): %m", fd);
|
msg_warn("close(%d): %m", fd);
|
||||||
|
scache_endp_hits++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* scache_save_dest_service - protocol to save destiation->endpoint binding */
|
/* scache_save_dest_service - protocol to save destination->endpoint binding */
|
||||||
|
|
||||||
static void scache_save_dest_service(VSTREAM *client_stream)
|
static void scache_save_dest_service(VSTREAM *client_stream)
|
||||||
{
|
{
|
||||||
@@ -308,6 +326,7 @@ static void scache_find_dest_service(VSTREAM *client_stream)
|
|||||||
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
||||||
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
ATTR_TYPE_STR, MAIL_ATTR_PROP, "",
|
||||||
ATTR_TYPE_END);
|
ATTR_TYPE_END);
|
||||||
|
scache_dest_miss++;
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
attr_print(client_stream, ATTR_FLAG_NONE,
|
attr_print(client_stream, ATTR_FLAG_NONE,
|
||||||
@@ -320,6 +339,7 @@ static void scache_find_dest_service(VSTREAM *client_stream)
|
|||||||
msg_warn("%s: cannot send file descriptor: %m", myname);
|
msg_warn("%s: cannot send file descriptor: %m", myname);
|
||||||
if (close(fd) < 0)
|
if (close(fd) < 0)
|
||||||
msg_warn("close(%d): %m", fd);
|
msg_warn("close(%d): %m", fd);
|
||||||
|
scache_dest_hits++;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -364,6 +384,40 @@ static void scache_service(VSTREAM *client_stream, char *unused_service,
|
|||||||
vstream_fflush(client_stream);
|
vstream_fflush(client_stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* scache_status_dump - log and reset cache statistics */
|
||||||
|
|
||||||
|
static void scache_status_dump(char *unused_name, char **unused_argv)
|
||||||
|
{
|
||||||
|
if (scache_dest_hits || scache_dest_miss
|
||||||
|
|| scache_endp_hits || scache_endp_miss)
|
||||||
|
msg_info("statistics: start interval %.15s",
|
||||||
|
ctime(&scache_start_time) + 4);
|
||||||
|
|
||||||
|
if (scache_dest_hits || scache_dest_miss) {
|
||||||
|
msg_info("statistics: domain lookup hits=%d miss=%d success=%d%%",
|
||||||
|
scache_dest_hits, scache_dest_miss,
|
||||||
|
scache_dest_hits * 100
|
||||||
|
/ (scache_dest_hits + scache_dest_miss));
|
||||||
|
scache_dest_hits = scache_dest_miss = 0;
|
||||||
|
}
|
||||||
|
if (scache_endp_hits || scache_endp_miss) {
|
||||||
|
msg_info("statistics: address lookup hits=%d miss=%d success=%d%%",
|
||||||
|
scache_endp_hits, scache_endp_miss,
|
||||||
|
scache_endp_hits * 100
|
||||||
|
/ (scache_endp_hits + scache_endp_miss));
|
||||||
|
scache_endp_hits = scache_endp_miss = 0;
|
||||||
|
}
|
||||||
|
scache_start_time = event_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* scache_status_update - log and reset cache statistics periodically */
|
||||||
|
|
||||||
|
static void scache_status_update(int unused_event, char *context)
|
||||||
|
{
|
||||||
|
scache_status_dump((char *) 0, (char **) 0);
|
||||||
|
event_request_timer(scache_status_update, context, var_scache_stat_time);
|
||||||
|
}
|
||||||
|
|
||||||
/* post_jail_init - initialization after privilege drop */
|
/* post_jail_init - initialization after privilege drop */
|
||||||
|
|
||||||
static void post_jail_init(char *unused_name, char **unused_argv)
|
static void post_jail_init(char *unused_name, char **unused_argv)
|
||||||
@@ -388,6 +442,12 @@ static void post_jail_init(char *unused_name, char **unused_argv)
|
|||||||
* connected for $idle_limit time units.
|
* connected for $idle_limit time units.
|
||||||
*/
|
*/
|
||||||
var_use_limit = 0;
|
var_use_limit = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Dump and reset cache statistics every so often.
|
||||||
|
*/
|
||||||
|
event_request_timer(scache_status_update, (char *) 0, var_scache_stat_time);
|
||||||
|
scache_start_time = event_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* main - pass control to the multi-threaded skeleton */
|
/* main - pass control to the multi-threaded skeleton */
|
||||||
@@ -396,12 +456,14 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
static CONFIG_TIME_TABLE time_table[] = {
|
static CONFIG_TIME_TABLE time_table[] = {
|
||||||
VAR_SCACHE_TTL_LIM, DEF_SCACHE_TTL_LIM, &var_scache_ttl_lim, 1, 0,
|
VAR_SCACHE_TTL_LIM, DEF_SCACHE_TTL_LIM, &var_scache_ttl_lim, 1, 0,
|
||||||
|
VAR_SCACHE_STAT_TIME, DEF_SCACHE_STAT_TIME, &var_scache_stat_time, 1, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
|
|
||||||
multi_server_main(argc, argv, scache_service,
|
multi_server_main(argc, argv, scache_service,
|
||||||
MAIL_SERVER_TIME_TABLE, time_table,
|
MAIL_SERVER_TIME_TABLE, time_table,
|
||||||
MAIL_SERVER_POST_INIT, post_jail_init,
|
MAIL_SERVER_POST_INIT, post_jail_init,
|
||||||
|
MAIL_SERVER_EXIT, scache_status_dump,
|
||||||
MAIL_SERVER_SOLITARY,
|
MAIL_SERVER_SOLITARY,
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
|
@@ -56,9 +56,9 @@
|
|||||||
/* the postmaster is notified of bounces, protocol problems, and of
|
/* the postmaster is notified of bounces, protocol problems, and of
|
||||||
/* other trouble.
|
/* other trouble.
|
||||||
/* BUGS
|
/* BUGS
|
||||||
/* SMTP session caching does not work with TLS. The necessary
|
/* SMTP session caching does not work with TLS. The necessary
|
||||||
/* support for object passivation and re-activation does not
|
/* support for TLS object passivation and re-activation does not
|
||||||
/* exist.
|
/* exist without closing the session, which defeats the purpose.
|
||||||
/*
|
/*
|
||||||
/* SMTP session caching assumes that SASL credentials are valid for
|
/* SMTP session caching assumes that SASL credentials are valid for
|
||||||
/* all destinations that map onto the same IP address and TCP port.
|
/* all destinations that map onto the same IP address and TCP port.
|
||||||
|
@@ -582,6 +582,7 @@ int smtp_connect(SMTP_STATE *state)
|
|||||||
if (++addr_count == var_smtp_mxaddr_limit)
|
if (++addr_count == var_smtp_mxaddr_limit)
|
||||||
next = 0;
|
next = 0;
|
||||||
if ((sess_flags & SMTP_SESS_FLAG_CACHE) == 0
|
if ((sess_flags & SMTP_SESS_FLAG_CACHE) == 0
|
||||||
|
|| addr->pref == domain_best_pref
|
||||||
|| (session = smtp_reuse_addr(state, addr, port)) == 0)
|
|| (session = smtp_reuse_addr(state, addr, port)) == 0)
|
||||||
session = smtp_connect_addr(dest, addr, port, why, sess_flags);
|
session = smtp_connect_addr(dest, addr, port, why, sess_flags);
|
||||||
if ((state->session = session) != 0) {
|
if ((state->session = session) != 0) {
|
||||||
|
Reference in New Issue
Block a user