mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-30 13:48:06 +00:00
postfix-2.7-20090511
This commit is contained in:
committed by
Viktor Dukhovni
parent
cf182ff67b
commit
e9d644422e
@@ -15039,7 +15039,7 @@ Apologies for any names omitted.
|
|||||||
Cleanup: OpenLDAP now provides a sane solution for conflicts
|
Cleanup: OpenLDAP now provides a sane solution for conflicts
|
||||||
with PAM ldap-over-tls. Victor Duchovni. File: global/dict_ldap.c.
|
with PAM ldap-over-tls. Victor Duchovni. File: global/dict_ldap.c.
|
||||||
|
|
||||||
20900304
|
20090304
|
||||||
|
|
||||||
Cleanup: skip over suspended or throttled queues while
|
Cleanup: skip over suspended or throttled queues while
|
||||||
looking for delivery requests. File: *qmgr/qmgr_transport.c.
|
looking for delivery requests. File: *qmgr/qmgr_transport.c.
|
||||||
@@ -15214,3 +15214,9 @@ Apologies for any names omitted.
|
|||||||
This avoids hard to debug errors from some Milter applications.
|
This avoids hard to debug errors from some Milter applications.
|
||||||
Files: cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c,
|
Files: cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c,
|
||||||
cleanup/cleanup_addr.c.
|
cleanup/cleanup_addr.c.
|
||||||
|
|
||||||
|
20090511
|
||||||
|
|
||||||
|
Code cleanups: don't clobber -o command-line arguments so
|
||||||
|
that Linux people can debug daemon command lines more easily.
|
||||||
|
Files: master/*server.c.
|
||||||
|
@@ -88,24 +88,20 @@ deals with C applications only. For these, you need an object library that
|
|||||||
implements the Sendmail 8 Milter protocol. Postfix currently does not provide
|
implements the Sendmail 8 Milter protocol. Postfix currently does not provide
|
||||||
such a library, but Sendmail does.
|
such a library, but Sendmail does.
|
||||||
|
|
||||||
On some Linux and *BSD distributions, the Sendmail libmilter library is
|
* The first option is to use a pre-compiled library. Some systems install the
|
||||||
installed by default. With this, applications such as dkim-milter and sid-
|
Sendmail libmilter library by default. With other systems, libmilter may be
|
||||||
milter build out of the box without requiring any tinkering:
|
provided by a package (called "sendmail-devel" on some Linux systems).
|
||||||
|
|
||||||
$ ggzzccaatt ddkkiimm--mmiilltteerr--xx..yy..zz..ttaarr..ggzz || ttaarr xxff --
|
Once libmilter is installed, applications such as dkim-milter and sid-
|
||||||
$ ccdd ddkkiimm--mmiilltteerr--xx..yy..zz
|
milter build out of the box without requiring any tinkering:
|
||||||
$ mmaakkee
|
|
||||||
[...lots of output omitted...]
|
|
||||||
|
|
||||||
On other platforms you have two options:
|
$ ggzzccaatt ddkkiimm--mmiilltteerr--xx..yy..zz..ttaarr..ggzz || ttaarr xxff --
|
||||||
|
$ ccdd ddkkiimm--mmiilltteerr--xx..yy..zz
|
||||||
|
$ mmaakkee
|
||||||
|
[...lots of output omitted...]
|
||||||
|
|
||||||
* Install the Sendmail libmilter object library and include files. On Linux
|
* The other option is to build the libmilter library from Sendmail source
|
||||||
systems, libmilter may be provided by the sendmail-devel package. After
|
code:
|
||||||
installing libmilter, build the Milter applications as described in the
|
|
||||||
preceding paragraph.
|
|
||||||
|
|
||||||
* Don't install the Sendmail libmilter library, but build the library from
|
|
||||||
Sendmail source code instead:
|
|
||||||
|
|
||||||
$ ggzzccaatt sseennddmmaaiill--xx..yy..zz..ttaarr..ggzz || ttaarr xxff --
|
$ ggzzccaatt sseennddmmaaiill--xx..yy..zz..ttaarr..ggzz || ttaarr xxff --
|
||||||
$ ccdd sseennddmmaaiill--xx..yy..zz//lliibbmmiilltteerr
|
$ ccdd sseennddmmaaiill--xx..yy..zz//lliibbmmiilltteerr
|
||||||
@@ -299,7 +295,7 @@ table shows the timeout settings and the corresponding protocol stages (EOH =
|
|||||||
end of headers; EOM = end of message).
|
end of headers; EOM = end of message).
|
||||||
|
|
||||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|PPaarraammeetteerr |TTiimmee lliimmiitt|PPrroottooccooll ssttaaggee |
|
|PPoossttffiixx ppaarraammeetteerr |TTiimmee lliimmiitt|MMiilltteerr pprroottooccooll ssttaaggee |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|milter_connect_timeout|30s |CONNECT |
|
|milter_connect_timeout|30s |CONNECT |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
@@ -318,16 +314,17 @@ SSeennddmmaaiill mmaaccrroo eemmuullaattiioonn
|
|||||||
Postfix emulates a limited number of Sendmail macros, as shown in the table.
|
Postfix emulates a limited number of Sendmail macros, as shown in the table.
|
||||||
Some macro values depend on whether a recipient is rejected (rejected
|
Some macro values depend on whether a recipient is rejected (rejected
|
||||||
recipients are available on request by the Milter application). Different
|
recipients are available on request by the Milter application). Different
|
||||||
macros are available at different SMTP protocol stages (EOH = end-of-header,
|
macros are available at different Milter protocol stages (EOH = end-of-header,
|
||||||
EOM = end-of-message); their availability is not always the same as in
|
EOM = end-of-message); their availability is not always the same as in
|
||||||
Sendmail. See the workarounds section below for solutions.
|
Sendmail. See the workarounds section below for solutions.
|
||||||
|
|
||||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|NNaammee |AAvvaaiillaabbiilliittyy |DDeessccrriippttiioonn |
|
|SSeennddmmaaiill mmaaccrroo |MMiilltteerr pprroottooccooll ssttaaggee |DDeessccrriippttiioonn |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|i |DATA, EOH, EOM |Queue ID |
|
|i |DATA, EOH, EOM |Queue ID, also Postfix |
|
||||||
|
| | |queue file name |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|j |Always |value of myhostname |
|
|j |Always |Value of myhostname |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ |Always |The validated client name |
|
|_ |Always |The validated client name |
|
||||||
| | |and address |
|
| | |and address |
|
||||||
@@ -385,7 +382,7 @@ Sendmail. See the workarounds section below for solutions.
|
|||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
| | |Recipient next-hop |
|
| | |Recipient next-hop |
|
||||||
|{rcpt_host} |RCPT (Postfix >= 2.6, |destination |
|
|{rcpt_host} |RCPT (Postfix >= 2.6, |destination |
|
||||||
| |only with smtpd_milters) |With rejected recpient: |
|
| |only with smtpd_milters) |With rejected recipient: |
|
||||||
| | |enhanced status code |
|
| | |enhanced status code |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
| | |Recipient mail delivery |
|
| | |Recipient mail delivery |
|
||||||
@@ -399,45 +396,52 @@ Sendmail. See the workarounds section below for solutions.
|
|||||||
|v |Always |value of milter_macro_v |
|
|v |Always |value of milter_macro_v |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|
|
||||||
Postfix sends specific sets of macros at different SMTP protocol stages. The
|
Postfix sends specific sets of macros at different Milter protocol stages. The
|
||||||
sets are configured with the parameters as described in the table (EOH = end of
|
sets are configured with the parameters as described in the table (EOH = end of
|
||||||
headers; EOM = end of message). The protocol version is a number that Postfix
|
headers; EOM = end of message). The protocol version is a number that Postfix
|
||||||
sends at the beginning of the Milter protocol handshake.
|
sends at the beginning of the Milter protocol handshake.
|
||||||
|
|
||||||
As of Sendmail 8.14.0, Milter applications can specify what macros they want to
|
As of Sendmail 8.14.0, Milter applications can specify what macros they want to
|
||||||
receive at different protocol stages. In that case, the application-specified
|
receive at different Milter protocol stages. An application-specified list
|
||||||
list takes precedence over Postfix configuration.
|
takes precedence over a Postfix-specified list.
|
||||||
|
|
||||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|PPaarraammeetteerr nnaammee |PPrroottooccooll vveerrssiioonn|PPrroottooccooll ssttaaggee |
|
|PPoossttffiixx ppaarraammeetteerr |MMiilltteerr pprroottooccooll|MMiilltteerr pprroottooccooll ssttaaggee|
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
| |vveerrssiioonn | |
|
||||||
|milter_connect_macros |2 or higher |CONNECT |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_connect_macros |2 or higher |CONNECT |
|
||||||
|milter_helo_macros |2 or higher |HELO/EHLO |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_helo_macros |2 or higher |HELO/EHLO |
|
||||||
|milter_mail_macros |2 or higher |MAIL FROM |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_mail_macros |2 or higher |MAIL FROM |
|
||||||
|milter_rcpt_macros |2 or higher |RCPT TO |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_rcpt_macros |2 or higher |RCPT TO |
|
||||||
|milter_data_macros |4 or higher |DATA |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_data_macros |4 or higher |DATA |
|
||||||
|milter_end_of_header_macros |6 or higher |EOH |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_end_of_header_macros |6 or higher |EOH |
|
||||||
|milter_end_of_data_macros |2 or higher |EOM |
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_end_of_data_macros |2 or higher |EOM |
|
||||||
|milter_unknown_command_macros|3 or higher |unknown command|
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|milter_unknown_command_macros|3 or higher |unknown command |
|
||||||
|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
|
|
||||||
WWoorrkkaarroouunnddss
|
WWoorrkkaarroouunnddss
|
||||||
|
|
||||||
Content filters may break DKIM etc. signatures. If you use an SMTP-based
|
* To avoid breaking DKIM etc. signatures with an SMTP-based content filter,
|
||||||
content filter, then you should add a line to master.cf with "-
|
update the before-filter SMTP client in master.cf, and add a line with "-
|
||||||
o disable_mime_output_conversion=yes" (note: no spaces around the "="), as
|
o disable_mime_output_conversion=yes" (note: no spaces around the "="). For
|
||||||
described in the advanced content filter example.
|
details, see the advanced content filter example.
|
||||||
|
|
||||||
Sendmail Milter applications were originally developed for the Sendmail version
|
/etc/postfix/master.cf:
|
||||||
8 MTA, which has a different architecture than Postfix. The result is that some
|
# =============================================================
|
||||||
Milter applications make assumptions that aren't true in a Postfix environment.
|
# service type private unpriv chroot wakeup maxproc command
|
||||||
|
# (yes) (yes) (yes) (never) (100)
|
||||||
|
# =============================================================
|
||||||
|
scan unix - - n - 10 smtp
|
||||||
|
-o smtp_send_xforward_command=yes
|
||||||
|
-o disable_mime_output_conversion=yes
|
||||||
|
-o smtp_generic_maps=
|
||||||
|
|
||||||
* Some Milter applications use the "{if_addr}" macro to recognize local mail;
|
* Some Milter applications use the "{if_addr}" macro to recognize local mail;
|
||||||
this macro does not exist in Postfix. Workaround: use the "{client_addr}"
|
this macro does not exist in Postfix. Workaround: use the "{client_addr}"
|
||||||
@@ -452,49 +456,47 @@ Milter applications make assumptions that aren't true in a Postfix environment.
|
|||||||
X-SenderID: Sendmail Sender-ID Filter vx.y.z host.example.com <unknown-
|
X-SenderID: Sendmail Sender-ID Filter vx.y.z host.example.com <unknown-
|
||||||
msgid>
|
msgid>
|
||||||
|
|
||||||
This happens because those Milter applications expect that the queue ID is
|
The problem is that Milter applications expect that the queue ID is known
|
||||||
known before the MTA accepts the MAIL FROM (sender) command. Postfix, on
|
before the MTA accepts the MAIL FROM (sender) command. Postfix does not
|
||||||
the other hand, does not choose a queue file name until after it accepts
|
choose a queue ID, which is used as the queue file name, until after it
|
||||||
the first valid RCPT TO (recipient) command (Postfix queue file names must
|
accepts the first valid RCPT TO (recipient) command.
|
||||||
be unique across multiple directories, so the name can't be chosen before
|
|
||||||
the file is created; if multiple messages were to use the same queue ID
|
|
||||||
simultaneously, mail would be lost).
|
|
||||||
|
|
||||||
If you experience the ugly header problem, see if a recent version of the
|
If you experience the ugly header problem, see if a recent version of the
|
||||||
Milter application fixes it. For example, current versions of dkim-filter and
|
Milter application fixes it. For example, current versions of dkim-filter
|
||||||
dk-filter already have code that looks up the Postfix queue ID at a later
|
and dk-filter already have code that looks up the Postfix queue ID at a
|
||||||
protocol stage, and sid-filter version 1.0.0 no longer includes the queue ID in
|
later protocol stage, and sid-filter version 1.0.0 no longer includes the
|
||||||
the message header.
|
queue ID in the message header.
|
||||||
|
|
||||||
To fix the ugly message header with other Milter applications, you will need to
|
To fix the ugly message header, you will need to add code that looks up the
|
||||||
do something like this:
|
Postfix queue ID at some later point im time. The example below adds the
|
||||||
|
lookup after the end-of-message.
|
||||||
|
|
||||||
* Edit the filter source file (typically named xxx-filter/xxx-filter.c or
|
o Edit the filter source file (typically named xxx-filter/xxx-filter.c or
|
||||||
similar).
|
similar).
|
||||||
|
|
||||||
* Look up the mlfi_eom() function and add code near the top shown as bboolldd
|
o Look up the mlfi_eom() function and add code near the top shown as bboolldd
|
||||||
text below:
|
text below:
|
||||||
|
|
||||||
dfc = cc->cctx_msg;
|
dfc = cc->cctx_msg;
|
||||||
assert(dfc != NULL);
|
assert(dfc != NULL);
|
||||||
|
|
||||||
//** DDeetteerrmmiinnee tthhee jjoobb IIDD ffoorr llooggggiinngg.. **//
|
//** DDeetteerrmmiinnee tthhee jjoobb IIDD ffoorr llooggggiinngg.. **//
|
||||||
iiff ((ddffcc-->>mmccttxx__jjoobbiidd ==== 00 |||| ssttrrccmmpp((ddffcc-->>mmccttxx__jjoobbiidd,, JJOOBBIIDDUUNNKKNNOOWWNN)) ==== 00)) {{
|
iiff ((ddffcc-->>mmccttxx__jjoobbiidd ==== 00 |||| ssttrrccmmpp((ddffcc-->>mmccttxx__jjoobbiidd,, JJOOBBIIDDUUNNKKNNOOWWNN)) ==== 00))
|
||||||
cchhaarr **jjoobbiidd == ssmmffii__ggeettssyymmvvaall((ccttxx,, ""ii""));;
|
{{
|
||||||
iiff ((jjoobbiidd !!== 00))
|
cchhaarr **jjoobbiidd == ssmmffii__ggeettssyymmvvaall((ccttxx,, ""ii""));;
|
||||||
ddffcc-->>mmccttxx__jjoobbiidd == jjoobbiidd;;
|
iiff ((jjoobbiidd !!== 00))
|
||||||
}}
|
ddffcc-->>mmccttxx__jjoobbiidd == jjoobbiidd;;
|
||||||
|
}}
|
||||||
|
|
||||||
/* get hostname; used in the X header and in new MIME boundaries */
|
NOTES:
|
||||||
|
|
||||||
NOTES:
|
o Different mail filters use slightly different names for variables. If
|
||||||
|
the above code does not compile, look elsewhere in the mail filter
|
||||||
|
source file for code that looks up the "i" macro value, and copy that
|
||||||
|
code.
|
||||||
|
|
||||||
* Different mail filters use slightly different names for variables. If the
|
o This change fixes only the ugly message header, but not the WARNING
|
||||||
above code does not compile, look for the code at the start of the mlfi_eoh
|
message. Fortunately, many Milters log that message only once.
|
||||||
() routine.
|
|
||||||
|
|
||||||
* This fixes only the ugly message header, but not the WARNING message.
|
|
||||||
Fortunately, many Milters log that message only once.
|
|
||||||
|
|
||||||
LLiimmiittaattiioonnss
|
LLiimmiittaattiioonnss
|
||||||
|
|
||||||
@@ -509,7 +511,7 @@ the CONTENT_INSPECTION_README document for a discussion.
|
|||||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||||
|PPoossttffiixx|SSuuppppoorrtteedd MMiilltteerr rreeqquueessttss |
|
|PPoossttffiixx|SSuuppppoorrtteedd MMiilltteerr rreeqquueessttss |
|
||||||
|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
| 2.6 |All Milter requests of Sendmail 8.14.0. |
|
| 2.6 |All Milter requests of Sendmail 8.14.0 (see notes below). |
|
||||||
|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|
||||||
| |All Milter requests of Sendmail 8.14.0, except: |
|
| |All Milter requests of Sendmail 8.14.0, except: |
|
||||||
| |SMFIP_RCPT_REJ (report rejected recipients to the mail filter), |
|
| |SMFIP_RCPT_REJ (report rejected recipients to the mail filter), |
|
||||||
@@ -526,7 +528,7 @@ the CONTENT_INSPECTION_README document for a discussion.
|
|||||||
* For Milter applications that are written in C, you need to use the Sendmail
|
* For Milter applications that are written in C, you need to use the Sendmail
|
||||||
libmilter library.
|
libmilter library.
|
||||||
|
|
||||||
* There are TWO sets of mail filters: filters that are used for SMTP mail
|
* Postfix has TWO sets of mail filters: filters that are used for SMTP mail
|
||||||
only (specified with the smtpd_milters parameter), and filters for non-SMTP
|
only (specified with the smtpd_milters parameter), and filters for non-SMTP
|
||||||
mail (specified with the non_smtpd_milters parameter). The non-SMTP filters
|
mail (specified with the non_smtpd_milters parameter). The non-SMTP filters
|
||||||
are primarily for local submissions.
|
are primarily for local submissions.
|
||||||
@@ -549,14 +551,15 @@ the CONTENT_INSPECTION_README document for a discussion.
|
|||||||
|
|
||||||
* Postfix 2.6 ignores the optional ESMTP parameters in requests to replace
|
* Postfix 2.6 ignores the optional ESMTP parameters in requests to replace
|
||||||
the sender (SMFIR_CHGFROM) or to append a recipient (SMFIR_ADDRCPT_PAR).
|
the sender (SMFIR_CHGFROM) or to append a recipient (SMFIR_ADDRCPT_PAR).
|
||||||
When a Milter application supplies such ESMTP parameters, Postfix will log
|
Postfix logs a warning message when a Milter application supplies such
|
||||||
a warning:
|
ESMTP parameters:
|
||||||
|
|
||||||
warning: queue-id: cleanup_chg_from: ignoring ESMTP arguments "whatever"
|
warning: queue-id: cleanup_chg_from: ignoring ESMTP arguments "whatever"
|
||||||
warning: queue-id: cleanup_add_rcpt: ignoring ESMTP arguments "whatever"
|
warning: queue-id: cleanup_add_rcpt: ignoring ESMTP arguments "whatever"
|
||||||
|
|
||||||
* Postfix 2.3 does not implement requests to replace the message body. Milter
|
* Postfix 2.3 does not implement requests to replace the message body. Milter
|
||||||
applications that need this unsupported operation will log a warning:
|
applications log a warning message when they need this unsupported
|
||||||
|
operation:
|
||||||
|
|
||||||
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
||||||
|
|
||||||
|
@@ -1,244 +1,15 @@
|
|||||||
The stable Postfix release is called postfix-2.5.x where 2=major
|
The stable Postfix release is called postfix-2.6.x where 2=major
|
||||||
release number, 5=minor release number, x=patchlevel. The stable
|
release number, 6=minor release number, x=patchlevel. The stable
|
||||||
release never changes except for patches that address bugs or
|
release never changes except for patches that address bugs or
|
||||||
emergencies. Patches change the patchlevel and the release date.
|
emergencies. Patches change the patchlevel and the release date.
|
||||||
|
|
||||||
New features are developed in snapshot releases. These are called
|
New features are developed in snapshot releases. These are called
|
||||||
postfix-2.6-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
postfix-2.7-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
||||||
mm=month, dd=day). Patches are never issued for snapshot releases;
|
mm=month, dd=day). Patches are never issued for snapshot releases;
|
||||||
instead, a new snapshot is released.
|
instead, a new snapshot is released.
|
||||||
|
|
||||||
The mail_release_date configuration parameter (format: yyyymmdd)
|
The mail_release_date configuration parameter (format: yyyymmdd)
|
||||||
specifies the release date of a stable release or snapshot release.
|
specifies the release date of a stable release or snapshot release.
|
||||||
|
|
||||||
Incompatibility with snapshot 20090428
|
If you upgrade from Postfix 2.5 or earlier, read RELEASE_NOTES-2.6
|
||||||
======================================
|
|
||||||
|
|
||||||
The Postfix SMTP client(!) no longer tries to use the obsolete SSLv2
|
|
||||||
protocol by default, as this may prevent the use of modern SSL
|
|
||||||
features. Lack of SSLv2 support should never be a problem, since
|
|
||||||
SSLv3 was defined in 1996, and TLSv1 in 1999. You can undo the
|
|
||||||
change by specifying empty main.cf values for smtp_tls_protocols
|
|
||||||
and lmtp_tls_protocols. The Postfix SMTP server maintains SSLv2
|
|
||||||
support for backwards compatibility with ancient clients.
|
|
||||||
|
|
||||||
The default milter_protocol setting is increased from 2 to 6; this
|
|
||||||
enables all available features up to and including Sendmail 8.14.0.
|
|
||||||
The new milter_protocol setting may break compatibility with older
|
|
||||||
Milter libraries or applications, and may cause Postfix to log
|
|
||||||
warning messages such as:
|
|
||||||
|
|
||||||
warning: milter inet:host:port: can't read packet header: Unknown error : 0
|
|
||||||
|
|
||||||
warning: milter inet:host:port: can't read packet header: Success
|
|
||||||
|
|
||||||
warning: milter inet:host:port: can't read SMFIC_DATA reply
|
|
||||||
packet header: No such file or directory
|
|
||||||
|
|
||||||
To restore compatibility, specify "milter_protocol = 2" in main.cf.
|
|
||||||
|
|
||||||
Major changes with snapshot 20090428
|
|
||||||
====================================
|
|
||||||
|
|
||||||
The following improvements have been made to the Milter implementation:
|
|
||||||
|
|
||||||
- Improved compatibility of the {mail_addr} and {rcpt_addr} macros.
|
|
||||||
|
|
||||||
- Support for the {mail_host}, {mail_mailer}, {rcpt_host} and
|
|
||||||
{rcpt_mailer} macros.
|
|
||||||
|
|
||||||
- Milter applications can now request rejected recipients with the
|
|
||||||
SMFIP_RCPT_REJ feature. Rejected recipients are reported with
|
|
||||||
{rcpt_mailer} = "error", {rcpt_host} = enhanced status code, and
|
|
||||||
{rcpt_addr} = descriptive text. This feature requires "milter_protocol
|
|
||||||
= 6" or higher (default as of Postfix 2.6).
|
|
||||||
|
|
||||||
- Milters can now replace the envelope sender address with the
|
|
||||||
SMFIR_CHGFROM request, and can add recipients with SMFIR_ADDRCPT_PAR.
|
|
||||||
These implementations currently ignore ESMTP command parameters
|
|
||||||
and log a warning message as follows:
|
|
||||||
|
|
||||||
warning: 100B22B3293: cleanup_chg_from: ignoring ESMTP arguments "whatever"
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20090330
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Postfix now adds (Resent-) From:, Date:, Message-ID: or To: headers
|
|
||||||
only when clients match $local_header_rewrite_clients. Specify
|
|
||||||
"always_add_missing_headers = yes" for backwards compatibility.
|
|
||||||
Adding such headers can break DKIM signatures that cover headers
|
|
||||||
that are not present.
|
|
||||||
|
|
||||||
This changes the appearance of Postfix logging: to preserve
|
|
||||||
compatibility with existing logfile processing software, Postfix
|
|
||||||
will log ``message-id=<>'' for messages without Message-Id header.
|
|
||||||
|
|
||||||
Major changes with snapshot 20090212
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Stress-dependent behavior by default. Under conditions of overload,
|
|
||||||
smtpd_timeout is reduced from 300s to to 10s, smtpd_hard_error_limit
|
|
||||||
is reduced from 20 to 1, and smtpd_junk_command_limit is reduced
|
|
||||||
from 100 to 1. This will reduce the delays for most legitimate mail.
|
|
||||||
|
|
||||||
Major changes with snapshot 20090121
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Plug-in support for managing multiple Postfix instances. This can
|
|
||||||
automatically apply your "postfix start" etc. command to multiple
|
|
||||||
Postfix instances, including upgrades to new Postfix versions.
|
|
||||||
Multi-instance support allows you to do the following and more:
|
|
||||||
|
|
||||||
- Simplify post-queue content filter configuration by using separate
|
|
||||||
Postfix instances before and after the filter. This simplifies
|
|
||||||
trouble shooting and performance tuning.
|
|
||||||
|
|
||||||
- Implement per-user content filters (or no filter) via transport
|
|
||||||
map lookups instead of content_filter settings. Mail for some
|
|
||||||
users can be sent directly from the before-filter instance to the
|
|
||||||
after-filter instance.
|
|
||||||
|
|
||||||
- Test new configuration settings (on a different server IP address
|
|
||||||
or TCP port) without disturbing production instances.
|
|
||||||
|
|
||||||
- Each additional Postfix instance uses a few files and directories,
|
|
||||||
plus memory for an extra master daemon and queue manager. The
|
|
||||||
pickup daemon is needed only if you use local submission or
|
|
||||||
"postsuper -r".
|
|
||||||
|
|
||||||
Best of all, nothing changes when you use only one Postfix instance.
|
|
||||||
|
|
||||||
The postfix-wrapper script (in the daemon directory) implements a
|
|
||||||
simple but useful multi-instance manager, with instructions. The
|
|
||||||
plug-in API itself is described in the postfix-wrapper(5) manpage.
|
|
||||||
|
|
||||||
A more sophisticated multi-instance manager called postmulti(1) is
|
|
||||||
approaching completion. A prototype version has been used internally
|
|
||||||
at Morgan Stanley. This version will be adapted to the new plug-in
|
|
||||||
API which makes some simplification possible.
|
|
||||||
|
|
||||||
Major changes with snapshot 20090109
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Support to selectively disable master(8) listener ports by service
|
|
||||||
type or by service name + type. Specify a list of service types
|
|
||||||
("inet", "unix", "fifo", or "pass") or "name.type" tuples, where
|
|
||||||
"name" is the first field of a master.cf entry and "type" is a
|
|
||||||
service type. Examples: to turn off the main SMTP listener port,
|
|
||||||
use "master_service_disable = smtp.inet"; to turn off all TCP/IP
|
|
||||||
listeners, use "master_service_disable = inet". Changing this
|
|
||||||
parameter requires "postfix reload".
|
|
||||||
|
|
||||||
Specify "tcp_windowsize = 65535" (or less) to work around routers
|
|
||||||
with broken TCP window scaling implementations. This is perhaps
|
|
||||||
more convenient than collecting tcpdump output and tuning kernel
|
|
||||||
parameters by hand. With Postfix TCP servers (smtpd(8), qmqpd(8)),
|
|
||||||
this feature is implemented by the Postfix master(8) daemon.
|
|
||||||
|
|
||||||
To change this parameter without stopping Postfix, you need to first
|
|
||||||
terminate all Postfix TCP servers:
|
|
||||||
|
|
||||||
# postconf -e master_service_disable=inet
|
|
||||||
# postfix reload
|
|
||||||
|
|
||||||
This immediately terminates all processes that accept network
|
|
||||||
connections. Then you enable Postfix TCP servers with the updated
|
|
||||||
tcp_windowsize setting:
|
|
||||||
|
|
||||||
# postconf -e tcp_windowsize=65535 master_service_disable=
|
|
||||||
# postfix reload
|
|
||||||
|
|
||||||
If you skip these steps with a running Postfix system, then the
|
|
||||||
tcp_windowsize change will work only for Postfix TCP clients (smtp(8),
|
|
||||||
lmtp(8)).
|
|
||||||
|
|
||||||
Of course you can also do "postfix stop" and "postfix start",
|
|
||||||
but that is more disruptive.
|
|
||||||
|
|
||||||
Major changes with snapshot 20081010
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Controls for the protocols and ciphers that Postfix will use with
|
|
||||||
opportunistic TLS. The smtp_tls_protocols, smtp_tls_ciphers, and
|
|
||||||
equivalent parameters for lmtp and smtpd provide global settings;
|
|
||||||
the SMTP client TLS policy table provides ciphers and protocols
|
|
||||||
settings for specific peers. Code by Victor Duchovni. Details are
|
|
||||||
given in the TLS_README and postconf(5) documents.
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20080814
|
|
||||||
======================================
|
|
||||||
|
|
||||||
When a mailbox file is not owned by its recipient, the local and
|
|
||||||
virtual delivery agents now log a warning and defer delivery.
|
|
||||||
Specify "strict_mailbox_ownership = no" to ignore such ownership
|
|
||||||
discrepancies.
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20080629
|
|
||||||
======================================
|
|
||||||
|
|
||||||
When TLS support is not compiled in, the Postfix SMTP server no
|
|
||||||
longer ignores the "smtpd_tls_auth_only = yes" parameter setting.
|
|
||||||
Earlier Postfix SMTP server versions would announce SASL support,
|
|
||||||
and would accept SASL login or sender information.
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20080726
|
|
||||||
======================================
|
|
||||||
|
|
||||||
When a mailbox file is not owned by its recipient, the local and
|
|
||||||
virtual delivery agents now log a warning and defer delivery.
|
|
||||||
Specify "strict_mailbox_ownership = no" to ignore such ownership
|
|
||||||
discrepancies.
|
|
||||||
|
|
||||||
Major changes with snapshot 20080629
|
|
||||||
====================================
|
|
||||||
|
|
||||||
The Postfix SMTP server's SASL authentication was re-structured.
|
|
||||||
With "smtpd_tls_auth_only = yes", SASL support is now activated
|
|
||||||
only after a successful TLS handshake. Earlier Postfix SMTP server
|
|
||||||
versions could complain about unavailable SASL mechanisms during
|
|
||||||
the plaintext phase of the SMTP protocol.
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20080510
|
|
||||||
======================================
|
|
||||||
|
|
||||||
In the policy delegation protocol, certificate common name attributes
|
|
||||||
are now xtext encoded UTF-8. The xtext decoded attributes may contain
|
|
||||||
any UTF-8 value except non-printable ASCII characters.
|
|
||||||
|
|
||||||
Incompatibility with snapshot 20080428
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Postfix SMTP server replies for address verification have changed.
|
|
||||||
unverified_recipient_reject_code and unverified_sender_reject_code
|
|
||||||
now handle "5XX" rejects only. The "4XX" rejects are now controlled
|
|
||||||
with unverified_sender_defer_code and unverified_recipient_defer_code.
|
|
||||||
|
|
||||||
Major changes with snapshot 20080428
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Finer control over the way that Postfix reports address verification
|
|
||||||
failures are reported to remote SMTP clients.
|
|
||||||
|
|
||||||
- unverified_sender/recipient_defer_code: the numerical Postfix
|
|
||||||
SMTP server reply code when address verification failed due
|
|
||||||
to some temporary error.
|
|
||||||
|
|
||||||
- unverified_sender/recipient_reject_reason: fixed text that Postfix
|
|
||||||
will send to the remote SMTP client, instead of sending actual
|
|
||||||
address verification details.
|
|
||||||
|
|
||||||
Incompatible changes with snapshot 20080207
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
According to discussions on the mailing list, too many people are
|
|
||||||
breaking newly installed Postfix by overwriting the new /etc/postfix
|
|
||||||
files with versions from an older release, and end up with a broken
|
|
||||||
configuration that cannot repair itself. For this reason, postfix-script,
|
|
||||||
postfix-files and post-install are moved away from /etc/postfix to
|
|
||||||
$daemon_directory.
|
|
||||||
|
|
||||||
Incompatible changes with Postfix 2.5.0
|
|
||||||
=======================================
|
|
||||||
|
|
||||||
If you upgrade from Postfix 2.4 or earlier, read RELEASE_NOTES-2.5
|
|
||||||
before proceeding.
|
before proceeding.
|
||||||
|
305
postfix/RELEASE_NOTES-2.6
Normal file
305
postfix/RELEASE_NOTES-2.6
Normal file
@@ -0,0 +1,305 @@
|
|||||||
|
The stable Postfix release is called postfix-2.6.x where 2=major
|
||||||
|
release number, 6=minor release number, x=patchlevel. The stable
|
||||||
|
release never changes except for patches that address bugs or
|
||||||
|
emergencies. Patches change the patchlevel and the release date.
|
||||||
|
|
||||||
|
New features are developed in snapshot releases. These are called
|
||||||
|
postfix-2.7-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
||||||
|
mm=month, dd=day). Patches are never issued for snapshot releases;
|
||||||
|
instead, a new snapshot is released.
|
||||||
|
|
||||||
|
The mail_release_date configuration parameter (format: yyyymmdd)
|
||||||
|
specifies the release date of a stable release or snapshot release.
|
||||||
|
|
||||||
|
If you upgrade from Postfix 2.4 or earlier, read RELEASE_NOTES-2.5
|
||||||
|
before proceeding.
|
||||||
|
|
||||||
|
Major changes - multi-instance support
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
[Feature 20090121] Support for managing multiple Postfix instances.
|
||||||
|
This can automatically apply your "postfix start" etc. command to
|
||||||
|
multiple Postfix instances, including upgrades to new Postfix
|
||||||
|
versions. Multi-instance support allows you to do the following
|
||||||
|
and more:
|
||||||
|
|
||||||
|
- Simplify post-queue content filter configuration by using separate
|
||||||
|
Postfix instances before and after the filter. This simplifies
|
||||||
|
trouble shooting and performance tuning.
|
||||||
|
|
||||||
|
- Implement per-user content filters (or no filter) via transport
|
||||||
|
map lookups instead of content_filter settings. Mail for some
|
||||||
|
users can be sent directly from the before-filter instance to the
|
||||||
|
after-filter instance.
|
||||||
|
|
||||||
|
- Test new configuration settings (on a different server IP address
|
||||||
|
or TCP port) without disturbing production instances.
|
||||||
|
|
||||||
|
- Each additional Postfix instance uses a few files and directories,
|
||||||
|
plus memory for an extra master daemon and queue manager. The
|
||||||
|
pickup daemon is needed only if you use local submission or
|
||||||
|
"postsuper -r".
|
||||||
|
|
||||||
|
Best of all, nothing changes when you use only one Postfix instance.
|
||||||
|
|
||||||
|
The postfix-wrapper script (in the daemon directory) implements a
|
||||||
|
simple but useful multi-instance manager, with instructions. The
|
||||||
|
plug-in API itself is described in the postfix-wrapper(5) manpage.
|
||||||
|
|
||||||
|
A more sophisticated multi-instance manager called postmulti(1) is
|
||||||
|
approaching completion. A prototype version has been used internally
|
||||||
|
at Morgan Stanley. This version will be adapted to the new plug-in
|
||||||
|
API which makes some simplification possible.
|
||||||
|
|
||||||
|
Major changes - milter support
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
[Feature 20090428] The following improvements have been made to the
|
||||||
|
Milter implementation:
|
||||||
|
|
||||||
|
- Improved compatibility of the {mail_addr} and {rcpt_addr} macros.
|
||||||
|
|
||||||
|
- Support for the {mail_host}, {mail_mailer}, {rcpt_host} and
|
||||||
|
{rcpt_mailer} macros.
|
||||||
|
|
||||||
|
- Milter applications can now request rejected recipients with the
|
||||||
|
SMFIP_RCPT_REJ feature. Rejected recipients are reported with
|
||||||
|
{rcpt_mailer} = "error", {rcpt_host} = enhanced status code, and
|
||||||
|
{rcpt_addr} = descriptive text. This feature requires "milter_protocol
|
||||||
|
= 6" or higher (default as of Postfix 2.6).
|
||||||
|
|
||||||
|
- Milters can now replace the envelope sender address with the
|
||||||
|
SMFIR_CHGFROM request, and can add recipients with SMFIR_ADDRCPT_PAR.
|
||||||
|
These implementations ignore ESMTP command parameters and log a
|
||||||
|
warning message as follows:
|
||||||
|
|
||||||
|
warning: 100B22B3293: cleanup_chg_from: ignoring ESMTP arguments "whatever"
|
||||||
|
warning: 100B22B3293: cleanup_add_rcpt: ignoring ESMTP arguments "whatever"
|
||||||
|
|
||||||
|
[Incompat 20090428] The default milter_protocol setting is increased
|
||||||
|
from 2 to 6; this enables all available features up to and including
|
||||||
|
Sendmail 8.14.0. The new milter_protocol setting may break
|
||||||
|
compatibility with older Milter libraries or applications, and may
|
||||||
|
cause Postfix to log warning messages such as:
|
||||||
|
|
||||||
|
warning: milter inet:host:port: can't read packet header: Unknown error : 0
|
||||||
|
|
||||||
|
warning: milter inet:host:port: can't read packet header: Success
|
||||||
|
|
||||||
|
warning: milter inet:host:port: can't read SMFIC_DATA reply
|
||||||
|
packet header: No such file or directory
|
||||||
|
|
||||||
|
To restore compatibility, specify "milter_protocol = 2" in main.cf.
|
||||||
|
|
||||||
|
Major changes - security
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
[Incompat 20080726] When a mailbox file is not owned by its recipient,
|
||||||
|
the local and virtual delivery agents now log a warning and defer
|
||||||
|
delivery. Specify "strict_mailbox_ownership = no" to ignore such
|
||||||
|
ownership discrepancies.
|
||||||
|
|
||||||
|
Major changes - smtp server
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
[Feature 20080212] check_reverse_client_hostname_access, to make
|
||||||
|
access decisions based on the unverified client hostname. For
|
||||||
|
safety reasons an OK result is not allowed.
|
||||||
|
|
||||||
|
[Feature 20090210] With "reject_tempfail_action = defer", the Postfix
|
||||||
|
SMTP server immediately replies with a 4xx status after some temporary
|
||||||
|
error, instead of executing an implicit "defer_if_permit" action.
|
||||||
|
|
||||||
|
[Feature 20090215] The Postfix SMTP server automatically hangs up
|
||||||
|
after replying with "521". This makes overload handling more
|
||||||
|
effective. See also RFC 1846 for prior art on this topic.
|
||||||
|
|
||||||
|
[Feature 20090228] The Postfix SMTP server maintains a per-session
|
||||||
|
"improper command pipelining detected" flag. This flag can be tested
|
||||||
|
at any time with reject_unauth_pipelining, and is raised whenever
|
||||||
|
a client command is followed by unexpected commands or message
|
||||||
|
content. The Postfix SMTP server logs the first command pipelining
|
||||||
|
transgression as "improper command pipelining after <command> from
|
||||||
|
<hostname>[<hostaddress>]".
|
||||||
|
|
||||||
|
[Feature 20090212] Stress-dependent behavior is enabled by default.
|
||||||
|
Under conditions of overload, smtpd_timeout is reduced from 300s
|
||||||
|
to 10s, smtpd_hard_error_limit is reduced from 20 to 1, and
|
||||||
|
smtpd_junk_command_limit is reduced from 100 to 1. This will reduce
|
||||||
|
the impact of overload for most legitimate mail.
|
||||||
|
|
||||||
|
[Feature 20080629] The Postfix SMTP server's SASL authentication
|
||||||
|
was re-structured. With "smtpd_tls_auth_only = yes", SASL support
|
||||||
|
is now activated only after a successful TLS handshake. Earlier
|
||||||
|
Postfix SMTP server versions could complain about unavailable SASL
|
||||||
|
mechanisms during the plaintext phase of the SMTP protocol.
|
||||||
|
|
||||||
|
[Incompat 20080510] In the policy delegation protocol, certificate
|
||||||
|
common name attributes are now xtext encoded UTF-8. The xtext decoded
|
||||||
|
attributes may contain any UTF-8 value except non-printable ASCII
|
||||||
|
characters.
|
||||||
|
|
||||||
|
Major changes - performance
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
[Feature 20090215] The Postfix SMTP server automatically hangs up
|
||||||
|
after replying with "521". This makes overload handling more
|
||||||
|
effective. See also RFC 1846 for prior art on this topic.
|
||||||
|
|
||||||
|
[Feature 20090212] Stress-dependent behavior is enabled by default.
|
||||||
|
Under conditions of overload, smtpd_timeout is reduced from 300s
|
||||||
|
to 10s, smtpd_hard_error_limit is reduced from 20 to 1, and
|
||||||
|
smtpd_junk_command_limit is reduced from 100 to 1. This will reduce
|
||||||
|
the negative impact of server overload for most legitimate mail.
|
||||||
|
|
||||||
|
[Feature 20090109] Specify "tcp_windowsize = 65535" (or less) to
|
||||||
|
work around routers with broken TCP window scaling implementations.
|
||||||
|
This is perhaps more convenient than collecting tcpdump output and
|
||||||
|
tuning kernel parameters by hand. With Postfix TCP servers (smtpd(8),
|
||||||
|
qmqpd(8)), this feature is implemented by the Postfix master(8)
|
||||||
|
daemon.
|
||||||
|
|
||||||
|
To change this parameter without stopping Postfix, you need to first
|
||||||
|
terminate all Postfix TCP servers:
|
||||||
|
|
||||||
|
# postconf -e master_service_disable=inet
|
||||||
|
# postfix reload
|
||||||
|
|
||||||
|
This immediately terminates all processes that accept network
|
||||||
|
connections. Then you enable Postfix TCP servers with the updated
|
||||||
|
tcp_windowsize setting:
|
||||||
|
|
||||||
|
# postconf -e tcp_windowsize=65535 master_service_disable=
|
||||||
|
# postfix reload
|
||||||
|
|
||||||
|
If you skip these steps with a running Postfix system, then the
|
||||||
|
tcp_windowsize change will work only for Postfix TCP clients (smtp(8),
|
||||||
|
lmtp(8)).
|
||||||
|
|
||||||
|
Of course you can also do "postfix stop" and "postfix start",
|
||||||
|
but that is more disruptive.
|
||||||
|
|
||||||
|
Major changes - tls
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
[Incompat 20090428] The Postfix SMTP client(!) no longer tries to
|
||||||
|
use the obsolete SSLv2 protocol by default, as this may prevent the
|
||||||
|
use of modern SSL features. Lack of SSLv2 support should never be
|
||||||
|
a problem, since SSLv3 was defined in 1996, and TLSv1 in 1999. You
|
||||||
|
can undo the change by specifying empty main.cf values for
|
||||||
|
smtp_tls_protocols and lmtp_tls_protocols. The Postfix SMTP server
|
||||||
|
maintains SSLv2 support for backwards compatibility with ancient
|
||||||
|
clients.
|
||||||
|
|
||||||
|
[Feature 20081010] Controls for the protocols and ciphers that
|
||||||
|
Postfix will use with opportunistic TLS. The smtp_tls_protocols,
|
||||||
|
smtp_tls_ciphers, and equivalent parameters for lmtp and smtpd
|
||||||
|
provide global settings; the SMTP client TLS policy table provides
|
||||||
|
ciphers and protocols settings for specific peers. Code by Victor
|
||||||
|
Duchovni. Details are given in the TLS_README and postconf(5)
|
||||||
|
documents.
|
||||||
|
|
||||||
|
[Feature 20081108] Elliptic curve support. This requires OpenSSL
|
||||||
|
version 0.9.9 or later.
|
||||||
|
|
||||||
|
Major changes - address verification
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
[Incompat 20080428] Postfix SMTP server replies for address
|
||||||
|
verification have changed. unverified_recipient_reject_code and
|
||||||
|
unverified_sender_reject_code now handle "5XX" rejects only. The
|
||||||
|
"4XX" rejects are now controlled with unverified_sender_defer_code
|
||||||
|
and unverified_recipient_defer_code.
|
||||||
|
|
||||||
|
[Feature 20080428] Finer control over the way Postfix reports address
|
||||||
|
verification failures to remote SMTP clients.
|
||||||
|
|
||||||
|
- unverified_sender/recipient_defer_code: the numerical Postfix
|
||||||
|
SMTP server reply code when address verification failed due
|
||||||
|
to some temporary error.
|
||||||
|
|
||||||
|
- unverified_sender/recipient_reject_reason: fixed text that Postfix
|
||||||
|
will send to the remote SMTP client, instead of sending actual
|
||||||
|
address verification details.
|
||||||
|
|
||||||
|
Major changes - dsn
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
[Feature 20090307] New "lmtp_assume_final = yes" flag to send correct
|
||||||
|
DSN "success" notifications when LMTP delivery is "final" as opposed
|
||||||
|
to delivery into a content filter.
|
||||||
|
|
||||||
|
Major changes - file organization
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
[Incompat 20080207] According to discussions on the mailing list,
|
||||||
|
too many people are breaking newly installed Postfix by overwriting
|
||||||
|
the new /etc/postfix files with versions from an older release, and
|
||||||
|
end up with a broken configuration that cannot repair itself. For
|
||||||
|
this reason, postfix-script, postfix-files and post-install are
|
||||||
|
moved away from /etc/postfix to $daemon_directory.
|
||||||
|
|
||||||
|
Major changes - header rewriting
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
[Incompat 20090330] Postfix now adds (Resent-) From:, Date:,
|
||||||
|
Message-ID: or To: headers only when clients match
|
||||||
|
$local_header_rewrite_clients. Specify "always_add_missing_headers
|
||||||
|
= yes" for backwards compatibility. Adding such headers can break
|
||||||
|
DKIM signatures that cover headers that are not present.
|
||||||
|
compatibility with existing logfile processing software, Postfix
|
||||||
|
will log ``message-id=<>'' for messages without Message-Id header.
|
||||||
|
|
||||||
|
Major changes - lmtp client
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
[Feature 20090307] New "lmtp_assume_final = yes" flag to send correct
|
||||||
|
DSN "success" notifications when LMTP delivery is "final" as opposed
|
||||||
|
to delivery into a content filter.
|
||||||
|
|
||||||
|
Major changes - logging
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
[Incompat 20090330] Postfix now adds (Resent-) From:, Date:,
|
||||||
|
Message-ID: or To: headers only when clients match
|
||||||
|
$local_header_rewrite_clients. Specify "always_add_missing_headers
|
||||||
|
= yes" for backwards compatibility. Adding such headers can break
|
||||||
|
DKIM signatures that cover headers that are not present.
|
||||||
|
|
||||||
|
This changes the appearance of Postfix logging: to preserve
|
||||||
|
compatibility with existing logfile processing software, Postfix
|
||||||
|
will log ``message-id=<>'' for messages without Message-Id header.
|
||||||
|
|
||||||
|
Major changes - mime
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
[Feature 20080324] When the "postmap -q -" command reads lookup
|
||||||
|
keys from standard input, it now understands RFC822 and MIME message
|
||||||
|
format. Specify -h or -b to use headers or body lines as lookup
|
||||||
|
keys, and specify -hm or -bm to simulate header_checks or body_checks.
|
||||||
|
|
||||||
|
Major changes - miscellaneous
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
[Feature 20090109] Support to selectively disable master(8) listener
|
||||||
|
ports by service type or by service name + type. Specify a list of
|
||||||
|
service types ("inet", "unix", "fifo", or "pass") or "name.type"
|
||||||
|
tuples, where "name" is the first field of a master.cf entry and
|
||||||
|
"type" is a service type. Examples: to turn off the main SMTP
|
||||||
|
listener port, use "master_service_disable = smtp.inet"; to turn
|
||||||
|
off all TCP/IP listeners, use "master_service_disable = inet".
|
||||||
|
Changing this parameter requires "postfix reload".
|
||||||
|
|
||||||
|
Major changes - sasl
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
[Feature 20090418] The Postfix SMTP server passes more information
|
||||||
|
to the Dovecot authentication server: the "TLS is active" flag, the
|
||||||
|
server IP address, and the client IP address.
|
||||||
|
|
||||||
|
[Feature 20080629] The Postfix SMTP server's SASL authentication
|
||||||
|
was re-structured. With "smtpd_tls_auth_only = yes", SASL support
|
||||||
|
is now activated only after a successful TLS handshake. Earlier
|
||||||
|
Postfix SMTP server versions could complain about unavailable SASL
|
||||||
|
mechanisms during the plaintext phase of the SMTP protocol.
|
||||||
|
|
@@ -5,6 +5,9 @@ Wish list:
|
|||||||
Need to sign delivery status notifications, to avoid surprises
|
Need to sign delivery status notifications, to avoid surprises
|
||||||
when eventually people start enforcing DKIM etc. signatures.
|
when eventually people start enforcing DKIM etc. signatures.
|
||||||
|
|
||||||
|
Either document or remove the internal_mail_filter_classes
|
||||||
|
feature (it's disabled by default).
|
||||||
|
|
||||||
"postconf -N" option to print user-defined parameter names
|
"postconf -N" option to print user-defined parameter names
|
||||||
(these have no defaults, since they exist only when
|
(these have no defaults, since they exist only when
|
||||||
specified in main.cf or with "-o name=value").
|
specified in main.cf or with "-o name=value").
|
||||||
@@ -31,6 +34,9 @@ Wish list:
|
|||||||
SMTP server: make the server_addr and server_port available
|
SMTP server: make the server_addr and server_port available
|
||||||
to policy server, Dovecot, and perhaps Milters.
|
to policy server, Dovecot, and perhaps Milters.
|
||||||
|
|
||||||
|
Med: local and remote source port and IP address for smtpd
|
||||||
|
policy hook.
|
||||||
|
|
||||||
Maybe change maps_rbl_reject_code default to 521, and
|
Maybe change maps_rbl_reject_code default to 521, and
|
||||||
update wording in STRESS_README.
|
update wording in STRESS_README.
|
||||||
|
|
||||||
@@ -149,13 +155,6 @@ Wish list:
|
|||||||
Update FILTER_README with mailing list suggestions to tag
|
Update FILTER_README with mailing list suggestions to tag
|
||||||
with a badness indicator and then filter down-stream.
|
with a badness indicator and then filter down-stream.
|
||||||
|
|
||||||
Either document or remove the internal_mail_filter_classes
|
|
||||||
feature (it's disabled by default).
|
|
||||||
|
|
||||||
Build a command-line test driver for the cleanup engine.
|
|
||||||
This allows us to test it with arbitrary record sequences
|
|
||||||
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
|
||||||
behavior, currently implemented only in the SMTP server).
|
behavior, currently implemented only in the SMTP server).
|
||||||
@@ -213,10 +212,16 @@ Wish list:
|
|||||||
features.
|
features.
|
||||||
|
|
||||||
Eliminate the (incoming,deferred)->active rename operation.
|
Eliminate the (incoming,deferred)->active rename operation.
|
||||||
|
This requires an in-memory hash of queue file names to avoid
|
||||||
|
duplicate open() operations.
|
||||||
|
|
||||||
Softbounce fallback-to-ISP for SOHO users. This requires
|
Softbounce fallback-to-ISP for SOHO users. This heuristic
|
||||||
playing with the soft_error test in the smtp_trouble.c
|
assumes that when direct-to-MX delivery fails with 5XX,
|
||||||
module, and avoiding delivery to backup MX hosts.
|
delivery via the ISP may still succeed. This could be
|
||||||
|
implemented by enabling soft bounces for destinations other
|
||||||
|
than the smtp_fallback_relay. So the only benefit of this
|
||||||
|
over the existing soft_bounce feature is that it has no
|
||||||
|
effect on smtp_fallback_relay deliveries.
|
||||||
|
|
||||||
Centralize main.cf parameter input so that defaults work
|
Centralize main.cf parameter input so that defaults work
|
||||||
consistently. What about parameter names that are prefixed
|
consistently. What about parameter names that are prefixed
|
||||||
@@ -247,13 +252,10 @@ Wish list:
|
|||||||
server stat() the maildrop directory before searching it.
|
server stat() the maildrop directory before searching it.
|
||||||
|
|
||||||
Low: replace_sender/replace_recipient actions in access
|
Low: replace_sender/replace_recipient actions in access
|
||||||
maps?
|
maps, so they can be used in policy servers?
|
||||||
|
|
||||||
Low: configurable order of local(8) delivery methods.
|
Low: configurable order of local(8) delivery methods.
|
||||||
|
|
||||||
Med: local and remote source port and IP address for smtpd
|
|
||||||
policy hook.
|
|
||||||
|
|
||||||
Med: smtp_connect_timeout_budget (default: 3x smtp_connect_timeout)
|
Med: smtp_connect_timeout_budget (default: 3x smtp_connect_timeout)
|
||||||
to limit the total time spent trying to connect.
|
to limit the total time spent trying to connect.
|
||||||
|
|
||||||
@@ -280,9 +282,6 @@ Wish list:
|
|||||||
really try all the possibilities that one might expect to
|
really try all the possibilities that one might expect to
|
||||||
be tried. For now, this gotcha is documented in access(5).
|
be tried. For now, this gotcha is documented in access(5).
|
||||||
|
|
||||||
Med: the TLS certificate verification depth parameters never
|
|
||||||
worked.
|
|
||||||
|
|
||||||
Low: reject HELO with any domain name or IP address that
|
Low: reject HELO with any domain name or IP address that
|
||||||
this MTA is the final destination for.
|
this MTA is the final destination for.
|
||||||
|
|
||||||
|
@@ -204,10 +204,16 @@ an object library that implements the Sendmail 8 Milter protocol.
|
|||||||
Postfix currently does not provide such a library, but Sendmail
|
Postfix currently does not provide such a library, but Sendmail
|
||||||
does. </p>
|
does. </p>
|
||||||
|
|
||||||
<p> On some Linux and *BSD distributions, the Sendmail libmilter
|
<ul>
|
||||||
library is installed by default. With this, applications such as
|
|
||||||
<a href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a>
|
<li> <p> The first option is to use a pre-compiled library. Some
|
||||||
and <a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>
|
systems install the Sendmail libmilter library by default. With
|
||||||
|
other systems, libmilter may be provided by a package (called
|
||||||
|
"sendmail-devel" on some Linux systems). </p>
|
||||||
|
|
||||||
|
<p> Once libmilter is installed, applications such as <a
|
||||||
|
href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a> and
|
||||||
|
<a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>
|
||||||
build out of the box without requiring any tinkering:</p>
|
build out of the box without requiring any tinkering:</p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@@ -219,17 +225,8 @@ $ <b>make</b>
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> On other platforms you have two options: </p>
|
<li> <p> The other option is to build the libmilter library from
|
||||||
|
Sendmail source code: </p>
|
||||||
<ul>
|
|
||||||
|
|
||||||
<li> <p>Install the Sendmail libmilter object library and include
|
|
||||||
files. On Linux systems, libmilter may be provided by the
|
|
||||||
sendmail-devel package. After installing libmilter, build the
|
|
||||||
Milter applications as described in the preceding paragraph. </p>
|
|
||||||
|
|
||||||
<li> <p>Don't install the Sendmail libmilter library, but build the
|
|
||||||
library from Sendmail source code instead: </p>
|
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
@@ -496,8 +493,8 @@ protocol stages
|
|||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Parameter </th> <th> Time limit </th> <th> Protocol
|
<tr> <th> Postfix parameter </th> <th> Time limit </th> <th> Milter
|
||||||
stage</th> </tr>
|
protocol stage</th> </tr>
|
||||||
|
|
||||||
<tr> <td> <a href="postconf.5.html#milter_connect_timeout">milter_connect_timeout</a> </td> <td> 30s </td> <td> CONNECT
|
<tr> <td> <a href="postconf.5.html#milter_connect_timeout">milter_connect_timeout</a> </td> <td> 30s </td> <td> CONNECT
|
||||||
</td> </tr>
|
</td> </tr>
|
||||||
@@ -523,7 +520,7 @@ filtering. </p>
|
|||||||
<p> Postfix emulates a limited number of Sendmail macros, as shown
|
<p> Postfix emulates a limited number of Sendmail macros, as shown
|
||||||
in the table. Some macro values depend on whether a recipient is
|
in the table. Some macro values depend on whether a recipient is
|
||||||
rejected (rejected recipients are available on request by the Milter
|
rejected (rejected recipients are available on request by the Milter
|
||||||
application). Different macros are available at different SMTP
|
application). Different macros are available at different Milter
|
||||||
protocol stages (EOH = end-of-header, EOM = end-of-message); their
|
protocol stages (EOH = end-of-header, EOM = end-of-message); their
|
||||||
availability is not
|
availability is not
|
||||||
always the same as in Sendmail. See the <a
|
always the same as in Sendmail. See the <a
|
||||||
@@ -534,12 +531,13 @@ href="#workarounds">workarounds</a> section below for solutions.
|
|||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Name </th> <th> Availability </th> <th> Description </th>
|
<tr> <th> Sendmail macro </th> <th> Milter protocol stage </th>
|
||||||
</tr>
|
<th> Description </th> </tr>
|
||||||
|
|
||||||
<tr> <td> i </td> <td> DATA, EOH, EOM </td> <td> Queue ID </td> </tr>
|
<tr> <td> i </td> <td> DATA, EOH, EOM </td> <td> Queue ID, also
|
||||||
|
Postfix queue file name </td> </tr>
|
||||||
|
|
||||||
<tr> <td> j </td> <td> Always </td> <td> value of <a href="postconf.5.html#myhostname">myhostname</a> </td>
|
<tr> <td> j </td> <td> Always </td> <td> Value of <a href="postconf.5.html#myhostname">myhostname</a> </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr> <td> _ </td> <td> Always </td> <td> The validated client name
|
<tr> <td> _ </td> <td> Always </td> <td> The validated client name
|
||||||
@@ -600,7 +598,7 @@ cipher </td> </tr>
|
|||||||
|
|
||||||
<tr> <td> {rcpt_host} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
<tr> <td> {rcpt_host} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
||||||
<a href="postconf.5.html#smtpd_milters">smtpd_milters</a>) </td> <td> Recipient next-hop destination <br> With
|
<a href="postconf.5.html#smtpd_milters">smtpd_milters</a>) </td> <td> Recipient next-hop destination <br> With
|
||||||
rejected recpient: enhanced status code </td> </tr>
|
rejected recipient: enhanced status code </td> </tr>
|
||||||
|
|
||||||
<tr> <td> {rcpt_mailer} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
<tr> <td> {rcpt_mailer} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
||||||
<a href="postconf.5.html#smtpd_milters">smtpd_milters</a>) </td> <td> Recipient mail delivery transport <br>
|
<a href="postconf.5.html#smtpd_milters">smtpd_milters</a>) </td> <td> Recipient mail delivery transport <br>
|
||||||
@@ -616,23 +614,23 @@ With rejected recipient: "error" </td> </tr>
|
|||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> Postfix sends specific sets of macros at different SMTP protocol
|
<p> Postfix sends specific sets of macros at different Milter protocol
|
||||||
stages. The sets are configured with the parameters as described
|
stages. The sets are configured with the parameters as described
|
||||||
in the table (EOH = end of headers; EOM = end of message). The
|
in the table (EOH = end of headers; EOM = end of message). The
|
||||||
protocol version is a number that Postfix sends at the beginning
|
protocol version is a number that Postfix sends at the beginning
|
||||||
of the Milter protocol handshake. </p>
|
of the Milter protocol handshake. </p>
|
||||||
|
|
||||||
<p> As of Sendmail 8.14.0, Milter applications can specify what
|
<p> As of Sendmail 8.14.0, Milter applications can specify what
|
||||||
macros they want to receive at different protocol stages. In that
|
macros they want to receive at different Milter protocol stages.
|
||||||
case, the application-specified list takes precedence over Postfix
|
An application-specified list takes precedence over a Postfix-specified
|
||||||
configuration. </p>
|
list. </p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Parameter name </th> <th> Protocol version </th> <th>
|
<tr> <th> Postfix parameter </th> <th> Milter protocol version </th>
|
||||||
Protocol stage </th> </tr>
|
<th> Milter protocol stage </th> </tr>
|
||||||
|
|
||||||
<tr> <td> <a href="postconf.5.html#milter_connect_macros">milter_connect_macros</a> </td> <td> 2 or higher </td> <td>
|
<tr> <td> <a href="postconf.5.html#milter_connect_macros">milter_connect_macros</a> </td> <td> 2 or higher </td> <td>
|
||||||
CONNECT </td> </tr>
|
CONNECT </td> </tr>
|
||||||
@@ -664,19 +662,26 @@ TO </td> </tr>
|
|||||||
|
|
||||||
<h2><a name="workarounds">Workarounds</a></h2>
|
<h2><a name="workarounds">Workarounds</a></h2>
|
||||||
|
|
||||||
<p> Content filters may break DKIM etc. signatures. If you
|
<ul>
|
||||||
use an SMTP-based content filter, then you should add a line to
|
|
||||||
<a href="master.5.html">master.cf</a> with "-o <a href="postconf.5.html#disable_mime_output_conversion">disable_mime_output_conversion</a>=yes" (note: no
|
<li> <p> To avoid breaking DKIM etc. signatures with an SMTP-based
|
||||||
spaces around the "="), as described in the <a
|
content filter, update the before-filter SMTP client in <a href="master.5.html">master.cf</a>,
|
||||||
|
and add a line with "-o <a href="postconf.5.html#disable_mime_output_conversion">disable_mime_output_conversion</a>=yes" (note:
|
||||||
|
no spaces around the "="). For details, see the <a
|
||||||
href="FILTER_README.html#advanced_filter">advanced content filter</a>
|
href="FILTER_README.html#advanced_filter">advanced content filter</a>
|
||||||
example. </p>
|
example. </p>
|
||||||
|
|
||||||
<p> Sendmail Milter applications were originally developed for the
|
<pre>
|
||||||
Sendmail version 8 MTA, which has a different architecture than
|
/etc/postfix/<a href="master.5.html">master.cf</a>:
|
||||||
Postfix. The result is that some Milter applications make assumptions
|
# =============================================================
|
||||||
that aren't true in a Postfix environment. </p>
|
# service type private unpriv chroot wakeup maxproc command
|
||||||
|
# (yes) (yes) (yes) (never) (100)
|
||||||
<ul>
|
# =============================================================
|
||||||
|
scan unix - - n - 10 smtp
|
||||||
|
-o <a href="postconf.5.html#smtp_send_xforward_command">smtp_send_xforward_command</a>=yes
|
||||||
|
-o <a href="postconf.5.html#disable_mime_output_conversion">disable_mime_output_conversion</a>=yes
|
||||||
|
-o <a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a>=
|
||||||
|
</pre>
|
||||||
|
|
||||||
<li> <p> Some Milter applications use the "<tt>{if_addr}</tt>" macro
|
<li> <p> Some Milter applications use the "<tt>{if_addr}</tt>" macro
|
||||||
to recognize local mail; this macro does not exist in Postfix.
|
to recognize local mail; this macro does not exist in Postfix.
|
||||||
@@ -699,16 +704,11 @@ X-SenderID: Sendmail Sender-ID Filter vx.y.z host.example.com <unknown-msgid&
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> This happens because those Milter applications expect that the
|
<p> The problem is that Milter applications expect that the queue
|
||||||
queue ID is known <i>before</i> the MTA accepts the MAIL FROM
|
ID is known <i>before</i> the MTA accepts the MAIL FROM (sender)
|
||||||
(sender) command. Postfix, on the other hand, does not choose a
|
command. Postfix does not choose a queue ID, which is used as the
|
||||||
queue file name until <i>after</i> it accepts the first valid RCPT
|
queue file name, until <i>after</i> it accepts the first valid RCPT
|
||||||
TO (recipient) command (Postfix queue file names must be unique
|
TO (recipient) command. </p>
|
||||||
across multiple directories, so the name can't be chosen before the
|
|
||||||
file is created; if multiple messages were to use the same queue
|
|
||||||
ID <i>simultaneously</i>, mail would be lost). </p>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> If you experience the ugly header problem, see if a recent
|
<p> If you experience the ugly header problem, see if a recent
|
||||||
version of the Milter application fixes it. For example, current
|
version of the Milter application fixes it. For example, current
|
||||||
@@ -717,8 +717,9 @@ up the Postfix queue ID at a later protocol stage, and sid-filter
|
|||||||
version 1.0.0 no longer includes the queue ID in the message header.
|
version 1.0.0 no longer includes the queue ID in the message header.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p> To fix the ugly message header with other Milter applications,
|
<p> To fix the ugly message header, you will need to add code that
|
||||||
you will need to do something like this: </p>
|
looks up the Postfix queue ID at some later point im time. The
|
||||||
|
example below adds the lookup after the end-of-message. </p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
@@ -741,8 +742,6 @@ if (dfc->mctx_jobid == 0 || strcmp(dfc->mctx_jobid, JOBIDUNKNOWN) == 0) {
|
|||||||
if (jobid != 0)
|
if (jobid != 0)
|
||||||
dfc->mctx_jobid = jobid;
|
dfc->mctx_jobid = jobid;
|
||||||
}</b>
|
}</b>
|
||||||
|
|
||||||
/* get hostname; used in the X header and in new MIME boundaries */
|
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@@ -751,11 +750,15 @@ if (dfc->mctx_jobid == 0 || strcmp(dfc->mctx_jobid, JOBIDUNKNOWN) == 0) {
|
|||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li> <p> Different mail filters use slightly different names for
|
<li> <p> Different mail filters use slightly different names for
|
||||||
variables. If the above code does not compile, look for the code
|
variables. If the above code does not compile, look elsewhere in
|
||||||
at the start of the <tt>mlfi_eoh()</tt> routine. </p>
|
the mail filter source file for code that looks up the "i" macro
|
||||||
|
value, and copy that code. </p>
|
||||||
|
|
||||||
<li> <p> This fixes only the ugly message header, but not the WARNING
|
<li> <p> This change fixes only the ugly message header, but not
|
||||||
message. Fortunately, many Milters log that message only once. </p>
|
the WARNING message. Fortunately, many Milters log that message
|
||||||
|
only once. </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -778,7 +781,7 @@ different Postfix versions implement different feature sets. </p>
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr> <td align="center"> 2.6 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.6 </td> <td> All Milter requests of
|
||||||
Sendmail 8.14.0. </td> </tr>
|
Sendmail 8.14.0 (see notes below). </td> </tr>
|
||||||
|
|
||||||
<tr> <td align="center"> 2.5 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.5 </td> <td> All Milter requests of
|
||||||
Sendmail 8.14.0, except: <br> SMFIP_RCPT_REJ (report rejected
|
Sendmail 8.14.0, except: <br> SMFIP_RCPT_REJ (report rejected
|
||||||
@@ -791,14 +794,13 @@ Sendmail 8.13.0. </td> </tr>
|
|||||||
|
|
||||||
<tr> <td align="center"> 2.3 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.3 </td> <td> All Milter requests of
|
||||||
Sendmail 8.13.0, except: <br> SMFIR_REPLBODY (replace message body).
|
Sendmail 8.13.0, except: <br> SMFIR_REPLBODY (replace message body).
|
||||||
</p>
|
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<li> <p> For Milter applications that are written in C, you need
|
<li> <p> For Milter applications that are written in C, you need
|
||||||
to use the Sendmail libmilter library. </p>
|
to use the Sendmail libmilter library. </p>
|
||||||
|
|
||||||
<li> <p> There are TWO sets of mail filters: filters that are used
|
<li> <p> Postfix has TWO sets of mail filters: filters that are used
|
||||||
for SMTP mail only (specified with the <a href="postconf.5.html#smtpd_milters">smtpd_milters</a> parameter),
|
for SMTP mail only (specified with the <a href="postconf.5.html#smtpd_milters">smtpd_milters</a> parameter),
|
||||||
and filters for non-SMTP mail (specified with the <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>
|
and filters for non-SMTP mail (specified with the <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>
|
||||||
parameter). The non-SMTP filters are primarily for local submissions.
|
parameter). The non-SMTP filters are primarily for local submissions.
|
||||||
@@ -825,8 +827,8 @@ or to the envelope. </p>
|
|||||||
|
|
||||||
<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
|
<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
|
||||||
requests to replace the sender (SMFIR_CHGFROM) or to append a
|
requests to replace the sender (SMFIR_CHGFROM) or to append a
|
||||||
recipient (SMFIR_ADDRCPT_PAR). When a Milter application supplies
|
recipient (SMFIR_ADDRCPT_PAR). Postfix logs a warning message when
|
||||||
such ESMTP parameters, Postfix will log a warning: </p>
|
a Milter application supplies such ESMTP parameters: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
warning: <i>queue-id</i>: cleanup_chg_from: ignoring ESMTP arguments "<i>whatever</i>"
|
warning: <i>queue-id</i>: cleanup_chg_from: ignoring ESMTP arguments "<i>whatever</i>"
|
||||||
@@ -834,8 +836,8 @@ warning: <i>queue-id</i>: cleanup_add_rcpt: ignoring ESMTP arguments "<i>whateve
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<li> <p> Postfix 2.3 does not implement requests to replace the
|
<li> <p> Postfix 2.3 does not implement requests to replace the
|
||||||
message body. Milter applications that need this unsupported operation
|
message body. Milter applications log a warning message when they
|
||||||
will log a warning:
|
need this unsupported operation: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
||||||
|
@@ -512,7 +512,7 @@ services that accept remote connections. </p>
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<h2><a name="other"> Other measures to off-load zombies </h2>
|
<h2><a name="other"> Other measures to off-load zombies </a> </h2>
|
||||||
|
|
||||||
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
|
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
|
||||||
implements a daemon that handles all connections from "new" clients.
|
implements a daemon that handles all connections from "new" clients.
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
@@ -204,10 +204,16 @@ an object library that implements the Sendmail 8 Milter protocol.
|
|||||||
Postfix currently does not provide such a library, but Sendmail
|
Postfix currently does not provide such a library, but Sendmail
|
||||||
does. </p>
|
does. </p>
|
||||||
|
|
||||||
<p> On some Linux and *BSD distributions, the Sendmail libmilter
|
<ul>
|
||||||
library is installed by default. With this, applications such as
|
|
||||||
<a href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a>
|
<li> <p> The first option is to use a pre-compiled library. Some
|
||||||
and <a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>
|
systems install the Sendmail libmilter library by default. With
|
||||||
|
other systems, libmilter may be provided by a package (called
|
||||||
|
"sendmail-devel" on some Linux systems). </p>
|
||||||
|
|
||||||
|
<p> Once libmilter is installed, applications such as <a
|
||||||
|
href="http://sourceforge.net/projects/dkim-milter/">dkim-milter</a> and
|
||||||
|
<a href="http://sourceforge.net/projects/sid-milter/">sid-milter</a>
|
||||||
build out of the box without requiring any tinkering:</p>
|
build out of the box without requiring any tinkering:</p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
@@ -219,17 +225,8 @@ $ <b>make</b>
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> On other platforms you have two options: </p>
|
<li> <p> The other option is to build the libmilter library from
|
||||||
|
Sendmail source code: </p>
|
||||||
<ul>
|
|
||||||
|
|
||||||
<li> <p>Install the Sendmail libmilter object library and include
|
|
||||||
files. On Linux systems, libmilter may be provided by the
|
|
||||||
sendmail-devel package. After installing libmilter, build the
|
|
||||||
Milter applications as described in the preceding paragraph. </p>
|
|
||||||
|
|
||||||
<li> <p>Don't install the Sendmail libmilter library, but build the
|
|
||||||
library from Sendmail source code instead: </p>
|
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<pre>
|
<pre>
|
||||||
@@ -496,8 +493,8 @@ protocol stages
|
|||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Parameter </th> <th> Time limit </th> <th> Protocol
|
<tr> <th> Postfix parameter </th> <th> Time limit </th> <th> Milter
|
||||||
stage</th> </tr>
|
protocol stage</th> </tr>
|
||||||
|
|
||||||
<tr> <td> milter_connect_timeout </td> <td> 30s </td> <td> CONNECT
|
<tr> <td> milter_connect_timeout </td> <td> 30s </td> <td> CONNECT
|
||||||
</td> </tr>
|
</td> </tr>
|
||||||
@@ -523,7 +520,7 @@ filtering. </p>
|
|||||||
<p> Postfix emulates a limited number of Sendmail macros, as shown
|
<p> Postfix emulates a limited number of Sendmail macros, as shown
|
||||||
in the table. Some macro values depend on whether a recipient is
|
in the table. Some macro values depend on whether a recipient is
|
||||||
rejected (rejected recipients are available on request by the Milter
|
rejected (rejected recipients are available on request by the Milter
|
||||||
application). Different macros are available at different SMTP
|
application). Different macros are available at different Milter
|
||||||
protocol stages (EOH = end-of-header, EOM = end-of-message); their
|
protocol stages (EOH = end-of-header, EOM = end-of-message); their
|
||||||
availability is not
|
availability is not
|
||||||
always the same as in Sendmail. See the <a
|
always the same as in Sendmail. See the <a
|
||||||
@@ -534,12 +531,13 @@ href="#workarounds">workarounds</a> section below for solutions.
|
|||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Name </th> <th> Availability </th> <th> Description </th>
|
<tr> <th> Sendmail macro </th> <th> Milter protocol stage </th>
|
||||||
</tr>
|
<th> Description </th> </tr>
|
||||||
|
|
||||||
<tr> <td> i </td> <td> DATA, EOH, EOM </td> <td> Queue ID </td> </tr>
|
<tr> <td> i </td> <td> DATA, EOH, EOM </td> <td> Queue ID, also
|
||||||
|
Postfix queue file name </td> </tr>
|
||||||
|
|
||||||
<tr> <td> j </td> <td> Always </td> <td> value of myhostname </td>
|
<tr> <td> j </td> <td> Always </td> <td> Value of myhostname </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr> <td> _ </td> <td> Always </td> <td> The validated client name
|
<tr> <td> _ </td> <td> Always </td> <td> The validated client name
|
||||||
@@ -600,7 +598,7 @@ smtpd_milters) </td> <td> Sender mail delivery transport </td> </tr>
|
|||||||
|
|
||||||
<tr> <td> {rcpt_host} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
<tr> <td> {rcpt_host} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
||||||
smtpd_milters) </td> <td> Recipient next-hop destination <br> With
|
smtpd_milters) </td> <td> Recipient next-hop destination <br> With
|
||||||
rejected recpient: enhanced status code </td> </tr>
|
rejected recipient: enhanced status code </td> </tr>
|
||||||
|
|
||||||
<tr> <td> {rcpt_mailer} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
<tr> <td> {rcpt_mailer} </td> <td> RCPT (Postfix ≥ 2.6, only with
|
||||||
smtpd_milters) </td> <td> Recipient mail delivery transport <br>
|
smtpd_milters) </td> <td> Recipient mail delivery transport <br>
|
||||||
@@ -616,23 +614,23 @@ With rejected recipient: "error" </td> </tr>
|
|||||||
|
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> Postfix sends specific sets of macros at different SMTP protocol
|
<p> Postfix sends specific sets of macros at different Milter protocol
|
||||||
stages. The sets are configured with the parameters as described
|
stages. The sets are configured with the parameters as described
|
||||||
in the table (EOH = end of headers; EOM = end of message). The
|
in the table (EOH = end of headers; EOM = end of message). The
|
||||||
protocol version is a number that Postfix sends at the beginning
|
protocol version is a number that Postfix sends at the beginning
|
||||||
of the Milter protocol handshake. </p>
|
of the Milter protocol handshake. </p>
|
||||||
|
|
||||||
<p> As of Sendmail 8.14.0, Milter applications can specify what
|
<p> As of Sendmail 8.14.0, Milter applications can specify what
|
||||||
macros they want to receive at different protocol stages. In that
|
macros they want to receive at different Milter protocol stages.
|
||||||
case, the application-specified list takes precedence over Postfix
|
An application-specified list takes precedence over a Postfix-specified
|
||||||
configuration. </p>
|
list. </p>
|
||||||
|
|
||||||
<blockquote>
|
<blockquote>
|
||||||
|
|
||||||
<table border="1">
|
<table border="1">
|
||||||
|
|
||||||
<tr> <th> Parameter name </th> <th> Protocol version </th> <th>
|
<tr> <th> Postfix parameter </th> <th> Milter protocol version </th>
|
||||||
Protocol stage </th> </tr>
|
<th> Milter protocol stage </th> </tr>
|
||||||
|
|
||||||
<tr> <td> milter_connect_macros </td> <td> 2 or higher </td> <td>
|
<tr> <td> milter_connect_macros </td> <td> 2 or higher </td> <td>
|
||||||
CONNECT </td> </tr>
|
CONNECT </td> </tr>
|
||||||
@@ -664,19 +662,26 @@ TO </td> </tr>
|
|||||||
|
|
||||||
<h2><a name="workarounds">Workarounds</a></h2>
|
<h2><a name="workarounds">Workarounds</a></h2>
|
||||||
|
|
||||||
<p> Content filters may break DKIM etc. signatures. If you
|
<ul>
|
||||||
use an SMTP-based content filter, then you should add a line to
|
|
||||||
master.cf with "-o disable_mime_output_conversion=yes" (note: no
|
<li> <p> To avoid breaking DKIM etc. signatures with an SMTP-based
|
||||||
spaces around the "="), as described in the <a
|
content filter, update the before-filter SMTP client in master.cf,
|
||||||
|
and add a line with "-o disable_mime_output_conversion=yes" (note:
|
||||||
|
no spaces around the "="). For details, see the <a
|
||||||
href="FILTER_README.html#advanced_filter">advanced content filter</a>
|
href="FILTER_README.html#advanced_filter">advanced content filter</a>
|
||||||
example. </p>
|
example. </p>
|
||||||
|
|
||||||
<p> Sendmail Milter applications were originally developed for the
|
<pre>
|
||||||
Sendmail version 8 MTA, which has a different architecture than
|
/etc/postfix/master.cf:
|
||||||
Postfix. The result is that some Milter applications make assumptions
|
# =============================================================
|
||||||
that aren't true in a Postfix environment. </p>
|
# service type private unpriv chroot wakeup maxproc command
|
||||||
|
# (yes) (yes) (yes) (never) (100)
|
||||||
<ul>
|
# =============================================================
|
||||||
|
scan unix - - n - 10 smtp
|
||||||
|
-o smtp_send_xforward_command=yes
|
||||||
|
-o disable_mime_output_conversion=yes
|
||||||
|
-o smtp_generic_maps=
|
||||||
|
</pre>
|
||||||
|
|
||||||
<li> <p> Some Milter applications use the "<tt>{if_addr}</tt>" macro
|
<li> <p> Some Milter applications use the "<tt>{if_addr}</tt>" macro
|
||||||
to recognize local mail; this macro does not exist in Postfix.
|
to recognize local mail; this macro does not exist in Postfix.
|
||||||
@@ -699,16 +704,11 @@ X-SenderID: Sendmail Sender-ID Filter vx.y.z host.example.com <unknown-msgid&
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<p> This happens because those Milter applications expect that the
|
<p> The problem is that Milter applications expect that the queue
|
||||||
queue ID is known <i>before</i> the MTA accepts the MAIL FROM
|
ID is known <i>before</i> the MTA accepts the MAIL FROM (sender)
|
||||||
(sender) command. Postfix, on the other hand, does not choose a
|
command. Postfix does not choose a queue ID, which is used as the
|
||||||
queue file name until <i>after</i> it accepts the first valid RCPT
|
queue file name, until <i>after</i> it accepts the first valid RCPT
|
||||||
TO (recipient) command (Postfix queue file names must be unique
|
TO (recipient) command. </p>
|
||||||
across multiple directories, so the name can't be chosen before the
|
|
||||||
file is created; if multiple messages were to use the same queue
|
|
||||||
ID <i>simultaneously</i>, mail would be lost). </p>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p> If you experience the ugly header problem, see if a recent
|
<p> If you experience the ugly header problem, see if a recent
|
||||||
version of the Milter application fixes it. For example, current
|
version of the Milter application fixes it. For example, current
|
||||||
@@ -717,8 +717,9 @@ up the Postfix queue ID at a later protocol stage, and sid-filter
|
|||||||
version 1.0.0 no longer includes the queue ID in the message header.
|
version 1.0.0 no longer includes the queue ID in the message header.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p> To fix the ugly message header with other Milter applications,
|
<p> To fix the ugly message header, you will need to add code that
|
||||||
you will need to do something like this: </p>
|
looks up the Postfix queue ID at some later point im time. The
|
||||||
|
example below adds the lookup after the end-of-message. </p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
@@ -741,8 +742,6 @@ if (dfc->mctx_jobid == 0 || strcmp(dfc->mctx_jobid, JOBIDUNKNOWN) == 0) {
|
|||||||
if (jobid != 0)
|
if (jobid != 0)
|
||||||
dfc->mctx_jobid = jobid;
|
dfc->mctx_jobid = jobid;
|
||||||
}</b>
|
}</b>
|
||||||
|
|
||||||
/* get hostname; used in the X header and in new MIME boundaries */
|
|
||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
@@ -751,11 +750,15 @@ if (dfc->mctx_jobid == 0 || strcmp(dfc->mctx_jobid, JOBIDUNKNOWN) == 0) {
|
|||||||
<ul>
|
<ul>
|
||||||
|
|
||||||
<li> <p> Different mail filters use slightly different names for
|
<li> <p> Different mail filters use slightly different names for
|
||||||
variables. If the above code does not compile, look for the code
|
variables. If the above code does not compile, look elsewhere in
|
||||||
at the start of the <tt>mlfi_eoh()</tt> routine. </p>
|
the mail filter source file for code that looks up the "i" macro
|
||||||
|
value, and copy that code. </p>
|
||||||
|
|
||||||
<li> <p> This fixes only the ugly message header, but not the WARNING
|
<li> <p> This change fixes only the ugly message header, but not
|
||||||
message. Fortunately, many Milters log that message only once. </p>
|
the WARNING message. Fortunately, many Milters log that message
|
||||||
|
only once. </p>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
@@ -778,7 +781,7 @@ different Postfix versions implement different feature sets. </p>
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr> <td align="center"> 2.6 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.6 </td> <td> All Milter requests of
|
||||||
Sendmail 8.14.0. </td> </tr>
|
Sendmail 8.14.0 (see notes below). </td> </tr>
|
||||||
|
|
||||||
<tr> <td align="center"> 2.5 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.5 </td> <td> All Milter requests of
|
||||||
Sendmail 8.14.0, except: <br> SMFIP_RCPT_REJ (report rejected
|
Sendmail 8.14.0, except: <br> SMFIP_RCPT_REJ (report rejected
|
||||||
@@ -791,14 +794,13 @@ Sendmail 8.13.0. </td> </tr>
|
|||||||
|
|
||||||
<tr> <td align="center"> 2.3 </td> <td> All Milter requests of
|
<tr> <td align="center"> 2.3 </td> <td> All Milter requests of
|
||||||
Sendmail 8.13.0, except: <br> SMFIR_REPLBODY (replace message body).
|
Sendmail 8.13.0, except: <br> SMFIR_REPLBODY (replace message body).
|
||||||
</p>
|
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<li> <p> For Milter applications that are written in C, you need
|
<li> <p> For Milter applications that are written in C, you need
|
||||||
to use the Sendmail libmilter library. </p>
|
to use the Sendmail libmilter library. </p>
|
||||||
|
|
||||||
<li> <p> There are TWO sets of mail filters: filters that are used
|
<li> <p> Postfix has TWO sets of mail filters: filters that are used
|
||||||
for SMTP mail only (specified with the smtpd_milters parameter),
|
for SMTP mail only (specified with the smtpd_milters parameter),
|
||||||
and filters for non-SMTP mail (specified with the non_smtpd_milters
|
and filters for non-SMTP mail (specified with the non_smtpd_milters
|
||||||
parameter). The non-SMTP filters are primarily for local submissions.
|
parameter). The non-SMTP filters are primarily for local submissions.
|
||||||
@@ -825,8 +827,8 @@ or to the envelope. </p>
|
|||||||
|
|
||||||
<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
|
<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
|
||||||
requests to replace the sender (SMFIR_CHGFROM) or to append a
|
requests to replace the sender (SMFIR_CHGFROM) or to append a
|
||||||
recipient (SMFIR_ADDRCPT_PAR). When a Milter application supplies
|
recipient (SMFIR_ADDRCPT_PAR). Postfix logs a warning message when
|
||||||
such ESMTP parameters, Postfix will log a warning: </p>
|
a Milter application supplies such ESMTP parameters: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
warning: <i>queue-id</i>: cleanup_chg_from: ignoring ESMTP arguments "<i>whatever</i>"
|
warning: <i>queue-id</i>: cleanup_chg_from: ignoring ESMTP arguments "<i>whatever</i>"
|
||||||
@@ -834,8 +836,8 @@ warning: <i>queue-id</i>: cleanup_add_rcpt: ignoring ESMTP arguments "<i>whateve
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
<li> <p> Postfix 2.3 does not implement requests to replace the
|
<li> <p> Postfix 2.3 does not implement requests to replace the
|
||||||
message body. Milter applications that need this unsupported operation
|
message body. Milter applications log a warning message when they
|
||||||
will log a warning:
|
need this unsupported operation: </p>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
st_optionneg[134563840]: 0x3d does not fulfill action requirements 0x1e
|
||||||
|
@@ -512,7 +512,7 @@ services that accept remote connections. </p>
|
|||||||
</pre>
|
</pre>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<h2><a name="other"> Other measures to off-load zombies </h2>
|
<h2><a name="other"> Other measures to off-load zombies </a> </h2>
|
||||||
|
|
||||||
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
|
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
|
||||||
implements a daemon that handles all connections from "new" clients.
|
implements a daemon that handles all connections from "new" clients.
|
||||||
|
@@ -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 "20090510"
|
#define MAIL_RELEASE_DATE "20090511"
|
||||||
#define MAIL_VERSION_NUMBER "2.7"
|
#define MAIL_VERSION_NUMBER "2.7"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@@ -511,6 +511,7 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
|
|||||||
int alone = 0;
|
int alone = 0;
|
||||||
int zerolimit = 0;
|
int zerolimit = 0;
|
||||||
WATCHDOG *watchdog;
|
WATCHDOG *watchdog;
|
||||||
|
char *oname;
|
||||||
char *oval;
|
char *oval;
|
||||||
char *generation;
|
char *generation;
|
||||||
int msg_vstream_needed = 0;
|
int msg_vstream_needed = 0;
|
||||||
@@ -591,10 +592,11 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
/* XXX Use split_nameval() */
|
/* XXX Use split_nameval() */
|
||||||
if ((oval = split_at(optarg, '=')) == 0)
|
oname = mystrdup(optarg);
|
||||||
|
if ((oval = split_at(oname, '=')) == 0)
|
||||||
oval = "";
|
oval = "";
|
||||||
mail_conf_update(optarg, oval);
|
mail_conf_update(oname, oval);
|
||||||
if (strcmp(optarg, VAR_SYSLOG_NAME) == 0)
|
if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
|
||||||
redo_syslog_init = 1;
|
redo_syslog_init = 1;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
|
@@ -402,6 +402,7 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...)
|
|||||||
int alone = 0;
|
int alone = 0;
|
||||||
int zerolimit = 0;
|
int zerolimit = 0;
|
||||||
WATCHDOG *watchdog;
|
WATCHDOG *watchdog;
|
||||||
|
char *oname;
|
||||||
char *oval;
|
char *oval;
|
||||||
char *generation;
|
char *generation;
|
||||||
int msg_vstream_needed = 0;
|
int msg_vstream_needed = 0;
|
||||||
@@ -482,10 +483,11 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...)
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
/* XXX Use split_nameval() */
|
/* XXX Use split_nameval() */
|
||||||
if ((oval = split_at(optarg, '=')) == 0)
|
oname = mystrdup(optarg);
|
||||||
|
if ((oval = split_at(oname, '=')) == 0)
|
||||||
oval = "";
|
oval = "";
|
||||||
mail_conf_update(optarg, oval);
|
mail_conf_update(oname, oval);
|
||||||
if (strcmp(optarg, VAR_SYSLOG_NAME) == 0)
|
if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
|
||||||
redo_syslog_init = 1;
|
redo_syslog_init = 1;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
|
@@ -413,6 +413,7 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,..
|
|||||||
int alone = 0;
|
int alone = 0;
|
||||||
int zerolimit = 0;
|
int zerolimit = 0;
|
||||||
WATCHDOG *watchdog;
|
WATCHDOG *watchdog;
|
||||||
|
char *oname;
|
||||||
char *oval;
|
char *oval;
|
||||||
char *generation;
|
char *generation;
|
||||||
int msg_vstream_needed = 0;
|
int msg_vstream_needed = 0;
|
||||||
@@ -493,10 +494,11 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,..
|
|||||||
break;
|
break;
|
||||||
case 'o':
|
case 'o':
|
||||||
/* XXX Use split_nameval() */
|
/* XXX Use split_nameval() */
|
||||||
if ((oval = split_at(optarg, '=')) == 0)
|
oname = mystrdup(optarg);
|
||||||
|
if ((oval = split_at(oname, '=')) == 0)
|
||||||
oval = "";
|
oval = "";
|
||||||
mail_conf_update(optarg, oval);
|
mail_conf_update(oname, oval);
|
||||||
if (strcmp(optarg, VAR_SYSLOG_NAME) == 0)
|
if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
|
||||||
redo_syslog_init = 1;
|
redo_syslog_init = 1;
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
|
Reference in New Issue
Block a user