Removes the comment from line 196, which enables the loading of plugins at startup again. Otherwise there would have been the need for a SIGHUP in order to load the plugins initially.
Closes#308 and #288.
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.)
This can be convenient, especially when one wants to emit a warning that will
show up when running the test suite but still be properly logged in production
plugin dir, config dir, spool dir, all have different logic about where/how to find their config. The logic needs some untangling and unification before attempting this again.
- 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
then derive ids for connections and transactions from that via
simple counters.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@785 958fd67b-6ff1-0310-b445-bb7760255be9
differenct sequence of ids in DNS requests.
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@682 958fd67b-6ff1-0310-b445-bb7760255be9
qpsmtpd-forkserver. This patch merges Peter's patch (with the possibilty
to DENY/DENSOFT the connection) and my first attempt. The --max-from-ip
check was moved from core to the hosts_allow plugin.
Patch by: Hanno Hecker <hah@uu-x.de>
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@599 958fd67b-6ff1-0310-b445-bb7760255be9
root exposure, and avoids (e.g.) files being created as root which then won't
be writable by the normal qpsmtpd user.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.3x@584 958fd67b-6ff1-0310-b445-bb7760255be9
Don't try to load the plugins if they are already loaded.
* lib/Qpsmtpd/Transaction.pm
Get the size_threshold by inheritance.
Extract the spooling of the body as a new sub.
Always spool the body when calling body_filename().
Compare the body_size to the cached size_threshold.
* lib/Qpsmtpd.pm
Cache the size_threshold and provide an accessor method.
* qpsmtpd-forkserver
Initialize both the spool_dir and size_threshold caches before forking.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@547 958fd67b-6ff1-0310-b445-bb7760255be9
prior to entering the main accept loop.
Split handling of --pid-file so that preexisting pid files are dealt with and
the file is opened before priveleges are dropped, but the writing out of the
new file happens after dropping privs and (if applicable) forking the
daemonized process, so the correct PID is recorded.
git-svn-id: https://svn.perl.org/qpsmtpd/branches/0.31@524 958fd67b-6ff1-0310-b445-bb7760255be9
Use known-safe fork code for forking
No more SIGCHLD for managing zombies (Peter Holzer)
Don't block on accept() so we can call REAPER every second
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@461 958fd67b-6ff1-0310-b445-bb7760255be9
+
+ qpsmtpd-forkserver: set auxiliary groups (this is needed for the
+ postfix backend, which expects to have write permission to a fifo
+ which usually belongs to group postdrop). (pjh)
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@460 958fd67b-6ff1-0310-b445-bb7760255be9
Create a single Qpsmtpd::TcpServer object in the parent process and
then rely on fork to let each child have it's own copy
* lib/Qpsmtpd/Plugin.pm
Add new pre-connection and post-connection hooks
* README.plugins
Document the above new hooks
* lib/Qpsmtpd.pm
No longer have local value for trace_level() the first time through, which
was masking the global value (due to stupid search/replace error).
Don't call log() from trace_level() since it is only ever called from
within the varlog() sub when no logging plugin is registered.
* plugins/dnsbl
Config line option to use DENY_DISCONNECT instead of DENY (since any IP
on a blacklist should not have a chance to send anything for now).
Add POD to document the new disconnect behavior
* lib/Qpsmtpd.pm
Compatibility changes so test files continue to work
* t/Test/Qpsmtpd.pm
Compatibility sub for core subs which call varlog() directly
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@428 958fd67b-6ff1-0310-b445-bb7760255be9
existing core code. Add OK hook.
* lib/Qpsmtpd.pm
(init_logger): replaced with log_level()
(load_logging): NEW - load logging plugins without calling log()
(log_level): NEW - set/get global $LogLevel scalar
(log): now just a wrapper for varlog(); called only by core code
(varlog): initializes logging if not already done, calls logging plugins
in turn and falls back to interal logging unless plugins OK or DECLINED
(_load_plugins): only display "Loading plugin" when actually loading one
(run_hooks): load logging plugins without calling log(); add OK hook as
else of the DENY* case
(spool_dir): use global $Spool_dir scalar to cache location
* lib/Qpsmtpd/Plugin.pm
(%hooks): add "logging" and "ok"
(register_hook): add local _hook to object cache
(log): call varlog() with additional parameters hook and plugin_name
except for logging hook
(compile): add accessor sub for local _hook scalar
* lib/Qpsmtpd/SMTP.pm
(mail, rcpt): change loglevel to LOGALERT instead of LOGWARN for from/to
* qpsmtpd-forkserver
(REAPER): use package ::log() instead of warn()
(main): defer calling log until $plugin_loader has been initialized
(log): call logging using the $plugin_loader object
* plugins/logging/warn
NEW: sample plugin which replicates the core logging functionality
* plugins/logging/devnull
NEW: sample plugin which logs nothing (for testing multiple logging
plugin functionality)
* config.sample/logging
sample configuration file for logging plugins
* plugins/virus/uvscan
plugins/virus/clamav
Increase loglevel for non-serious warnings to LOGWARN from LOGERROR
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@398 958fd67b-6ff1-0310-b445-bb7760255be9
Subject: default port for qpsmtpd-forkserver
Date: Sun, 28 Nov 2004 10:14:20 -0800
Message-ID: <20041128181420.GA17602@trainedmonkey.com>
it's a minor thing, but the default port for qpsmtpd-forkserver is 2525
in the code, but it claims to be 25 in the usage text.
also, the $MAXCONNIP was not settable from the command line.
git-svn-id: https://svn.perl.org/qpsmtpd/trunk@354 958fd67b-6ff1-0310-b445-bb7760255be9