aboutsummaryrefslogtreecommitdiffstats
path: root/packages/spamd_db_ext.php
diff options
context:
space:
mode:
Diffstat (limited to 'packages/spamd_db_ext.php')
-rw-r--r--packages/spamd_db_ext.php18
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/spamd_db_ext.php b/packages/spamd_db_ext.php
index b7d30589..85aa3c68 100644
--- a/packages/spamd_db_ext.php
+++ b/packages/spamd_db_ext.php
@@ -84,10 +84,12 @@ if($_GET['action'] or $_POST['action']) {
mwexec("/sbin/pfctl -q -t spamd -T delete $srcip");
mwexec("/sbin/pfctl -q -t blacklist -T replace -f /var/db/blacklist.txt");
delete_from_blacklist($srcip);
+ delete_from_whitelist($srcip);
log_error("spamd: {$srcip} has been deleted by {$_SERVER['REMOTE_ADDR']} {$loginname}");
exit;
} else if($action == "spamtrap") {
delete_from_spamd_db($email);
+ delete_from_whitelist($srcip);
usleep(100);
exec("/usr/local/sbin/spamdb -a \"<{$email}>\" -T");
hup_spamd();
@@ -96,6 +98,7 @@ if($_GET['action'] or $_POST['action']) {
exit;
} else if($action == "trapped") {
delete_from_spamd_db($srcip);
+ delete_from_whitelist($srcip);
usleep(100);
exec("/usr/local/sbin/spamdb -a {$srcip} -t");
add_to_blacklist($srcip);
@@ -205,6 +208,21 @@ function delete_from_blacklist($srcip) {
config_unlock();
}
+function delete_from_whitelist($srcip) {
+ config_lock();
+ $whitelist = split("\n", file_get_contents("/var/db/whitelist.txt"));
+ $fd = fopen("/var/db/whitelist.txt", "w");
+ foreach($whitelist as $wl) {
+ if($wl <> "")
+ if(!stristr($wl, $srcip))
+ fwrite($fd, "{$wl}\n");
+ }
+ fclose($fd);
+ mwexec("/sbin/pfctl -q -t spamd -T delete $srcip");
+ mwexec("/sbin/pfctl -q -t whitelist -T replace -f /var/db/whitelist.txt");
+ config_unlock();
+}
+
function hup_spamd() {
mwexec("killall -HUP spamlogd");
}