migrate from redis to valkey

This commit is contained in:
FreddleSpl0it
2025-02-28 15:36:19 +01:00
parent 35a6f81d0d
commit c27000215e
80 changed files with 754 additions and 753 deletions
-12
View File
@@ -1,12 +0,0 @@
#!/bin/sh
cat <<EOF > /redis.conf
requirepass $REDISPASS
user quota_notify on nopass ~QW_* -@all +get +hget +ping
EOF
if [ -n "$REDISMASTERPASS" ]; then
echo "masterauth $REDISMASTERPASS" >> /redis.conf
fi
exec redis-server /redis.conf
+6 -6
View File
@@ -22,10 +22,10 @@ catch (PDOException $e) {
exit;
}
// Init Redis
$redis = new Redis();
$redis->connect('redis-mailcow', 6379);
$redis->auth(getenv("REDISPASS"));
// Init Valkey
$valkey = new Redis();
$valkey->connect('valkey-mailcow', 6379);
$valkey->auth(getenv("VALKEYPASS"));
function parse_email($email) {
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) return false;
@@ -60,7 +60,7 @@ $rcpt_final_mailboxes = array();
// Skip if not a mailcow handled domain
try {
if (!$redis->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
exit;
}
}
@@ -122,7 +122,7 @@ try {
}
else {
$parsed_goto = parse_email($goto);
if (!$redis->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
error_log("ALIAS EXPANDER:" . $goto . " is not a mailcow handled mailbox or alias address" . PHP_EOL);
}
else {
+5 -5
View File
@@ -2,9 +2,9 @@
header('Content-Type: text/plain');
ini_set('error_reporting', 0);
$redis = new Redis();
$redis->connect('redis-mailcow', 6379);
$redis->auth(getenv("REDISPASS"));
$valkey = new Redis();
$valkey->connect('valkey-mailcow', 6379);
$valkey->auth(getenv("VALKEYPASS"));
function in_net($addr, $net) {
$net = explode('/', $net);
@@ -31,7 +31,7 @@ function in_net($addr, $net) {
if (isset($_GET['host'])) {
try {
foreach ($redis->hGetAll('WHITELISTED_FWD_HOST') as $host => $source) {
foreach ($valkey->hGetAll('WHITELISTED_FWD_HOST') as $host => $source) {
if (in_net($_GET['host'], $host)) {
echo '200 PERMIT';
exit;
@@ -46,7 +46,7 @@ if (isset($_GET['host'])) {
} else {
try {
echo '240.240.240.240' . PHP_EOL;
foreach ($redis->hGetAll('WHITELISTED_FWD_HOST') as $host => $source) {
foreach ($valkey->hGetAll('WHITELISTED_FWD_HOST') as $host => $source) {
echo $host . PHP_EOL;
}
}
+9 -9
View File
@@ -21,10 +21,10 @@ catch (PDOException $e) {
http_response_code(501);
exit;
}
// Init Redis
$redis = new Redis();
$redis->connect('redis-mailcow', 6379);
$redis->auth(getenv("REDISPASS"));
// Init Valkey
$valkey = new Redis();
$valkey->connect('valkey-mailcow', 6379);
$valkey->auth(getenv("VALKEYPASS"));
// Functions
function parse_email($email) {
@@ -74,16 +74,16 @@ if ($fuzzy == 'unknown') {
}
try {
$max_size = (int)$redis->Get('Q_MAX_SIZE');
$max_size = (int)$valkey->Get('Q_MAX_SIZE');
if (($max_size * 1048576) < $raw_size) {
error_log(sprintf("QUARANTINE: Message too large: %d b exceeds %d b", $raw_size, ($max_size * 1048576)) . PHP_EOL);
http_response_code(505);
exit;
}
if ($exclude_domains = $redis->Get('Q_EXCLUDE_DOMAINS')) {
if ($exclude_domains = $valkey->Get('Q_EXCLUDE_DOMAINS')) {
$exclude_domains = json_decode($exclude_domains, true);
}
$retention_size = (int)$redis->Get('Q_RETENTION_SIZE');
$retention_size = (int)$valkey->Get('Q_RETENTION_SIZE');
}
catch (RedisException $e) {
error_log("QUARANTINE: " . $e . PHP_EOL);
@@ -103,7 +103,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
// Skip if not a mailcow handled domain
try {
if (!$redis->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
continue;
}
}
@@ -171,7 +171,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
}
else {
$parsed_goto = parse_email($goto);
if (!$redis->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
error_log("RCPT RESOVLER:" . $goto . " is not a mailcow handled mailbox or alias address" . PHP_EOL);
}
else {
+7 -7
View File
@@ -5,16 +5,16 @@ header('Content-Type: text/plain');
require_once "vars.inc.php";
// Do not show errors, we log to using error_log
ini_set('error_reporting', 0);
// Init Redis
$redis = new Redis();
// Init Valkey
$valkey = new Redis();
try {
if (!empty(getenv('REDIS_SLAVEOF_IP'))) {
$redis->connect(getenv('REDIS_SLAVEOF_IP'), getenv('REDIS_SLAVEOF_PORT'));
if (!empty(getenv('VALKEY_SLAVEOF_IP'))) {
$valkey->connect(getenv('VALKEY_SLAVEOF_IP'), getenv('VALKEY_SLAVEOF_PORT'));
}
else {
$redis->connect('redis-mailcow', 6379);
$valkey->connect('valkey-mailcow', 6379);
}
$redis->auth(getenv("REDISPASS"));
$valkey->auth(getenv("VALKEYPASS"));
}
catch (Exception $e) {
exit;
@@ -44,6 +44,6 @@ $data['message_id'] = $raw_data_decoded['message_id'];
$data['header_subject'] = implode(' ', $raw_data_decoded['header_subject']);
$data['header_from'] = implode(', ', $raw_data_decoded['header_from']);
$redis->lpush('RL_LOG', json_encode($data));
$valkey->lpush('RL_LOG', json_encode($data));
exit;
+6 -6
View File
@@ -21,10 +21,10 @@ catch (PDOException $e) {
http_response_code(501);
exit;
}
// Init Redis
$redis = new Redis();
$redis->connect('redis-mailcow', 6379);
$redis->auth(getenv("REDISPASS"));
// Init Valkey
$valkey = new Redis();
$valkey->connect('valkey-mailcow', 6379);
$valkey->auth(getenv("VALKEYPASS"));
// Functions
function parse_email($email) {
@@ -94,7 +94,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
// Skip if not a mailcow handled domain
try {
if (!$redis->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_rcpt['domain'])) {
continue;
}
}
@@ -156,7 +156,7 @@ foreach (json_decode($rcpts, true) as $rcpt) {
}
else {
$parsed_goto = parse_email($goto);
if (!$redis->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
if (!$valkey->hGet('DOMAIN_MAP', $parsed_goto['domain'])) {
error_log("RCPT RESOVLER:" . $goto . " is not a mailcow handled mailbox or alias address" . PHP_EOL);
}
else {
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
cat <<EOF > /valkey.conf
requirepass $VALKEYPASS
user quota_notify on nopass ~QW_* -@all +get +hget +ping
EOF
if [ -n "$VALKEYMASTERPASS" ]; then
echo "masterauth $VALKEYMASTERPASS" >> /valkey.conf
fi
exec valkey-server /valkey.conf