]>
git.proxmox.com Git - pmg-api.git/blob - src/tests/test_greylist.pl
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'");
28 sub exit_test_pmgpolicy
{
29 my $pid = PVE
::Tools
::file_read_firstline
($testpidfn);
30 die "could not read pidfile: $!\n" if !$pid;
32 die "could not find pid in pidfile\n" if $pid !~ m/^(\d+)$/;
40 my $dbh = PMG
::DBTools
::open_ruledb
($testdb);
41 $dbh->do ("DELETE FROM CGreylist");
49 for (my $tries = 0 ; $tries < 3 ; $tries++) {
50 $sock = IO
::Socket
::INET-
>new(
51 PeerAddr
=> '127.0.0.1',
52 PeerPort
=> $testport);
56 die "unable to open socket - $!" if !$sock;
61 my $starttime = $testtime;
66 my ($data, $ttime, $eres) = @_;
70 print $sock "testtime=$ttime\ninstance=$icount\n$data\n";
74 if ($res !~ m/^action=$eres(\s.*)?/) {
75 my $timediff = $ttime - $starttime;
76 exit_test_pmgpolicy
();
77 die "unexpected result at time $timediff: $res != $eres\n$data"
84 request=smtpd_access_policy
87 client_address=1.2.3.4
88 client_name=test.domain.tld
89 helo_name=test.domain.tld
90 sender=test1\@test.domain.tld
91 recipient=test1\@proxmox.com
96 gltest
($data, $testtime, 'defer');
97 gltest
($data, $testtime+$greylist_delay-3, 'defer');
98 gltest
($data, $testtime+$greylist_delay-1, 'defer');
99 gltest
($data, $testtime+$greylist_lifetime-1, 'dunno');
100 gltest
($data, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1, 'dunno');
101 gltest
($data, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
105 gltest
($data, $testtime, 'defer');
106 gltest
($data, $testtime+$greylist_delay-3, 'defer');
107 gltest
($data, $testtime+$greylist_delay-1, 'defer');
108 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
109 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
110 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
111 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1, 'dunno');
112 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
114 # a record with sender = <> (bounce)
117 request=smtpd_access_policy
120 client_address=1.2.3.4
121 client_name=test.domain.tld
122 helo_name=test.domain.tld
124 recipient=test1\@proxmox.com
130 gltest
($data, $testtime, 'defer');
131 gltest
($data, $testtime+$greylist_delay-3, 'defer');
132 gltest
($data, $testtime+$greylist_delay-1, 'defer');
133 gltest
($data, $testtime+$greylist_lifetime-1, 'dunno');
134 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
139 gltest
($data, $testtime, 'defer');
140 gltest
($data, $testtime+$greylist_delay-3, 'defer');
141 gltest
($data, $testtime+$greylist_delay-1, 'defer');
142 gltest
($data, $testtime+$greylist_lifetime+1, 'defer');
143 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
144 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
145 gltest
($data, $testtime+$greylist_lifetime+1+$greylist_delay+2, 'defer');
149 request=smtpd_access_policy
152 client_address=2001:db8::1
153 client_name=test.domain.tld
154 helo_name=test.domain.tld
155 sender=test1\@test.domain.tld
156 recipient=test1\@proxmox.com
161 gltest
($data6, $testtime, 'defer');
162 gltest
($data6, $testtime+$greylist_delay-3, 'defer');
163 gltest
($data6, $testtime+$greylist_delay-1, 'defer');
164 gltest
($data6, $testtime+$greylist_lifetime-1, 'dunno');
165 gltest
($data6, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1, 'dunno');
166 gltest
($data6, $testtime+$greylist_lifetime-1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
170 gltest
($data6, $testtime, 'defer');
171 gltest
($data6, $testtime+$greylist_delay-3, 'defer');
172 gltest
($data6, $testtime+$greylist_delay-1, 'defer');
173 gltest
($data6, $testtime+$greylist_lifetime+1, 'defer');
174 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay-1, 'defer');
175 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1, 'dunno');
176 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1, 'dunno');
177 gltest
($data6, $testtime+$greylist_lifetime+1+$greylist_delay+1+$greylist_awlifetime-1+$greylist_awlifetime, 'defer');
180 my $testdomain = "interspar.at";
181 my $testipok = "68.232.133.35";
182 my $testipfail = "1.2.3.4";
184 my $data_ok = <<_EOD;
185 request=smtpd_access_policy
188 client_address=$testipok
189 helo_name=$testdomain
190 sender=xyz\@$testdomain
191 recipient=testspf\@maurer-it.com
194 gltest
($data_ok, $testtime, 'prepend'); # helo pass
197 request=smtpd_access_policy
200 client_address=$testipok
202 sender=xyz\@$testdomain
203 recipient=testspf\@proxmox.com
206 gltest
($data_ok, $testtime, 'prepend'); # mform pass
209 request=smtpd_access_policy
212 client_address=88.198.105.243
214 sender=xyz\@$testdomain
215 recipient=testspf\@maurer-it.com
218 # we currently have no backup mx, so we can't test this
219 #gltest ($data_ok, $testtime, 'dunno'); # mail from backup mx
221 $testdomain = "openspf.org"; # rejects everything
223 my $data_fail = <<_EOD;
224 request=smtpd_access_policy
227 client_address=$testipfail
228 helo_name=$testdomain
229 sender=xyz\@$testdomain
230 recipient=testspf\@maurer-it.com
233 gltest
($data_fail, $testtime, 'reject');
235 exit_test_pmgpolicy
();
237 print "ALL TESTS OK\n";