Commit Graph

797 Commits

Author SHA1 Message Date
Jared Johnson
a1144ecbf9 Revert "Revert "Don't crash QP when GeoIP data is missing"" 2015-02-26 17:07:35 -06:00
Jared Johnson
6f38bdf5ad Revert "Don't crash QP when GeoIP data is missing" 2015-02-26 17:05:52 -06:00
Jared Johnson
15210db779 Don't crash QP when GeoIP data is missing 2015-02-26 17:04:49 -06:00
Jared Johnson
15a297372d Default to one-second connect timeout for Redis 2015-02-23 14:32:42 -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
Tom Li
a44c70232c tls_cert: fix a misused quotes
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-03 03:49:22 +08:00
Tom Li
2cc6d3f938 tls: checking if dhparam is empty, using "undef" instead of "" for clarity.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 20:50:37 +08:00
Tom Li
edea4c239d tls_cert: unified cert name between tls and tls_cert.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 18:36:51 +08:00
Tom Li
845760969b tls: fix a typo.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 18:30:54 +08:00
Tom Li
2e2e6c70c6 tls: style fixes.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 18:19:13 +08:00
Tom Li
acbbf66806 tls_cert: adding dhparam generating.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 17:55:40 +08:00
Tom Li
d5954ce249 tls: adding support of dhparam.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 17:55:22 +08:00
Tom Li
e6ee356925 tls: respect the order of specified ciphers.
Signed-off-by: Tom Li <biergaizi2009@gmail.com>
2015-02-02 17:37:15 +08: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
0d79c1ef8e Merge pull request #215 from msimerson/qmd
delete qmail-deliverable BEGIN block
2015-01-29 05:39:15 -06:00
Jared Johnson
194cde52af Merge pull request #213 from msimerson/geoip-debug
geoip: change a couple INFO -> DEBUG
2015-01-29 05:37:12 -06:00
Matt Simerson
11ddf03164 disable qmail-deliverable BEGIN block
because FindBin has some undesirable global effects
2015-01-29 03:10:56 -05:00
Matt Simerson
bc4e7e61a5 geoip: change a couple INFO -> DEBUG 2015-01-28 22:10:06 -08:00
Matt Simerson
d81b2d4331 Merge pull request #147 from msimerson/tcpserver
update tcpenv and lrpip calls to use -> syntax
2015-01-28 20:08:53 -08:00
Matt Simerson
be9f4aef0c update tcpenv and lrpip calls to use -> syntax
don't load plugins twice.

Not exactly sure where that feature crept in some time ago. It was suppressed by checking to see if a queue plugin was already registered, and then bailing out on subsequent register_hook runs. I noticed it in testing, b/c I didn't have a queue plugin loaded. This removes the duplicate calls to register_hook.

* adds caching of the AUTH methods. You can't add new plugins or register new
  hooks w/o restarting QP, so cache the list and avoid having to generate it on every connection.

* other PBP changes (early exits, less indention, fewer unnecessary parens, etc.)
2015-01-28 19:58:58 -08:00
Matt Simerson
04914bf4c9 Merge pull request #212 from salvis/dkim-doc-tweak
plugins/dkim doc tweak
2015-01-28 19:45:46 -08:00
Hans Salvisberg
c1e3652beb Tweak plugins/dkim doc to clarify the d= issue and add a third email reflector. 2015-01-29 02:05:28 +01:00
Matt Simerson
31dbe00514 use perl DNS methods instead of shell cmds 2015-01-28 10:23:03 -08: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
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
5a58e02e80 Scarier error message for redis failures 2015-01-23 15:23:18 -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
8c1c5c851d Remove unnecessary calls to cleanup_and_return()
prune_db() and migrate_db() already call unlock(), calling
cleanup_and_return() only added a second (redundant) call to unlock()
2015-01-21 17:31:47 -06:00
Matt Simerson
8185d33fa5 dmarc: add error handling and tests 2015-01-21 10:16:03 -08:00
Matt Simerson
376498f2e8 Merge pull request #190 from msimerson/use-lib
remove instances of: use lib 'lib' in lib/ and
2015-01-21 10:06:07 -08:00
Jared Johnson
9450c21c06 Perltidy 2015-01-14 16:17:04 -06:00
Jared Johnson
029db84771 Remove some postfix 'if' 2015-01-14 16:05:42 -06: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
Jared Johnson
963193dded Disable SSLv3 2015-01-07 15:19:39 -08:00
Matt Simerson
c6918d10ca remove instances of: use lib 'lib' in lib/ and
plugins/
2015-01-04 17:13:50 -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
033a40ed48 fcrdns: updated docs noting Auth-Results header 2015-01-04 02:05:51 -05:00
Matt Simerson
296219c603 fcrdns: add tests and improved localhost detection 2015-01-04 02:03:09 -05:00
Jared Johnson
e21951629f Merge pull request #184 from flimzy/p0f-warnings
Silence some warnings when $p0f->{genre} is undefined
2014-12-31 11:27:09 -06:00
Jonathan Hall
bea2c4c379 Silence some warnings when $p0f->{genre} is undefined 2014-12-31 18:20:30 +01:00
Jonathan Hall
8bc0626c65 Fix error checking for socket connections
- IO::Socket::UNIX->new should never die, therefore...
- $@ is always undef when the eval exits, so...
- use $! instead
2014-12-31 18:09:48 +01:00
Matt Simerson
993bd4e7df spf: switch header appending hook
This doesn't really change anything, because the SPF plugin generally is listed in config/plugins before the `data_post` plugins that do content evaluation. This merely assures that regardless of the ordering of plugins in config/plugins, the SPF results header will be present.
2014-12-30 14:20:42 -08:00
Matt Simerson
a515e2b17c Merge pull request #171 from priyadi/authresultfix
Authentication-Results header fix on data_post
2014-12-30 13:58:21 -08:00
Matt Simerson
ad30627e96 Revert "Improve error handling in p0f plugin" 2014-12-30 12:31:11 -08:00
Jonathan Hall
5ff0bfb27f Improve error messages
- Add "p0f" to error output to aide in debugging
- Remove some no-ops which called only '... if $@', in a context
  where $@ would never be set, or never be meaningful.
2014-12-30 06:29:06 -06:00
Jonathan Hall
86a1b312dc Fix error checking for socket connections
- IO::Socket::UNIX->new should never die, therefore...
- $@ is always undef when the eval exits, so...
- use $! instead
2014-12-30 06:23:33 -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
Priyadi Iman Nurcahyo
cae43900ca Move dkim, domainkeys and dmarc plugins into data_post_headers phase 2014-12-24 02:50:50 +00:00
Priyadi Iman Nurcahyo
bd2f30bdad Keep data_post hook, and add data_post_headers 2014-12-24 02:40:07 +00:00
Priyadi Iman Nurcahyo
f8c49b6067 Authentication-Results header fix on data_post 2014-12-23 18:53:13 +00:00
Jared Johnson
16126bd941 Less 'and' 2014-12-22 17:00:29 -06:00
Jared Johnson
bf8dc171a3 Don't disable greylist in absence of p0f argument 2014-12-22 16:09:41 -06:00
Jared Johnson
ea937f89dc Warn about lack of ASN data when GeoIP2 is loaded 2014-12-18 13:30:26 -06:00
Jared Johnson
8de22de762 Try to load geoip1 before geoip2 2014-12-18 13:27:35 -06:00
Jared Johnson
9f93087675 Remove modifier from POD 2014-12-11 16:57:22 -06:00
Jared Johnson
dad4fb1d29 Remove unnecessary // from check_genre() 2014-12-11 16:49:49 -06:00
Jared Johnson
1e2c0a6f78 Fix missing assignment in ident/p0f rcpt_handler() 2014-12-11 16:29:26 -06:00
Jared Johnson
52c46cfec3 Fixes for ident/p0f register_genre_blocking
- Make regexes case-insensitive (I don't want to mess with modifiers)
- Don't compile non-regexes as regexes
2014-12-11 16:07:32 -06:00
Jared Johnson
45da377897 Fix variable name in ident/p0f that caused a crash 2014-12-11 15:12:17 -06:00
Jared Johnson
cb2f0ca104 Block clients with OS matching phrases and regexes
Not yet tested
2014-12-11 14:35:54 -06:00
Jared Johnson
bf1d6baf49 Modularize registering optional p0f hooks 2014-12-11 13:48:27 -06:00
Jared Johnson
4de1d388b9 Silence a warning in plugins/greylisting 2014-12-05 11:31:59 -06:00
Jared Johnson
b8e5e0a1b9 Make content log file configurable 2014-12-03 15:50:45 -06:00
Jared Johnson
6820a1f5fa Add POD for content_log plugin 2014-12-03 10:01:31 -06:00
Jared Johnson
64c7519d7c content_log_enabled: Accept multiple 'true' values 2014-12-03 09:57:27 -06:00
Jared Johnson
c77a3344d7 Rename enable_content_log to content_log_enabled 2014-12-03 08:57:05 -06:00
Jared Johnson
e95f1e294e Add method to exclude messages from content log 2014-12-02 17:13:00 -06:00
Jared Johnson
edc8f7600d Test content_log enable/disable logic 2014-12-02 17:08:07 -06:00
Jared Johnson
deb0fbba69 Fix broken semicolon 2014-12-02 16:54:03 -06:00
Jared Johnson
59ae9643e0 Add config to enable content log, on by default 2014-12-02 16:51:51 -06:00
Jared Johnson
50badecc48 Split out content log file name logic 2014-12-02 16:28:51 -06:00
Jared Johnson
893f45e333 Move karma_tool to Qpsmtpd::DB
Tested manually with karma_tool which has no test coverage
2014-11-27 22:24:08 -06:00
Jared Johnson
57c07b17b1 Remove unnecessary variable 2014-11-27 22:03:34 -06:00
Jared Johnson
fafeaf40a0 Init Qpsmtpd::DB in karma plugin
And remove old DBM subs
2014-11-27 21:49:07 -06:00
Jared Johnson
ef26c61b6d Use Qpsmtpd::DB in karma plugin
And clean up a few things in Qpsmtpd::DB
2014-11-26 16:28:52 -06:00
Jared Johnson
72c9c79f31 Move the rest of DBM operations to Qpsmtpd::DB 2014-11-26 16:06:24 -06:00
Jared Johnson
1d29db66ff Move some DBM functions to Qpsmptd::DB::File::DBM
Not everything is moved and Qpsmtpd::DB* does not yet have test coverage
2014-11-25 17:52:18 -06:00
Jared Johnson
a0c8baae8d Add POD section pointing to per-recip db support 2014-11-25 10:42:47 -06:00
Jared Johnson
0c1498d44d Drop documentation too 2014-11-24 18:48:40 -06:00
Jared Johnson
20cbbad9e8 Drop support for per-recipient greylist dbm files
This does not drop support for including the recipient in the greylist key.

Note that this was already broken for an indeterminate (long) amount of time
2014-11-24 18:18:21 -06:00
Jared Johnson
5fe9d80f9b Clarify DBM-specific functions
This changes function names only
2014-11-24 17:09:42 -06:00
Jared Johnson
57985252dc Add some POD 2014-11-21 16:54:27 -06:00
Jared Johnson
30dd9cafeb Add some p0f results to message headers 2014-11-21 16:51:19 -06:00
Jared Johnson
ffefb6b1ec Fix GeoIP add_headers() return code 2014-11-17 14:24:17 -06:00
Matt Simerson
fd11777892 Merge pull request #144 from grtodd/master
Add auth_imap plugin.
2014-11-15 12:08:25 -08:00
Matt Simerson
9966c34fd8 Merge pull request #149 from msimerson/fortune
fortune: fix bin detection
2014-11-14 13:22:45 -08:00
Jared Johnson
cf09a662ad New convention for calling Qpsmtpd::Base stuff
I think
2014-11-13 16:29:52 -06:00
Jared Johnson
a3ae6c51f4 Shorter lines and more explicit default 2014-11-13 14:55:17 -06:00
Jared Johnson
0975b22582 Get rid of a warning 2014-11-13 14:19:34 -06:00
Jared Johnson
575dc73cdf Use 'command line' instead of config() call
It's awful, but consistent
2014-11-13 13:40:04 -06:00
Jared Johnson
943b1fcaf3 Remove country_name header which is redundant 2014-11-13 11:13:15 -06:00
Jared Johnson
0f0495f09e Explicit return 2014-11-13 11:13:15 -06:00
Jared Johnson
cf0d87610c Make GeoIP headers optional 2014-11-13 11:13:15 -06:00
Jared Johnson
d22396c298 Add headers with GeoIP data 2014-11-13 11:13:15 -06:00
Jared Johnson
da3ed5ebbf Fix missing $self 2014-11-13 11:13:15 -06:00