]>
git.proxmox.com Git - pmg-api.git/blob - src/tests/test_greylist.pl
de7267b514b8965e06d785f5acfb20d3144719c5
16 my $greylist_delay = 3*60;
17 my $greylist_lifetime = 3600*24*2; #retry window
18 my $greylist_awlifetime = 3600*24*36;
22 my $testdb = 'Proxmox_testdb';
24 my $testpidfn = "greylist-test-$$.pid";
26 system ("perl -I.. ../bin/pmgpolicy -d $testdb -t --port $testport --pidfile '$testpidfn'");
29 my $dbh = PMG
::DBTools
::open_ruledb
($testdb);
30 $dbh->do ("DELETE FROM CGreylist");
36 my $sock = IO
::Socket
::INET-
>new(
37 PeerAddr
=> '127.0.0.1',
38 PeerPort
=> $testport) ||
39 die "unable to open socket - $!";
44 my $starttime = $testtime;
49 my ($data, $ttime, $eres) = @_;
53 print $sock "testtime=$ttime\ninstance=$icount\n$data\n";
57 if ($res !~ m/^action=$eres(\s.*)?/) {
58 my $timediff = $ttime - $starttime;
59 system("kill `cat $testpidfn`") if -f
$testpidfn;
60 die "unexpected result at time $timediff: $res != $eres\n$data"
67 request=smtpd_access_policy
70 client_address=1.2.3.4
71 client_name=test.domain.tld
72 helo_name=test.domain.tld
73 sender=test1\@test.domain.tld
74 recipient=test1\@proxmox.com
79 gltest
($data, $testtime, 'defer');
80 gltest
($data, $testtime+$greylist_delay-3, 'defer');
81 gltest
($data, $testtime+$greylist_delay-1, 'defer');
82 gltest
($data, $testtime+$greylist_lifetime-1, 'dunno');
83 gltest
($data, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1, 'dunno');
84 gltest
($data, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
88 gltest
($data, $testtime, 'defer');
89 gltest
($data, $testtime+$greylist_delay-3, 'defer');
90 gltest
($data, $testtime+$greylist_delay-1, 'defer');
91 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
92 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
93 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
94 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1, 'dunno');
95 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
97 # a record with sender = <> (bounce)
100 request=smtpd_access_policy
103 client_address=1.2.3.4
104 client_name=test.domain.tld
105 helo_name=test.domain.tld
107 recipient=test1\@proxmox.com
113 gltest
($data, $testtime, 'defer');
114 gltest
($data, $testtime+$greylist_delay-3, 'defer');
115 gltest
($data, $testtime+$greylist_delay-1, 'defer');
116 gltest
($data, $testtime+$greylist_lifetime-1, 'dunno');
117 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
122 gltest
($data, $testtime, 'defer');
123 gltest
($data, $testtime+$greylist_delay-3, 'defer');
124 gltest
($data, $testtime+$greylist_delay-1, 'defer');
125 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
126 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
127 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
128 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+2, 'defer');
132 request=smtpd_access_policy
135 client_address=2001:db8::1
136 client_name=test.domain.tld
137 helo_name=test.domain.tld
138 sender=test1\@test.domain.tld
139 recipient=test1\@proxmox.com
144 gltest
($data6, $testtime, 'defer');
145 gltest
($data6, $testtime+$greylist_delay-3, 'defer');
146 gltest
($data6, $testtime+$greylist_delay-1, 'defer');
147 gltest
($data6, $testtime+$greylist_lifetime-1, 'dunno');
148 gltest
($data6, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1, 'dunno');
149 gltest
($data6, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
153 gltest
($data6, $testtime, 'defer');
154 gltest
($data6, $testtime+$greylist_delay-3, 'defer');
155 gltest
($data6, $testtime+$greylist_delay-1, 'defer');
156 gltest
($data6, $testtime+$greylist_lifetime+1, 'defer');
157 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
158 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
159 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1, 'dunno');
160 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
163 my $testdomain = "interspar.at";
164 my $testipok = "68.232.133.35";
165 my $testipfail = "1.2.3.4";
167 my $data_ok = <<_EOD;
168 request=smtpd_access_policy
171 client_address=$testipok
172 helo_name=$testdomain
173 sender=xyz\@$testdomain
174 recipient=testspf\@maurer-it.com
177 gltest
($data_ok, $testtime, 'prepend'); # helo pass
180 request=smtpd_access_policy
183 client_address=$testipok
185 sender=xyz\@$testdomain
186 recipient=testspf\@proxmox.com
189 gltest
($data_ok, $testtime, 'prepend'); # mform pass
192 request=smtpd_access_policy
195 client_address=88.198.105.243
197 sender=xyz\@$testdomain
198 recipient=testspf\@maurer-it.com
201 # we currently hav no backup mx, so we cant test this
202 #gltest ($data_ok, $testtime, 'dunno'); # mail from backup mx
204 $testdomain = "openspf.org"; # rejects everything
206 my $data_fail = <<_EOD;
207 request=smtpd_access_policy
210 client_address=$testipfail
211 helo_name=$testdomain
212 sender=xyz\@$testdomain
213 recipient=testspf\@maurer-it.com
216 gltest
($data_fail, $testtime, 'reject');
218 system("kill `cat $testpidfn`") if -f
$testpidfn;
221 print "ALL TESTS OK\n";