Commit Graph

597 Commits

Author SHA1 Message Date
Matt Simerson
db3d27ba4e removed check_badrcptto_patterns: merged into check_badrcptto 2013-08-05 15:01:47 -07:00
Matt Simerson
7ff2d050f3 initial import - based on my qpsmtpd fork
which will merge into the main branch fairly easily
2013-08-05 15:01:47 -07:00
Matt Simerson
4e2ae484a2 Merge pull request #15 from msimerson/early
consolidated chunks of code duplicated 4x into log_and_deny and log_and_...
2013-08-05 12:33:42 -07:00
Matt Simerson
fd646b0d27 Merge pull request #29 from msimerson/helo
Helo
2013-08-05 12:30:59 -07:00
Matt Simerson
ba38da87fb helo: tweak POD language
also mention the connection notes in the POD
2012-06-15 12:44:33 -04:00
Matt Simerson
44db1fecf6 helo: loosen up matching DNS requirements
added X-HELO header to message
added timeout option
quieted down debug logging
2012-06-13 17:49:25 -04:00
Matt Simerson
74ae957936 helo: new plugin
helo - validate a HELO message delivered from a connecting host.

Includes the following tests:

	is_in_badhelo
	invalid_localhost
	is_plain_ip
	is_address_literal [N.N.N.N]
	is_forged_literal
	is_not_fqdn
	no_forward_dns
	no_reverse_dns
	no_matching_dns
2012-06-11 22:27:01 -04:00
Matt Simerson
e6ea23c92f relay: clean up trailing whitespace 2012-06-04 03:35:01 -04:00
Matt Simerson
22c0f23226 imported karma_tool 2012-06-04 03:34:59 -04:00
Matt Simerson
99c0aa8abd new karma plugin 2012-06-04 03:34:47 -04:00
Matt Simerson
7713333d31 p0f: POD improvements 2012-06-04 03:34:47 -04:00
Matt Simerson
c61fb67e9b checkpassword: remove newlines that appeared 2012-06-04 03:34:47 -04:00
Matt Simerson
1a1dcc3e53 auth: eval 'use' so plugins can be enabled by default
and tested.
2012-06-04 03:34:47 -04:00
Matt Simerson
5a8a9be26c make SPF level 2 a little more lenient 2012-06-04 03:34:47 -04:00
Matt Simerson
2727b8529c relay: added note to UPGRADING, dates to plugin author 2012-06-04 03:34:47 -04:00
Matt Simerson
974f1a95e8 new relay plugin, with tests!
replaces functionality of previous 3 relay plugins
2012-06-04 03:34:47 -04:00
Matt Simerson
bf5f1db436 delete 3 relay plugins 2012-06-04 03:34:47 -04:00
Matt Simerson
a69cd6bf64 basicheaders: adding missing semicolon, fixed POD error 2012-06-04 03:34:47 -04:00
Matt Simerson
1e26d1f5ec earlytalker: add explicit reject_type perm
and replace whitelist with is_immune
2012-06-04 03:26:24 -04:00
Matt Simerson
57a0e4ba7b updated plugins to use QP::Plugins::is_immune 2012-06-04 03:26:16 -04:00
Matt Simerson
2a371a2c6e consolidated chunks of code duplicated 4x into log_and_deny and log_and_pass
in apr_*_handler subs, return DECLINED when connection is not available to read (like during tests)

added 23 tests

deprecate action argument
	'action log' did nothing, better logging controls available with loglevel
	'action deny'  ->  reject 1
	'action denysoft' =>  reject 1 reject_type temp

POD
use head2 for config options (instead of over, item, back)
added loglevel section
updated for replacement of action with reject options
2012-06-04 03:23:14 -04:00
Matt Simerson
c2d23306dc badrcptto: remove spurious semicolon 2012-06-04 00:01:30 -07:00
Matt Simerson
086b31c546 connection_time: make compatible with tcpserver deployment 2012-06-04 00:00:37 -07:00
Ask Bjørn Hansen
0e2384cceb Make all plugins use $self->connection rather than $self->qp->connection
Merge remote-tracking branch 'msimerson/connect'

Conflicts:
	plugins/async/require_resolvable_fromhost
	plugins/require_resolvable_fromhost
2012-06-03 23:53:43 -07:00
Matt Simerson
0a16621f02 connection consistency
-  $self->qp->connection->notes
+  $self->connection->notes

and all tests pass.
2012-06-02 00:46:33 -04:00
Matt Simerson
e8e47ad93b move 'use ParaDNS' into register and eval it
so eventually, plugin tests can run against it, if ParaDNS can be loaded
2012-05-23 23:39:43 -04:00
Matt Simerson
2f49cafcd6 resolvable_fromhost: refactored, added: POD, tests, reject, reject_type 2012-05-23 23:39:43 -04:00
Ask Bjørn Hansen
9e239fd83d Merge pull request #16 from msimerson/geoip
Geoip plugin improvements
2012-05-23 15:39:10 -07:00
Matt Simerson
23f06fde7a basicheaders: removed deprecated argument warning 2012-05-23 17:56:06 -04:00
Matt Simerson
09935b0bf6 basicheaders: added whitelist support
because alerts.etrade.com doesn't set a Date header in alerts
2012-05-23 17:12:26 -04:00
Matt Simerson
80b94eb47a removed newline 2012-05-22 18:14:10 -04:00
Matt Simerson
2dcd34467e geoip: eval loading of Geo::IP, tests, enabled in config
eval Geo::IP and log an error if missing
added 2 tests
enabled in config/plugins
2012-05-22 17:40:02 -04:00
Matt Simerson
521aa4919f basicheaders, add reject option, loglevel
added reject option
document the existence of the loglevel option
factored date validity tests into their own sub
added tests
improved POD
2012-05-21 21:30:02 -04:00
Matt Simerson
9d0c2f8469 dnsbl, POD tweaks, DENY type tests
consolidated POD at top of file
added example options to reject_type POD head
added an example loglevel entry

consolidated DENY[SOFT|DISCONNECT] logic into get_reject_type
added tests for get_reject_type
2012-05-21 17:07:37 -04:00
Matt Simerson
ed8ce150be domainkeys: fix failing tests
the previous DK commit moved the 'use Mail::DomainKeys::*' stuff into an eval. The right idea, but tests still fail because I forgot to remove the bare 'use' lines.
2012-05-21 12:17:32 -07:00
Matt Simerson
41550c2681 domainkeys: only register hooks if Mail::DomainKeys is loadable 2012-05-21 05:59:44 -04:00
Matt Simerson
51486d0b04 SPF plugin: refactored, tests, new config option
added POD description of spfquery note

changed spf_deny -> reject  (and offered 4 more options, see POD for reject)
	backwards compatible with old config settings
	replicates qmail-smtpd SPF patch behavior

improved logging (again)

uses a stringy eval 'use Mail::SPF' in the register sub. If missing, warn and log the error, and don't register any hooks. This is much nicer error than the current, "*** Remote host closed connection unexpectedly." broken mail server that results from enabling the SPF plugin without Mail::SPF installed.

background: I noticed I was deferring valid emails with the SPF plugin at 'spf_deny 1', and without changing the code, there wasn't a way to change how ~all records were handled. This provides that flexibility.
2012-05-21 04:19:45 -04:00
Matt Simerson
edacbf914c anglebrackets: emit log entry when change made 2012-05-20 23:41:15 -07:00
Matt Simerson
691955c60f dnsbl: fixed path to docs/logging.pod 2012-05-20 23:41:09 -07:00
Matt Simerson
1c7d26ecca dnsbl: added log messages, prefixes, additional args
instead of a positional arguments, used named arguments (backwards compatible)
added a couple log message prefixes
removed some trailing whitespace
updated POD
2012-05-20 23:40:23 -07:00
Matt Simerson
5e7568fe71 earlytalker: prefix messages with result keywords 2012-05-20 23:40:15 -07:00
Matt Simerson
4c6054c9fc vpopmaild: logging improvements
added a couple logging calls
prefixed others with pass/skip/fail keywords
2012-05-20 23:40:11 -07:00
Matt Simerson
49dc8bc117 basicheaders: added log messages, tests, named args
added log messages at each exit point
added tests
added reject_type option (defer -vs- deny)
added named argument parsing
2012-05-20 23:39:54 -07:00
Matt Simerson
f37fba7c2b badrcptto: merged plugins, refactored, tests
merged badrcptto_pattern into badrcptto
refactored into smaller methods
added unit tests for each method
2012-05-20 23:39:38 -07:00
Matt Simerson
19927a117e spamassassin: added spam status to log messages
added additional values to tests, to suppress test warnings
2012-05-20 23:39:03 -07:00
Matt Simerson
c3d1f6b16e p0f: tests, tests, tests, backward compat
minor changes to facilitate testing
improved error reporting of several failures
added p0f v2 compatibility to p0f v3 results: in addition to all the newer values, also report the old ones too.
2012-05-20 23:38:48 -07:00
Matt Simerson
25a099e20b dspam: added check for autolearn
don't try to use autolearn if it's not set
added tests that exercise and exorcise the bug
2012-05-20 23:38:42 -07:00
Matt Simerson
9b8c5a1be4 rcpt_ok: refactored and added tests 2012-05-20 23:37:37 -07:00
Matt Simerson
c4b8a7a395 hosts_allow: added logging, POD, deploy notes
added LOGINFO logging for denials, and LOGDEBUG for other results
added SEE ALSO pod
improved readability
2012-05-20 23:37:33 -07:00
Matt Simerson
35e1ce9883 consolidate auth logic into Qpsmtpd::Auth
These 3 auth plugins all have a data store they fetch the reference
password or hash from. They then match the attemped password or hash
against the reference. This consolidates the latter portion (validating
the password/hash) into Auth.pm.

* less duplicated code in the plugins.
* Pass validation consistently handled for these 3 plugins.
* less work to create new auth plugins

Also caches the CRAM-MD5 ticket. It could also cache user/pass info if
this was desirable.
2012-05-20 23:37:06 -07:00
Matt Simerson
6b9881c32e greylisting, refactored and many changes
fixed the vestiges of old plugin name 'denysoft_greylisting'

added ability to bypass greylisting based on geoip

deprecated 'mode [denysoft | testonly | off]
	off wasn't useful
	testonly & denysoft replaced by reject [ 0 | 1 ]

renamed DB from denysoft_greylist to greylist.dbm. Will use existing/legacy DB if present.

added DB pruning feature. Automatically prune the DB when qpsmtpd registers the plugin. Perhaps this should be a config option to enable?

added DB upgrade feature. Convert dotted quad IP addresses in DB to integers. Makes greylisting IPv6 compatible, since DB records are colon delimited.

exempt TLS connections from greylisting. The vast majority (perhaps all) of the SMTP clients that request encryption to my server are legit. We could add a config option for this, but this plugin already has a multitude of config options.

refactored much of the greylisting method into discreet subs

added 30 tests

added additional DEBUG level logging for p0f matches

POD changes:
	replaced over, item N, back, with head2 (better formatted output)
	better describe the current behavior of the plugin (some past behaviors no longer exist)
	added TRIPLET section with example
	added loglevel section
2012-05-20 23:35:46 -07:00
Matt Simerson
5e76d66c66 count_unrecognized_commands
simplified logic in a couple places
consolidated duplicated message
added 4 tests
2012-05-20 23:34:58 -07:00
Matt Simerson
74125300da connection_time:
had single positional argument for loglevel,
  switched to named args which inherits the more flexible loglevel

shortened logging line
 before:   connection_time: Connection time from 66.118.151.187: 3.046 sec.
 after:    connection_time: 3.046 s.
2012-05-20 23:34:26 -07:00
Matt Simerson
19c924d13c dspam bug fix for messages over max size
needs to return DECLINED instead of undef.
2012-05-08 22:37:58 -07:00
Matt Simerson
b53454730d shebang fix for tls_cert (standalone script) 2012-05-07 12:28:59 -07:00
Matt Simerson
319391affe auth_ldap: added logging
whitespace changes (stinkin windows newline chars)
2012-05-07 09:57:41 -07:00
Matt Simerson
35f26c23bb spf plugin, added logging 2012-05-07 09:56:37 -07:00
Matt Simerson
fda2f4a730 auth_cvm_unix_local: log entries, strict 2012-05-07 09:55:16 -07:00
Matt Simerson
8103c5a132 added country name to GeoIP plugin
and removed redundant words from log entries
2012-05-07 09:54:31 -07:00
Matt Simerson
57d72b3cb4 auth_vpopmail_sql, refactor, log, tests
added strict and warnings pragma
refactored
added tests
added more logging
standard log prefixes
tests run pretests to assure tests can succeed
2012-05-07 09:53:03 -07:00
Matt Simerson
adbbfe6f67 auth_vpopmail: refactored, added tests, logging
added more logging
standard log prefixes
tests run a pretest to make sure tests have a chance to succeed
2012-05-07 09:52:46 -07:00
Matt Simerson
9059529325 authdeny: added standard log prefix 2012-05-07 09:51:24 -07:00
Matt Simerson
a1c8462557 moved warn plugin POD to top, merged with # comments 2012-05-07 09:50:43 -07:00
Matt Simerson
54f1a11b46 added logging and tests to auth_checkpassword 2012-05-07 09:47:15 -07:00
Matt Simerson
a1b073cfe2 refactored dnsbl, sprinkling logs and tests on it 2012-05-06 16:21:09 -07:00
Matt Simerson
a6e664ce83 Altered SASL method to include the mechanism in log entries.
removed auth method from return calls in all auth plugins. The caller knows the mechanism already. In the code, the difference looks like this:

before:
        or return (DENY, "authcvm/$method");
after:
        or return (DENY, "authcvm");

Added debug level log entries in auth_vpopmaild

Conflicts:

	plugins/auth/auth_vpopmail_sql
2012-05-06 16:20:25 -07:00
Matt Simerson
205120f26f dspam: a batch of improvements:
expanded POD
cleaned up stray EOL spaces
added lots of logging, with standardized [ pass | fail | skip ] prefixes
added reject_type option
use split for parsing dspam headers
use SA note instead of parsing headers
added reject = agree option
store & fetch dspam results in a note
2012-05-06 16:18:38 -07:00
Matt Simerson
d644c24c83 spamassassin updates
refactored into small subs with unit tests.
parse SA header with split instead of regexp (more reliable)
store SA results in a 'spamassassin' transaction note
add strict and warnings pragma
renamed reject_threshold -> reject (backwards compatible)
added relayclient skip option and POD. Skips SA processing when relayclient is set
added MULTIPLE RECIPIENT BEHAVIOR topic to POD
2012-05-06 16:18:22 -07:00
Matt Simerson
5285774285 refactored Qpsmtpd::Auth::SASL
unit tests for new methods are in t/auth.t

added PLAIN and LOGIN tests in auth_flat_file

Most tests are disabled unless an interactive terminal is detected and $ENV{QPSMTPD_DEVELOPER} is set.
2012-05-06 16:17:02 -07:00
Matt Simerson
5ec9695b94 domainkeys: added reject & reject_type options.
backwards compatible with previous warn_only option.

added additional logging

refactored out a couple new subs.

minor changes: added strictures, warnings, moved 'use' statements to top of code
2012-05-06 16:09:41 -07:00
Matt Simerson
0c7ee4941b added logging and tests to check_badmailfrom
refactored several checks out of hook_mail and added LOGDEBUG

added tests for is_immune method
2012-05-06 16:08:28 -07:00
Matt Simerson
dd5cccd49f converted comments to POD in check_relay plugin 2012-05-06 16:06:24 -07:00
Matt Simerson
44ae52818e added vpopmail_sql db connect error handling.
Conflicts:

	plugins/auth/auth_vpopmail_sql
2012-05-06 16:05:28 -07:00
Matt Simerson
219392590e make authdeny POD docs match plugin name
I would rather the plugin were named auth_deny as the POD has, but renaming plugins is currently a sticky mess due to backwards compatibility.
2012-05-06 16:02:56 -07:00
Matt Simerson
1910fabf0e badmailfromto: added strictures, tests, and
rearranged portionsn of logic for ease of reading
2012-05-06 16:02:43 -07:00
Matt Simerson
c3626f2123 in log entries, print hook name first
so log entries look like this:

86553 (connect) ident::geoip: US, United States
86553 (connect) ident::p0f: Windows 7 or 8
86553 (connect) check_earlytalker: remote host said nothing spontaneous, proceeding

instead of this:

86553 ident::geoip: (connect): US, United States
86553 ident::p0f: (connect) Windows 7 or 8
86553 check_earlytalker: (connect): remote host said nothing spontaneous, proceeding

Conflicts:

	plugins/logging/warn
2012-05-06 16:00:58 -07:00
Matt Simerson
6031e49da8 improved readability of default logging logic 2012-05-06 15:59:49 -07:00
Matt Simerson
2b1428af7e moved POD to top of file
all but 3 plugins have their POD at the top of the file. Bring these little lost sheep into the barn.
2012-05-06 15:46:51 -07:00
Pim van den Berg
8f7494f0cb spf: exit relayclients while loop when client_ip doesnt match
Checking an invalid address kept looping.
2012-04-30 22:20:00 -07:00
Pim van den Berg
2ef465e7aa spf: remove DENYSOFT on SPF softfail
With a DENYSOFT (450) the sender will keep trying to deliver the e-mail.
It makes no sense.

This commit also makes it compatible again with the plugin from before commit:
02912 [rewrote sender_permitted_from]
2012-04-30 22:19:54 -07:00
Ask Bjørn Hansen
a23d4b3da9 Fix 01-syntax test failures
Exclude some tests with dependencies.

Remove -T from perl line in plugins
This makes it harder to test with PERL5LIB/perlbrew etc
2012-04-29 01:36:01 -07:00
Matt Simerson
d8467d784b Made greylisting plugin log a little less by default 2012-04-29 00:44:02 -07:00
Matt Simerson
0084986115 refactored p0f plugin, added p0f v3 support 2012-04-29 00:41:15 -07:00
Matt Simerson
368ce9401b merged check_badmailfrom_patterns into check_badmailfrom 2012-04-29 00:40:02 -07:00
Matt Simerson
102e068297 added dspam plugin 2012-04-29 00:38:28 -07:00
Matt Simerson
318c9ed4f2 applied greylisting NFSLock patch
Issue #1 on Google issue tracker. The patch was 'accepted' by Ask in 2007, but never applied.
2012-04-29 00:32:52 -07:00
Matt Simerson
7c2e37ff20 added pod DESC to dont_require_anglebrackets 2012-04-29 00:25:19 -07:00
Matt Simerson
dbaa9dbd6c POD corrections, additional tests, plugin consistency
on files in plugins dir:
  fixed a number of POD errors

  formatted some # comments into POD

  removed bare 1;  (these are plugins, not perl modules)
    most instances of this were copy/pasted from a previous plugin that had it

  removed instances of # vim ts=N ...
    they weren't consistent, many didn't match .perltidyrc

  on modules that failed perl -c tests, added 'use Qpsmtpd::Constants;'

Conflicts:

	plugins/async/check_earlytalker
	plugins/async/dns_whitelist_soft
	plugins/async/dnsbl
	plugins/async/queue/smtp-forward
	plugins/async/require_resolvable_fromhost
	plugins/async/rhsbl
	plugins/async/uribl
	plugins/auth/auth_checkpassword
	plugins/auth/auth_cvm_unix_local
	plugins/auth/auth_flat_file
	plugins/auth/auth_ldap_bind
	plugins/auth/auth_vpopmail
	plugins/auth/auth_vpopmail_sql
	plugins/auth/authdeny
	plugins/check_badmailfromto
	plugins/check_badrcptto_patterns
	plugins/check_bogus_bounce
	plugins/check_earlytalker
	plugins/check_norelay
	plugins/check_spamhelo
	plugins/connection_time
	plugins/dns_whitelist_soft
	plugins/dnsbl
	plugins/domainkeys
	plugins/greylisting
	plugins/hosts_allow
	plugins/http_config
	plugins/logging/adaptive
	plugins/logging/apache
	plugins/logging/connection_id
	plugins/logging/transaction_id
	plugins/logging/warn
	plugins/milter
	plugins/queue/exim-bsmtp
	plugins/queue/maildir
	plugins/queue/postfix-queue
	plugins/queue/smtp-forward
	plugins/quit_fortune
	plugins/random_error
	plugins/rcpt_map
	plugins/rcpt_regexp
	plugins/relay_only
	plugins/require_resolvable_fromhost
	plugins/rhsbl
	plugins/sender_permitted_from
	plugins/spamassassin
	plugins/tls
	plugins/tls_cert
	plugins/uribl
	plugins/virus/aveclient
	plugins/virus/bitdefender
	plugins/virus/clamav
	plugins/virus/clamdscan
	plugins/virus/hbedv
	plugins/virus/kavscanner
	plugins/virus/klez_filter
	plugins/virus/sophie
	plugins/virus/uvscan
2012-04-29 00:00:10 -07:00
Robert
61de599c1b Normalize #! lines on all plugins
find . -type f | xargs -n1 perl -pi.bak -0777 -e '$want = "#!perl -Tw"; s/\A#!.*\n/$want\n/; s/\A([^#])/$want\n\1/s'
2012-04-28 20:41:31 -07:00
Matt Simerson
651ca986ff don't print GeoIP country if not defined
If we don't get a result from the lookup, all we know is that we didn't get a result. Maybe an error, maybe the IP not in the database.
2012-04-28 20:19:18 -07:00
Matt Simerson
821b182081 fixed spelling error, added spf code to notes 2012-04-28 20:15:36 -07:00
Matt Simerson
5dfc90acf3 fixed POD formatting 2012-04-28 20:13:24 -07:00
Matt Simerson
1701406f78 suppress log error when $user unset
test for and return earlier when a null sender is encountered.
Prevents using an undefined variable.
2012-04-28 20:08:17 -07:00
Matt Simerson
ed8eca0a63 fixed failing auths to auth/vpopmaild, added tests
Apparently the format of vpopmaild responses has been expanded and the responses
are conditional.

* Replaced the 'sometimes works' eq comparison with a regexp that always works.
* added tests for all 3 vpopmail plugins
* added cram-md5 auth support to auth_vpopmaild.
2012-04-07 17:52:44 -04:00
Matt Sergeant
5200244031 Fix STARTTLS vulnerability for async 2011-06-02 12:57:50 -04:00
Peter J. Holzer
b7668c0468 temp_resolver_failed is a transaction note
The mail hook sets a transaction note 'temp_resolver_failed', but the
 rcpt hook queried a connection note of the same name (which didn't
 exist, of course).
 Now it queries the transaction note.
2011-01-03 12:39:57 -08:00
Charlie Brady
24d09fa4a9 Patch: FATAL PLUGIN ERROR [check_basicheaders]: ...
check_basicheaders fails if there are no headers at all:

http://bugs.contribs.org/show_bug.cgi?id=6345
2010-11-13 18:04:02 -08:00
Hanno Hecker
f9399950f3 plugins/rcpt_map cleanup
* enforce having a "domain" parameter
* unique default message (missing dot added)
2010-09-17 15:25:19 +08:00
Hanno Hecker
7bfad42ac9 new plugin rcpt_map
Check recipients from a postfix style map. The valid return codes are of course
qpsmtpd constants. By storing the addresses in a %hash, this is much faster
for fixed addresses than using the rcpt_regexp plugin just with fixed strings.
This plugin handles only one domain per plugin instance. Use the :N suffix for
the plugin if you need several domains mapped.
2010-09-17 15:25:18 +08:00
jaredj
295474503f Add support for multiple postfix cleanup sockets
The current postfix-queue plugin allows the administrator to set a
single path to a local postfix cleanup socket file from the plugin
'command line'.  This adds a 'cleanup_sockets' configuration directive
that can contain a list of paths as well as host/port combinations
pointing to postfix cleanup services, which will be tried in the order
that they appear.  Not yet tested.
2010-09-15 14:32:54 +08:00
Matt Simerson
d0c9b7cbe5 corrected email address 2010-07-25 22:31:19 -07:00
Robert
803a320127 ignore search path in DNS lookups
2.  If the name doesn't end in a dot then append each item in the search list to the name.
           This is only done if dnsrch is true.

triggered by..

From: Charlie Brady <charlieb-qpsmtpd@budge.apana.org.au>
Subject: [BUG] Default search path used in require_resolvable_fromhost
Date: Sat, 17 Jul 2010 16:24:42 -0400 (EDT)
Message-ID:
 <Pine.LNX.4.64.1007171623040.17109@e-smith.charlieb.ott.istop.com>

http://bugs.contribs.org/show_bug.cgi?id=5808

 Jesper Knudsen      2010-03-01 01:29:10 MST

When using the require_resolvable_fromhost plugin for qpsmtpd I noticed
that mails from user@localhost.localdomain was actually getting through
this filter. I finally found out that the plugin has a bug that causes it
to insert default search path if it cannot find the domain. This means in
my case that localhost.localdomain was then tried resolved as
localhost.localdomain.swerts-knudsen.dk and since I have a wilcard CNAME
was resolved as my public IP.

Since this plugin is only enabled for public interface the fix is to set
the "dnsrch" flag when creating the Net::DNS object.

In require_resolvable_fromhost:
my $res = Net::DNS::Resolver->new (
                                   dnsrch => 0
                                   );
2010-07-25 21:47:25 -07:00
Johan Almqvist
e2ee6f13e5 new plugin check_badmailfrom_patterns
Signed-off-by: Robert <rspier@pobox.com>
2010-07-11 17:29:24 -07:00
Robin Bowes
0d2b724b93 Check for the exact string resonses from vpopmaild rather than using regexes 2010-05-12 23:25:09 -07:00
Matt Simerson
cc2d8ccca6 added local_ip option to p0f plugin
(updated patch against rspier/qpsmtpd)

The p0f plugin defaulted to binding to TCPLOCALIP, which doesn't work
when the mail server is running behind a firewall with a private IP. If
the local_ip option is set in the config file, it overrides TCPLOCALIP.

Added POD documentation for local_ip option and p0f general usage

Signed-off-by: Robert <rspier@pobox.com>
2010-05-11 21:16:56 -07:00
Matt Simerson
671a6953b0 add TCPLOCAL* variables to $qp->connection
(patch remade against latest rspier/qpsmtpd)

added remote_port, local_ip, local_port, and local_host to $qp->connection, as the p0f plugin relies on it.
added notes to TcpServer.pm and the p0f plugin noting the dependence, and the lack of support for models other than tcpserver.

Signed-off-by: Robert <rspier@pobox.com>
2010-05-11 21:15:57 -07:00
Matt Simerson
0291260284 rewrote sender_permitted_from
rewrote the plugin using Mail::SPF, which is the replacement for Mail::SPF::Query (by the same author).  The two plugins are mutually exclusive and SpamAssassin expects to have Mail::SPF available.

Signed-off-by: Robert <rspier@pobox.com>
2010-05-11 21:13:13 -07:00
Matt Simerson
b1c3d2f333 added auth_vpopmail plugin
added auth_vpopmail plugin, using the perl-vpopmail module
added VPOPMAIL auth methods description to docs/authentication
added SEE ALSO section to each module, noting the VPOPMAIL description

Signed-off-by: Robert <rspier@pobox.com>
2010-05-11 21:11:42 -07:00
Matt Simerson
8b892c33ad fix copy/paste error in auth_flat_file
correct copy/paste error, where auth_flat_file methods were named authsql in auth_flat plugin

Signed-off-by: Robert <rspier@pobox.com>
2010-05-11 21:08:50 -07:00
Robin Bowes
febdb001c6 new plugin auth_vpopmaild
Signed-off-by: Robert <rspier@pobox.com>
2010-05-10 21:02:46 -07:00
Matt Simerson
0ae24edc55 updates to auth_vpopmail_sql module
updates to auth_vpopmail_sql module
 - moved vpopmail database parameters into config files
 - added LIMITATIONS section to POD, noting no support for alias domains
 - renamed sub from authsql (too generic) to auth_vmysql

Signed-off-by: Robert <rspier@pobox.com>
2010-05-10 20:51:14 -07:00
Matt Simerson
fbbf43ad15 added auth_checkpassword plugin
New and improved!
With POD! (because JP said so: http://www.nntp.perl.org/group/perl.qpsmtpd/2005/06/msg3145.html)
Includes usage notes and a perl script useful for diagnosing a checkpassword program.

Signed-off-by: Robert <rspier@pobox.com>
2010-05-10 20:50:43 -07:00
Matt Simerson
e8cb1c3e94 added definedness test to $local_port as it was emitting errors to to not being defined. My previous commit to TcpServer.pm fixed that problem.
Signed-off-by: Robert <rspier@pobox.com>
2010-05-09 23:28:15 -07:00
Matt Simerson
5f81fd7925 remove vestiges of a bygone RCS 2010-05-09 23:22:13 -07:00
Robert
e37f14b9a6 microoptimizations - replace regex with lc eq 2010-05-09 22:45:59 -07:00
Steve Kemp
1002d0dd56 new plugin - check_bogus_bounce
The current status file, in git, has the following entry:

  -plugin to reject mails from <> if it has multiple recipients.

  I hereby submit my plugin to handle this case for possible inclusion,
 under the same terms as the current qpsmtpd release.

  The plugin is available here:

    http://www.steve.org.uk/Software/qpsmtpd/check_bogus_bounce/

  Please find patch against git head below, adding the file and removing
 the TODO line from the status file.

Signed-off-by: Robert <rspier@pobox.com>
2010-05-09 22:37:13 -07:00
Matt Simerson
68ecedd1ac added ClamAV version to the X-Virus-Checked header
Signed-off-by: Robert <rspier@pobox.com>
2010-05-04 14:23:03 -07:00
Devin Carraway
73eb9012bd Header check config/logical-inversion fix
Jost Krieger pointed out that the documentation for the header check called
for a config_headers, but the code actually implemented scan_headers.  Updated
to accept either.  Also the condition for actually checking/skipping the
headers was inverted.

Also whitespace fixes.
2010-02-20 11:31:36 -08:00
lnedry
3e36ab55af Moved DENYSOFT for temp_resolver_failed to the RCPT TO hook. 2010-02-13 16:29:56 -07:00
Devin Carraway
3889821d16 Use BSMTP response code; misc cleanups
Exim's BSMTP interface will indicate the SMTP response to the exchange;
actually use it rather than assuming all errors are 400-class soft ones.

Tolerate $transaction->header returning undef (since it evidently can under
some conditions).

Convert a few errant tabs to spaces.

Fix vi modeline.

Signed-off-by: Robert <rspier@pobox.com>
2009-12-23 00:02:04 -08:00
Ask Bjørn Hansen
59da4e4944 Fix typo in default clamav configuration name 2009-11-04 22:36:07 -08:00
Robert
b72c4b0b86 Add config example 2009-11-04 21:44:43 -08:00
Robert
de3fbb565f Rename spamsubjectprefix to subject_prefix. Add docs. 2009-11-04 21:43:38 -08:00
Jonathan Martens
48d1a5b9fe Custom spam tag subject munging in spamassasin plugin
Hi all!

I have written a patch to allow the spamassasin plugin to have a custom
spam tag read in from a configuration file as opposed to the default ***
SPAM *** that is hard coded.

When the configuration file (spamsubjectprefix) is not defined or empty
the default value still applies, if it is provided the value from the
configuration file is used.

Any change this can be considered for implementation as we would really
like to have it for SME Server.

Kind regards,

Jonathan

Signed-off-by: Robert <rspier@pobox.com>
2009-11-04 21:38:57 -08:00
Hinrik Örn Sigurðsson
a5ecd41e72 Allow hyphens in the 1st argument to queue/maildir
This is to allow some perfectly reasonable path names like
/var/spool/qpsmtpd-maildir, etc.
2009-09-15 17:24:34 +00:00
Jared Johnson
b130e6a59e Log even when we aren't in a transaction
This should allow the logging/file plugin to log even if it isn't called from
within a transaction
2009-08-14 14:29:15 -07:00
Ask Bjørn Hansen
eb27828f8b Merge patches from SMEServer (thanks Filippo!) 2009-07-20 08:36:46 -07:00
Shad L. Lords
52a1ba8deb Temporary deny if clamd is not running 2009-07-20 13:13:51 +02:00
Jonathan Martens
b3c5195b64 Modify plugins/virus/clamav option for ClamAV 0.95 (no-summary) 2009-07-20 13:07:45 +02:00
Charlie Brady
f4eb90cba3 Fix spamassassin plugin log noise if spam score is 0.0 2009-07-20 13:02:38 +02:00
Charlie Brady
a138bcf5a4 Disconnect hosts in rhsbl 2009-07-20 12:59:32 +02:00
Robert
d6154ab945 don't worry about trailing whitespace in reason 2009-06-23 22:28:37 -07:00
Robert
6345b62e82 fix default reason handling
Tomas Lee <j533xdbjwfgdbsv@jetable.net> pointed out that
cab7466c08 broke the default badmailfrom
reason.

This fixes that functionality and simplifies the code a little.
2009-06-22 22:44:38 -07:00
Filippo Carletti
0c69862953 check_spamhelo disconnects after denying a 'helo' 2009-06-18 22:43:48 -07:00
Devin Carraway
6c4dc31827 [PATCH] Update clamdscan plugin to use ClamAV::Client
Signed-off-by: Robert <rspier@pobox.com>
2009-04-27 07:38:28 -07:00
jaredj
89e391e9d2 Close spamd socket when we're finished with it
QP's connection to spamd unnecessarily persists beyond the run of the
spamassassin plugin itself.  This closes the socket as soon as we're
finished using it.

Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
2009-04-02 22:35:42 -07:00
Robert
687fce7caa p0f plugin updates
from Tom Callahan <anomaly@abducted.us>
(reformatted by Robert)

Signed-off-by: Robert <rspier@pobox.com>
Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
2009-04-01 22:24:37 -07:00
Robert
6365e3a66e Updates to the random_error sample plugin from David Nicol
Signed-off-by: Robert <rspier@pobox.com>
2009-03-14 17:18:28 -07:00
Hanno Hecker
fe4f40b560 "new" plugin logging/apache from SVN's contrib/
Imported logging/apache from SVN's contrib. Changes:
* perltidy run

* Minor tidy-ups by Ask

Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
2009-03-02 12:42:08 -08:00
Hanno Hecker
a3e41d4a3a "new" plugin connection_time from SVN's contrib/
import plugins/connection_time from SVN's contrib. Changes:
* perltidy run
* add one optional parameter: log level of the message, defaults
  to LOGNOTICE (same as in SVN)
2009-03-02 12:40:05 -08:00
Hanno Hecker
aa199bee3b "new" plugin rcpt_regexp from SVNs contrib/
* updated docs
* use magic hooking with hook_rcpt
* add note about regexes being eval()ed => trusted users only

Signed-off-by: Ask Bjørn Hansen <ask@develooper.com>
2009-02-27 00:55:03 -08:00
jaredj
da0110837b Call add_recipient correctly in kavscanner plugin
plugins/virus/kavscanner calls $transaction->add_recipient($_->address)
on a list of Mail::Address objects, but add_recipient() clearly
documents that it takes Qpsmtpd::Address (or compatible) objects, not
strings.  This is a bit of a drive-by fix inspired by a grep through the
codebase for calls to add_recipient().
2009-02-27 00:49:01 -08:00
Ask Bjørn Hansen
b1cbe6a9be Remove outdated virus/check_for_hi_virus plugin 2009-02-27 00:16:24 -08:00
David Nicol
056d4cf587 random error plugin, for (1) testing (2) providing lower QoS to
non-premium customers or something like that such as (3) annoying your
customers, if you are in a position to actually want to do that

Signed-off-by: Robert <rspier@pobox.com>
2009-02-11 23:50:03 -08:00
Hanno Hecker
e7bcc3fcf9 "chomp" DEBUG output - for logging/file
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@956 958fd67b-6ff1-0310-b445-bb7760255be9
2008-11-04 18:37:21 +00:00
John Peacock
9f59ca626f Sometimes Perl is too smart for its own good. Precedence rules sux...
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@950 958fd67b-6ff1-0310-b445-bb7760255be9
2008-10-07 13:48:45 +00:00
Matt Sergeant
858fdbc11c Fix to check all MX hosts, not just the first
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@945 958fd67b-6ff1-0310-b445-bb7760255be9
2008-09-26 17:39:42 +00:00
Radu Greab
0d96de470d Close the SSL socket created by duplicating the connection file descriptor. This allows the server to close the connection file descriptor without getting errors like:
Can't call method "close" on an undefined value at
  /usr/share/perl5/IO/Socket/SSL.pm line 780.

git-svn-id: https://svn.perl.org/qpsmtpd/trunk@937 958fd67b-6ff1-0310-b445-bb7760255be9
2008-09-04 11:37:38 +00:00
Radu Greab
6ad7e24315 Set the Return-Path header when queuing into maildir mailboxes.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@936 958fd67b-6ff1-0310-b445-bb7760255be9
2008-08-05 09:06:07 +00:00
Ask Bjørn Hansen
3c8766f683 update documentation (issue #26)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@935 958fd67b-6ff1-0310-b445-bb7760255be9
2008-07-31 20:32:32 +00:00
Robert Spier
29ea951680 Recreate the Geo::IP object for each message. (Otherwise it will hold the underlying database file handle open, and it doesn't like when that file changes underneath it.)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@933 958fd67b-6ff1-0310-b445-bb7760255be9
2008-07-04 02:03:56 +00:00
Robert Spier
d5c81c31d8 Fix missing capture group
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@932 958fd67b-6ff1-0310-b445-bb7760255be9
2008-07-04 02:02:26 +00:00
Hanno Hecker
37e441e70e queue/maildir - multi user / multi domain support added
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@931 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-28 08:14:14 +00:00
Guy Hulbert
1d10542af0 - Fix duplication of com|net|org|biz|info - Fix broken travel (missing |)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@929 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-16 04:52:59 +00:00
Radu Greab
b03dddcb48 Send data to the remote server in large chunks.
Reduces a lot the sending time when running on slow CPUs.

git-svn-id: https://svn.perl.org/qpsmtpd/trunk@922 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-02 16:48:20 +00:00
Radu Greab
4c93c85f55 Create async version of dns_whitelist_soft, rhsbl and uribl plugins.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@921 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-02 15:51:04 +00:00
Radu Greab
7f07f16a44 perltidy
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@920 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-02 15:41:30 +00:00
Radu Greab
d63102cd7e Add user documentation.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@919 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-02 15:41:08 +00:00
Radu Greab
98d529c596 This async plugin needs the same change as #908: make the "this connection is whitelisted note" consistent between all plugins in the distribution.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@918 958fd67b-6ff1-0310-b445-bb7760255be9
2008-06-02 15:32:39 +00:00
John Peacock
14a77718f8 Preserve connection notes as part of cloning the object (e.g. after STARTTLS). Typo noticed in plugins/tls.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@917 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-26 21:25:44 +00:00
Robert Spier
356ec2f08d standardize hostname regex. use latest list of tlds. import constants so we can syntax check
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@914 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-19 07:22:51 +00:00
Robert Spier
fed6fe0311 Hostnames come in lowercase and longer than 8 characters too.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@911 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-17 03:55:18 +00:00
Robert Spier
7169c9f0bc Revert accidental commit 909.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@910 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-17 03:54:24 +00:00
Robert Spier
6563dcc4f8 hostnames come in lower case, and might even be longer than 8 characters
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@909 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-17 03:52:00 +00:00
Ask Bjørn Hansen
b3eacea14f make the "this connection is whitelisted note" consistent between all plugins in the distribution
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@908 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-16 22:43:17 +00:00
Robert Spier
d0a8432c16 fix whitelisting support in uribl
(bug in extracting the "base" portion of the domain name.)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@906 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-15 05:16:56 +00:00
Hanno Hecker
b5d9135fb0 remove the workaround for -prefork, fixed by rev 893
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@894 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-09 17:41:59 +00:00
Matt Sergeant
e6df2f5072 Oopsie - IO::Socket::SSL required in UpgradeClientSSL for $SSL_ERROR
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@890 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-06 22:48:26 +00:00
Matt Sergeant
20fde2ef98 Don't require Danga::Socket in tls plugin
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@889 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-06 21:43:07 +00:00
Radu Greab
aa016d356e Kill circular reference.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@888 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-06 11:20:52 +00:00
Matt Sergeant
e600baeedf Fix a weird thing I spotted in the last check in.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@887 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-05 17:13:56 +00:00
Ask Bjørn Hansen
569ea2a512 s/txn/transaction/ and perltidy cleanup (Steve Kemp)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@885 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-05 17:05:38 +00:00
Matt Sergeant
f315e1c193 Make tls work on async
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@884 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-05 12:22:18 +00:00
Radu Greab
149c9c4790 Follow the logic of the non-async version and other MTAs: make first
the MX lookups and, only if they return nothing, make the A lookups.

git-svn-id: https://svn.perl.org/qpsmtpd/trunk@880 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-01 06:18:46 +00:00
Radu Greab
79aa27f444 This async plugin doesn't need the disconnect hook.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@879 958fd67b-6ff1-0310-b445-bb7760255be9
2008-05-01 06:17:16 +00:00
Matt Sergeant
d0d7412f22 Fix auth and tls in light of globalised hooks
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@874 958fd67b-6ff1-0310-b445-bb7760255be9
2008-04-08 10:34:25 +00:00
Matt Sergeant
d078cd1fcc Async smtp-forward plugin
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@864 958fd67b-6ff1-0310-b445-bb7760255be9
2008-03-18 15:20:45 +00:00
Matt Sergeant
6f1a048cf3 Add shebang line so syntax highlighters kick in :-)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@860 958fd67b-6ff1-0310-b445-bb7760255be9
2008-03-18 15:18:19 +00:00
Matt Sergeant
640eadea50 Don't reject mail from the null sender
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@858 958fd67b-6ff1-0310-b445-bb7760255be9
2008-03-13 20:00:33 +00:00
Matt Sergeant
694b9fd148 Fix to prevent denying mail from some otherwise valid hosts
Fix to prevent run_continuation being incorrectly called
(both Radu Greab)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@857 958fd67b-6ff1-0310-b445-bb7760255be9
2008-03-13 19:59:15 +00:00
Matt Sergeant
ce5b41df9f Don't pass --fqdn to hostname if it fails
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@855 958fd67b-6ff1-0310-b445-bb7760255be9
2008-03-13 19:51:00 +00:00
Ask Bjørn Hansen
4d27319233 fix "Use of uninitialized value in pattern match" warning (Gavin Carr
and Jim Murray)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@846 958fd67b-6ff1-0310-b445-bb7760255be9
2008-02-13 08:34:18 +00:00
Hanno Hecker
2f3a326e11 Pluggable hook "noop" with example plugin (noop_counter) and doc update.
... now check_earlytalker can be expanded to VRFY and NOOP (see RFC 1854, #2.1)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@836 958fd67b-6ff1-0310-b445-bb7760255be9
2008-01-24 18:43:34 +00:00
Hanno Hecker
c2fa263fbd add help plugin, hooking the new hook_help
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@827 958fd67b-6ff1-0310-b445-bb7760255be9
2007-12-07 09:15:00 +00:00
Robert Spier
6a4b30e6f9 add new clamd_user parameter that sets the user we pass to clamd
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@817 958fd67b-6ff1-0310-b445-bb7760255be9
2007-11-17 08:22:00 +00:00
Robert Spier
70f0030539 fix typo
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@816 958fd67b-6ff1-0310-b445-bb7760255be9
2007-11-17 08:16:46 +00:00
Robert Spier
53a5fd60d9 Option to clamdscan to scan all messages, even if there are no attachments
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@815 958fd67b-6ff1-0310-b445-bb7760255be9
2007-11-17 07:55:32 +00:00
Hanno Hecker
aa8ae14367 Fix issue #23, reported w/ patch by ulr...@topfen.net
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@812 958fd67b-6ff1-0310-b445-bb7760255be9
2007-10-27 09:05:04 +00:00
Devin Carraway
85f0d91037 Merge uribl plugin
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@811 958fd67b-6ff1-0310-b445-bb7760255be9
2007-10-23 08:47:38 +00:00
Charlie Brady
1cfd62c6d3 POD update, and change variable name for recipient address ($from => $to).
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@810 958fd67b-6ff1-0310-b445-bb7760255be9
2007-10-23 01:53:29 +00:00
Hanno Hecker
7d4605fdbc remove the connection / transaction id feature for 0.42 release
- add back in after 0.42 is out? if yes: start implementing in -prefork 


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@809 958fd67b-6ff1-0310-b445-bb7760255be9
2007-10-09 12:00:43 +00:00
Hanno Hecker
275fce4764 plugins/tls: work-around for failed connections in -prefork after STARTTLS
connection (Stefan Priebe, Hanno Hecker)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@805 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-30 13:00:32 +00:00
Ask Bjørn Hansen
b141eeda37 Fix false positives in check_for_hi_virus plugin (Jerry D. Hedden)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@802 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-26 19:00:45 +00:00
Ask Bjørn Hansen
475203689d Add X-Spam-Level header in spamassassin plugin (idea from Werner Fleck)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@795 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-24 20:45:09 +00:00
Ask Bjørn Hansen
2361ca606d Cleanup spamassassin plugin code a little
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@794 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-24 20:21:24 +00:00
Ask Bjørn Hansen
c0fedf9845 Remove the auth/authnull sample plugin (there are plenty proper examples now
so we don't have to include this insecure plugin)


git-svn-id: https://svn.perl.org/qpsmtpd/trunk@793 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-22 20:23:21 +00:00
Ask Bjørn Hansen
4be7bb40e4 POD syntax cleanup (Steve Kemp)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@786 958fd67b-6ff1-0310-b445-bb7760255be9
2007-09-03 15:47:08 +00:00
Peter J. Holzer
e4cc9f7562 Added demo plugins for using the transaction and connection id.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@781 958fd67b-6ff1-0310-b445-bb7760255be9
2007-08-30 20:50:27 +00:00
Matt Sergeant
f4405d7a8c Support checking for early talkers at DATA
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@758 958fd67b-6ff1-0310-b445-bb7760255be9
2007-07-12 17:14:36 +00:00
Matt Sergeant
2d6bee1679 Fix for new IPv6 code
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@743 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-26 00:48:09 +00:00
Matt Sergeant
65631b8bb2 Fix for tests failing
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@742 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-18 03:07:53 +00:00
Matt Sergeant
ccf990e032 IPv6 support from issue #7.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@740 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-17 22:16:27 +00:00
Matt Sergeant
5c71daf274 Support custom timestamp formats
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@735 958fd67b-6ff1-0310-b445-bb7760255be9
2007-05-17 20:32:43 +00:00
Matt Sergeant
a87b5b07cc Ported to async
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@732 958fd67b-6ff1-0310-b445-bb7760255be9
2007-04-09 22:19:40 +00:00
Matt Sergeant
ce879879b5 Async versions of these plugins
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@729 958fd67b-6ff1-0310-b445-bb7760255be9
2007-03-27 21:49:03 +00:00
Ask Bjørn Hansen
5c9e3d6004 greylisting: fix db_dir configuration option so it actually works
(kitno455, issue #6)

  http://code.google.com/p/smtpd/issues/detail?id=6



git-svn-id: https://svn.perl.org/qpsmtpd/trunk@724 958fd67b-6ff1-0310-b445-bb7760255be9
2007-03-15 06:51:37 +00:00
Ask Bjørn Hansen
cc00c1d9ff rename %ARGS to %PERMITTED_ARGS
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@723 958fd67b-6ff1-0310-b445-bb7760255be9
2007-03-15 06:49:23 +00:00
Matt Sergeant
237bf904a5 Quiet warnings (Steve_p)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@714 958fd67b-6ff1-0310-b445-bb7760255be9
2007-02-13 18:29:47 +00:00
John Peacock
76d3fe44db Correct way to support check_earlytalker with PollServer.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@712 958fd67b-6ff1-0310-b445-bb7760255be9
2007-02-07 22:25:44 +00:00
John Peacock
fea300ed2e Add authenticated method to base Qpsmtpd object.
Add _auth field to PollServer.
Make sure that check_earlytalker works with PollServer.

git-svn-id: https://svn.perl.org/qpsmtpd/trunk@711 958fd67b-6ff1-0310-b445-bb7760255be9
2007-02-07 21:49:45 +00:00
Hanno Hecker
d54a960f9a undo r700 (skip plugin)
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@701 958fd67b-6ff1-0310-b445-bb7760255be9
2007-01-01 12:47:46 +00:00
Hanno Hecker
39a9271213 New "skip plugin API" + example plugin skip_plugins, see perldoc
Qpsmtpd::Plugins for more info. This can be used to disable (and re-
enable) loaded plugins for the current connection.


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@700 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-31 11:07:32 +00:00
Ask Bjørn Hansen
cab7466c08 Make the badmailfrom plugin support (optional) rejection messages after the
rejection pattern (Robin Hugh Johnson)



git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@697 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-18 10:45:25 +00:00
Ask Bjørn Hansen
e31d3e3e4b documentation typo in clamav, update changes file a bit
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@696 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-18 10:45:22 +00:00
Hanno Hecker
ad541f6207 Qpsmtpd::Transaction: add body_fh(), body_length() and data_size(),
depreceated body_size()


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@689 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-16 11:56:48 +00:00
Peter J. Holzer
d6c428716f Check if the domain name in a DNS response packet matches one of the
domain names we queried.
See the thread "dnsbl or spamhaus occassionally blocks wrong IP" 
starting at 14 Mar 2006 for details.


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@683 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-16 09:46:12 +00:00
Hanno Hecker
8b50f9f0dd removed spamassassin doc from dnsbl
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@677 958fd67b-6ff1-0310-b445-bb7760255be9
2006-12-07 10:29:41 +00:00
Devin Carraway
b52b7b50c2 Support configured greylisting db location, and look in the distro-friendly
directory /var/lib/qpsmtpd in addition to the previous $QPHOME locations.


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@672 958fd67b-6ff1-0310-b445-bb7760255be9
2006-11-05 10:38:16 +00:00
John Peacock
86e202d19e Add program to extract Postfix constants from source files and generate
Qpsmtpd::Postfix::Constants (to be used by postfix-queue).
Patch by Hanno Hecker.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@668 958fd67b-6ff1-0310-b445-bb7760255be9
2006-11-01 02:08:30 +00:00
John Peacock
bdf3f983a7 Add hardcoded mapping between postfix's cleanup errors and corresponding
Qpsmtpd::DSN value.  (David Muir Sharnoff)

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@667 958fd67b-6ff1-0310-b445-bb7760255be9
2006-10-26 15:50:02 +00:00
John Peacock
da93a9ca3b Add log socket support to syslog plugin. (Peter Eisch)
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@666 958fd67b-6ff1-0310-b445-bb7760255be9
2006-10-25 17:07:27 +00:00
John Peacock
9c39c530b2 Allow override of TLS security methods using CIPHER_STRINGS passed to
IO::Socket::SSL.  Brian Szymanski <ski-qpsmtpd@allafrica.com>

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@663 958fd67b-6ff1-0310-b445-bb7760255be9
2006-10-04 13:39:27 +00:00
John Peacock
3837fabc9f Ask and ye shall receive
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@659 958fd67b-6ff1-0310-b445-bb7760255be9
2006-09-14 19:48:37 +00:00
Ask Bjørn Hansen
6ef0bf27c7 r4175@embla: ask | 2006-08-28 01:17:10 +0200
Experimental IPv6 support (forkserver only). (Mike Williams)


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@657 958fd67b-6ff1-0310-b445-bb7760255be9
2006-08-27 23:17:33 +00:00
John Peacock
52f38f9459 Oops! init() gets $self and $qp before any commandline arguments
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@656 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-24 19:10:38 +00:00
Ask Bjørn Hansen
ca30545adc r3843@embla: ask | 2006-07-14 01:43:40 -0700
take out "local %ENV" from the quit_fortune plugin (Philip M. Gollucci)


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@655 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-14 08:43:55 +00:00
John Peacock
de620a4c22 Handler corner case better: signed message relayed by listserv which adds
Sender: but does not resign message or strip DomainKeys-Signature.  Add
config option to prevent badly signed message from being DENY'd.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@654 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-12 18:10:00 +00:00
John Peacock
66f2f9354b Temporarily prevent domainkeys from issuing DENY.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@653 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-11 21:20:44 +00:00
John Peacock
f654defacb Add early out for messages that aren't signed at all (ignoring domains which
mandate signing by policy for the moment).
Change variables to use actual English words as names (instead of disemvoweled
or truncated variants).
Tweak Copyright notice to be current.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@652 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-11 17:41:48 +00:00
Ask Bjørn Hansen
84b7363018 r3826@embla: ask | 2006-07-09 02:34:33 -0700
Enhance the spamassassin plugin to support connecting to a remote
   spamd process (Kjetil Kjernsmo). 


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@651 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-09 09:34:51 +00:00
John Peacock
17f1617920 Working but not well testing domainkeys plugin.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@650 958fd67b-6ff1-0310-b445-bb7760255be9
2006-07-09 00:58:39 +00:00
John Peacock
401ca8ce6e More descriptive POD for tls certificate support (Guillaume Filion).
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@635 958fd67b-6ff1-0310-b445-bb7760255be9
2006-04-25 00:08:20 +00:00
John Peacock
8fcb46177b Add Qpsmtpd::Command to gather all parsing logic in one place (Hanno
Hecker)


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@631 958fd67b-6ff1-0310-b445-bb7760255be9
2006-04-07 18:58:02 +00:00
John Peacock
b89a6d9e4c * plugins/queue/smtp-forward
s/register/init/ to match new plugin style (jpeacock)

* lib/Qpsmtpd/Address.pm
  t/qpsmtpd-address.t
    Ill-formed addresses should return null not partial garbage.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38746
    Patch by Hanno Hecker.

* plugins/virus/clamav
    Clamav alternate config file.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38736
    Patch by Robin Bowes.

* lib/Qpsmtpd/SMTP.pm
  lib/Qpsmtpd.pm
    Return multiline responses from plugins.
    Resolves https://rt.perl.org/rt3/Ticket/Display.html?id=38741
    Patch by Charlie Brady.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@630 958fd67b-6ff1-0310-b445-bb7760255be9
2006-03-20 16:47:05 +00:00
Ask Bjørn Hansen
123346f1f5 r4567@g5: ask | 2006-03-09 04:35:43 -0800
move old branches aside


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@629 958fd67b-6ff1-0310-b445-bb7760255be9
2006-03-09 12:37:25 +00:00
John Peacock
4a824a2e7d Improve support for listening to multiple ports and/or multiple IP addresses.
Document using plugins/tls to handle SMTPS (port 465).

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@625 958fd67b-6ff1-0310-b445-bb7760255be9
2006-03-01 16:44:20 +00:00
John Peacock
2c683f22ef Implement multiple IP:PORT listen in forkserver (Devin Carraway).
Add support in plugins/tls to use SMTPS (John Peacock).

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@624 958fd67b-6ff1-0310-b445-bb7760255be9
2006-02-28 21:10:11 +00:00
Devin Carraway
a07ed2ca77 Oops. Don't emit a newline between header and body when queueing over bsmtp,
because the body itself already contains one.


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@623 958fd67b-6ff1-0310-b445-bb7760255be9
2006-02-28 07:04:52 +00:00
Ask Bjørn Hansen
00a73023c8 r4522@g5: ask | 2006-02-27 13:41:42 -0800
Make the clamdscan plugin temporarily deny mail if if can't talk to clamd
 (Filippo Carletti)


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@621 958fd67b-6ff1-0310-b445-bb7760255be9
2006-02-27 21:43:04 +00:00
John Peacock
16b2a9c766 Correct minor cut/paste error
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@610 958fd67b-6ff1-0310-b445-bb7760255be9
2006-02-05 01:28:44 +00:00
Devin Carraway
ffd453d012 Import file & syslog log plugins. File plugins include strftime(3) formatting
and unique session naming support based roughly on patch from pjh.


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@609 958fd67b-6ff1-0310-b445-bb7760255be9
2006-02-02 08:46:49 +00:00
John Peacock
0f5d720359 Add explicit SSL_ca_file parameter to calls to create the SSL session.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@604 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-25 14:50:47 +00:00
Ask Bjørn Hansen
a67b39e282 r4215@g5: ask | 2006-01-24 23:11:01 -0800
From:   gordonr@gormand.com.au
 Subject: Re: Submitting plugins (was Re: New plugin: denybounce)
 Date: January 24, 2006 9:02:35 PM PST
 To:   ask@develooper.com
 Cc:   gavin@openfusion.com.au, qpsmtpd@perl.org
 Message-Id: <43D7066B.3050106@gormand.com.au>
 
 Ask Bjørn Hansen wrote:
 On Jan 24, 2006, at 1:08 PM, Gordon Rowell wrote:
 - License statement - either as per qpsmtpd or as per Perl or  similar open license
 No, it really should be MIT licensed ("as per qpsmtpd") to go in the  distribution.
 There are a few exceptions (only your plugins at a cursory glance),  but those are mistakes.  :-)
 
 I don't have an issue with my qpsmtpd plugins being changed to state:
 
 
 =head1 AUTHOR
 
 Copyright 2005 Gordon Rowell <gordonr@gormand.com.au>
 
 This software is free software and may be distributed under the same
 terms as qpsmtpd itself.
 
 
 Though as a distro maintainer, we do have a sizeable issue with license proliferation. It really is a bit of a nightmare when two licenses are almost, but not completely, the same.
 
 Thanks,
 
 Gordon
 
 r4216@g5:  ask | 2006-01-24 23:12:21 -0800
 merge license fix from trunk


git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@603 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-25 07:12:34 +00:00
John Peacock
1d0f889d3c Support for RFC 1893 - Enhanced Mail System Status Codes
Patch by Hanno Hecker <hah@uu-x.de>.

Adds the RFC 1893 status codes to the messages which are returned to the
sending client.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@602 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-25 02:59:31 +00:00
John Peacock
5c2c8455d5 Oops! Neglected to add this. Should have been part of r599.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@601 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-11 17:03:45 +00:00
John Peacock
d228f9c11d this patch enables the configurable flags for the postfix-queue plugin.
By default no flags are set (old behaviour). Known flags for cleanup are
FLAG_FILTER, FLAG_BCC_OK and FLAG_MAP_OK, see POD for details.

Patch by: Hanno Hecker <hah@uu-x.de>

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@600 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-11 16:48:08 +00:00
John Peacock
bfcd620a83 Fix problems with tls and relay_client.
* lib/Qpsmtpd/Connection.pm
    Abstract out parameters which can be reused (e.g. TLS) or can be
    set when creating the Connection object via start().

* plugins/tls
    Simplify code to use $self->clone() construct and also suppress
    IO::Socket::SSL debug noise, now that this is working.

* plugins/tls_cert
    New file to automate creating self-signed certificates for TLS.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@597 958fd67b-6ff1-0310-b445-bb7760255be9
2006-01-05 02:12:46 +00:00
John Peacock
c9779a3376 * plugins/virus/clamdscan
Use LOGNOTICE instead of LOGERROR when bailing early due to
    non-multipart message.

    Test clamd->ping() before scanning, and bail if it doesn't
    answer (with an appropriate error).

    Patch submitted by Dave Rolsky <autarch@urth.org>.

git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@583 958fd67b-6ff1-0310-b445-bb7760255be9
2005-12-10 21:11:04 +00:00
Matt Sergeant
111afb91db No strict refs when assigning to a glob
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@551 958fd67b-6ff1-0310-b445-bb7760255be9
2005-10-07 14:30:10 +00:00
Matt Sergeant
0d8d9f03b8 Merge from trunk r540:541
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@542 958fd67b-6ff1-0310-b445-bb7760255be9
2005-08-15 18:43:19 +00:00