hostnames come in lower case, and might even be longer than 8 characters

git-svn-id: https://svn.perl.org/qpsmtpd/trunk@909 958fd67b-6ff1-0310-b445-bb7760255be9
This commit is contained in:
Robert Spier 2008-05-17 03:52:00 +00:00
parent b3eacea14f
commit 6563dcc4f8
5 changed files with 55 additions and 7 deletions

View File

@ -1,5 +1,5 @@
#! /bin/sh
export LOGDIR=./main
mkdir -p $LOGDIR
exec multilog t s1000000 n20 $LOGDIR
exec multilog t s10000000 n40 $LOGDIR

View File

@ -67,6 +67,10 @@ The username to pass to spamd, if different from the user qpsmtpd runs as.
=back
=item timeout [seconds]
How long to wait for spamd? Default 60 seconds.
With both of the first options the configuration line will look like the following
spamasssasin reject_threshold 18 munge_subject_threshold 8
@ -96,6 +100,7 @@ sub register {
$self->register_hook("data_post", "check_spam_munge_subject")
if $self->{_args}->{munge_subject_threshold};
$self->{timeout} = $self->{_args}->{timeout} || 60;
}
sub hook_data_post { # check_spam
@ -137,6 +142,14 @@ sub hook_data_post { # check_spam
$self->log(LOGDEBUG, "check_spam: connected to spamd");
SPAMD->autoflush(1);
local $SIG{ALRM} = sub {
$self->qp->respond(451, "An error occured while processing your mail. (#SA)");
$self->log(LOGERROR, "spamassassin timeout");
exit(1);
};
alarm $self->{timeout};
$transaction->body_resetpos;
my $username = $self->{_args}->{spamd_user} || getpwuid($>);
@ -186,6 +199,7 @@ sub hook_data_post { # check_spam
}
my $tests = <SPAMD>;
alarm 0;
$tests =~ s/\015//; # hack for outlook
$flag = $flag eq 'True' ? 'Yes' : 'No';
$self->log(LOGDEBUG, "check_spam: finished reading from spamd");

View File

@ -323,11 +323,11 @@ sub data_handler {
}
}
while ($l =~ m{
([Ww]{3,3}\.[\w\-.]+\.[a-zA-Z]{2,8}| # www.hostname
([Ww]{3,3}\.[\w\-.]+\.[a-zA-Z]{2,32}| # www.hostname
[a-zA-Z0-9][a-zA-Z0-9\-.]+\. # hostname. ...
(?:com|net|org|biz|info|[a-zA-Z]{2,2}))(?!\w) # (cc)TLD
}gx) {
my $host = $1;
}gix) {
my $host = lc $1;
my @host_domains = split /\./, $host;
$self->log(LOGDEBUG, "uribl: matched 'www.' hostname $host");
@ -352,9 +352,9 @@ sub data_handler {
while ($l =~ m{
\w{3,16}:/+ # protocol
(?:\S+@)? # user/pass
([\w\-.]+\.[a-zA-Z]{2,8}) # hostname
([\w\-.]+\.[a-zA-Z]{2,32}) # hostname
}gx) {
my $host = $1;
my $host = lc $1;
my @host_domains = split /\./, $host;
$self->log(LOGDEBUG, "uribl: matched full URI hostname $host");

View File

@ -1,4 +1,4 @@
#!/usr/bin/perl -Tw
#!/pkg/bin/perl -Tw
# Copyright (c) 2001 Ask Bjoern Hansen. See the LICENSE file for details.
# The "command dispatch" system is taken from colobus - http://trainedmonkey.com/colobus/
#

34
run
View File

@ -1,8 +1,42 @@
#!/bin/sh
QMAILDUID=`id -u smtpd`
NOFILESGID=`id -g smtpd`
export SLOWROOT=/home/smtpd/slowforward
method=forkserver
# robert bumped up max-from-ip to 5 to make postfix on x6 happier. dropped connections to 40 from 90
if [ ${method} = "forkserver" ]; then
exec /usr/local/bin/softlimit -m 25000000 \
/pkg/bin/perl -T ./qpsmtpd-forkserver \
--port 25 \
--limit-connections 40 \
--user smtpd \
--listen-address `head -1 config/IP` \
--max-from-ip 5 \
2>&1
elif [ ${method} = "prefork" ]; then
exec /usr/local/bin/softlimit -m 25000000 \
/pkg/bin/perl -T ./qpsmtpd-prefork \
--port 25 \
--user smtpd \
--interface `head -1 config/IP` \
--max-from-ip 3 \
--children 90 \
--idle-children 10 \
--pretty-child \
2>&1
else
exec /usr/local/bin/softlimit -m 25000000 \
/usr/local/bin/tcpserver -c 10 -v -R -p \
-u $QMAILDUID -g $NOFILESGID `head -1 config/IP` smtp \
./qpsmtpd 2>&1
fi