From 09108406125e8d01a63bbf39a730ed9e4ff00593 Mon Sep 17 00:00:00 2001 From: Filippo Orru Date: Sat, 4 Apr 2026 18:03:48 -0700 Subject: [PATCH 1/2] Add EMAIL_SEND_FROM configuration option --- src/restic_compose_backup/alerts/smtp.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/restic_compose_backup/alerts/smtp.py b/src/restic_compose_backup/alerts/smtp.py index abe7b00..0980c55 100644 --- a/src/restic_compose_backup/alerts/smtp.py +++ b/src/restic_compose_backup/alerts/smtp.py @@ -11,12 +11,13 @@ class SMTPAlert(BaseAlert): name = "smtp" - def __init__(self, host, port, user, password, to): + def __init__(self, host, port, user, password, from_addr, to_addr): self.host = host self.port = port self.user = user self.password = password or "" - self.to = to + self.from_addr = from_addr + self.to_addr = to_addr @classmethod def create_from_env(cls): @@ -25,6 +26,7 @@ def create_from_env(cls): os.environ.get("EMAIL_PORT"), os.environ.get("EMAIL_HOST_USER"), os.environ.get("EMAIL_HOST_PASSWORD"), + os.environ.get("EMAIL_SEND_FROM"), (os.environ.get("EMAIL_SEND_TO") or "").split(","), ) if instance.properly_configured: @@ -34,13 +36,12 @@ def create_from_env(cls): @property def properly_configured(self) -> bool: - return self.host and self.port and self.user and len(self.to) > 0 - + return self.host and self.port and self.user and self.from_addr and self.to_addr def send(self, subject: str = None, body: str = None, alert_type: str = "INFO"): msg = MIMEText(body) msg["Subject"] = f"[{alert_type}] {subject}" - msg["From"] = self.user - msg["To"] = ", ".join(self.to) + msg["From"] = self.from_addr + msg["To"] = ", ".join(self.to_addr) try: logger.info("Connecting to %s port %s", self.host, self.port) @@ -61,7 +62,7 @@ def send(self, subject: str = None, body: str = None, alert_type: str = "INFO"): return server.ehlo() server.login(self.user, self.password) - server.sendmail(self.user, self.to, msg.as_string()) + server.sendmail(self.from_addr, self.to_addr, msg.as_string()) logger.info("Email sent") except Exception as ex: logger.exception(ex) From f16ccf90cf7355b4b98f982366eba69f3804faf2 Mon Sep 17 00:00:00 2001 From: Filippo Orru Date: Sat, 4 Apr 2026 18:07:34 -0700 Subject: [PATCH 2/2] Add EMAIL_SEND_FROM docs & fallback --- docs/guide/configuration.rst | 11 ++++++++++- src/restic_compose_backup/alerts/smtp.py | 2 +- stack-back.env.template | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/guide/configuration.rst b/docs/guide/configuration.rst index dad4414..5696fcf 100644 --- a/docs/guide/configuration.rst +++ b/docs/guide/configuration.rst @@ -175,10 +175,19 @@ Alerts can be tested using the ``rcb alerts`` command. This will send a test message to all configured alert backends. +EMAIL_SEND_FROM +~~~~~~~~~~~~~ + +The email address to send alerts from. If not set, the ``EMAIL_HOST_USER`` will be used as the sender address. + +Alerts can be tested using the ``rcb alerts`` command. +This will send a test message to all configured alert +backends. + EMAIL_SEND_TO ~~~~~~~~~~~~~ -The email address to send alerts +The email address to send alerts to. Multiple addresses can be separated by a space. Alerts can be tested using the ``rcb alerts`` command. This will send a test message to all configured alert diff --git a/src/restic_compose_backup/alerts/smtp.py b/src/restic_compose_backup/alerts/smtp.py index 0980c55..68e4b06 100644 --- a/src/restic_compose_backup/alerts/smtp.py +++ b/src/restic_compose_backup/alerts/smtp.py @@ -26,7 +26,7 @@ def create_from_env(cls): os.environ.get("EMAIL_PORT"), os.environ.get("EMAIL_HOST_USER"), os.environ.get("EMAIL_HOST_PASSWORD"), - os.environ.get("EMAIL_SEND_FROM"), + (os.environ.get("EMAIL_SEND_FROM") or os.environ.get("EMAIL_HOST_USER")), (os.environ.get("EMAIL_SEND_TO") or "").split(","), ) if instance.properly_configured: diff --git a/stack-back.env.template b/stack-back.env.template index b139f9c..79b1d9e 100644 --- a/stack-back.env.template +++ b/stack-back.env.template @@ -23,6 +23,7 @@ CRON_SCHEDULE=0 2 * * * # EMAIL_PORT= # EMAIL_HOST_USER= # EMAIL_HOST_PASSWORD= +# EMAIL_SEND_FROM= # EMAIL_SEND_TO= # DISCORD_WEBHOOK=