diff --git a/docs/advanced.pod b/docs/advanced.pod index 25eb2d9..fffb412 100644 --- a/docs/advanced.pod +++ b/docs/advanced.pod @@ -65,14 +65,14 @@ should be configured to run I, like B. my ($self, $transaction, $recipient) = @_; my ($rc, @msg) = $self->SUPER::hook_rcpt($transaction, $recipient); - return ($rc, @msg) + return $rc, @msg unless (($rc == DENY) and $self->{_count_relay_max}); my $count = ($self->connection->notes('count_relay_attempts') || 0) + 1; $self->connection->notes('count_relay_attempts', $count); - return ($rc, @msg) unless ($count > $self->{_count_relay_max}); + return $rc, @msg unless ($count > $self->{_count_relay_max}); return Qpsmtpd::DSN->relaying_denied(DENY_DISCONNECT, "Too many relaying attempts"); } diff --git a/docs/authentication.pod b/docs/authentication.pod index 1cf7a35..fa7373c 100644 --- a/docs/authentication.pod +++ b/docs/authentication.pod @@ -136,7 +136,7 @@ auth method if the first one fails. Plugins may also return an optional message with the return code, e.g. - return (DENY, "If you forgot your password, contact your admin"); + return DENY, "If you forgot your password, contact your admin"; and this will be appended to whatever response is sent to the remote SMTP client. There is no guarantee that the end user will see this information, diff --git a/docs/hooks.pod b/docs/hooks.pod index 1f83d08..3a236cf 100644 --- a/docs/hooks.pod +++ b/docs/hooks.pod @@ -712,9 +712,9 @@ plugin didn't find the requested value requested values as C<@list>, example: - return (OK, @{$config{$key}}) + return OK, @{$config{$key}} if exists $config{$key}; - return (DECLINED); + return DECLINED; =back @@ -744,9 +744,9 @@ plugin didn't find the requested value requested values as C<@list>, example: - return (OK, @{$config{$key}}) + return OK, @{$config{$key}} if exists $config{$key}; - return (DECLINED); + return DECLINED; =back diff --git a/lib/Qpsmtpd.pm b/lib/Qpsmtpd.pm index 08fdbe1..39363b6 100644 --- a/lib/Qpsmtpd.pm +++ b/lib/Qpsmtpd.pm @@ -257,7 +257,9 @@ sub run_hooks { sub run_hooks_no_respond { my ($self, $hook) = (shift, shift); - return (0, '') if !$hooks->{$hook}; + if (!$hooks->{$hook}) { + return 0,''; + } my @r; for my $code (@{$hooks->{$hook}}) { @@ -425,17 +427,17 @@ sub size_threshold { sub authenticated { my $self = shift; - return (defined $self->{_auth} ? $self->{_auth} : ''); + return defined $self->{_auth} ? $self->{_auth} : ''; } sub auth_user { my $self = shift; - return (defined $self->{_auth_user} ? $self->{_auth_user} : ''); + return defined $self->{_auth_user} ? $self->{_auth_user} : ''; } sub auth_mechanism { my $self = shift; - return (defined $self->{_auth_mechanism} ? $self->{_auth_mechanism} : ''); + return defined $self->{_auth_mechanism} ? $self->{_auth_mechanism} : ''; } sub address { diff --git a/lib/Qpsmtpd/Address.pm b/lib/Qpsmtpd/Address.pm index 853249c..fc81a01 100644 --- a/lib/Qpsmtpd/Address.pm +++ b/lib/Qpsmtpd/Address.pm @@ -213,22 +213,24 @@ sub canonify { return "" if $path eq ""; # bare postmaster is permissible, perl RFC-2821 (4.5.1) - return ("postmaster", undef) if $path =~ m/^postmaster$/i; + if ( $path =~ m/^postmaster$/i ) { + return "postmaster", undef; + } my ($localpart, $domainpart) = ($path =~ /^(.*)\@($domain)$/); - return (undef) unless defined $localpart; + return undef if !defined $localpart; if ($localpart =~ /^$atom_expr(\.$atom_expr)*/) { # simple case, we are done - return ($localpart, $domainpart); + return $localpart, $domainpart; } if ($localpart =~ /^"(($qtext_expr|\\$text_expr)*)"$/) { $localpart = $1; $localpart =~ s/\\($text_expr)/$1/g; - return ($localpart, $domainpart); + return $localpart, $domainpart; } - return (undef); + return undef; } =head2 parse() @@ -374,7 +376,7 @@ sub _addr_cmp { ($right, $left) = ($left, $right); } - return ($left cmp $right); + return $left cmp $right; } =head1 COPYRIGHT diff --git a/lib/Qpsmtpd/Auth.pm b/lib/Qpsmtpd/Auth.pm index c0a03e1..5e3abd1 100644 --- a/lib/Qpsmtpd/Auth.pm +++ b/lib/Qpsmtpd/Auth.pm @@ -14,7 +14,7 @@ sub e64 { my ($arg) = @_; my $res = encode_base64($arg); chomp($res); - return ($res); + return $res; } sub SASL { @@ -110,7 +110,7 @@ sub get_auth_details_plain { return; } - return ($loginas, $user, $passClear); + return $loginas, $user, $passClear; } sub get_auth_details_login { @@ -127,7 +127,7 @@ sub get_auth_details_login { my $passClear = get_base64_response($session, 'Password:') or return; - return ($user, $passClear); + return $user, $passClear; } sub get_auth_details_cram_md5 { @@ -157,7 +157,7 @@ sub get_auth_details_cram_md5 { } $session->{auth}{ticket} = $ticket; - return ($ticket, $user, $passHash); + return $ticket, $user, $passHash; } sub get_base64_response { @@ -188,40 +188,40 @@ sub validate_password { if (!$src_crypt && !$src_clear) { $self->log(LOGINFO, "fail: missing password"); - return ($deny, "$file - no such user"); + return $deny, "$file - no such user"; } if (!$src_clear && $method =~ /CRAM-MD5/i) { $self->log(LOGINFO, "skip: cram-md5 not supported w/o clear pass"); - return (DECLINED, $file); + return DECLINED, $file; } if (defined $attempt_clear) { if ($src_clear && $src_clear eq $attempt_clear) { $self->log(LOGINFO, "pass: clear match"); - return (OK, $file); + return OK, $file; } if ($src_crypt && $src_crypt eq crypt($attempt_clear, $src_crypt)) { $self->log(LOGINFO, "pass: crypt match"); - return (OK, $file); + return OK, $file; } } if (defined $attempt_hash && $src_clear) { if (!$ticket) { $self->log(LOGERROR, "skip: missing ticket"); - return (DECLINED, $file); + return DECLINED, $file; } if ($attempt_hash eq hmac_md5_hex($ticket, $src_clear)) { $self->log(LOGINFO, "pass: hash match"); - return (OK, $file); + return OK, $file; } } $self->log(LOGINFO, "fail: wrong password"); - return ($deny, "$file - wrong password"); + return $deny, "$file - wrong password"; } # tag: qpsmtpd plugin that sets RELAYCLIENT when the user authenticates diff --git a/lib/Qpsmtpd/Command.pm b/lib/Qpsmtpd/Command.pm index 29a0f63..7787f2d 100644 --- a/lib/Qpsmtpd/Command.pm +++ b/lib/Qpsmtpd/Command.pm @@ -33,21 +33,21 @@ Inside a plugin sub hook_unrecognized_command_parse { my ($self, $transaction, $cmd) = @_; - return (OK, \&bdat_parser) if ($cmd eq 'bdat'); + return OK, \&bdat_parser if $cmd eq 'bdat'; } sub bdat_parser { my ($self,$cmd,$line) = @_; # .. do something with $line... - return (DENY, "Invalid arguments") + return DENY, "Invalid arguments" if $some_reason_why_there_is_a_syntax_error; - return (OK, @args); + return OK, @args; } sub hook_unrecognized_command { my ($self, $transaction, $cmd, @args) = @_; - return (DECLINED) if ($self->qp->connection->hello eq 'helo'); - return (DECLINED) unless ($cmd eq 'bdat'); + return DECLINED if $self->qp->connection->hello eq 'helo'; + return DECLINED if $cmd ne 'bdat'; .... } @@ -61,7 +61,7 @@ use vars qw(@ISA); sub parse { my ($me, $cmd, $line, $sub) = @_; - return (OK) unless defined $line; # trivial case + return OK if !defined $line; # trivial case my $self = {}; bless $self, $me; $cmd = lc $cmd; @@ -69,7 +69,7 @@ sub parse { my @ret = eval { $sub->($self, $cmd, $line); }; if ($@) { $self->log(LOGERROR, "Failed to parse command [$cmd]: $@"); - return (DENY, $line, ()); + return DENY, $line; } ## my @log = @ret; ## for (@log) { @@ -85,22 +85,22 @@ sub parse { my @out = eval { $self->$parse($cmd, $line); }; if ($@) { $self->log(LOGERROR, "$parse($cmd,$line) failed: $@"); - return (DENY, "Failed to parse line"); + return DENY, "Failed to parse line"; } return @out; } - return (OK, split(/ +/, $line)); # default :) + return OK, split(/ +/, $line); # default :) } sub parse_rcpt { my ($self, $cmd, $line) = @_; - return (DENY, "Syntax error in command") unless $line =~ s/^to:\s*//i; + return DENY, "Syntax error in command" if $line !~ s/^to:\s*//i; return &_get_mail_params($cmd, $line); } sub parse_mail { my ($self, $cmd, $line) = @_; - return (DENY, "Syntax error in command") unless $line =~ s/^from:\s*//i; + return DENY, "Syntax error in command" if $line !~ s/^from:\s*//i; return &_get_mail_params($cmd, $line); } ### RFC 1869: @@ -141,33 +141,29 @@ sub _get_mail_params { # parameter syntax error, i.e. not all of the arguments were # stripped by the while() loop: - return (DENY, "Syntax error in parameters") - if ($line =~ /\@.*\s/); - return (OK, $line, @params); + return DENY, "Syntax error in parameters" if $line =~ /\@.*\s/; + return OK, $line, @params; } $line = shift @params; if ($cmd eq "mail") { - return (OK, "<>") unless $line; # 'MAIL FROM:' --> 'MAIL FROM:<>' - return (DENY, "Syntax error in parameters") - if ($line =~ /\@.*\s/); # parameter syntax error + return OK, "<>" if !$line; # 'MAIL FROM:' --> 'MAIL FROM:<>' + return DENY, "Syntax error in parameters" if $line =~ /\@.*\s/; # parameter syntax error } else { if ($line =~ /\@/) { - return (DENY, "Syntax error in parameters") - if ($line =~ /\@.*\s/); + return DENY, "Syntax error in parameters" if $line =~ /\@.*\s/; } else { # XXX: what about 'abuse' in Qpsmtpd::Address? - return (DENY, "Syntax error in parameters") if $line =~ /\s/; - return (DENY, "Syntax error in address") - unless ($line =~ /^(postmaster|abuse)$/i); + return DENY, "Syntax error in parameters" if $line =~ /\s/; + return DENY, "Syntax error in address" if $line !~ /^(postmaster|abuse)$/i; } } ## XXX: No: let this do a plugin, so it's not up to us to decide ## if we require <> around an address :-) ## unless ($line =~ /^<.*>$/) { $line = "<".$line.">"; } - return (OK, $line, @params); + return OK, $line, @params; } 1; diff --git a/lib/Qpsmtpd/DSN.pm b/lib/Qpsmtpd/DSN.pm index 5439f0d..50c31b4 100644 --- a/lib/Qpsmtpd/DSN.pm +++ b/lib/Qpsmtpd/DSN.pm @@ -154,7 +154,7 @@ sub _dsn { if (defined $reason) { $msg = $reason; } - return ($return, "$msg (#$class.$subject.$detail)"); + return $return, "$msg (#$class.$subject.$detail)"; } sub unspecified { shift->_dsn(shift, shift, DENYSOFT, 0, 0); } diff --git a/lib/Qpsmtpd/Plugin.pm b/lib/Qpsmtpd/Plugin.pm index 6ed6a4d..777bc97 100644 --- a/lib/Qpsmtpd/Plugin.pm +++ b/lib/Qpsmtpd/Plugin.pm @@ -232,7 +232,7 @@ sub get_reject { # they asked for reject, we give them reject $self->log(LOGINFO, "fail" . $log_mess); - return ($self->get_reject_type(), $smtp_mess); + return $self->get_reject_type(), $smtp_mess; } sub get_reject_type { @@ -264,7 +264,7 @@ sub store_deferred_reject { $self->connection->notes('naughty_reject_type', $self->{_args}{reject_type}); } - return (DECLINED); + return DECLINED; } sub store_auth_results { diff --git a/lib/Qpsmtpd/SMTP.pm b/lib/Qpsmtpd/SMTP.pm index 4d48576..be4184c 100644 --- a/lib/Qpsmtpd/SMTP.pm +++ b/lib/Qpsmtpd/SMTP.pm @@ -373,7 +373,7 @@ sub mail_parse_respond { # to support addresses without <> we now require a plugin # hooking "mail_pre" to - # return (OK, "<$from>"); + # return OK, "<$from>"; # (...or anything else parseable by Qpsmtpd::Address ;-)) # see also comment in sub rcpt() $self->run_hooks("mail_pre", $from, \%param); @@ -464,7 +464,7 @@ sub rcpt_parse_respond { # to support addresses without <> we now require a plugin # hooking "rcpt_pre" to - # return (OK, "<$rcpt>"); + # return OK, "<$rcpt>"; # (... or anything else parseable by Qpsmtpd::Address ;-)) # this means, a plugin can decide to (pre-)accept # addresses like or diff --git a/lib/Qpsmtpd/TcpServer.pm b/lib/Qpsmtpd/TcpServer.pm index 5651aa4..ebc52a6 100644 --- a/lib/Qpsmtpd/TcpServer.pm +++ b/lib/Qpsmtpd/TcpServer.pm @@ -131,7 +131,7 @@ sub respond { if (!$self->check_socket()) { $self->log(LOGERROR, "Lost connection to client, cannot send response."); - return (0); + return 0; } while (my $msg = shift @messages) { @@ -178,7 +178,7 @@ sub lrpip { $nto_iaddr =~ s/::ffff://; $nto_laddr =~ s/::ffff://; - return ($port, $iaddr, $lport, $laddr, $nto_iaddr, $nto_laddr); + return $port, $iaddr, $lport, $laddr, $nto_iaddr, $nto_laddr; } sub tcpenv { @@ -188,8 +188,8 @@ sub tcpenv { my $TCPREMOTEIP = $nto_iaddr; if ($no_rdns) { - return ($TCPLOCALIP, $TCPREMOTEIP, - $TCPREMOTEIP ? "[$ENV{TCPREMOTEIP}]" : "[noip!]"); + return $TCPLOCALIP, $TCPREMOTEIP, + $TCPREMOTEIP ? "[$ENV{TCPREMOTEIP}]" : "[noip!]"; } my $res = Net::DNS::Resolver->new( dnsrch => 0 ); $res->tcp_timeout(3); @@ -202,7 +202,7 @@ sub tcpenv { $TCPREMOTEHOST = $rr->ptrdname; } } - return ($TCPLOCALIP, $TCPREMOTEIP, $TCPREMOTEHOST || 'Unknown'); + return $TCPLOCALIP, $TCPREMOTEIP, $TCPREMOTEHOST || 'Unknown'; } sub check_socket() { diff --git a/lib/Qpsmtpd/TcpServer/Prefork.pm b/lib/Qpsmtpd/TcpServer/Prefork.pm index d8c814e..f0bebe7 100644 --- a/lib/Qpsmtpd/TcpServer/Prefork.pm +++ b/lib/Qpsmtpd/TcpServer/Prefork.pm @@ -57,7 +57,7 @@ sub respond { if (!$self->check_socket()) { $self->log(LOGERROR, "Lost connection to client, cannot send response."); - return (0); + return 0; } while (my $msg = shift @messages) { diff --git a/log/log2sql b/log/log2sql index 89bb1f1..f5f5909 100755 --- a/log/log2sql +++ b/log/log2sql @@ -274,7 +274,7 @@ sub check_logfile { print "Updating current -> $file\n"; exec_query('UPDATE log SET name=? WHERE inode=? AND name=?', [$file, $inode, 'current']); - return ($exists->[0]{id}, $exists->[0]{size}); # continue parsing + return $exists->[0]{id}, $exists->[0]{size}; # continue parsing } } @@ -284,7 +284,7 @@ sub check_logfile { if (@$exists) { exec_query('UPDATE log SET size=? WHERE inode=? AND name=?', [$size, $inode, 'current']); - return ($exists->[0]{id}, $exists->[0]{size}); # continue parsing + return $exists->[0]{id}, $exists->[0]{size}; # continue parsing } } @@ -299,7 +299,7 @@ sub check_logfile { [$inode, $size, $file, stat($path)->ctime] ); print "new file id: $id\n"; - return ($id); + return $id; } sub get_log_dir { @@ -348,64 +348,65 @@ sub parse_line { # lines seen many times per connection return parse_line_plugin($line) if substr($message, 0, 1) eq '('; - return ('dispatch', $pid, undef, undef, $message) + return 'dispatch', $pid, undef, undef, $message if substr($message, 0, 12) eq 'dispatching '; - return ('queue', $pid, undef, undef, $message) + return 'queue', $pid, undef, undef, $message if substr($message, 0, 11) eq '250 Queued!'; - return ('response', $pid, undef, undef, $message) + return 'response', $pid, undef, undef, $message if $message =~ /^[2|3]\d\d/; # lines seen about once per connection - return ('init', $pid, undef, undef, $message) + return 'init', $pid, undef, undef, $message if substr($message, 0, 19) eq 'Accepted connection'; - return ('connect', $pid, undef, undef, substr($message, 16)) + return 'connect', $pid, undef, undef, substr($message, 16) if substr($message, 0, 15) eq 'Connection from'; - return ('connect', $pid, undef, undef, substr($message, 16)) + return 'connect', $pid, undef, undef, substr($message, 16) if substr($message, 0, 8) eq 'connect '; - return ('close', $pid, undef, undef, $message) + return 'close', $pid, undef, undef, $message if substr($message, 0, 6) eq 'close '; - return ('close', $pid, undef, undef, $message) + return 'close', $pid, undef, undef, $message if $message eq 'Connection Timed Out'; - return ('close', $pid, undef, undef, $message) + return 'close', $pid, undef, undef, $message if substr($message, 0, 20) eq 'click, disconnecting'; return parse_line_cleanup($line) if substr($message, 0, 11) eq 'cleaning up'; # lines seen less than once per connection - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if $message eq 'spooling message to disk'; - return ('reject', $pid, undef, undef, $message) if $message =~ /^[4|5]\d\d/; - return ('reject', $pid, undef, undef, $message) + return 'reject', $pid, undef, undef, $message + if $message =~ /^[4|5]\d\d/; + return 'reject', $pid, undef, undef, $message if substr($message, 0, 14) eq 'deny mail from'; - return ('reject', $pid, undef, undef, $message) + return 'reject', $pid, undef, undef, $message if substr($message, 0, 18) eq 'denysoft mail from'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 15) eq 'Lost connection'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if $message eq 'auth success cleared naughty'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 15) eq 'Running as user'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 16) eq 'Loaded Qpsmtpd::'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 24) eq 'Permissions on spool_dir'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 13) eq 'Listening on '; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 18) eq 'size_threshold set'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 12) eq 'tls: ciphers'; - return ('error', $pid, undef, undef, $message) + return 'error', $pid, undef, undef, $message if substr($message, 0, 22) eq 'of uninitialized value'; - return ('error', $pid, undef, undef, $message) + return 'error', $pid, undef, undef, $message if substr($message, 0, 8) eq 'symbol "'; - return ('error', $pid, undef, undef, $message) + return 'error', $pid, undef, undef, $message if substr($message, 0, 9) eq 'error at '; - return ('error', $pid, undef, undef, $message) + return 'error', $pid, undef, undef, $message if substr($message, 0, 15) eq 'Could not print'; print "UNKNOWN LINE: $line\n"; - return ('unknown', $pid, undef, undef, $message); + return 'unknown', $pid, undef, undef, $message; } sub parse_line_plugin { @@ -438,7 +439,7 @@ sub parse_line_plugin { $message = 'pass' if $message =~ /^pass/; } - return ('plugin', $pid, $hook, $plugin, $message); + return 'plugin', $pid, $hook, $plugin, $message; } sub parse_line_plugin_dspam { @@ -454,7 +455,7 @@ sub parse_line_plugin_dspam { $message = "fail, $1"; } - return ('plugin', $pid, $hook, $plugin, $message); + return 'plugin', $pid, $hook, $plugin, $message; } sub parse_line_plugin_spamassassin { @@ -470,7 +471,7 @@ sub parse_line_plugin_spamassassin { $message = "fail, $1"; } - return ('plugin', $pid, $hook, $plugin, $message); + return 'plugin', $pid, $hook, $plugin, $message; } sub parse_line_plugin_p0f { @@ -503,7 +504,7 @@ sub parse_line_plugin_p0f { $message = 'Cisco' if $message =~ /^Cisco/i; $message = 'Netware' if $message =~ /Netware/i; - return ('plugin', $pid, $hook, $plugin, $message); + return 'plugin', $pid, $hook, $plugin, $message; } sub parse_line_cleanup { @@ -512,7 +513,7 @@ sub parse_line_cleanup { # @tai 85931 cleaning up after 3210 my $pid = (split /\s+/, $line)[-1]; $has_cleanup++; - return ('cleanup', $pid, undef, undef, $line); + return 'cleanup', $pid, undef, undef, $line; } sub get_score { diff --git a/log/summarize b/log/summarize index 6c0ad69..b55640f 100755 --- a/log/summarize +++ b/log/summarize @@ -164,50 +164,51 @@ sub parse_line { # lines seen many times per connection return parse_line_plugin($line) if substr($message, 0, 1) eq '('; - return ('dispatch', $pid, undef, undef, $message) + return 'dispatch', $pid, undef, undef, $message if substr($message, 0, 12) eq 'dispatching '; - return ('response', $pid, undef, undef, $message) + return 'response', $pid, undef, undef, $message if $message =~ /^[2|3]\d\d/; - return ('tcpserver', $pid, undef, undef, undef) + return 'tcpserver', $pid, undef, undef, undef if substr($pid, 0, 10) eq 'tcpserver:'; # lines seen about once per connection - return ('init', $pid, undef, undef, $message) + return 'init', $pid, undef, undef, $message if substr($message, 0, 19) eq 'Accepted connection'; - return ('connect', $pid, undef, undef, substr($message, 16)) + return 'connect', $pid, undef, undef, substr($message, 16) if substr($message, 0, 15) eq 'Connection from'; - return ('close', $pid, undef, undef, $message) + return 'close', $pid, undef, undef, $message if substr($message, 0, 6) eq 'close '; - return ('close', $pid, undef, undef, $message) + return 'close', $pid, undef, undef, $message if substr($message, 0, 20) eq 'click, disconnecting'; return parse_line_cleanup($line) if substr($message, 0, 11) eq 'cleaning up'; # lines seen less than once per connection - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if $message eq 'spooling message to disk'; - return ('reject', $pid, undef, undef, $message) if $message =~ /^[4|5]\d\d/; - return ('reject', $pid, undef, undef, $message) + return 'reject', $pid, undef, undef, $message + if $message =~ /^[4|5]\d\d/; + return 'reject', $pid, undef, undef, $message if substr($message, 0, 14) eq 'deny mail from'; - return ('reject', $pid, undef, undef, $message) + return 'reject', $pid, undef, undef, $message if substr($message, 0, 18) eq 'denysoft mail from'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 15) eq 'Lost connection'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if $message eq 'auth success cleared naughty'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 15) eq 'Running as user'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 16) eq 'Loaded Qpsmtpd::'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 24) eq 'Permissions on spool_dir'; - return ('info', $pid, undef, undef, $message) + return 'info', $pid, undef, undef, $message if substr($message, 0, 13) eq 'Listening on '; - return ('err', $pid, undef, undef, $message) + return 'err', $pid, undef, undef, $message) if $line =~ /at [\S]+ line \d/; # generic perl error print "UNKNOWN LINE: $line\n"; - return ('unknown', $pid, undef, undef, $message); + return 'unknown', $pid, undef, undef, $message); } sub parse_line_plugin { @@ -231,7 +232,7 @@ sub parse_line_plugin { $message = 'pass'; } - return ('plugin', $pid, $hook, $plugin, $message); + return 'plugin', $pid, $hook, $plugin, $message; } sub parse_line_cleanup { @@ -240,7 +241,7 @@ sub parse_line_cleanup { # @tai 85931 cleaning up after 3210 my $pid = (split /\s+/, $line)[-1]; $has_cleanup++; - return ('cleanup', $pid, undef, undef, $line); + return 'cleanup', $pid, undef, undef, $line; } sub print_auto_format { diff --git a/plugins/auth/auth_checkpassword b/plugins/auth/auth_checkpassword index a20fb71..98623f1 100644 --- a/plugins/auth/auth_checkpassword +++ b/plugins/auth/auth_checkpassword @@ -137,12 +137,12 @@ sub auth_checkpassword { if ($status != 0) { $self->log(LOGNOTICE, "fail, auth failed: $status"); - return (DECLINED); + return DECLINED; } $self->connection->notes('authuser', $user); $self->log(LOGINFO, "pass, auth success with $method"); - return (OK, "auth_checkpassword"); + return OK, "auth_checkpassword"; } sub get_checkpw { @@ -151,8 +151,8 @@ sub get_checkpw { my ($checkpw) = $args->{checkpw} =~ /^(.*)$/ if $args->{checkpw}; # untaint my ($true) = $args->{true} =~ /^(.*)$/ if $args->{true}; # untaint - return ($checkpw, $true) - if ($checkpw && $true && -x $checkpw && -x $true); + return $checkpw, $true + if $checkpw && $true && -x $checkpw && -x $true; my $missing_config = "disabled due to invalid configuration. See 'perldoc plugins/auth/auth_checkpassword' for how to configure."; @@ -170,7 +170,7 @@ sub get_checkpw { $self->log(LOGERROR, $missing_config); return; } - return ($checkpw, $true); + return $checkpw, $true; } sub get_sudo { @@ -191,4 +191,3 @@ sub get_sudo { return $sudo if $binary !~ /vchkpw$/; return "$sudo -u vpopmail"; } - diff --git a/plugins/auth/auth_cvm_unix_local b/plugins/auth/auth_cvm_unix_local index ec42f93..d2bb2ac 100644 --- a/plugins/auth/auth_cvm_unix_local +++ b/plugins/auth/auth_cvm_unix_local @@ -92,12 +92,12 @@ sub authcvm_plain { if ($user =~ /\x00/) { $self->log(LOGERROR, "deny: invalid username"); - return (DENY, "authcvm, invalid username"); + return DENY, "authcvm, invalid username"; }; socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or do { $self->log(LOGERROR, "skip: socket creation attempt for: $user"); - return (DENY, "authcvm"); + return DENY, "authcvm"; }; # DENY, really? Should this plugin return a DENY when it cannot connect @@ -106,7 +106,7 @@ sub authcvm_plain { connect(SOCK, sockaddr_un($self->{_cvm_socket})) or do { $self->log(LOGERROR, "skip: socket connection attempt for: $user"); - return (DENY, "authcvm, connection failed"); + return DENY, "authcvm, connection failed"; }; my $o = select(SOCK); @@ -125,19 +125,19 @@ sub authcvm_plain { if (!defined $s) { $self->log(LOGERROR, "skip: no response from cvm for $user"); - return (DECLINED); + return DECLINED; } if ($s == 0) { $self->log(LOGINFO, "pass: authentication for: $user"); - return (OK, "auth success for $user"); + return OK, "auth success for $user"; } if ($s == 100) { $self->log(LOGINFO, "fail: authentication failure for: $user"); - return (DENY, 'auth failure (100)'); + return DENY, 'auth failure (100)'; } $self->log(LOGERROR, "skip: unknown response from cvm for $user"); - return (DECLINED, "unknown result code ($s)"); + return DECLINED, "unknown result code ($s)"; } diff --git a/plugins/auth/auth_flat_file b/plugins/auth/auth_flat_file index 3d862f8..76073c4 100644 --- a/plugins/auth/auth_flat_file +++ b/plugins/auth/auth_flat_file @@ -50,7 +50,7 @@ sub auth_flat_file { if (!defined $passClear && !defined $passHash) { $self->log(LOGINFO, "fail: missing password"); - return (DENY, "authflat - missing password"); + return DENY, "authflat - missing password"; } my ($pw_name, $pw_domain) = split /@/, lc($user); diff --git a/plugins/auth/auth_ldap_bind b/plugins/auth/auth_ldap_bind index a2721b3..b90f022 100644 --- a/plugins/auth/auth_ldap_bind +++ b/plugins/auth/auth_ldap_bind @@ -135,7 +135,7 @@ sub authldap { # log error here and DECLINE if no baseDN, because a custom baseDN is required: unless ($ldbase) { $self->log(LOGERROR, "skip: please configure ldap_base"); - return (DECLINED, "authldap - temporary auth error"); + return DECLINED, "authldap - temporary auth error"; } $ldwait = $self->{"ldconf"}->{'ldap_timeout'}; $ldmattr = $self->{"ldconf"}->{'ldap_auth_filter_attr'}; @@ -145,7 +145,7 @@ sub authldap { # find dn of user matching supplied username $ldh = Net::LDAP->new($ldhost, port => $ldport, timeout => $ldwait) or do { $self->log(LOGALERT, "skip: error in initial conn"); - return (DECLINED, "authldap - temporary auth error"); + return DECLINED, "authldap - temporary auth error"; }; # find the user's DN @@ -159,14 +159,14 @@ sub authldap { ) or do { $self->log(LOGALERT, "skip: err in search for user"); - return (DECLINED, "authldap - temporary auth error"); + return DECLINED, "authldap - temporary auth error"; }; # deal with errors if they exist if ($mesg->code) { $self->log(LOGALERT, "skip: err " . $mesg->code . " in search for user"); - return (DECLINED, "authldap - temporary auth error"); + return DECLINED, "authldap - temporary auth error"; } # unbind, so as to allow a rebind below @@ -175,12 +175,12 @@ sub authldap { # bind against directory as user with password supplied if (!$mesg->count || $lduserdn = $mesg->entry->dn) { $self->log(LOGALERT, "fail: user not found"); - return (DECLINED, "authldap - wrong username or password"); + return DECLINED, "authldap - wrong username or password"; } $ldh = Net::LDAP->new($ldhost, port => $ldport, timeout => $ldwait) or do { $self->log(LOGALERT, "skip: err in user conn"); - return (DECLINED, "authldap - temporary auth error"); + return DECLINED, "authldap - temporary auth error"; }; # here's the whole reason for the script @@ -190,11 +190,10 @@ sub authldap { # deal with errors if they exist, or allow success if ($mesg->code) { $self->log(LOGALERT, "fail: error in user bind"); - return (DECLINED, "authldap - wrong username or password"); + return DECLINED, "authldap - wrong username or password"; } $self->log(LOGINFO, "pass: $user auth success"); $self->log(LOGDEBUG, "user: $user, pass: $passClear"); - return (OK, "authldap"); + return OK, "authldap"; } - diff --git a/plugins/auth/auth_vpopmail b/plugins/auth/auth_vpopmail index e698cc7..c88fa28 100644 --- a/plugins/auth/auth_vpopmail +++ b/plugins/auth/auth_vpopmail @@ -50,7 +50,7 @@ use Qpsmtpd::Constants; sub register { my ($self, $qp) = @_; - return (DECLINED) if !$self->test_vpopmail_module(); + return DECLINED if !$self->test_vpopmail_module(); $self->register_hook("auth-plain", "auth_vpopmail"); $self->register_hook("auth-login", "auth_vpopmail"); @@ -67,7 +67,7 @@ sub auth_vpopmail { if (!$pw || (!$pw_clear_passwd && !$pw_passwd)) { $self->log(LOGINFO, "fail: invalid user $user"); - return (DENY, "auth_vpopmail - invalid user"); + return DENY, "auth_vpopmail - invalid user"; # change DENY to DECLINED to support multiple auth plugins } diff --git a/plugins/auth/auth_vpopmail_sql b/plugins/auth/auth_vpopmail_sql index 4c1d6a1..3207c6b 100644 --- a/plugins/auth/auth_vpopmail_sql +++ b/plugins/auth/auth_vpopmail_sql @@ -143,7 +143,7 @@ sub auth_vmysql { if (!$u->{pw_passwd} && !$u->{pw_clear_passwd}) { $self->log(LOGINFO, "fail: no such user"); - return (DENY, "auth_vmysql - no such user"); + return DENY, "auth_vmysql - no such user"; } # at this point, the user name has matched diff --git a/plugins/auth/auth_vpopmaild b/plugins/auth/auth_vpopmaild index b7e8395..e0e11ed 100644 --- a/plugins/auth/auth_vpopmaild +++ b/plugins/auth/auth_vpopmaild @@ -52,7 +52,7 @@ sub auth_vpopmaild { # check for successful login (single line (+OK) or multiline (+OK+)) if ($response =~ /^\+OK/) { $self->log(LOGINFO, "pass, clear"); - return (OK, 'auth_vpopmaild'); + return OK, 'auth_vpopmaild'; } chomp $response; diff --git a/plugins/auth/authdeny b/plugins/auth/authdeny index a06759b..0e3033b 100644 --- a/plugins/auth/authdeny +++ b/plugins/auth/authdeny @@ -18,6 +18,6 @@ sub hook_auth { $self->log(LOGWARN, "fail: cannot authenticate"); - return (DECLINED, "$user is not free to abuse my relay"); + return DECLINED, "$user is not free to abuse my relay"; } diff --git a/plugins/badmailfromto b/plugins/badmailfromto index c97a321..1e9e930 100644 --- a/plugins/badmailfromto +++ b/plugins/badmailfromto @@ -42,7 +42,7 @@ sub hook_mail { $transaction->notes('badmailfromto', $bad); } } - return (DECLINED); + return DECLINED; } sub hook_rcpt { @@ -50,16 +50,17 @@ sub hook_rcpt { my $recipient = lc($rcpt->user) . '@' . lc($rcpt->host); my $sender = $transaction->notes('badmailfromto') or do { $self->log(LOGDEBUG, "pass, sender not listed"); - return (DECLINED); + return DECLINED; }; foreach ($self->qp->config("badmailfromto")) { my ($from, $to) = m/^\s*(\S+)\t(\S+).*/; - return (DENY, "mail to $recipient not accepted here") - if lc($from) eq $sender && lc($to) eq $recipient; + if ( lc($from) eq $sender && lc($to) eq $recipient ) { + return DENY, "mail to $recipient not accepted here"; + } } $self->log(LOGDEBUG, "pass, recipient not listed"); - return (DECLINED); + return DECLINED; } sub is_sender_immune { diff --git a/plugins/badrcptto b/plugins/badrcptto index 3069289..0dec099 100644 --- a/plugins/badrcptto +++ b/plugins/badrcptto @@ -49,14 +49,14 @@ use Qpsmtpd::DSN; sub hook_rcpt { my ($self, $transaction, $recipient, %param) = @_; - return (DECLINED) if $self->is_immune(); + return DECLINED if $self->is_immune(); my ($host, $to) = $self->get_host_and_to($recipient) - or return (DECLINED); + or return DECLINED; my @badrcptto = $self->qp->config("badrcptto") or do { $self->log(LOGINFO, "skip, empty config"); - return (DECLINED); + return DECLINED; }; for my $line (@badrcptto) { @@ -66,7 +66,7 @@ sub hook_rcpt { if ($self->is_match($to, lc($bad), $host)) { $self->adjust_karma(-2); if ($reason) { - return (DENY, "mail to $bad not accepted here"); + return DENY, "mail to $bad not accepted here"; } else { return Qpsmtpd::DSN->no_such_user( @@ -75,7 +75,7 @@ sub hook_rcpt { } } $self->log(LOGINFO, 'pass'); - return (DECLINED); + return DECLINED; } sub is_match { @@ -127,5 +127,5 @@ sub get_host_and_to { } my $host = lc $recipient->host; - return ($host, lc($recipient->user) . '@' . $host); + return $host, lc($recipient->user) . '@' . $host; } diff --git a/plugins/connection_time b/plugins/connection_time index 74ed735..3c081fb 100644 --- a/plugins/connection_time +++ b/plugins/connection_time @@ -59,7 +59,7 @@ sub connect_handler { if ($self->hook_name eq 'connect' && defined $self->{_connection_start}); $self->{_connection_start} = [gettimeofday]; $self->log(LOGDEBUG, "started at " . scalar gettimeofday); - return (DECLINED); + return DECLINED; } sub hook_post_connection { @@ -67,12 +67,11 @@ sub hook_post_connection { if (!$self->{_connection_start}) { $self->log(LOGERROR, "Start time not set?!"); - return (DECLINED); + return DECLINED; } my $elapsed = tv_interval($self->{_connection_start}, [gettimeofday]); $self->log(LOGINFO, sprintf "%.3f s.", $elapsed); - return (DECLINED); + return DECLINED; } - diff --git a/plugins/content_log b/plugins/content_log index 3ac6f4d..b4f04c4 100644 --- a/plugins/content_log +++ b/plugins/content_log @@ -11,7 +11,7 @@ sub hook_data_post { # as a decent default, log on a per-day-basis my $date = strftime("%Y%m%d", localtime(time)); open(my $out, ">>mail/$date") - or return (DECLINED, "Could not open log file.. continuing anyway"); + or return DECLINED, "Could not open log file.. continuing anyway"; $transaction->header->print($out); $transaction->body_resetpos; @@ -21,5 +21,5 @@ sub hook_data_post { close $out; - return (DECLINED, "successfully saved message.. continuing"); + return DECLINED, "successfully saved message.. continuing"; } diff --git a/plugins/count_unrecognized_commands b/plugins/count_unrecognized_commands index eb02cc0..f37d96b 100644 --- a/plugins/count_unrecognized_commands +++ b/plugins/count_unrecognized_commands @@ -44,8 +44,7 @@ sub hook_unrecognized_command { } $self->log(LOGINFO, "fail, '$cmd' ($count)"); - return (DENY_DISCONNECT, -"Closing connection, $count unrecognized commands. Perhaps you should read RFC 2821?" - ); + return DENY_DISCONNECT, +"Closing connection, $count unrecognized commands. Perhaps you should read RFC 2821?"; } diff --git a/plugins/dkim b/plugins/dkim index 7351138..c54d9db 100644 --- a/plugins/dkim +++ b/plugins/dkim @@ -302,7 +302,7 @@ sub handle_sig_temperror { my ($self, $dkim, $mess) = @_; $self->log(LOGINFO, "error, $mess"); - return (DENYSOFT, "Please try again later - $dkim->result_detail"); + return DENYSOFT, "Please try again later - $dkim->result_detail"; } sub handle_sig_invalid { @@ -447,7 +447,7 @@ sub get_keydir { $self->log(LOGINFO, "error, unable to read dkim key from $dir/private"); return; } - return ($domain, $dir); + return $domain, $dir; } sub save_signatures_to_note { diff --git a/plugins/dns_whitelist_soft b/plugins/dns_whitelist_soft index e06687d..b469dbb 100644 --- a/plugins/dns_whitelist_soft +++ b/plugins/dns_whitelist_soft @@ -156,7 +156,7 @@ sub process_sockets { sub hook_rcpt { my ($self, $transaction, $rcpt, %param) = @_; - my $ip = $self->qp->connection->remote_ip or return (DECLINED); + my $ip = $self->qp->connection->remote_ip or return DECLINED; my $note = $self->process_sockets; if ($note) { $self->log(LOGNOTICE, "Host $ip is whitelisted: $note"); diff --git a/plugins/dnsbl b/plugins/dnsbl index a7b11b6..c615332 100644 --- a/plugins/dnsbl +++ b/plugins/dnsbl @@ -283,7 +283,7 @@ sub return_env_message { $result =~ s/%IP%/$remote_ip/g; my $msg = $self->qp->config('dnsbl_rejectmsg'); $self->log(LOGINFO, "fail, $msg"); - return ($self->get_reject_type(), join(' ', $msg, $result)); + return $self->get_reject_type(), join(' ', $msg, $result); } sub hook_rcpt { diff --git a/plugins/domainkeys b/plugins/domainkeys index 9fa1958..44c037a 100644 --- a/plugins/domainkeys +++ b/plugins/domainkeys @@ -124,7 +124,7 @@ sub data_post_handler { $self->log(LOGERROR, "fail, signature invalid"); return DECLINED if !$self->{reject}; my $deny = $self->{reject_type} eq 'temp' ? DENYSOFT : DENY; - return ($deny, "DomainKeys signature validation failed"); + return $deny, "DomainKeys signature validation failed"; } sub get_message_status { diff --git a/plugins/dont_require_anglebrackets b/plugins/dont_require_anglebrackets index 16841e9..c8e4fa4 100644 --- a/plugins/dont_require_anglebrackets +++ b/plugins/dont_require_anglebrackets @@ -28,7 +28,7 @@ sub hook_mail_pre { $self->adjust_karma(-2); $self->log(LOGINFO, "fail, added MAIL angle brackets"); } - return (OK, $addr); + return OK, $addr; } sub hook_rcpt_pre { @@ -38,5 +38,5 @@ sub hook_rcpt_pre { $self->adjust_karma(-2); $self->log(LOGINFO, "fail, added RCPT angle brackets"); } - return (OK, $addr); + return OK, $addr; } diff --git a/plugins/dspam b/plugins/dspam index 2b6a8b5..295fcdf 100644 --- a/plugins/dspam +++ b/plugins/dspam @@ -244,11 +244,11 @@ sub data_post_handler { my $self = shift; my $transaction = shift || $self->qp->transaction; - return (DECLINED) if $self->is_immune(); + return DECLINED if $self->is_immune(); if ($transaction->data_size > 500_000) { $self->log(LOGINFO, "skip, too big (" . $transaction->data_size . ")"); - return (DECLINED); + return DECLINED; } my $user = $self->select_username($transaction); @@ -260,7 +260,7 @@ sub data_post_handler { my $response = $self->dspam_process($filtercmd, $transaction); if (!$response->{result}) { $self->log(LOGWARN, "error, no dspam response. Check logs for errors."); - return (DECLINED); + return DECLINED; } $transaction->notes('dspam', $response); @@ -512,7 +512,7 @@ sub reject_agree { $self->adjust_karma(-2); $self->log(LOGINFO, "fail, agree, $status"); my $reject = $self->get_reject_type(); - return ($reject, 'we agree, no spam please'); + return $reject, 'we agree, no spam please'; } $self->log(LOGINFO, "fail, disagree, $status"); diff --git a/plugins/greylisting b/plugins/greylisting index c854d56..e10d6ba 100644 --- a/plugins/greylisting +++ b/plugins/greylisting @@ -234,7 +234,7 @@ sub mail_handler { return DECLINED if $status != DENYSOFT; if (!$self->{_args}{deny_late}) { - return (DENYSOFT, $msg); + return DENYSOFT, $msg; } $transaction->notes('greylist', $msg); @@ -346,7 +346,7 @@ sub cleanup_and_return { return $return_val if defined $return_val; # explicit override return DECLINED if defined $self->{_args}{reject} && !$self->{_args}{reject}; - return (DENYSOFT, $DENYMSG); + return DENYSOFT, $DENYMSG; } sub get_db_key { diff --git a/plugins/headers b/plugins/headers index d2c6f1d..8263f02 100644 --- a/plugins/headers +++ b/plugins/headers @@ -152,7 +152,7 @@ sub hook_data_post { }; $self->log(LOGINFO, 'pass'); - return (DECLINED); + return DECLINED; } sub has_required_headers { diff --git a/plugins/helo b/plugins/helo index 49088bb..8d29539 100644 --- a/plugins/helo +++ b/plugins/helo @@ -280,7 +280,7 @@ sub data_post_handler { $transaction->header->delete('X-HELO'); $transaction->header->add('X-HELO', $self->qp->connection->hello_host, 0); - return (DECLINED); + return DECLINED; } sub populate_tests { @@ -311,7 +311,7 @@ sub is_in_badhelo { return $self->is_regex_match($host, $bad); } if ($host eq lc $bad) { - return ($error, "in badhelo"); + return $error, "in badhelo"; } } return; @@ -328,14 +328,14 @@ sub is_regex_match { if ($host !~ /$pattern/) { #$self->log( LOGDEBUG, "matched ($pattern)"); - return ($error, "badhelo pattern match ($pattern)"); + return $error, "badhelo pattern match ($pattern)"; } return; } if ($host =~ /$pattern/) { #$self->log( LOGDEBUG, "matched ($pattern)"); - return ($error, "badhelo pattern match ($pattern)"); + return $error, "badhelo pattern match ($pattern)"; } return; } @@ -352,7 +352,7 @@ sub invalid_localhost { }; #$self->log( LOGINFO, "fail, not localhost" ); - return ("You are not localhost", "invalid localhost"); + return "You are not localhost", "invalid localhost"; } sub is_plain_ip { @@ -360,7 +360,7 @@ sub is_plain_ip { return if !Qpsmtpd::Base->is_valid_ip($host); $self->log(LOGDEBUG, "fail, plain IP"); - return ("Plain IP is invalid HELO hostname (RFC 2821)", "plain IP"); + return "Plain IP is invalid HELO hostname (RFC 2821)", "plain IP"; } sub is_address_literal { @@ -372,8 +372,7 @@ sub is_address_literal { return if !Qpsmtpd::Base->is_valid_ip($ip); $self->log(LOGDEBUG, "fail, bracketed IP"); - return ("RFC 2821 allows an address literal, but we do not", - "bracketed IP"); + return "RFC 2821 allows an address literal, but we do not","bracketed IP"; } sub is_forged_literal { @@ -383,18 +382,17 @@ sub is_forged_literal { # should we add exceptions for reserved internal IP space? (192.168,10., etc) $host = substr $host, 1, -1; return if $host eq $self->qp->connection->remote_ip; - return ("Forged IPs not accepted here", "forged IP literal"); + return "Forged IPs not accepted here", "forged IP literal"; } sub is_not_fqdn { my ($self, $host) = @_; return if $host =~ m/^\[(\d{1,3}\.){3}\d{1,3}\]$/; # address literal, skip if ($host !~ /\./) { # has no dots - return ("HELO name is not fully qualified. Read RFC 2821", "not FQDN"); + return "HELO name is not fully qualified. Read RFC 2821", "not FQDN"; } if ($host =~ /[^a-zA-Z0-9\-\.]/) { - return ("HELO name contains invalid FQDN characters. Read RFC 1035", - "invalid FQDN chars"); + return "HELO name contains invalid FQDN characters. Read RFC 1035","invalid FQDN chars"; } return; } @@ -411,7 +409,7 @@ sub no_forward_dns { if (!$query) { if ($res->errorstring eq 'NXDOMAIN') { - return ("HELO hostname does not exist", "no such host"); + return "HELO hostname does not exist", "no such host"; } $self->log(LOGERROR, "skip, query failed (", $res->errorstring, ")"); return; @@ -427,7 +425,7 @@ sub no_forward_dns { $self->log(LOGDEBUG, "pass, forward DNS") if $hits; return; } - return ("HELO hostname did not resolve", "no forward DNS"); + return "HELO hostname did not resolve", "no forward DNS"; } sub no_reverse_dns { @@ -438,11 +436,10 @@ sub no_reverse_dns { my $query = $res->query($ip) or do { if ($res->errorstring eq 'NXDOMAIN') { - return ("no rDNS for $ip", "no rDNS"); + return "no rDNS for $ip", "no rDNS"; } $self->log(LOGINFO, $res->errorstring); - return ("error getting reverse DNS for $ip", - "rDNS " . $res->errorstring); + return "error getting reverse DNS for $ip", "rDNS " . $res->errorstring; }; my $hits = 0; @@ -456,7 +453,7 @@ sub no_reverse_dns { $self->log(LOGDEBUG, "has rDNS"); return; } - return ("no reverse DNS for $ip", "no rDNS"); + return "no reverse DNS for $ip", "no rDNS"; } sub no_matching_dns { @@ -485,7 +482,7 @@ sub no_matching_dns { } $self->log(LOGINFO, "fail, no forward or reverse DNS match"); - return ("That HELO hostname fails FCrDNS", "no matching DNS"); + return "That HELO hostname fails FCrDNS", "no matching DNS"; } sub check_ip_match { diff --git a/plugins/hosts_allow b/plugins/hosts_allow index e5c2cc8..499c656 100644 --- a/plugins/hosts_allow +++ b/plugins/hosts_allow @@ -80,7 +80,7 @@ sub hook_pre_connection { if ($num_conn > $max) { my $err_mess = "too many connections from $remote"; $self->log(LOGINFO, "fail: $err_mess ($num_conn > $max)"); - return (DENYSOFT, "$err_mess, try again later"); + return DENYSOFT, "$err_mess, try again later"; } } @@ -88,7 +88,7 @@ sub hook_pre_connection { return @r if scalar @r; $self->log(LOGDEBUG, "pass"); - return (DECLINED); + return DECLINED; } sub in_hosts_allow { @@ -109,7 +109,7 @@ sub in_hosts_allow { $self->log(LOGINFO, "fail, $message"); } $self->log(LOGDEBUG, "pass, $const, $message"); - return ($const, $message); + return $const, $message; } } diff --git a/plugins/http_config b/plugins/http_config index 79bdece..1b4dfc3 100644 --- a/plugins/http_config +++ b/plugins/http_config @@ -45,8 +45,7 @@ sub hook_config { @config = grep { $_ and $_ !~ m/^\s*#/ and $_ =~ m/\S/ } @config; close CF; -# $self->log(LOGNOTICE, "returning http_config for $config ",Data::Dumper->Dump([\@config], [qw(config)])); - return (OK, @config) if @config; + return OK, @config if @config; } return DECLINED; } diff --git a/plugins/ident/geoip b/plugins/ident/geoip index b24c460..ccb8ab6 100644 --- a/plugins/ident/geoip +++ b/plugins/ident/geoip @@ -310,7 +310,7 @@ sub get_my_lat_lon { return if !$self->{_geoip_city}; if ($self->{_latitude} && $self->{_longitude}) { - return ($self->{_latitude}, $self->{_longitude}); # cached + return $self->{_latitude}, $self->{_longitude}; # cached } my $ip = $self->{_args}{distance} or return; @@ -325,7 +325,7 @@ sub get_my_lat_lon { if (!$self->{_latitude} || !$self->{_longitude}) { $self->log(LOGNOTICE, "could not get my lat/lon"); } - return ($self->{_latitude}, $self->{_longitude}); + return $self->{_latitude}, $self->{_longitude}; } sub get_sender_lat_lon { @@ -337,6 +337,6 @@ sub get_sender_lat_lon { $self->log(LOGNOTICE, "could not get sender lat/lon"); return; } - return ($lat, $lon); + return $lat, $lon; } diff --git a/plugins/karma b/plugins/karma index da1d515..a23dcbc 100644 --- a/plugins/karma +++ b/plugins/karma @@ -388,7 +388,7 @@ sub rcpt_handler { }; # limit # of recipients if host has negative or unknown karma - return (DENY, "too many recipients for karma $karma (h: $history)"); + return DENY, "too many recipients for karma $karma (h: $history)"; } sub data_handler { @@ -475,7 +475,7 @@ sub parse_db_record { $naughty ||= 0; $connects ||= 0; } - return ($penalty_start_ts, $naughty, $nice, $connects); + return $penalty_start_ts, $naughty, $nice, $connects; } sub calc_karma { @@ -493,8 +493,8 @@ sub cleanup_and_return { untie $tied; close $lock; - return ($return_val) if defined $return_val; # explicit override - return (DECLINED); + return $return_val if defined $return_val; # explicit override + return DECLINED; } sub get_db_key { diff --git a/plugins/loadcheck b/plugins/loadcheck index 2369750..7eb2fdb 100644 --- a/plugins/loadcheck +++ b/plugins/loadcheck @@ -98,10 +98,10 @@ sub loadcheck { if ($self->{_load} > $self->{_args}{max_load}) { $self->log(LOGERROR, "local load too high: $self->{_load}"); - return (DENYSOFT, "Server load too high, please try again later."); + return DENYSOFT, "Server load too high, please try again later."; } - return (DECLINED, "continuing with load: $self->{_load}"); + return DECLINED, "continuing with load: $self->{_load}"; } sub get_load_method { diff --git a/plugins/milter b/plugins/milter index 824e10e..c6578e7 100644 --- a/plugins/milter +++ b/plugins/milter @@ -143,7 +143,7 @@ sub hook_helo { eval { $self->check_results($transaction, "HELO", $milter->send_helo($host)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; return DECLINED; } @@ -159,7 +159,7 @@ sub hook_mail { $self->check_results($transaction, "MAIL FROM", $milter->send_mail_from($address->format)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; return DECLINED; } @@ -176,7 +176,7 @@ sub hook_rcpt { $self->check_results($transaction, "RCPT TO", $milter->send_rcpt_to($address->format)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; return DECLINED; } @@ -201,7 +201,7 @@ sub hook_data_post { $self->check_results($transaction, "header $h", $milter->send_header($h, $val)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; } } @@ -209,7 +209,7 @@ sub hook_data_post { $self->check_results($transaction, "end headers", $milter->send_end_headers()); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; $transaction->body_resetpos; @@ -230,7 +230,7 @@ sub hook_data_post { $self->check_results($transaction, "body", $milter->send_body($data)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; $data = ''; } } @@ -240,7 +240,7 @@ sub hook_data_post { $self->check_results($transaction, "body", $milter->send_body($data)); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; $data = ''; } @@ -248,7 +248,7 @@ sub hook_data_post { $self->check_results($transaction, "end of DATA", $milter->send_end_body()); }; - return (DENY, $@) if $@; + return DENY, $@ if $@; my $milter_header_changes = $transaction->notes('milter_header_changes'); diff --git a/plugins/naughty b/plugins/naughty index 5755b04..a6c1390 100644 --- a/plugins/naughty +++ b/plugins/naughty @@ -140,6 +140,5 @@ sub naughty { $self->log(LOGINFO, "disconnecting"); my $rtype = $self->connection->notes( 'naughty_reject_type' ); my $type = $self->get_reject_type( 'disconnect', $rtype ); - return ($type, $naughty); + return $type, $naughty; } - diff --git a/plugins/noop_counter b/plugins/noop_counter index 8e9840e..4bb5d2d 100644 --- a/plugins/noop_counter +++ b/plugins/noop_counter @@ -35,19 +35,18 @@ sub hook_noop { ++$self->{_noop_count}; ### the following block is not used, RFC 2821 says we SHOULD ignore ### any arguments... so we MAY return an error if we want to :-) - # return (DENY, "Syntax error, NOOP does not take any arguments") + # return DENY, "Syntax error, NOOP does not take any arguments" # if $args[0]; if ($self->{_noop_count} >= $self->{_max_noop}) { - return (DENY_DISCONNECT, - "Stop wasting my time, too many consecutive NOOPs"); + return DENY_DISCONNECT, "Stop wasting my time, too many consecutive NOOPs"; } - return (DECLINED); + return DECLINED; } sub reset_noop_counter { $_[0]->{_noop_count} = 0; - return (DECLINED); + return DECLINED; } # and bind the counter reset to the hooks, QUIT not useful here: diff --git a/plugins/parse_addr_withhelo b/plugins/parse_addr_withhelo index 2af5f4c..cde2277 100644 --- a/plugins/parse_addr_withhelo +++ b/plugins/parse_addr_withhelo @@ -24,50 +24,47 @@ use Qpsmtpd::Constants; sub hook_mail_parse { my $self = shift; - return (OK, \&_parse) if ($self->qp->connection->hello eq 'helo'); - return (DECLINED); + return OK, \&_parse if $self->qp->connection->hello eq 'helo'; + return DECLINED; } sub hook_rcpt_parse { my $self = shift; - return (OK, \&_parse) if ($self->qp->connection->hello eq 'helo'); - return (DECLINED); + return OK, \&_parse if $self->qp->connection->hello eq 'helo'; + return DECLINED; } sub _parse { my ($self, $cmd, $line) = @_; $self->log(LOGDEBUG, "_parse() cmd=[$cmd], line=[$line]"); if ($cmd eq 'mail') { - return (DENY, "Syntax error in command") - unless ($line =~ s/^from:\s*//i); + return DENY, "Syntax error in command" if $line !~ s/^from:\s*//i; } else { # cmd eq 'rcpt' - return (DENY, "Syntax error in command") - unless ($line =~ s/^to:\s*//i); + return DENY, "Syntax error in command" if $line !~ s/^to:\s*//i; } if ($line =~ s/^(<.*>)\s*//) { my $addr = $1; - return (DENY, "No parameters allowed in " . uc($cmd)) - if ($line =~ /^\S/); - return (OK, $addr, ()); + return DENY, "No parameters allowed in " . uc($cmd) + if $line =~ /^\S/; + return OK, $addr, (); } ## now, no <> are given $line =~ s/\s*$//; if ($line =~ /\@/) { - return (DENY, "No parameters allowed in " . uc($cmd)) - if ($line =~ /\@\S+\s+\S/); - return (OK, $line, ()); + return DENY, "No parameters allowed in " . uc($cmd) + if $line =~ /\@\S+\s+\S/; + return OK, $line, (); } if ($cmd eq "mail") { - return (OK, "<>") unless $line; # 'MAIL FROM:' -> 'MAIL FROM:<>' - return (DENY, "Could not parse your MAIL FROM command"); + return OK, "<>" if !$line; # 'MAIL FROM:' -> 'MAIL FROM:<>' + return DENY, "Could not parse your MAIL FROM command"; } else { - return (DENY, "Could not parse your RCPT TO command") - unless $line =~ /^(postmaster|abuse)$/i; + return DENY, "Could not parse your RCPT TO command" + if $line !~ /^(postmaster|abuse)$/i; } } - diff --git a/plugins/qmail_deliverable b/plugins/qmail_deliverable index 2b31756..5a15122 100644 --- a/plugins/qmail_deliverable +++ b/plugins/qmail_deliverable @@ -203,7 +203,7 @@ sub rcpt_handler { my $s = $transaction->sender->address; if (!$s || $s eq '<>') { $self->adjust_karma(-1); - return (DENY, "mailing lists do not accept null senders"); + return DENY, "mailing lists do not accept null senders"; }; $self->log(LOGINFO, "pass, ezmlm list"); $k++; diff --git a/plugins/queue/exim-bsmtp b/plugins/queue/exim-bsmtp index 784f5ab..b2e127a 100644 --- a/plugins/queue/exim-bsmtp +++ b/plugins/queue/exim-bsmtp @@ -83,14 +83,14 @@ sub hook_queue { unless ($transaction->header) { $self->log(LOGERROR, "No header parsed for transaction; can't enqueue"); - return (DENY, 'Mail unqueuable'); + return DENY, 'Mail unqueuable'; } my $tmp_dir = $self->qp->config('spool_dir') || '/tmp'; $tmp_dir = $1 if ($tmp_dir =~ /(.*)/); my ($tmp, $tmpfn) = tempfile("exim-bsmtp.$$.XXXXXX", DIR => $tmp_dir); unless ($tmp && $tmpfn) { $self->log(LOGERROR, "Couldn't create tempfile: $!"); - return (DECLINED, 'Internal error enqueueing mail'); + return DECLINED, 'Internal error enqueueing mail'; } print $tmp "HELO ", hostname(), "\n", @@ -112,7 +112,7 @@ sub hook_queue { unless ($exim) { $self->log(LOGERROR, "Could not execute $self->{_exim_path}: $!"); unlink $tmpfn or $self->log(LOGERROR, "unlink: $tmpfn: $!"); - return (DECLINED, "Internal error enqueuing mail"); + return DECLINED, "Internal error enqueuing mail"; } # Normally exim produces no output in BSMTP mode; anything that @@ -135,7 +135,7 @@ sub hook_queue { if ($bsmtp_error && $bsmtp_error >= 400 && $bsmtp_error < 600) { $self->log(LOGERROR, "BSMTP enqueue failed; response $bsmtp_error" . " ($bsmtp_msg)"); - return ($bsmtp_error < 400 ? DECLINED : DENY, $bsmtp_msg); + return $bsmtp_error < 400 ? DECLINED : DENY, $bsmtp_msg; } elsif (($exit >> 8) != 0 || $bsmtp_error) { $self->log(LOGERROR, @@ -143,10 +143,9 @@ sub hook_queue { . ($exit >> 8) . " from $self->{_exim_path} -bS" ); - return (DECLINED, 'Internal error enqueuing mail'); + return DECLINED, 'Internal error enqueuing mail'; } $self->log(LOGINFO, "Enqueued to exim via BSMTP"); - return (OK, "Queued!"); + return OK, "Queued!"; } - diff --git a/plugins/queue/maildir b/plugins/queue/maildir index 5ae0076..b9419ce 100644 --- a/plugins/queue/maildir +++ b/plugins/queue/maildir @@ -144,18 +144,18 @@ sub hook_queue { ($rc, @msg) = $self->deliver_user($transaction, $addr); unless ($rc == OK) { umask $old_umask; - return ($rc, @msg); + return $rc, @msg; } } umask $old_umask; - return (OK, @msg); # last @msg is the same like any other before... + return OK, @msg; # last @msg is the same like any other before... } $transaction->header->add('Delivered-To', $_->address, 0) for $transaction->recipients; ($rc, @msg) = $self->write_file($transaction, $self->{_maildir}); umask $old_umask; - return ($rc, @msg); + return $rc, @msg; } sub write_file { @@ -170,7 +170,7 @@ sub write_file { open(MF, ">$maildir/tmp/$file") or $self->log(LOGWARN, "could not open $maildir/tmp/$file: $!"), - return (DECLINED, "queue error (open)"); + return DECLINED, "queue error (open)"; print MF "Return-Path: ", $transaction->sender->format, "\n"; @@ -184,20 +184,20 @@ sub write_file { } close MF or $self->log(LOGWARN, "could not close $maildir/tmp/$file: $!") - and return (DECLINED, "queue error (close)"); + and return DECLINED, "queue error (close)"; link "$maildir/tmp/$file", "$maildir/new/$file" or $self->log(LOGWARN, "could not link $maildir/tmp/$file to $maildir/new/$file: $!") - and return (DECLINED, "queue error (link)"); + and return DECLINED, "queue error (link)"; unlink "$maildir/tmp/$file"; my $msg_id = $transaction->header->get('Message-Id') || ''; $msg_id =~ s/[\r\n].*//s; - return (OK, "Queued! $msg_id"); + return OK, "Queued! $msg_id"; } sub deliver_user { diff --git a/plugins/queue/postfix-queue b/plugins/queue/postfix-queue index 9eea355..fb55bf5 100644 --- a/plugins/queue/postfix-queue +++ b/plugins/queue/postfix-queue @@ -180,24 +180,23 @@ sub hook_queue { my $stat = eval $key # keys have the same names as the constants or next; if ($status & $stat) { - return (DENYSOFT, $reason || $cleanup_soft{$key}); + return DENYSOFT, $reason || $cleanup_soft{$key}; } } foreach my $key (keys %cleanup_hard) { my $stat = eval $key # keys have the same names as the constants or next; if ($status & $stat) { - return (DENY, $reason || $cleanup_hard{$key}); + return DENY, $reason || $cleanup_hard{$key}; } } # we have no idea why we're here. - return (DECLINED, - $reason || "Unable to queue message ($status, $reason)"); + return DECLINED, $reason || "Unable to queue message ($status, $reason)"; } my $msg_id = $transaction->header->get('Message-Id') || ''; $msg_id =~ s/[\r\n].*//s; # don't allow newlines in the Message-Id here - return (OK, "Queued! $msg_id (Queue-Id: $qid)"); + return OK, "Queued! $msg_id (Queue-Id: $qid)"; } diff --git a/plugins/queue/qmail-queue b/plugins/queue/qmail-queue index 1d97fc3..9323e70 100644 --- a/plugins/queue/qmail-queue +++ b/plugins/queue/qmail-queue @@ -74,18 +74,18 @@ sub hook_queue { my @rcpt = map { "T" . $_->address } $transaction->recipients; my $from = "F" . ($transaction->sender->address || ""); print ENVELOPE_WRITER "$from\0", join("\0", @rcpt), "\0\0" - or return (DECLINED, "Could not print addresses to queue"); + or return DECLINED, "Could not print addresses to queue"; close ENVELOPE_WRITER; waitpid($child, 0); my $exit_code = $? >> 8; $exit_code - and return (DECLINED, "Unable to queue message ($exit_code)"); + and return DECLINED, "Unable to queue message ($exit_code)"; my $msg_id = $transaction->header->get('Message-Id') || ''; $msg_id =~ s/[\r\n].*//s; # don't allow newlines in the Message-Id here $msg_id = "<$msg_id>" unless $msg_id =~ /^<.*>$/; # surround in <>'s - return (OK, "Queued! " . time . " qp $child $msg_id"); + return OK, "Queued! " . time . " qp $child $msg_id"; } elsif (defined $child) { diff --git a/plugins/queue/smtp-forward b/plugins/queue/smtp-forward index a6ed50e..604dbe5 100644 --- a/plugins/queue/smtp-forward +++ b/plugins/queue/smtp-forward @@ -77,27 +77,27 @@ sub hook_queue { return(DECLINED, $xcret) if defined $xcret; $smtp->mail($transaction->sender->address || "") - or return (DECLINED, "Unable to queue message ($!)"); + or return DECLINED, "Unable to queue message ($!)"; for ($transaction->recipients) { $smtp->to($_->address) - or return (DECLINED, "Unable to queue message ($!)"); + or return DECLINED, "Unable to queue message ($!)"; } - $smtp->data() or return (DECLINED, "Unable to queue message ($!)"); + $smtp->data() or return DECLINED, "Unable to queue message ($!)"; $smtp->datasend($transaction->header->as_string) - or return (DECLINED, "Unable to queue message ($!)"); + or return DECLINED, "Unable to queue message ($!)"; $transaction->body_resetpos; while (my $line = $transaction->body_getline) { $smtp->datasend($line) - or return (DECLINED, "Unable to queue message ($!)"); + or return DECLINED, "Unable to queue message ($!)"; } - $smtp->dataend() or return (DECLINED, "Unable to queue message ($!)"); + $smtp->dataend() or return DECLINED, "Unable to queue message ($!)"; my $qid = $smtp->message(); my @list = split(' ', $qid); $qid = pop(@list); - $smtp->quit() or return (DECLINED, "Unable to queue message ($!)"); + $smtp->quit() or return DECLINED, "Unable to queue message ($!)"; $self->log(LOGINFO, "finished queueing"); - return (OK, "queued as $qid"); + return OK, "queued as $qid"; } sub xclient { diff --git a/plugins/quit_fortune b/plugins/quit_fortune index 15abfc9..6a3a77c 100644 --- a/plugins/quit_fortune +++ b/plugins/quit_fortune @@ -5,10 +5,10 @@ sub hook_quit { # if she talks EHLO she is probably too sophisticated to enjoy the # fun, so skip it. - return (DECLINED) if ($qp->connection->hello || '') eq "ehlo"; + return DECLINED if ($qp->connection->hello || '') eq "ehlo"; my $fortune = '/usr/games/fortune'; - return DECLINED unless -e $fortune; + return DECLINED if !-e $fortune; my @fortune = `$fortune -s`; @fortune = map { chop; s/^/ \/ /; $_ } @fortune; diff --git a/plugins/random_error b/plugins/random_error index bceb2c5..f1eee88 100644 --- a/plugins/random_error +++ b/plugins/random_error @@ -57,8 +57,8 @@ or $_[0]->log(LOGINFO, "to fail, rand(1) must be more than " . ($successp**(1 / 6))); rand(1) < ($successp**(1 / 6)) and return NEXT; - rand(5) < 2 and return (DENYSOFT_DISCONNECT, "random failure"); - return (DENYSOFT, "random failure"); + rand(5) < 2 and return DENYSOFT_DISCONNECT, "random failure"; + return DENYSOFT, "random failure"; } sub hook_connect { diff --git a/plugins/rcpt_map b/plugins/rcpt_map index 367fa07..025654f 100644 --- a/plugins/rcpt_map +++ b/plugins/rcpt_map @@ -175,14 +175,14 @@ sub read_map { sub hook_rcpt { my ($self, $transaction, $recipient) = @_; - return (DECLINED) + return DECLINED unless $recipient->host && $recipient->user; - return (DECLINED) + return DECLINED unless lc($recipient->host) eq $self->{_domain}; my $rcpt = lc $recipient->user . '@' . lc $recipient->host; - return (@{$self->{_default}}) + return @{$self->{_default}} unless exists $map{$rcpt}; return @{$map{$rcpt}}; diff --git a/plugins/rcpt_ok b/plugins/rcpt_ok index 7d4d201..820ede8 100644 --- a/plugins/rcpt_ok +++ b/plugins/rcpt_ok @@ -30,15 +30,15 @@ use Qpsmtpd::DSN; sub hook_rcpt { my ($self, $transaction, $recipient, %param) = @_; - return (OK) if $self->is_immune(); # relay_client or whitelist + return OK if $self->is_immune(); # relay_client or whitelist # Allow 'no @' addresses for 'postmaster' and 'abuse' # qmail-smtpd will do this for all users without a domain, but we'll # be a bit more picky. Maybe that's a bad idea. - my $host = $self->get_rcpt_host($recipient) or return (OK); + my $host = $self->get_rcpt_host($recipient) or return OK; - return (OK) if $self->is_in_rcpthosts($host); - return (OK) if $self->is_in_morercpthosts($host); + return OK if $self->is_in_rcpthosts($host); + return OK if $self->is_in_morercpthosts($host); # default of relaying_denied is obviously DENY, # we use the default "Relaying denied" message... diff --git a/plugins/rcpt_regexp b/plugins/rcpt_regexp index 41d93a4..3245384 100644 --- a/plugins/rcpt_regexp +++ b/plugins/rcpt_regexp @@ -45,7 +45,7 @@ use Qpsmtpd::Constants; sub hook_rcpt { my ($self, $transaction, $recipient) = @_; - return (DECLINED) + return DECLINED unless $recipient->host && $recipient->user; my $rcpt = lc $recipient->user . '@' . $recipient->host; @@ -93,7 +93,7 @@ sub hook_rcpt { $self->log(LOGDEBUG, "RE $re matched $rcpt, returning $ok"); } - return ($const, $comment); + return $const, $comment; } - return (DECLINED); + return DECLINED; } diff --git a/plugins/relay b/plugins/relay index 61a2ec5..fdae3ad 100644 --- a/plugins/relay +++ b/plugins/relay @@ -227,13 +227,13 @@ sub hook_connect { $self->qp->connection->relay_client(0); delete $ENV{RELAYCLIENT}; $self->log(LOGINFO, "fail, disabled by norelayclients"); - return (DECLINED); + return DECLINED; } if ($ENV{RELAYCLIENT}) { $self->qp->connection->relay_client(1); $self->log(LOGINFO, "pass, enabled by env"); - return (DECLINED); + return DECLINED; } $self->populate_relayclients(); @@ -242,18 +242,17 @@ sub hook_connect { if ($self->is_in_cidr_block() || $self->is_octet_match()) { $self->qp->connection->relay_client(1); - return (DECLINED); + return DECLINED; } $self->log(LOGINFO, "skip, no match"); - return (DECLINED); + return DECLINED; } sub relay_only { my $self = shift; if ($self->qp->connection->relay_client) { - return (OK); + return OK; } - return (DENY); + return DENY; } - diff --git a/plugins/sender_permitted_from b/plugins/sender_permitted_from index 7b049a9..c1e7406 100644 --- a/plugins/sender_permitted_from +++ b/plugins/sender_permitted_from @@ -95,7 +95,7 @@ sub mail_handler { scope => 'mfrom', result => 'pass', } ); - return (DECLINED); + return DECLINED; }; my $format = $sender->format; @@ -105,7 +105,7 @@ sub mail_handler { scope => 'helo', result => 'none', } ); - return (DECLINED, "SPF - null sender"); + return DECLINED, "SPF - null sender"; } my $from = $sender->user . '@' . lc($sender->host); @@ -147,8 +147,8 @@ sub mail_handler { if (!$code) { $self->log(LOGINFO, "fail, no response"); - return (DENYSOFT, "SPF - no response") if $reject >= 2; - return (DECLINED, "SPF - no response"); + return DENYSOFT, "SPF - no response" if $reject >= 2; + return DECLINED, "SPF - no response"; } $transaction->notes('dmarc_spf', { @@ -163,12 +163,12 @@ sub mail_handler { $self->adjust_karma(1); $transaction->notes('spf_pass_host', lc $sender->host); $self->log(LOGINFO, "pass, $why"); - return (DECLINED); + return DECLINED; } if (!$reject) { $self->log(LOGINFO, "skip, tolerated ($code: $why)"); - return (DECLINED, "SPF - $code: $why"); + return DECLINED, "SPF - $code: $why"; } # SPF result codes: pass fail softfail neutral none error permerror temperror @@ -179,27 +179,27 @@ sub mail_handler { if ($code eq 'neutral') { if ($reject >= 5 ) { $self->log(LOGINFO, "fail, $code, $why"); - return (DENY, "SPF - $code: $why"); + return DENY, "SPF - $code: $why"; }; $self->log(LOGINFO, "fail, tolerated, $code, $why"); - return (DECLINED); + return DECLINED; } if ($code =~ /(?:permerror|error)/ ) { $self->log(LOGINFO, "fail, $code, $why") if $reject > 3; - return (DENY, "SPF - $code: $why") if $reject >= 6; - return (DENYSOFT, "SPF - $code: $why") if $reject > 3; + return DENY, "SPF - $code: $why" if $reject >= 6; + return DENYSOFT, "SPF - $code: $why" if $reject > 3; $self->log(LOGINFO, "fail, tolerated, $code, $why"); - return (DECLINED); + return DECLINED; } if ($code eq 'temperror') { $self->log(LOGINFO, "fail, $code, $why"); - return (DENYSOFT, "SPF - $code: $why") if $reject >= 2; + return DENYSOFT, "SPF - $code: $why" if $reject >= 2; $self->log(LOGINFO, "fail, tolerated, $code, $why"); - return (DECLINED); + return DECLINED; } $self->log(LOGINFO, "SPF from $from was $code: $why"); - return (DECLINED); + return DECLINED; } sub handle_code_none { @@ -207,7 +207,7 @@ sub handle_code_none { if ($reject >= 6) { $self->log(LOGINFO, "fail, none, $why"); - return (DENY, "SPF - none: $why"); + return DENY, "SPF - none: $why"; } $self->log(LOGINFO, "skip, tolerated, none, $why"); @@ -221,8 +221,8 @@ sub handle_code_fail { if ($reject >= 2) { $self->log(LOGINFO, "fail, $why"); - return (DENY, "SPF - forgery: $why") if $reject >= 3; - return (DENYSOFT, "SPF - fail: $why"); + return DENY, "SPF - forgery: $why" if $reject >= 3; + return DENYSOFT, "SPF - fail: $why"; } $self->log(LOGINFO, "fail, tolerated, $why"); @@ -236,8 +236,8 @@ sub handle_code_softfail { if ($reject >= 3) { $self->log(LOGINFO, "fail, soft, $why"); - return (DENY, "SPF - fail: $why") if $reject >= 4; - return (DENYSOFT, "SPF - fail: $why") if $reject >= 3; + return DENY, "SPF - fail: $why" if $reject >= 4; + return DENYSOFT, "SPF - fail: $why" if $reject >= 3; } $self->log(LOGINFO, "fail, tolerated, soft, $why"); @@ -250,7 +250,7 @@ sub data_post_handler { my $result = $transaction->notes('spfquery') or return DECLINED; # if we skipped processing in mail_handler, we should skip here too - return (DECLINED) if $self->is_immune(); + return DECLINED if $self->is_immune(); $self->log(LOGDEBUG, "result was $result->code"); diff --git a/plugins/spamassassin b/plugins/spamassassin index 9b7fdc8..5d1a0ce 100644 --- a/plugins/spamassassin +++ b/plugins/spamassassin @@ -170,22 +170,22 @@ sub register { sub data_post_handler { my ($self, $transaction) = @_; - return (DECLINED) if $self->is_immune(); + return DECLINED if $self->is_immune(); if ($transaction->data_size > 500_000) { $self->log(LOGINFO, "skip, too large (" . $transaction->data_size . ")"); - return (DECLINED); + return DECLINED; } - my $SPAMD = $self->connect_to_spamd() or return (DECLINED); + my $SPAMD = $self->connect_to_spamd() or return DECLINED; my $username = $self->select_spamd_username($transaction); my $message = $self->assemble_message($transaction); my $length = length $message; $self->print_to_spamd($SPAMD, $message, $length, $username); shutdown($SPAMD, 1); # close our side of the socket (tell spamd we're done) - my $headers = $self->parse_spamd_response($SPAMD) or return (DECLINED); + my $headers = $self->parse_spamd_response($SPAMD) or return DECLINED; $self->insert_spam_headers($transaction, $headers, $username); $self->munge_subject($transaction); @@ -430,7 +430,7 @@ sub reject { } $self->log(LOGINFO, "fail, $status, > $reject, $learn"); - return ($self->get_reject_type(), "spam score exceeded threshold"); + return $self->get_reject_type(), "spam score exceeded threshold"; } sub munge_subject { diff --git a/plugins/tls b/plugins/tls index 82e5c63..1b94a95 100644 --- a/plugins/tls +++ b/plugins/tls @@ -160,7 +160,7 @@ sub hook_connect { unless (_convert_to_ssl($self)) { $self->log(LOGINFO, "fail, unable to establish SSL"); - return (DENY_DISCONNECT, "Cannot establish SSL session"); + return DENY_DISCONNECT, "Cannot establish SSL session"; } $self->log(LOGINFO, "pass, connect via SMTPS"); return DECLINED; diff --git a/plugins/uribl b/plugins/uribl index 0209763..d06feb6 100644 --- a/plugins/uribl +++ b/plugins/uribl @@ -248,7 +248,7 @@ sub evaluate { my $v = (($1 & 0xff) << 24) | (($2 & 0xff) << 16) | (($3 & 0xff) << 8) | ($4 & 0xff); - return ($v & $mask); + return $v & $mask; } sub lookup_start { @@ -502,7 +502,7 @@ sub collect_results { sub hook_data { my ($self, $transaction) = @_; - return (DECLINED) if $self->is_immune(); + return DECLINED if $self->is_immune(); my $queries = $self->lookup_start( $transaction, @@ -524,10 +524,10 @@ sub hook_data { $transaction->header->add('X-URIBL-Match', $_->{desc}, 0); } elsif ($_->{action} eq 'deny') { - return (DENY, $_->{desc}); + return DENY, $_->{desc}; } elsif ($_->{action} eq 'denysoft') { - return (DENYSOFT, $_->{desc}); + return DENYSOFT, $_->{desc}; } } return DECLINED; diff --git a/plugins/virus/aveclient b/plugins/virus/aveclient index 8f5c38c..538db96 100644 --- a/plugins/virus/aveclient +++ b/plugins/virus/aveclient @@ -161,7 +161,7 @@ sub hook_data_post { # check if something went wrong if ($signal) { $self->log(LOGERROR, "kavscanner exited with signal: $signal"); - return (DECLINED); + return DECLINED; } # either we found a virus or something went wrong @@ -174,7 +174,7 @@ sub hook_data_post { $self->log(LOGWARN, "Virus found! ($description)"); # we don't want to be disturbed be these, so block mail and DENY connection - return (DENY, "Virus found: $description"); + return DENY, "Virus found: $description"; } else { @@ -188,17 +188,17 @@ sub hook_data_post { "aveserver: some of the required parameters are missing from the command line." ) if ($result =~ /^9$/); - return (DENY, + if ( $self->{_blockonerror} ) { + return DENY, "Unable to scan for virus, please contact admin of " . $self->qp->config("me") . ", if you feel this is an error!" - ) - if $self->{_blockonerror}; + } } } $self->log(LOGINFO, "kavscanner results: $description"); $transaction->header->add('X-Virus-Checked', 'Checked by Kaspersky on ' . $self->qp->config("me")); - return (DECLINED); + return DECLINED; } diff --git a/plugins/virus/bitdefender b/plugins/virus/bitdefender index ea01e6c..698005d 100644 --- a/plugins/virus/bitdefender +++ b/plugins/virus/bitdefender @@ -87,7 +87,7 @@ sub hook_data_post { . $transaction->data_size . " vs " . $self->{"_bitd"}->{"max_size"} . ")" ); - return (DECLINED); + return DECLINED; } # Ignore non-multipart emails @@ -123,10 +123,10 @@ sub hook_data_post { if ($output) { $self->log(LOGINFO, "Virus(es) found: $output"); if ($self->{"_bitd"}->{"deny_viruses"} eq "yes") { - return (DENY, "Virus Found: $output"); + return DENY, "Virus Found: $output"; } } - return (DECLINED); + return DECLINED; } diff --git a/plugins/virus/clamav b/plugins/virus/clamav index e7452f1..ce6b3d5 100644 --- a/plugins/virus/clamav +++ b/plugins/virus/clamav @@ -174,7 +174,7 @@ sub hook_data_post { . $transaction->data_size . " vs $self->{_max_size})" ); - return (DECLINED); + return DECLINED; } my $filename = $transaction->body_filename; @@ -211,8 +211,8 @@ sub hook_data_post { if ($signal) { $self->log(LOGINFO, "clamscan exited with signal: $signal"); - return (DENYSOFT) if (!$self->{_declined_on_fail}); - return (DECLINED); + return DENYSOFT if !$self->{_declined_on_fail}; + return DECLINED; } if ($result == 1) { $self->log(LOGINFO, "Virus(es) found: $output"); @@ -221,17 +221,17 @@ sub hook_data_post { $transaction->header->add('X-Virus-Details', $output); } else { - return (DENY, "Virus Found: $output"); + return DENY, "Virus Found: $output"; } } elsif ($result) { $self->log(LOGERROR, "ClamAV error: $cmd: $result\n"); - return (DENYSOFT) if (!$self->{_declined_on_fail}); + return DENYSOFT if !$self->{_declined_on_fail}; } else { $transaction->header->add('X-Virus-Checked', "Checked by ClamAV on " . $self->qp->config("me")); } - return (DECLINED); + return DECLINED; } diff --git a/plugins/virus/hbedv b/plugins/virus/hbedv index 856d4c6..fdf601b 100644 --- a/plugins/virus/hbedv +++ b/plugins/virus/hbedv @@ -79,7 +79,7 @@ sub hook_data_post { my $filename = $transaction->body_filename; unless (defined $filename) { $self->log(LOGWARN, "didn't get a file name"); - return (DECLINED); + return DECLINED; } # Now do the actual scanning! @@ -105,14 +105,14 @@ sub hook_data_post { if ($signal) { $self->log(LOGWARN, "scanner exited with signal: $signal"); - return (DECLINED); + return DECLINED; } my $output = join(", ", @virii); $output = substr($output, 0, 60); if ($result == 1 || $result == 3) { $self->log(LOGWARN, "Virus(es) found: $output"); - # return (DENY, "Virus Found: $output"); + # return DENY, "Virus Found: $output"; # $transaction->header->add('X-Virus-Found', 'Yes', 0); # $transaction->header->add('X-Virus-Details', $output, 0); $transaction->header->add('X-H+BEDV-Virus-Found', 'Yes', 0); @@ -137,21 +137,20 @@ sub hook_data_post { # $transaction->header->add('X-Virus-Checked', 'Checked', 0); $transaction->header->add('X-H+BEDV-Virus-Checked', 'Checked', 0); - return (DECLINED) unless $result; + return DECLINED if !$result; if (@virii) { - return (DENY, "Virus found: $output") - unless $self->qp->config("hbedv_deny"); + return DENY, "Virus found: $output" if !$self->qp->config("hbedv_deny"); foreach my $d ($self->qp->config("hbedv_deny")) { foreach my $v (@virii) { if ($v =~ /^$d$/i) { $self->log(LOGWARN, "Denying mail with virus '$v'"); - return (DENY, "Virus found: $output"); + return DENY, "Virus found: $output"; } } } } - return (DECLINED); + return DECLINED; } sub unique { diff --git a/plugins/virus/kavscanner b/plugins/virus/kavscanner index 993f21d..65ee68d 100644 --- a/plugins/virus/kavscanner +++ b/plugins/virus/kavscanner @@ -110,7 +110,7 @@ sub hook_data_post { if ($signal) { $self->log(LOGWARN, "kavscanner exited with signal: $signal"); - return (DECLINED); + return DECLINED; } my $description = 'clean'; @@ -187,6 +187,6 @@ sub hook_data_post { $transaction->header->add('X-Virus-Checked', 'Checked by ' . $self->qp->config("me")); - return (DECLINED); + return DECLINED; } diff --git a/plugins/virus/klez_filter b/plugins/virus/klez_filter index e45a7aa..f1b8121 100644 --- a/plugins/virus/klez_filter +++ b/plugins/virus/klez_filter @@ -4,8 +4,7 @@ sub hook_data_post { my ($self, $transaction) = @_; # klez files are always sorta big .. how big? Dunno. - return (DECLINED) - if $transaction->data_size < 60_000; + return DECLINED if $transaction->data_size < 60_000; # 220k was too little, so let's just disable the "big size check" # or $transaction->data_size > 1_000_000; @@ -26,11 +25,11 @@ sub hook_data_post { and ++$seen_klez_signature and next; - return (DENY, "Klez Virus Detected") + return DENY, "Klez Virus Detected" if $seen_klez_signature and m!^TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQA!; } - return (DECLINED); + return DECLINED; } diff --git a/plugins/virus/sophie b/plugins/virus/sophie index e84dd38..72cd77d 100644 --- a/plugins/virus/sophie +++ b/plugins/virus/sophie @@ -18,7 +18,7 @@ sub hook_data_post { if ($transaction->data_size > $self->{"_sophie"}->{"max_size"} * 1024) { $self->log(LOGNOTICE, "Declining due to data_size"); - return (DECLINED); + return DECLINED; } # Ignore non-multipart emails @@ -34,7 +34,7 @@ sub hook_data_post { my $filename = $transaction->body_filename; unless ($filename) { $self->log(LOGWARN, "Cannot process due to lack of filename"); - return (DECLINED); # unless $filename; + return DECLINED; # unless $filename; } my $mode = (stat($self->spool_dir()))[2]; @@ -61,20 +61,19 @@ sub hook_data_post { $self->log(LOGERROR, "One or more virus(es) found: $virus"); if (lc($self->{"_sophie"}->{"deny_viruses"}) eq "yes") { - return (DENY, - "Virus" . ($virus =~ /,/ ? "es " : " ") . "Found: $virus"); + return DENY,"Virus" . ($virus =~ /,/ ? "es " : " ") . "Found: $virus"; } else { $transaction->header->add('X-Virus-Found', 'Yes'); $transaction->header->add('X-Virus-Details', $virus); - return (DECLINED); + return DECLINED; } } $transaction->header->add('X-Virus-Checked', "Checked by SOPHIE on " . $self->qp->config("me")); - return (DECLINED); + return DECLINED; } =head1 NAME diff --git a/plugins/virus/uvscan b/plugins/virus/uvscan index eab7bfa..eedd823 100644 --- a/plugins/virus/uvscan +++ b/plugins/virus/uvscan @@ -55,7 +55,7 @@ sub register { sub hook_data_post { my ($self, $transaction) = @_; - return (DECLINED) + return DECLINED if $transaction->data_size > 250_000; # Ignore non-multipart emails @@ -69,7 +69,7 @@ sub hook_data_post { } my $filename = $transaction->body_filename; - return (DECLINED) unless $filename; + return DECLINED if !$filename; # Now do the actual scanning! my @cmd = ( @@ -92,28 +92,28 @@ sub hook_data_post { $virus = $1; } if ($output && $output =~ m/password-protected/m) { - return (DENY, 'We do not accept password-protected zip files!'); + return DENY, 'We do not accept password-protected zip files!'; } if ($signal) { $self->log(LOGWARN, "uvscan exited with signal: $signal"); - return (DECLINED); + return DECLINED; } if ($result == 2) { $self->log(LOGERROR, "Integrity check for a DAT file failed."); - return (DECLINED); + return DECLINED; } elsif ($result == 6) { $self->log(LOGERROR, "A general problem has occurred."); - return (DECLINED); + return DECLINED; } elsif ($result == 8) { $self->log(LOGERROR, "The program could not find a DAT file."); - return (DECLINED); + return DECLINED; } elsif ($result == 15) { $self->log(LOGERROR, "The program self-check failed"); - return (DECLINED); + return DECLINED; } elsif ($result) { # all of the possible virus returns if ($result == 12) { @@ -128,15 +128,15 @@ sub hook_data_post { } if (lc($self->{"_uvscan"}->{"deny_viruses"}) eq "yes") { - return (DENY, "Virus Found: $virus"); + return DENY, "Virus Found: $virus"; } $transaction->header->add('X-Virus-Found', 'Yes'); $transaction->header->add('X-Virus-Details', $virus); - return (DECLINED); + return DECLINED; } $transaction->header->add('X-Virus-Checked', "Checked by McAfee uvscan on " . $self->qp->config("me")); - return (DECLINED); + return DECLINED; } diff --git a/plugins/whitelist b/plugins/whitelist index 1ccdbae..a3867e3 100644 --- a/plugins/whitelist +++ b/plugins/whitelist @@ -133,7 +133,7 @@ sub register { sub check_host { my ($self, $transaction, $rcpt) = @_; - my $ip = $self->qp->connection->remote_ip || return (DECLINED); + my $ip = $self->qp->connection->remote_ip or return DECLINED; # From tcpserver if (exists $ENV{WHITELISTCLIENT}) { diff --git a/qpsmtpd-prefork b/qpsmtpd-prefork index f72b01b..42784d3 100755 --- a/qpsmtpd-prefork +++ b/qpsmtpd-prefork @@ -410,7 +410,7 @@ sub block_signal { sigprocmask(SIG_BLOCK, $blockset, $sigset) or die "Could not block @signal signals: $!\n"; - return ($sigset); + return $sigset; } # unblock_signal: unblock/reset and receive pending signals @@ -531,7 +531,7 @@ sub qpsmtpd_instance { $qpsmtpd->spool_dir; $qpsmtpd->size_threshold; - return ($qpsmtpd); + return $qpsmtpd; } # shmem: tie to shared memory hash @@ -559,7 +559,7 @@ sub shmem { return; } - return (\%shmem_hash); + return \%shmem_hash; } # shmem_opt: connect to shared memory and perform options @@ -649,7 +649,7 @@ sub shmem_opt { warn("$@"); } - return ($chld_busy); + return $chld_busy; } # info: write info diff --git a/t/Test/Qpsmtpd/Plugin.pm b/t/Test/Qpsmtpd/Plugin.pm index dc1c1ae..0aedb78 100644 --- a/t/Test/Qpsmtpd/Plugin.pm +++ b/t/Test/Qpsmtpd/Plugin.pm @@ -48,40 +48,40 @@ sub validate_password { if (!$src_crypt && !$src_clear) { $self->log(LOGINFO, "fail: missing password"); - return ($deny, "$file - no such user"); + return $deny, "$file - no such user"; } if (!$src_clear && $method =~ /CRAM-MD5/i) { $self->log(LOGINFO, "skip: cram-md5 not supported w/o clear pass"); - return (DECLINED, $file); + return DECLINED, $file; } if (defined $attempt_clear) { if ($src_clear && $src_clear eq $attempt_clear) { $self->log(LOGINFO, "pass: clear match"); - return (OK, $file); + return OK, $file; } if ($src_crypt && $src_crypt eq crypt($attempt_clear, $src_crypt)) { $self->log(LOGINFO, "pass: crypt match"); - return (OK, $file); + return OK, $file; } } if (defined $attempt_hash && $src_clear) { if (!$ticket) { $self->log(LOGERROR, "skip: missing ticket"); - return (DECLINED, $file); + return DECLINED, $file; } if ($attempt_hash eq hmac_md5_hex($ticket, $src_clear)) { $self->log(LOGINFO, "pass: hash match"); - return (OK, $file); + return OK, $file; } } $self->log(LOGINFO, "fail: wrong password"); - return ($deny, "$file - wrong password"); + return $deny, "$file - wrong password"; } 1;