瀏覽代碼

Use tag settings for alias addresses

andryyy 8 年之前
父節點
當前提交
4c8288f85e
共有 1 個文件被更改,包括 14 次插入7 次删除
  1. 14 7
      data/conf/rspamd/dynmaps/tags.php

+ 14 - 7
data/conf/rspamd/dynmaps/tags.php

@@ -12,16 +12,23 @@ $opt = [
 try {
   $pdo = new PDO($dsn, $database_user, $database_pass, $opt);
   $stmt = $pdo->query("SELECT `username` FROM `mailbox` WHERE `wants_tagged_subject` = '1'");
-  $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
-  while ($row = array_shift($rows)) {
+  $rows_a = $stmt->fetchAll(PDO::FETCH_ASSOC);
+  while ($row_a = array_shift($rows_a)) {
+    $stmt = $pdo->prepare("SELECT `address` FROM `alias` WHERE `goto` REGEXP :username AND goto != `address` AND `address` NOT LIKE '@%'");
+    $stmt->execute(array(':username' => '(^|,)'.$row_a['username'].'($|,)'));
+    $rows_a_a = $stmt->fetchAll(PDO::FETCH_ASSOC);
+    while ($row_a_a = array_shift($rows_a_a)) {
+      echo strtolower(trim($row_a_a['address'])) . PHP_EOL;
+    }
     $has_object = 1;
-    echo strtolower(trim($row['username'])) . PHP_EOL;
+    echo strtolower(trim($row_a['username'])) . PHP_EOL;
   }
-  $stmt = $pdo->query("SELECT CONCAT(mailbox.local_part, '@', alias_domain.alias_domain) as `tag_ad` FROM `mailbox` INNER JOIN `alias_domain` ON mailbox.domain = alias_domain.target_domain WHERE mailbox.wants_tagged_subject='1';");
-  $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
-  while ($row = array_shift($rows)) {
+  $stmt = $pdo->query("SELECT CONCAT(`mailbox`.`local_part`, '@', `alias_domain`.`alias_domain`) AS `tag_ad` FROM `mailbox`
+    INNER JOIN `alias_domain` ON `mailbox`.`domain` = `alias_domain`.`target_domain` WHERE `mailbox`.`wants_tagged_subject` = '1';");
+  $rows_b = $stmt->fetchAll(PDO::FETCH_ASSOC);
+  while ($row_b = array_shift($rows_b)) {
     $has_object = 1;
-    echo strtolower(trim($row['tag_ad'])) . PHP_EOL;
+    echo strtolower(trim($row_b['tag_ad'])) . PHP_EOL;
   }
   if ($has_object == 0) {
     echo "dummy@domain.local";