From e428c646d1748a72cf3f86f04edba55b41bf78a8 Mon Sep 17 00:00:00 2001 From: j4n Date: Thu, 26 Feb 2026 21:06:55 +0100 Subject: [PATCH 1/2] fix(dovecot): download dovecot packages from github release --- cmdeploy/src/cmdeploy/dovecot/deployer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmdeploy/src/cmdeploy/dovecot/deployer.py b/cmdeploy/src/cmdeploy/dovecot/deployer.py index 90f6ecc7..6c4be048 100644 --- a/cmdeploy/src/cmdeploy/dovecot/deployer.py +++ b/cmdeploy/src/cmdeploy/dovecot/deployer.py @@ -54,7 +54,7 @@ class DovecotDeployer(Deployer): def _install_dovecot_package(package: str, arch: str): arch = "amd64" if arch == "x86_64" else arch arch = "arm64" if arch == "aarch64" else arch - url = f"https://download.delta.chat/dovecot/dovecot-{package}_2.3.21%2Bdfsg1-3_{arch}.deb" + url = f"https://github.com/chatmail/dovecot/releases/download/upstream%2F2.3.21%2Bdfsg1//dovecot-{package}_2.3.21%2Bdfsg1-3_{arch}.deb" deb_filename = "/root/" + url.split("/")[-1] match (package, arch): From 4e6ba7378d297f060b8b7203f572aa3d9183e44e Mon Sep 17 00:00:00 2001 From: j4n Date: Mon, 2 Mar 2026 10:23:43 +0100 Subject: [PATCH 2/2] feat(cmdeploy): fall back to github url for dovecot --- cmdeploy/src/cmdeploy/dovecot/deployer.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/cmdeploy/src/cmdeploy/dovecot/deployer.py b/cmdeploy/src/cmdeploy/dovecot/deployer.py index 6c4be048..bdd7b1e2 100644 --- a/cmdeploy/src/cmdeploy/dovecot/deployer.py +++ b/cmdeploy/src/cmdeploy/dovecot/deployer.py @@ -1,4 +1,5 @@ import os +import urllib.request from chatmaild.config import Config from pyinfra import host @@ -51,10 +52,21 @@ class DovecotDeployer(Deployer): self.need_restart = False +def _pick_url(primary, fallback): + try: + req = urllib.request.Request(primary, method="HEAD") + urllib.request.urlopen(req, timeout=10) + return primary + except Exception: + return fallback + + def _install_dovecot_package(package: str, arch: str): arch = "amd64" if arch == "x86_64" else arch arch = "arm64" if arch == "aarch64" else arch - url = f"https://github.com/chatmail/dovecot/releases/download/upstream%2F2.3.21%2Bdfsg1//dovecot-{package}_2.3.21%2Bdfsg1-3_{arch}.deb" + primary_url = f"https://download.chatmail.org/dovecot/dovecot-{package}_2.3.21%2Bdfsg1-3_{arch}.deb" + fallback_url = f"https://github.com/chatmail/dovecot/releases/download/upstream%2F2.3.21%2Bdfsg1/dovecot-{package}_2.3.21%2Bdfsg1-3_{arch}.deb" + url = _pick_url(primary_url, fallback_url) deb_filename = "/root/" + url.split("/")[-1] match (package, arch):