Commit Graph

301 Commits

Author SHA1 Message Date
Matt Simerson 965f4fc440 check *every* regex, not just first 2015-12-17 10:47:08 -08:00
Jared Johnson 88c55ed9a3 Emit detailed warning on unuseable default db dirs 2015-03-09 17:17:26 -05:00
Jared Johnson 1ae8ed206f More useful exception on invalid db_dir 2015-03-09 17:17:26 -05:00
Jared Johnson 84aa8e2328 Die when an invalid dir is specified manually 2015-03-09 17:17:26 -05:00
Jared Johnson 6b13e24221 Add perms test to Qpsmtpd::DB::File::DBM::dir() 2015-03-09 17:17:26 -05:00
Jared Johnson e98e1c2e82 Regression test for prune_db locking problem 2015-03-05 18:34:59 -06:00
Jared Johnson 15a297372d Default to one-second connect timeout for Redis 2015-02-23 14:32:42 -06:00
Jared Johnson 42c551944e Add some validation for passed db args 2015-02-23 14:13:39 -06:00
Jared Johnson 51ca3fcda4 Skip greylisting when we can't talk to greylist DB 2015-02-23 11:25:36 -06:00
Jared Johnson 4c9bcc0ee4 Configure but don't connect to DB in init_db()
This allows us to start up QP even if e.g. Redis is down
2015-02-23 11:25:18 -06:00
Jared Johnson 5f6485e84f Change fake_{config,hook} to mock_{config,hook}
'mock' is more accurate and recognizable
2015-02-12 16:19:44 -06:00
Jared Johnson 95d40297cf Use a fake greeting for testing run_continuation()
This makes the test more universally useful in exercising run_continuation()
itself even with forks that e.g. use custom greetings
2015-02-12 15:53:50 -06:00
Jared Johnson d2079c455a A little more testing for run_continuation() 2015-02-11 15:07:10 -06:00
Jared Johnson 92d5ff6dc7 Fix test descriptions 2015-02-03 17:11:05 -06:00
Jared Johnson dcdda3a5e7 Don't interpret invalid return codes as OK 2015-02-03 17:01:52 -06:00
Jared Johnson f6b952ce8e Comment out broken test exposed by some test fixes 2015-02-03 16:44:06 -06:00
Jared Johnson b3f8ce6b07 Tests for error logging in run_continuation() 2015-02-03 16:44:06 -06:00
Jared Johnson 7af1f770a5 Fix hook testing order
This exposes a bug with handling invalid return codes
2015-02-03 16:15:16 -06:00
Jared Johnson e2556a4ee9 Moar testing for Qpsmtpd::run_continuation() 2015-01-30 01:50:54 -06:00
Matt Simerson d9ac50f383 make sure $transaction->notes is blessed before
calling it as such. It doesn't resolve #199 but it does help there.

I'm not sure initializing Qpsmtpd::transaction as {} is a brilliant idea, but I haven't a better solution for that yet.
2015-01-29 11:25:14 -08:00
Jared Johnson 3b0d60545d Tests for Qpsmtpd::Plugin::register_hook() 2015-01-28 17:23:21 -06:00
Jared Johnson 113becf8be Get rid of Qpsmtpd::DB::File
DBM is probably the only file format we'll ever support anyhow
2015-01-27 15:55:53 -06:00
Jared Johnson 3bf1a7f48c Better handling of testing temp files
Rather than creating and ignoring a bunch of random files, create files in
t/tmp, ignored in .gitignore and cleaned up with 'make clean'
2015-01-27 14:41:15 -06:00
Matt Simerson 178c5f6884 Merge pull request #196 from msimerson/dmarc
dmarc: add error handling and tests
2015-01-27 10:30:28 -08:00
Jared Johnson b6311caae0 Pass multiple keys to del() to speed up prune_db() 2015-01-27 11:50:55 -06:00
Jared Johnson 1320a01f46 Speed up prune_db() with new Qpsmtpd::DB::mget()
This reduces round trips to Redis, speeding up DB pruning,
especially over a network
2015-01-27 10:59:47 -06:00
Jared Johnson 0dcafcffb6 Add testing for prune_db() in plugins/greylisting 2015-01-27 10:45:10 -06:00
Jared Johnson 462a2ae367 Rename 'redis_server' arg to 'redis' 2015-01-23 15:15:04 -06:00
Jared Johnson 4f9af75e48 Make Redis optional
Previously the greylist plugin tried to use redis and fell back to DBM. This means that if a system already had an established DBM database, but happened to have Redis running, the existing DBM db would be abandoned for a new Redis DB. This would inevitably lead to more delays for legitimate mail, and possibly lost mail.

This adds a 'redis_server' argument which enables Redis and sets the location of the redis server; if it is not explicitly set, DBM is used instead.

If the redis server is unavailable, rather than failing to start QP, we instead fail to register the plugin.
2015-01-23 14:24:23 -06:00
Jared Johnson 63de50c808 Remove unused sub from greylist tests
Not sure how long ago this fell out of use and neither is the author
2015-01-22 23:44:52 -06:00
Jared Johnson e76b6a9048 Fix consistency problems with DBM store
Destroy the AnyDBM-tied hash after untying

Google's wisdom seems to indicate that leaving the AnyDBM-tied hash around after
untying it was causing data to not flush to the DBM file... or something. At any
rate the regression test added here confirms inconsistency when using multiple
instances which is fixed by destroying the AnyDBM-tied hash after untying.
2015-01-21 16:43:23 -06:00
Jared Johnson e3187ace0d Add tests for Qpsmtpd::DB::File::DBM 2015-01-21 16:32:11 -06:00
Matt Simerson 8185d33fa5 dmarc: add error handling and tests 2015-01-21 10:16:03 -08:00
Matt Simerson 391dfc9309 Merge pull request #189 from msimerson/auth-results
completed DKIM signing detection to A-R header
2015-01-21 10:00:55 -08:00
Jared Johnson f8e220e3b5 Handle missing GeoIP data gracefully
Previously, the GeoIP plugin would crash on certain missing GeoIP data.
Now it will continue to operate on whatever data it can get at.

Note that it already warns when any data it's looking for is missing.
2015-01-14 15:28:14 -06:00
Matt Simerson 62a063b366 completed DKIM signing detection to A-R header
cleaning function, making it 'safe'

* added test coverage to authentication_results and clean_authentication_results
2015-01-04 14:27:59 -08:00
Matt Simerson 4226dfaa3e fcrdns: document the is_valid_localhost skip
with a logdebug line
2015-01-04 02:48:01 -05:00
Matt Simerson 296219c603 fcrdns: add tests and improved localhost detection 2015-01-04 02:03:09 -05:00
Matt Simerson 4a11e2cb71 Revert "Turn warnings into $qpsmtpd->log() calls" 2015-01-03 21:45:59 -08:00
Jared Johnson 87c6799a1e More complete tests for data_respond() 2014-12-30 17:48:47 -06:00
Jared Johnson a308e53aa7 Merge pull request #156 from msimerson/smtp
moved SMTP changes into new PR
2014-12-30 16:47:23 -06:00
Jared Johnson 89b942b634 Update expected error text 2014-12-30 14:53:54 -06:00
Jared Johnson 474a086d90 Tests for Qpsmtpd::DB::Redis 2014-12-30 14:53:54 -06:00
Jared Johnson 11646b9a27 Add Qpsmtpd::DB testing and more greylist testing 2014-12-30 14:53:53 -06:00
Jared Johnson eb0ff1fe98 Get rid of grey_timeout and 'white' clients
These are noops:  clients that retry before grey_timeout is exceeded and
clients that retry after grey_timeout is exceeded all pass greylisting until
expired by white_timeout.
2014-12-28 21:27:03 -06:00
Jared Johnson c01cdffb08 Add testing for greylist() 2014-12-28 21:26:49 -06:00
Matt Simerson d6fabb2b40 added some tests for data_respond 2014-12-26 22:15:05 -08:00
Matt Simerson e9497d7e51 moved SMTP changes into new PR 2014-12-26 22:15:05 -08:00
Matt Simerson 1f43e30de1 Merge pull request #169 from jaredj/hook-testing
Generalize hook testing
2014-12-24 16:12:24 -08:00
Jared Johnson a7fee58aad More explicit explanations 2014-12-24 18:06:22 -06:00