users/heiko/exim.git
17 years agoIncrease DH_BITS in tls-gnu.c from 768 to 1024.
Philip Hazel [Mon, 4 Dec 2006 15:15:00 +0000 (15:15 +0000)]
Increase DH_BITS in tls-gnu.c from 768 to 1024.

17 years agoGive an error for the use of * and *@ with a query-style lookup.
Philip Hazel [Mon, 4 Dec 2006 15:00:19 +0000 (15:00 +0000)]
Give an error for the use of * and *@ with a query-style lookup.

18 years agoDon't set $sender_host_name if forward lookup of name obtained from
Philip Hazel [Mon, 20 Nov 2006 14:29:31 +0000 (14:29 +0000)]
Don't set $sender_host_name if forward lookup of name obtained from
reverse lookup times out.

18 years agoLock out "A-for-A" DNS lookups.
Philip Hazel [Mon, 20 Nov 2006 13:53:44 +0000 (13:53 +0000)]
Lock out "A-for-A" DNS lookups.

18 years agoJori Hamalainen's exiqsumm patch.
Philip Hazel [Mon, 20 Nov 2006 11:57:56 +0000 (11:57 +0000)]
Jori Hamalainen's exiqsumm patch.

18 years agoFix space bug in previous patch for "message" used with "accept".
Philip Hazel [Mon, 20 Nov 2006 11:43:40 +0000 (11:43 +0000)]
Fix space bug in previous patch for "message" used with "accept".

18 years agoexipick version 20061117.2 (bug fixes, feature additions, addresses 4.64-PH/13, 4...
John Jetmore [Fri, 17 Nov 2006 22:27:41 +0000 (22:27 +0000)]
exipick version 20061117.2 (bug fixes, feature additions, addresses 4.64-PH/13, 4.64-PH/43, and 4.64-PH/27)

18 years agoEximstats updates.
Steve Campbell [Thu, 16 Nov 2006 16:21:58 +0000 (16:21 +0000)]
Eximstats updates.

18 years ago 2005-07-26 V1.44 Steve Campbell
Steve Campbell [Thu, 16 Nov 2006 16:16:30 +0000 (16:16 +0000)]
 2005-07-26  V1.44 Steve Campbell
             Use a glob alias rather than an array ref in the generated
             parser. This improves both readability and performance.

 2005-09-30  V1.45 Marco Gaiarin / Steve Campbell
             Collect SpamAssassin and rejection statistics.
             Don't display local sender or destination tables unless
             there is data to show.
             Added average volumes into the top table text output.

 2006-02-07  V1.46 Steve Campbell
             Collect data on the number of addresses (recipients)
             as well as the number of messages.

 2006-05-05  V1.47 Steve Campbell
             Added 'Message too big' to the list of mail rejection
             reasons (thanks to Marco Gaiarin).

 2006-06-05  V1.48 Steve Campbell
             Mainlog lines which have GMT offsets and are too short to
             have a flag are now skipped.

 2006-11-10  V1.49 Alain Williams
             Added the -emptyok flag.

 2006-11-16  V1.50 Steve Campbell
             Fixes for obtaining the IP address from reject messages.

18 years agoApplied a modified version of Brad Jorsch's patch for "message" with
Philip Hazel [Tue, 14 Nov 2006 16:40:36 +0000 (16:40 +0000)]
Applied a modified version of Brad Jorsch's patch for "message" with
"accept".

18 years agoCorrect error in previous patch.
Philip Hazel [Mon, 13 Nov 2006 12:32:58 +0000 (12:32 +0000)]
Correct error in previous patch.

18 years agoAdd timeout to connect() for Unix domain socket in ${readsocket.
Philip Hazel [Mon, 13 Nov 2006 12:29:30 +0000 (12:29 +0000)]
Add timeout to connect() for Unix domain socket in ${readsocket.

18 years agoRename $interface_address and $interface_port as $received_ip_address
Philip Hazel [Mon, 13 Nov 2006 12:07:46 +0000 (12:07 +0000)]
Rename $interface_address and $interface_port as $received_ip_address
and $received_port in an attempt to lessen confusion.

18 years agoError if -q is given more than once.
Philip Hazel [Mon, 13 Nov 2006 11:56:41 +0000 (11:56 +0000)]
Error if -q is given more than once.

18 years agoAdd bitwise logical operators to ${eval:
Philip Hazel [Mon, 13 Nov 2006 11:26:37 +0000 (11:26 +0000)]
Add bitwise logical operators to ${eval:

18 years agoRemove dead PCRE file accidentally left around.
Philip Hazel [Tue, 7 Nov 2006 16:58:39 +0000 (16:58 +0000)]
Remove dead PCRE file accidentally left around.

18 years agoInstall PCRE 6.7 in in place of 6.2.
Philip Hazel [Tue, 7 Nov 2006 16:50:36 +0000 (16:50 +0000)]
Install PCRE 6.7 in in place of 6.2.

18 years agoMake -R and -S do something sensible when combined with -q<time>.
Philip Hazel [Tue, 7 Nov 2006 15:56:17 +0000 (15:56 +0000)]
Make -R and -S do something sensible when combined with -q<time>.

18 years agoTweak a time delay in the test suite.
Philip Hazel [Tue, 7 Nov 2006 15:11:34 +0000 (15:11 +0000)]
Tweak a time delay in the test suite.

18 years agoFix small test buglet.
Philip Hazel [Tue, 7 Nov 2006 14:20:37 +0000 (14:20 +0000)]
Fix small test buglet.

18 years agoStop rewriting addresses as a consequence of CNAMEs, as Exim isn't
Philip Hazel [Tue, 7 Nov 2006 14:13:18 +0000 (14:13 +0000)]
Stop rewriting addresses as a consequence of CNAMEs, as Exim isn't
supposed to do that (it must have crept in accidentally).

18 years agoReturn remote errors for LMTP over pipe (so now it's the same as LMTP
Philip Hazel [Tue, 7 Nov 2006 11:28:05 +0000 (11:28 +0000)]
Return remote errors for LMTP over pipe (so now it's the same as LMTP
over TCP/IP).

18 years agoAdd clearerr(stdin) in -bem code (needed for Darwin).
Philip Hazel [Tue, 7 Nov 2006 11:07:43 +0000 (11:07 +0000)]
Add clearerr(stdin) in -bem code (needed for Darwin).

18 years agoCorrect message_linecount in -bem testing.
Philip Hazel [Tue, 7 Nov 2006 10:28:09 +0000 (10:28 +0000)]
Correct message_linecount in -bem testing.

18 years agoInclude sender address in retry key for 4xx errors.
Philip Hazel [Mon, 6 Nov 2006 15:50:12 +0000 (15:50 +0000)]
Include sender address in retry key for 4xx errors.

18 years agoNo paniclog for ECONNRESET when getsockname() fails.
Philip Hazel [Mon, 6 Nov 2006 11:27:54 +0000 (11:27 +0000)]
No paniclog for ECONNRESET when getsockname() fails.

18 years agoIncorrect test for a running SpamAssassin.
Philip Hazel [Tue, 31 Oct 2006 16:13:48 +0000 (16:13 +0000)]
Incorrect test for a running SpamAssassin.

18 years ago$domain not always set when scanning a domain list.
Philip Hazel [Tue, 31 Oct 2006 16:08:11 +0000 (16:08 +0000)]
$domain not always set when scanning a domain list.

18 years agoAdd warning about missing colon to invalid expansion when it involved
Philip Hazel [Tue, 31 Oct 2006 14:26:34 +0000 (14:26 +0000)]
Add warning about missing colon to invalid expansion when it involved
${if def:h_xxx (overlooked previously).

18 years agoAdded some extra debugging when updating a wait-xxx database.
Philip Hazel [Tue, 31 Oct 2006 12:16:26 +0000 (12:16 +0000)]
Added some extra debugging when updating a wait-xxx database.

18 years agoMinor tidy to test script, and update the README for some omitted
Philip Hazel [Tue, 31 Oct 2006 11:37:47 +0000 (11:37 +0000)]
Minor tidy to test script, and update the README for some omitted
commands.

18 years agoClose writing end of socket for ${readsocket before reading.
Philip Hazel [Tue, 31 Oct 2006 11:14:17 +0000 (11:14 +0000)]
Close writing end of socket for ${readsocket before reading.

18 years agoCorrect ChangeLog (forgot to remove entry when I changed my mind on a
Philip Hazel [Tue, 31 Oct 2006 09:50:09 +0000 (09:50 +0000)]
Correct ChangeLog (forgot to remove entry when I changed my mind on a
fix.)

18 years agoTest tidies (previously overlooked).
Philip Hazel [Tue, 31 Oct 2006 09:39:38 +0000 (09:39 +0000)]
Test tidies (previously overlooked).

18 years ago4.64 TK/01-03
Tom Kistner [Mon, 30 Oct 2006 22:22:50 +0000 (22:22 +0000)]
4.64 TK/01-03

18 years agoBugzilla #401 + #402
Tom Kistner [Mon, 30 Oct 2006 22:06:33 +0000 (22:06 +0000)]
Bugzilla #401 + #402

18 years agoFix too-often retry bug after 4xx with more hosts than hosts_max_retry.
Philip Hazel [Mon, 30 Oct 2006 16:41:04 +0000 (16:41 +0000)]
Fix too-often retry bug after 4xx with more hosts than hosts_max_retry.

18 years agoPrevious fix for concatenated headers wasn't backwards compatible for
Philip Hazel [Mon, 30 Oct 2006 14:59:15 +0000 (14:59 +0000)]
Previous fix for concatenated headers wasn't backwards compatible for
completely empty headers (they are left out).

18 years agoTypo in default configuration: relay_domains should be relay_to_domains.
Philip Hazel [Wed, 25 Oct 2006 08:42:57 +0000 (08:42 +0000)]
Typo in default configuration: relay_domains should be relay_to_domains.

18 years agoFix backwards compatibility bug in named ACL variables.
Philip Hazel [Tue, 24 Oct 2006 15:01:25 +0000 (15:01 +0000)]
Fix backwards compatibility bug in named ACL variables.

18 years agoRemove trailing whitespace from each header before concatenation in
Philip Hazel [Tue, 24 Oct 2006 14:32:49 +0000 (14:32 +0000)]
Remove trailing whitespace from each header before concatenation in
string expansions.

18 years agoAdded -bem option.
Philip Hazel [Tue, 24 Oct 2006 12:56:06 +0000 (12:56 +0000)]
Added -bem option.

18 years agoJohn Jetmore's -Mset patch.
Philip Hazel [Mon, 23 Oct 2006 13:24:21 +0000 (13:24 +0000)]
John Jetmore's -Mset patch.

18 years agoFix crash for verify=helo when no IP address (-bs).
Philip Hazel [Mon, 23 Oct 2006 10:55:10 +0000 (10:55 +0000)]
Fix crash for verify=helo when no IP address (-bs).

18 years agoNote about GnuTLS incompatibility for updates from 4.50 and earlier.
Philip Hazel [Mon, 23 Oct 2006 09:14:50 +0000 (09:14 +0000)]
Note about GnuTLS incompatibility for updates from 4.50 and earlier.

18 years agoFix tls_required and lost_connection retry testss not working.
Philip Hazel [Wed, 18 Oct 2006 08:55:37 +0000 (08:55 +0000)]
Fix tls_required and lost_connection retry testss not working.

18 years agoAdd server_condition to all authenticators, to allow for additional
Philip Hazel [Mon, 16 Oct 2006 15:44:36 +0000 (15:44 +0000)]
Add server_condition to all authenticators, to allow for additional
conditions (and thereby implement authorization).

18 years agoUpdate Dovecot authenticator to (a) lock out tabs (b) add extra
Philip Hazel [Mon, 16 Oct 2006 13:43:21 +0000 (13:43 +0000)]
Update Dovecot authenticator to (a) lock out tabs (b) add extra
parameters "secured" and "valid-client-cert" when relevant.

18 years agoRemove RSA_EXPORT stuff from the test client.c program in the same way
Philip Hazel [Mon, 16 Oct 2006 13:42:19 +0000 (13:42 +0000)]
Remove RSA_EXPORT stuff from the test client.c program in the same way
as it's just been removed from tls-gnutls.c.

18 years agoSome tidying got overlooked in the "removal of RSA_EXPORT" patch.
Philip Hazel [Mon, 16 Oct 2006 13:20:18 +0000 (13:20 +0000)]
Some tidying got overlooked in the "removal of RSA_EXPORT" patch.

18 years agoFlorian Weimer's patch to remove the unwanted and unused support for
Philip Hazel [Mon, 16 Oct 2006 10:58:39 +0000 (10:58 +0000)]
Florian Weimer's patch to remove the unwanted and unused support for
RSA_EXPORT from the GnuTLS code.

18 years agoTidy inconsistency in handling the "reply" argument by removing the
Philip Hazel [Mon, 16 Oct 2006 10:37:19 +0000 (10:37 +0000)]
Tidy inconsistency in handling the "reply" argument by removing the
tests for NULL (only some times did it do it).

18 years agoSort out group syntax problems, particularly with verify=header_sender.
Philip Hazel [Tue, 10 Oct 2006 15:36:50 +0000 (15:36 +0000)]
Sort out group syntax problems, particularly with verify=header_sender.

18 years agoNico Erfurth's patch to use less resources in spool_read_header,
Philip Hazel [Tue, 10 Oct 2006 11:15:12 +0000 (11:15 +0000)]
Nico Erfurth's patch to use less resources in spool_read_header,
slightly modified.

18 years agoFaffing around with tests.
Philip Hazel [Mon, 9 Oct 2006 14:44:53 +0000 (14:44 +0000)]
Faffing around with tests.

18 years agoUpdate tests after reformatting exim -bt message
Philip Hazel [Mon, 9 Oct 2006 14:38:57 +0000 (14:38 +0000)]
Update tests after reformatting exim -bt message

18 years agoArrange to call dns_init() for host_find_byname() as well as for
Philip Hazel [Mon, 9 Oct 2006 14:36:25 +0000 (14:36 +0000)]
Arrange to call dns_init() for host_find_byname() as well as for
host_find_bydns().

18 years agoRenumbered test.
Philip Hazel [Mon, 9 Oct 2006 14:33:37 +0000 (14:33 +0000)]
Renumbered test.

18 years agoDovecot test needs renumbering (shouldn't be run automatically).
Philip Hazel [Mon, 9 Oct 2006 14:32:01 +0000 (14:32 +0000)]
Dovecot test needs renumbering (shouldn't be run automatically).

18 years agoMichael Deutschmann's patch for getting TXT from a specific list when
Philip Hazel [Tue, 3 Oct 2006 15:11:22 +0000 (15:11 +0000)]
Michael Deutschmann's patch for getting TXT from a specific list when
a match is found on a merged list.

18 years agoFix misleading verification output when -v is used with -bv and aliasing
Philip Hazel [Tue, 3 Oct 2006 10:25:55 +0000 (10:25 +0000)]
Fix misleading verification output when -v is used with -bv and aliasing
leads to a mixture of successful and unsuccessful verification.

18 years agoAdded $message_headers_raw to give all the headers without RFC 2047
Philip Hazel [Tue, 3 Oct 2006 08:54:50 +0000 (08:54 +0000)]
Added $message_headers_raw to give all the headers without RFC 2047
decoding.

18 years agoFix typo.
Philip Hazel [Mon, 2 Oct 2006 14:30:29 +0000 (14:30 +0000)]
Fix typo.

18 years agoAdded dovecot authenticator.
Philip Hazel [Mon, 2 Oct 2006 13:38:17 +0000 (13:38 +0000)]
Added dovecot authenticator.

18 years agoAdd comment about {} now being an error in numerical expansion
Philip Hazel [Tue, 26 Sep 2006 14:51:02 +0000 (14:51 +0000)]
Add comment about {} now being an error in numerical expansion
comparisons. The bug that caused it to be treated as {0} has been fixed.

18 years agoFix typo.
Philip Hazel [Tue, 26 Sep 2006 13:51:57 +0000 (13:51 +0000)]
Fix typo.

18 years agoAdd comment about split_spool_directory to the default configuration.
Philip Hazel [Tue, 26 Sep 2006 13:51:00 +0000 (13:51 +0000)]
Add comment about split_spool_directory to the default configuration.

18 years agoChange callout EHLO/HELO from smtp_active_hostname to the helo_data
Philip Hazel [Mon, 25 Sep 2006 11:25:37 +0000 (11:25 +0000)]
Change callout EHLO/HELO from smtp_active_hostname to the helo_data
setting from the transport, when there is one.

18 years agoAdd log_reject_target as an ACL modifier.
Philip Hazel [Mon, 25 Sep 2006 10:14:20 +0000 (10:14 +0000)]
Add log_reject_target as an ACL modifier.

18 years agodirectory_file was missing from OptionLists.txt.
Philip Hazel [Fri, 22 Sep 2006 14:01:12 +0000 (14:01 +0000)]
directory_file was missing from OptionLists.txt.

18 years agoApply patch to fix bug introduced by the last patch to spool_mbox.c
Philip Hazel [Fri, 22 Sep 2006 08:41:59 +0000 (08:41 +0000)]
Apply patch to fix bug introduced by the last patch to spool_mbox.c
(from Nico Erfurth).

18 years agoexipick 20060919.0, support arbitrary acl_ vars from 4.64-PH/09
John Jetmore [Tue, 19 Sep 2006 20:01:13 +0000 (20:01 +0000)]
exipick 20060919.0, support arbitrary acl_ vars from 4.64-PH/09

18 years agoTweak the ACL variable name code to require either a digit or an
Philip Hazel [Tue, 19 Sep 2006 14:31:06 +0000 (14:31 +0000)]
Tweak the ACL variable name code to require either a digit or an
underscore after acl_c or acl_m.

18 years agoApply Jakob Hirsch's patch for arbitrary ACL variable names, tidied up
Philip Hazel [Tue, 19 Sep 2006 11:28:44 +0000 (11:28 +0000)]
Apply Jakob Hirsch's patch for arbitrary ACL variable names, tidied up
just a little bit.

18 years agoCheck for overflow in numeric expansion conditions; forbid negative
Philip Hazel [Mon, 18 Sep 2006 14:49:23 +0000 (14:49 +0000)]
Check for overflow in numeric expansion conditions; forbid negative
values for message_size_limit.

18 years agoInstall the latest Makefile from the Cygwin maintainer.
Philip Hazel [Mon, 18 Sep 2006 11:06:20 +0000 (11:06 +0000)]
Install the latest Makefile from the Cygwin maintainer.

18 years agoApplied Nico Erfurth's refactoring patch to spool_mbox.c.
Philip Hazel [Tue, 12 Sep 2006 10:35:56 +0000 (10:35 +0000)]
Applied Nico Erfurth's refactoring patch to spool_mbox.c.

18 years agoTidy wording on Exim man page.
Philip Hazel [Tue, 12 Sep 2006 10:15:11 +0000 (10:15 +0000)]
Tidy wording on Exim man page.

18 years agoNico Erfurth's patch to refactor mime.c (quoted-printable decoding).
Philip Hazel [Tue, 5 Sep 2006 15:34:40 +0000 (15:34 +0000)]
Nico Erfurth's patch to refactor mime.c (quoted-printable decoding).
Added a small, simple test for quoted-printable decoding.

18 years agoIgnore EPIPE as well as ECONNECT when closing down an SMTP session in
Philip Hazel [Tue, 5 Sep 2006 14:14:32 +0000 (14:14 +0000)]
Ignore EPIPE as well as ECONNECT when closing down an SMTP session in
the daemon, since dropped connections can show as EPIPE in Solaris.

18 years agoAn update to gcc 4 threw up some new uninitialized variable and signed vs
Philip Hazel [Tue, 5 Sep 2006 14:05:43 +0000 (14:05 +0000)]
An update to gcc 4 threw up some new uninitialized variable and signed vs
unsigned compiler warnings.

18 years ago(1) Update version number to 4.64. (2) Ignore callout cached information
Philip Hazel [Tue, 5 Sep 2006 13:24:10 +0000 (13:24 +0000)]
(1) Update version number to 4.64. (2) Ignore callout cached information
that MAIL FROM:<> is rejected when verifying a recipient using a
non-null MAIL address.

18 years agoIn the add_headers option to the mail command in an Exim filter,
Tony Finch [Mon, 21 Aug 2006 11:31:43 +0000 (11:31 +0000)]
In the add_headers option to the mail command in an Exim filter,
there was a bug that Exim would claim a syntax error in any
header after the first one which had an odd number of characters
in the field name.

18 years agoMore 4.63 documentation (noticed an important bit missing at the very exim-4_63
Philip Hazel [Mon, 31 Jul 2006 14:19:31 +0000 (14:19 +0000)]
More 4.63 documentation (noticed an important bit missing at the very
last minute).

18 years agoUpdate filter document for 4.63 release.
Philip Hazel [Mon, 31 Jul 2006 13:28:49 +0000 (13:28 +0000)]
Update filter document for 4.63 release.

18 years agoUpdate reference manual for the 4.63 release.
Philip Hazel [Mon, 31 Jul 2006 13:19:36 +0000 (13:19 +0000)]
Update reference manual for the 4.63 release.

18 years agoAdd { !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} } as another
Philip Hazel [Fri, 28 Jul 2006 11:39:11 +0000 (11:39 +0000)]
Add { !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} } as another
"don't send" delay warning condition by default.

18 years agoAllow (?-i) to work as expected in a (n)wildlsearch key.
Philip Hazel [Thu, 27 Jul 2006 13:50:43 +0000 (13:50 +0000)]
Allow (?-i) to work as expected in a (n)wildlsearch key.

18 years agoExim was not testing for a space following SMTP commands such as EHLO
Philip Hazel [Thu, 27 Jul 2006 11:29:32 +0000 (11:29 +0000)]
Exim was not testing for a space following SMTP commands such as EHLO
that require one. Thus, EHLORHUBARB was interpreted as a valid command.
This bug exists in every version of Exim that I still have, right back
to 0.12.

18 years agoRe-jigged the order of the tests in the default configuration so that
Philip Hazel [Thu, 27 Jul 2006 10:36:34 +0000 (10:36 +0000)]
Re-jigged the order of the tests in the default configuration so that
the tests for valid domains and recipients precede the DNS black list
and CSA tests, on the grounds that those ones are more expensive.

18 years agoMade -oMaa and -oMt work with -bh and -bs to pretend the connection is
Philip Hazel [Thu, 27 Jul 2006 10:13:52 +0000 (10:13 +0000)]
Made -oMaa and -oMt work with -bh and -bs to pretend the connection is
authenticated or an ident call has been made. Suppress the default
values for $authenticated_id and $authenticated_sender (but permit -oMai
and -oMas) when testing with -bh.

18 years agoFixed a number of test suite problems as reported (and partly patched)
Philip Hazel [Wed, 26 Jul 2006 14:39:13 +0000 (14:39 +0000)]
Fixed a number of test suite problems as reported (and partly patched)
by Martin Mrazik.

18 years agonote a caveat about print_topbitchars
Tony Finch [Mon, 24 Jul 2006 11:55:15 +0000 (11:55 +0000)]
note a caveat about print_topbitchars

18 years agoexipick 20060721.2
John Jetmore [Fri, 21 Jul 2006 16:48:42 +0000 (16:48 +0000)]
exipick 20060721.2

18 years agoAdd errno=0 before calling getpwnam() in previous patch.
Philip Hazel [Mon, 17 Jul 2006 09:21:00 +0000 (09:21 +0000)]
Add errno=0 before calling getpwnam() in previous patch.

18 years agoAlain Williams' patch for disabling LDAP referrals when requested.
Philip Hazel [Mon, 17 Jul 2006 09:18:09 +0000 (09:18 +0000)]
Alain Williams' patch for disabling LDAP referrals when requested.

18 years agoAdd a call to PQsetNoticeProcessor() to catch PostgreSQL "notices" and
Philip Hazel [Fri, 14 Jul 2006 14:42:57 +0000 (14:42 +0000)]
Add a call to PQsetNoticeProcessor() to catch PostgreSQL "notices" and
thereby stop them being written to stderr (the default).

18 years agoReset the locale after initializing Perl, as well as after calling a Perl
Philip Hazel [Fri, 14 Jul 2006 14:32:08 +0000 (14:32 +0000)]
Reset the locale after initializing Perl, as well as after calling a Perl
function (which it did previously).

18 years agoAdd PQsetClientEncoding(conn, "SQL_ASCII") to the pgsql module.
Philip Hazel [Fri, 14 Jul 2006 14:21:27 +0000 (14:21 +0000)]
Add PQsetClientEncoding(conn, "SQL_ASCII") to the pgsql module.

18 years agoAdd test for negated item as a retry rule pattern.
Philip Hazel [Fri, 14 Jul 2006 14:06:44 +0000 (14:06 +0000)]
Add test for negated item as a retry rule pattern.