Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

We’re showing branches in this repository, but you can also compare across forks.

...
  • 13 commits
  • 74 files changed
  • 0 commit comments
  • 2 contributors
Commits on Apr 29, 2012
Matt Simerson msimerson doc fix: changed $TRACE_LEVEL to $TraceLevel 8905587
Matt Simerson msimerson updated URL to new github repo 2591d57
Matt Simerson msimerson suppress log error when $user unset
test for and return earlier when a null sender is encountered.
Prevents using an undefined variable.
1701406
Matt Simerson msimerson bump RAM from 50 to 75MB
necessary on my FreeBSD 8 amd64 system. I'm guessing higher requirements
will be the norm on 64 bit systems.
1f36a24
Matt Simerson msimerson improve grammar, update logging instructions
updated instructions for setting loglevel to use config/loglevel instead
of editing lib/Qpsmtpd to set $TraceLevel
dfeb835
Matt Simerson msimerson fixed POD formatting 5dfc90a
Matt Simerson msimerson added comments to logging config files 91d3f2a
Matt Simerson msimerson added tls comments to config/plugins 4bff5de
Matt Simerson msimerson fixed spelling error, added spf code to notes 821b182
Matt Simerson msimerson make sure $hook is defined before printing it
This prevents error messages about $hook being undefined in the logs
005c4d9
Matt Simerson msimerson 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.
651ca98
Matt Simerson msimerson prepend auth_flat plugin name to $note
Makes it much easier to figure out where that log entry came from.
38c7435
Robert rspier 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'
61de599
Showing with 143 additions and 95 deletions.
  1. +22 −23 README
  2. +22 −0 config.sample/logging
  3. +2 −0  config.sample/loglevel
  4. +2 −1  config.sample/plugins
  5. +5 −5 docs/development.pod
  6. +4 −3 lib/Qpsmtpd.pm
  7. +1 −1  plugins/async/check_earlytalker
  8. +1 −1  plugins/async/dns_whitelist_soft
  9. +1 −1  plugins/async/dnsbl
  10. +1 −1  plugins/async/queue/smtp-forward
  11. +1 −1  plugins/async/require_resolvable_fromhost
  12. +1 −1  plugins/async/rhsbl
  13. +1 −1  plugins/async/uribl
  14. +1 −1  plugins/auth/auth_checkpassword
  15. +1 −1  plugins/auth/auth_cvm_unix_local
  16. +1 −1  plugins/auth/auth_flat_file
  17. +1 −1  plugins/auth/auth_ldap_bind
  18. +1 −1  plugins/auth/auth_vpopmail
  19. +1 −1  plugins/auth/auth_vpopmail_sql
  20. +1 −1  plugins/auth/auth_vpopmaild
  21. +1 −1  plugins/auth/authdeny
  22. +1 −1  plugins/check_badmailfrom_patterns
  23. +1 −1  plugins/check_badmailfromto
  24. +1 −0  plugins/check_badrcptto_patterns
  25. +1 −1  plugins/check_basicheaders
  26. +1 −1  plugins/check_bogus_bounce
  27. +1 −0  plugins/check_earlytalker
  28. +1 −1  plugins/check_loop
  29. +1 −0  plugins/check_norelay
  30. +1 −0  plugins/check_spamhelo
  31. +1 −0  plugins/connection_time
  32. +1 −0  plugins/dns_whitelist_soft
  33. +1 −1  plugins/dnsbl
  34. +1 −0  plugins/domainkeys
  35. +1 −0  plugins/greylisting
  36. +1 −0  plugins/hosts_allow
  37. +1 −0  plugins/http_config
  38. +8 −7 plugins/ident/geoip
  39. +1 −1  plugins/logging/adaptive
  40. +1 −0  plugins/logging/apache
  41. +1 −1  plugins/logging/connection_id
  42. +1 −1  plugins/logging/devnull
  43. +5 −5 plugins/logging/file
  44. +1 −1  plugins/logging/syslog
  45. +1 −1  plugins/logging/transaction_id
  46. +1 −1  plugins/logging/warn
  47. +1 −0  plugins/milter
  48. +1 −0  plugins/queue/exim-bsmtp
  49. +1 −1  plugins/queue/maildir
  50. +1 −0  plugins/queue/postfix-queue
  51. +1 −0  plugins/queue/smtp-forward
  52. +1 −0  plugins/quit_fortune
  53. +1 −0  plugins/random_error
  54. +1 −0  plugins/rcpt_map
  55. +1 −0  plugins/rcpt_regexp
  56. +1 −1  plugins/relay_only
  57. +1 −0  plugins/require_resolvable_fromhost
  58. +1 −1  plugins/rhsbl
  59. +8 −7 plugins/sender_permitted_from
  60. +1 −1  plugins/spamassassin
  61. +1 −1  plugins/tls
  62. +1 −1  plugins/tls_cert
  63. +1 −1  plugins/uribl
  64. +1 −1  plugins/virus/aveclient
  65. +1 −1  plugins/virus/bitdefender
  66. +1 −1  plugins/virus/clamav
  67. +1 −1  plugins/virus/clamdscan
  68. +1 −1  plugins/virus/hbedv
  69. +1 −1  plugins/virus/kavscanner
  70. +1 −0  plugins/virus/klez_filter
  71. +1 −1  plugins/virus/sophie
  72. +1 −1  plugins/virus/uvscan
  73. +1 −1  run
  74. +1 −1  t/plugin_tests/auth/auth_flat_file
45 README
View
@@ -59,13 +59,13 @@ directory.
Put the files there. If you install from git you can just do
run the following command in the /home/smtpd/ directory.
- git clone git://github.com/abh/qpsmtpd.git
+ git clone git://github.com/smtpd/qpsmtpd.git
Beware that the master branch might be unstable and unsuitable for anything
but development, so you might want to get a specific release, for
example (after running git clone):
- git checkout -b local_branch v0.40
+ git checkout -b local_branch v0.84
chmod o+t ~smtpd/qpsmtpd/ (or whatever directory you installed qpsmtpd
in) to make supervise start the log process.
@@ -73,7 +73,7 @@ in) to make supervise start the log process.
Edit the file config/IP and put the ip address you want to use for
qpsmtpd on the first line (or use 0 to bind to all interfaces).
-If you use the supervise tools, then you are practically done now!
+If you use the supervise tools, then you are practically done!
Just symlink /home/smtpd/qpsmtpd into your /services (or /var/services
or /var/svscan or whatever) directory. Remember to shutdown
qmail-smtpd if you are replacing it with qpsmtpd.
@@ -122,14 +122,14 @@ interest in various "hooks" provided by the qpsmtpd core engine.
At least one plugin MUST allow or deny the RCPT command to enable
receiving mail. The "rcpt_ok" is one basic plugin that does
-this. Other plugins provides extra functionality related to this; for
+this. Other plugins provide extra functionality related to this; for
example the require_resolvable_fromhost plugin described above.
=head1 Configuration files
All the files used by qmail-smtpd should be supported; so see the man
-page for qmail-smtpd. Extra files used by qpsmtpd includes:
+page for qmail-smtpd. Extra files used by qpsmtpd include:
=over 4
@@ -141,7 +141,7 @@ a subdirectory of there).
=item rhsbl_zones
-
+
Right hand side blocking lists, one per line. For example:
dsn.rfc-ignorant.org does not accept bounces - http://www.rfc-ignorant.org/
@@ -158,12 +158,11 @@ Normal ip based DNS blocking lists ("RBLs"). For example:
=item require_resolvable_fromhost
-
+
If this file contains anything but a 0 on the first line, envelope
senders will be checked against DNS. If an A or a MX record can't be
found the mail command will return a soft rejection (450).
-
=item spool_dir
If this file contains a directory, it will be the spool directory
@@ -171,36 +170,36 @@ smtpd uses during the data transactions. If this file doesn't exist, it
will default to use $ENV{HOME}/tmp/. This directory should be set with
a mode of 700 and owned by the smtpd user.
+=item spool_perms
+
+The default spool permissions are 0700. If you need some other value,
+chmod the directory and set it's octal value in config/spool_perms.
+
=item tls_before_auth
-If this file contains anything except a 0 on the first noncomment line, then
-AUTH will not be offered unless TLS/SSL are in place, either with STARTTLS,
+If this file contains anything except a 0 on the first noncomment line, then
+AUTH will not be offered unless TLS/SSL are in place, either with STARTTLS,
or SMTP-SSL on port 465.
-=item everything (?) that qmail-smtpd supports.
+=item everything (?) that qmail-smtpd supports.
In my test qpsmtpd installation I have a "config/me" file containing
the hostname I use for testing qpsmtpd (so it doesn't introduce itself
with the normal name of the server).
-
-=back
+=back
=head1 Problems
-In case of problems always first check the logfile.
+In case of problems, always check the logfile first.
-As default it goes into log/main/current. Qpsmtpd can log a lot of
-debug information. You can get more or less by adjusting $TRACE_LEVEL
-in lib/Qpsmtpd.pm (sorry, no easy switch for that yet). Something
-between 1 and 3 should give you just a little bit. If you set it to
-10 or higher you will get lots of information in the logs.
+By default, qpsmtpd logs to log/main/current. Qpsmtpd can log a lot of
+debug information. You can get more or less by adjusting the number in
+config/loglevel. Between 1 and 3 should give you a little. Setting it
+to 10 or higher will get lots of information in the logs.
If the logfile doesn't give away the problem, then post to the
-mailinglist (subscription instructions above). If possibly then put
+mailinglist (subscription instructions above). If possible, put
the logfile on a webserver and include a reference to it in the mail.
-
-
-
22 config.sample/logging
View
@@ -1 +1,23 @@
+# by default, qpsmtpd logs to STDERR at the level set in config/loglevel.
+#
+# In addition, qpsmtpd will log through any plugins enabled in this file.
+# You can enable as many plugins as you wish. Example plugin invocations
+# are included below. Just remove the # symbol to enable them.
+
+# default logging plugin
logging/warn 9
+
+#logging/adaptive [accept minlevel] [reject maxlevel] [prefix char]
+#logging/adaptive 4 6
+
+# send logs to apache (useful if running qpsmtpd under apache)
+#logging/apache
+
+# send logs to the great bit bucket
+#logging/devnull
+
+# log to a file
+#logging/file loglevel LOGINFO /var/log/qpsmtpd.log
+
+# log to syslog
+#logging/syslog loglevel LOGWARN priority LOG_NOTICE
2  config.sample/loglevel
View
@@ -7,4 +7,6 @@
# LOGCRIT = 2
# LOGALERT = 1
# LOGEMERG = 0
+#
+# This setting controls the built-in qpsmtpd logging.
4
3  config.sample/plugins
View
@@ -20,7 +20,8 @@ dont_require_anglebrackets
# parse_addr_withhelo
quit_fortune
-
+# tls should load before count_unrecognized_commands
+#tls
check_earlytalker
count_unrecognized_commands 4
check_relay
10 docs/development.pod
View
@@ -11,12 +11,12 @@ Subscribe by sending mail to qpsmtpd-subscribe@perl.org
We use git for version control.
-Ask owns the master repository at git://github.com/abh/qpsmtpd.git
+Ask owns the master repository at git://github.com/smtpd/qpsmtpd.git
We suggest using github to host your repository -- it makes your
changes easily accessible for pulling into the master. After you
create a github account, go to
-http://github.com/abh/qpsmtpd/tree/master and click on the "fork"
+http://github.com/smtpd/qpsmtpd/tree/master and click on the "fork"
button to get your own repository.
=head3 Making a working Copy
@@ -83,11 +83,11 @@ them to a git repository (for example on github).
=head3 Merging changes back in from the master repository
-Tell git about the master repository. We're going to call it 'abh'
+Tell git about the master repository. We're going to call it 'smtpd'
for now, but you could call it anything you want. You only have to do
this once.
- git remote add abh git://github.com/abh/qpsmtpd.git
+ git remote add smtpd git://github.com/smtpd/qpsmtpd.git
Pull in data from all remote branches
@@ -95,7 +95,7 @@ Pull in data from all remote branches
Forward-port local commits to the updated upstream head
- git rebase abh/master
+ git rebase smtpd/master
If you have a change that conflicts with an upstream change (git will
let you know) you have two options.
7 lib/Qpsmtpd.pm
View
@@ -130,8 +130,9 @@ sub varlog {
unless ( $rc and $rc == DECLINED or $rc == OK ) {
# no logging plugins registered so fall back to STDERR
warn join(" ", $$ .
- (defined $plugin ? " $plugin plugin ($hook):" :
- defined $hook ? " running plugin ($hook):" : ""),
+ (defined $plugin && defined $hook ? " $plugin plugin ($hook):" :
+ defined $plugin ? " $plugin plugin:" :
+ defined $hook ? " running plugin ($hook):" : ""),
@log), "\n"
if $trace <= $TraceLevel;
}
@@ -543,7 +544,7 @@ sub spool_dir {
my $self = shift;
unless ( $Spool_dir ) { # first time through
- $self->log(LOGINFO, "Initializing spool_dir");
+ $self->log(LOGDEBUG, "Initializing spool_dir");
$Spool_dir = $self->config('spool_dir')
|| Qpsmtpd::Utils::tildeexp('~/tmp/');
2  plugins/async/check_earlytalker
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/async/dns_whitelist_soft
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
use Qpsmtpd::Plugin::Async::DNSBLBase;
2  plugins/async/dnsbl
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
use Qpsmtpd::Plugin::Async::DNSBLBase;
2  plugins/async/queue/smtp-forward
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/async/require_resolvable_fromhost
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
use Qpsmtpd::DSN;
use ParaDNS;
2  plugins/async/rhsbl
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
use Qpsmtpd::Plugin::Async::DNSBLBase;
2  plugins/async/uribl
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
use Qpsmtpd::Plugin::Async::DNSBLBase;
2  plugins/auth/auth_checkpassword
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/auth/auth_cvm_unix_local
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/auth/auth_flat_file
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/auth/auth_ldap_bind
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -Tw
+#!perl -Tw
sub register {
my ( $self, $qp, @args ) = @_;
2  plugins/auth/auth_vpopmail
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
use strict;
=head1 NAME
2  plugins/auth/auth_vpopmail_sql
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/auth/auth_vpopmaild
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
use strict;
use warnings;
2  plugins/auth/authdeny
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
#
# This plugin doesn't actually check anything and will fail any
# user no matter what they type. It is strictly a proof of concept for
2  plugins/check_badmailfrom_patterns
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
=pod
2  plugins/check_badmailfromto
View
@@ -1,4 +1,4 @@
-#! perl
+#!perl -Tw
=head1 NAME
1  plugins/check_badrcptto_patterns
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=pod
=head1 SYNOPSIS
2  plugins/check_basicheaders
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
=head1 NAME
2  plugins/check_bogus_bounce
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
1  plugins/check_earlytalker
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
check_earlytalker - Check that the client doesn't talk before we send the SMTP banner
2  plugins/check_loop
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
=head1 NAME
1  plugins/check_norelay
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=pod
=head1 SYNOPSIS
1  plugins/check_spamhelo
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
check_spamhelo - Check a HELO message delivered from a connecting host.
1  plugins/connection_time
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
1  plugins/dns_whitelist_soft
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
dns_whitelist_soft - dns-based whitelist override for other qpsmtpd plugins
2  plugins/dnsbl
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
=head1 NAME
1  plugins/domainkeys
View
@@ -1,3 +1,4 @@
+#!perl -Tw
sub init {
my ($self, $qp, %args) = @_;
1  plugins/greylisting
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
denysoft_greylist
1  plugins/hosts_allow
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
1  plugins/http_config
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
http_config
15 plugins/ident/geoip
View
@@ -16,14 +16,15 @@ or greylist.
use Geo::IP;
sub hook_connect {
- my ($self) = @_;
+ my ($self) = @_;
- my $geoip = Geo::IP->new(GEOIP_STANDARD);
- my $country =
- $geoip->country_code_by_addr( $self->qp->connection->remote_ip );
+ my $geoip = Geo::IP->new(GEOIP_STANDARD);
+ my $country =
+ $geoip->country_code_by_addr( $self->qp->connection->remote_ip )
+ or return (DECLINED);
- $self->qp->connection->notes('geoip_country', $country);
- $self->log(LOGNOTICE, "GeoIP Country: $country");
+ $self->qp->connection->notes('geoip_country', $country);
+ $self->log(LOGNOTICE, "GeoIP Country: $country");
- return DECLINED;
+ return DECLINED;
}
2  plugins/logging/adaptive
View
@@ -1,4 +1,4 @@
-#!perl
+#!perl -Tw
# Adaptive logging plugin - logs at one level for successful messages and
# one level for DENY'd messages
1  plugins/logging/apache
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
2  plugins/logging/connection_id
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
# this is a simple 'connection_id' plugin like the default builtin logging
#
# It demonstrates that a logging plugin can call ->log itself as well
2  plugins/logging/devnull
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
# this is a simple 'drop packets on the floor' plugin
sub hook_logging {
10 plugins/logging/file
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
=head1 NAME
@@ -20,10 +20,10 @@ logging/file [loglevel I<level>] [reopen] [nosplit] [tsformat I<format>] I<path>
For example:
-logging/file loglevel LOGINFO /var/log/qpsmtpd.log
-logging/file /var/log/qpsmtpd.log.%Y-%m-%d
-logging/file loglevel LOGCRIT reopen |/usr/local/sbin/page-sysadmin
-logging/file loglevel LOGDEBUG tsformat %FT%T /var/log/qpsmtpd.log
+ logging/file loglevel LOGINFO /var/log/qpsmtpd.log
+ logging/file /var/log/qpsmtpd.log.%Y-%m-%d
+ logging/file loglevel LOGCRIT reopen |/usr/local/sbin/page-sysadmin
+ logging/file loglevel LOGDEBUG tsformat %FT%T /var/log/qpsmtpd.log
=back
2  plugins/logging/syslog
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
=head1 NAME
2  plugins/logging/transaction_id
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
# this is a simple 'transaction_id' plugin like the default builtin logging
#
# It demonstrates that a logging plugin can call ->log itself as well
2  plugins/logging/warn
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl -Tw
# this is a simple 'warn' plugin like the default builtin logging
#
# It demonstrates that a logging plugin can call ->log itself as well
1  plugins/milter
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
milter
1  plugins/queue/exim-bsmtp
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
exim-bsmtp
2  plugins/queue/maildir
View
@@ -1,4 +1,4 @@
-#!perl
+#!perl -Tw
=head1 NAME
1  plugins/queue/postfix-queue
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
1  plugins/queue/smtp-forward
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
smtp-forward
1  plugins/quit_fortune
View
@@ -1,3 +1,4 @@
+#!perl -Tw
sub hook_quit {
my $qp = shift->qp;
1  plugins/random_error
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
random_error
1  plugins/rcpt_map
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
1  plugins/rcpt_regexp
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
rcpt_regexp - check recipients against a list of regular expressions
2  plugins/relay_only
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
1  plugins/require_resolvable_fromhost
View
@@ -1,3 +1,4 @@
+#!perl -Tw
use Qpsmtpd::DSN;
use Net::DNS qw(mx);
use Socket;
2  plugins/rhsbl
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
sub register {
my ($self, $qp, $denial ) = @_;
15 plugins/sender_permitted_from
View
@@ -1,3 +1,4 @@
+#!perl -Tw
=head1 NAME
@@ -46,16 +47,15 @@ sub hook_mail {
my ($self, $transaction, $sender, %param) = @_;
my $format = $sender->format;
- my $host = lc $sender->host;
- my $user = $sender->user;
+ return (DECLINED, "SPF - null sender") if $format eq '<>';
+ return (DECLINED, "SPF - null sender")
+ unless ($sender->host && $sender->user);
+
my $client_ip = $self->qp->connection->remote_ip;
- my $from = $sender->user . '@' . $host;
+ my $from = $sender->user . '@' . lc($sender->host);
my $helo = $self->qp->connection->hello_host;
- return (DECLINED, "SPF - null sender")
- unless ($format ne "<>" && $host && $user);
-
- # If we are receving from a relay permitted host, then we are probably
+ # If we are receiving from a relay permitted host, then we are probably
# not the delivery system, and so we shouldn't check
return (DECLINED, "SPF - relaying permitted")
if $self->qp->connection->relay_client();
@@ -93,6 +93,7 @@ sub hook_mail {
my $result = $spf_server->process($request);
$transaction->notes('spfquery', $result);
+ $transaction->notes('spfcode', $result->code);
return (OK) if $result->code eq 'pass'; # this test passed
return (DECLINED, "SPF - $result->code");
2  plugins/spamassassin
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
=head1 NAME
2  plugins/tls
View
@@ -1,4 +1,4 @@
-#!perl -w
+#!perl -Tw
=head1 NAME
2  plugins/tls_cert
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
# Very basic script to create TLS certificates for qpsmtpd
use File::Temp qw/ tempfile tempdir /;
use Getopt::Long;
2  plugins/uribl
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/virus/aveclient
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
aveclient
2  plugins/virus/bitdefender
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -Tw
+#!perl -Tw
=head1 NAME
2  plugins/virus/clamav
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -Tw
+#!perl -Tw
=head1 NAME
2  plugins/virus/clamdscan
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  plugins/virus/hbedv
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
# H+B EDV-AV plugin.
#
2  plugins/virus/kavscanner
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
# Kasperski-AV plugin.
=head1 NAME
1  plugins/virus/klez_filter
View
@@ -1,3 +1,4 @@
+#!perl -Tw
sub hook_data_post {
my ($self, $transaction) = @_;
2  plugins/virus/sophie
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
use IO::Socket;
sub register {
2  plugins/virus/uvscan
View
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!perl -Tw
=head1 NAME
2  run
View
@@ -2,7 +2,7 @@
QMAILDUID=`id -u smtpd`
NOFILESGID=`id -g smtpd`
LANG=C
-exec /usr/local/bin/softlimit -m 50000000 \
+exec /usr/local/bin/softlimit -m 75000000 \
/usr/local/bin/tcpserver -c 10 -v -R -p \
-u $QMAILDUID -g $NOFILESGID `head -1 config/IP` smtp \
./qpsmtpd 2>&1
2  t/plugin_tests/auth/auth_flat_file
View
@@ -19,7 +19,7 @@ sub test_auth_flat_file {
for $u ( @u_list ) {
( $a,$r,$p ) = @{$u_data{$u}};
($ret, $note) = $self->auth_flat_file($tran,'CRAMMD5',$a,$p);
- defined $note or $note='No-Message';
+ defined $note or $note='authflat: No-Message';
is ($ret, $r, $note);
# - for debugging.
# warn "$note\n";

No commit comments for this range

Something went wrong with that request. Please try again.