1
$DUH: README,v 1.21 2003/01/22 22:18:23 tv Exp $
5
PMilter requires Perl 5.6.0 or higher. It has not been tested (nor adapted)
6
for 5.005 or earlier. This is not (yet) reflected in the "use" statements
7
for the .pm modules, but will be added in the near future.
9
The documentation is still sparse, so bear with me. You can get the useful
10
docs out by cd'ing to the top level of the source tree and doing a "perldoc
11
PMilter". That doc page contains cross references to the rest of the
12
available documentation (most of it Perl POD docs).
14
PMilter's home page can be found at: http://www.duh.org/pmilter
16
The author can be contacted at: tv@pobox.com / tv@duh.org
20
RELEASE 0.4.0 (22-Jan-2003) (includes changes applied to 0.3.1)
22
* API CHANGE: Module 'connect_break' has gone away and is now
23
replaced by a special case of 'connect_regex' (with ERRMSG set to
26
* Added pluggable logging foundation to PMilter::Server.
28
* Added $ctx->qlog() method for logging a "standard" log message at
29
level LOG_NOTICE, including several predefined values.
31
* Added $ctx->reject() method as a one-stop shop for setting the
32
reply message, logging it, and returning the proper SMFIS_ code.
34
* All prefabricated modules that accept patterns now all accept a
35
regular expression or an arrayref of regular expressions. As a
36
result, "helo_blacklist" is now "helo_regex".
38
* A new package, PMilter::Modules, contains several helper
39
subroutines useful for implementing modules, and for supplying
42
* A new package/object, PMilter::Match::CIDR, provides rapid matching of
43
IPv4 addresses against a list of CIDR patterns.
45
* A new module (received_dnsbl_ip) scans Received: headers to gather
46
IPv4 addresses, then runs them through a DNSBL.
50
RELEASE 0.3.1 (15-Dec-2002)
52
* Bug: PMilter/modules/header_nofrom was returning a 451 and should have
55
* Bug: PMilter/Callbacks.pm had erroneous logic about detecting the last
56
callback for a given element object; it caused SMFIS_ACCEPT to be
57
returned to the next higher level in some situations.
59
* Actually implemented the MAXCHILDREN arg to PMilter::Server::main(), which
60
should have been implemented before (since it was documented).
62
* Removed dangling references to PMilter::Callbacks::SkipConnect. This
63
behavior is now handled by the 'connect_break' module.
65
* Added a SIGINFO handler, which will simply print the number of active
66
child process to STDERR.
70
RELEASE 0.3.0 - Documentation, stability freeze.
72
-> The protocol engine is now in a significantly stable state and this
73
-> is a usable release in the author's opinion. 0.3.x has been put on
74
-> its own CVS branch for maintenance purposes, as needed by users
77
-> Further development will be on the 0.4.0 release, which will include
78
-> major feature improvements.
80
* Consolidated and fixed up PMilter::Callbacks. Now an immutable container
81
(constructed on new() and not changeable).
83
* Made $ctx->getsymval() actually work and keep the right values at the
86
* Added PMilter::DNSBL classes for DNSBL lookups.
88
* Added @INC/PMilter/modules search path for modules included by name.
90
* Added extension methods getglobal() and setglobal() to the context
91
object, allowing communication between different objects in a Callbacks
94
* Removed the select() based timeouts entirely based on several suggestions.
95
Instead, we rely on the MTA to do connection handling; if the MTA is not
96
properly functioning, there's a problem much bigger than milters.
98
* Added docs throughout, including bundled modules at top.
102
RELEASE 0.2.2 - More enhancements and fixes.
104
* Moved auto_getconn() and auto_setconn() into only the Sendmail::Milter
105
compatibility interface. These are specific to the Sendmail MTA, and
106
don't belong in the generic PMilter interface.
108
* Added Sendmail::Milter::sendmail_class() for looking up the contents of
109
a Sendmail class. Good for looking up the contents of class 'w', if
110
desiring a check against "known localhost aliases".
112
* Added PMilter::Session::gethost() and getaddress() to allow retrieval
113
of the connected client's hostname and address outside of the connect
114
callback (without creating several "setpriv" copies).
116
* Now allows insertion of a milter object into a PMilter::Callbacks chain
117
via a scalar (filename of module, no args), or arrayref (first element
118
is name of module, the rest are args to the module).
120
* Added several prefab modules into PMilter/modules/ that make use of the
121
above change to PMilter::Callbacks.
123
* Added new return code, SMFIS_BREAK, which means "global SMFIS_ACCEPT",
124
i.e. propagate all the way up the tree to the root. To stop the
125
propagation, PMilter::Callbacks::Leaf transforms it back to SMFIS_ACCEPT.
127
* Added examples/duh.org.pl, the real configuration being used at duh.org,
128
as a working-config example.
130
* Some code path reliability fixes.
134
RELEASE 0.2.1 - Major bug fix, license change, and other minor changes.
136
* The unpacking of the connect info string has always been wonky, because of
137
issues with Perl's handling of \0 in RE matching. Worked around in
138
PMilter::Session. I haven't seen any 'invalid connect info' errors since.
140
* Now under BSD-style license. I promised man people that I'd change the
141
PMilter license as soon as I started using PMilter myself on a production
142
mail server. Since the requirement is now fulfilled, the license is
143
changed to something less restrictive.
145
* Allow up to 30m (not 30s) for commands being issued from within message
146
context. Since it could take quite a while for commands to arrive after
147
the first RCPT TO: (while the message body is in transit), we don't want
148
to time out so quickly. This will be more flexible/configurable in the
151
* Accept arguments in PMilter::Callbacks->new(); simply a list of milter
152
objects that should be register()ed after the container is created.
153
Allows for chaining syntax when constructing the milter object tree.
156
* Let subclasses of PMilter::Callbacks specify callbacks that should always
157
be called on the container, even if contained milter objects don't use
158
them. This allows for the following:
160
* Added first subclass of PMilter::Callbacks, ...::SkipConnect. This
161
variation on a theme accepts a regex as its first argument to new(), which
162
(if it matches the rDNS-validated hostname or the [square-bracketed] IP
163
address of the host) causes the container to return SMFIS_ACCEPT without
164
calling its contained milter objects.
168
RELEASE 0.2.0 - Feature enhancements and bug fixes.
170
* In 0.1.0, it was possible to register more than one callback via
171
Sendmail::Milter::register(). This has been reverted back to a single
172
top-level instance, and milter chaining is now implemented by the class
173
PMilter::Callbacks. This will pave the way for future boolean-like
174
chaining logic. Technically, PMilter::Callbacks is compatible
175
with the "real" implementation of Sendmail::Milter.
177
* Several fixes related to the differences between message and connection
178
context; in particular, RCPT TO: can be called multiple times with
179
rejection responses (to reject single recipients of a mail that may still
180
be accepted for some recipients).
182
* Refactoring of where some of the user-visible goo is located.
184
* Some usable pod docs added.
188
RELEASE 0.1.0 - First public release.
190
* Mostly implements the Sendmail::Milter 0.18 interface, but somewhat buggy.
192
* Threw most of the original design in the CVS Attic; will look at that