From 42f995f03b5eed78d52d02328a8f0e78c2275c77 Mon Sep 17 00:00:00 2001 From: "Antonio J. Delgado" Date: Tue, 1 Oct 2024 11:29:23 +0300 Subject: [PATCH] Manage permissions of sieve script --- imap_filter/imap_filter.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/imap_filter/imap_filter.py b/imap_filter/imap_filter.py index 25361dc..c9885a1 100644 --- a/imap_filter/imap_filter.py +++ b/imap_filter/imap_filter.py @@ -11,6 +11,7 @@ import logging from logging.handlers import SysLogHandler import imaplib import email +from pathlib import Path from signal import signal, SIGINT import json import re @@ -136,6 +137,10 @@ class ImapFilter: def _create_sieve_script(self, filters): if os.path.exists(self.config['sieve_scripts_path']): + if os.geteuid() == 0: + file_path = Path(self.config['sieve_scripts_path']) + owner = file_path.owner() + group = file_path.group() with open(self.config['sieve_scripts_path'], 'r', encoding='UTF-8') as sieve_script: content = sieve_script.read() else: @@ -176,6 +181,9 @@ class ImapFilter: content += f"{replacement}\n" with open(self.config['sieve_scripts_path'], 'w', encoding='UTF-8') as sieve_script: sieve_script.write(content) + if os.geteuid() == 0: + os.chown(self.config['sieve_scripts_path'], owner, group) + os.chmod(self.config['sieve_scripts_path'], '0777') return True def _process_message(self, message_id, data, mfilter):