diff --git a/email-worker/email_processing/rules_processor.py b/email-worker/email_processing/rules_processor.py index 15486d4..50a9ae7 100644 --- a/email-worker/email_processing/rules_processor.py +++ b/email-worker/email_processing/rules_processor.py @@ -134,6 +134,7 @@ class RulesProcessor: except Exception as e: log(f"⚠ OOO reply failed to {sender_addr}: {e}", 'ERROR', worker_name) + def _handle_forwards( self, recipient: str, @@ -143,25 +144,20 @@ class RulesProcessor: domain: str, worker_name: str, metrics_callback=None, - rule: dict = None # NEU + rule: dict = None ): """Handle email forwarding""" - # NEU: SMTP Override aus Rule lesen smtp_override = None if rule: smtp_override = rule.get('forward_smtp_override') for forward_to in forwards: try: - fwd_msg = self._create_forward_message( - parsed, recipient, forward_to, original_from - ) - fwd_bytes = fwd_msg.as_bytes() - - # NEU: Legacy SMTP Override (Migration) if smtp_override: + # Migration: Original-Mail unverändert weiterleiten + raw_bytes = parsed.as_bytes() success = self._send_via_legacy_smtp( - recipient, forward_to, fwd_bytes, + recipient, forward_to, raw_bytes, smtp_override, worker_name ) if success: @@ -171,24 +167,30 @@ class RulesProcessor: else: log(f"⚠ Legacy SMTP forward failed to {forward_to}", 'WARNING', worker_name) - - elif is_internal_address(forward_to): - success = self._send_internal_email( - recipient, forward_to, fwd_bytes, worker_name - ) - if success: - log(f"✓ Forwarded internally to {forward_to}", - 'SUCCESS', worker_name) - else: - log(f"⚠ Internal forward failed to {forward_to}", - 'WARNING', worker_name) else: - success = self.ses.send_raw_email( - recipient, forward_to, fwd_bytes, worker_name + # Normaler Forward (neue FWD-Message) + fwd_msg = self._create_forward_message( + parsed, recipient, forward_to, original_from ) - if success: - log(f"✓ Forwarded externally to {forward_to} via SES", - 'SUCCESS', worker_name) + fwd_bytes = fwd_msg.as_bytes() + + if is_internal_address(forward_to): + success = self._send_internal_email( + recipient, forward_to, fwd_bytes, worker_name + ) + if success: + log(f"✓ Forwarded internally to {forward_to}", + 'SUCCESS', worker_name) + else: + log(f"⚠ Internal forward failed to {forward_to}", + 'WARNING', worker_name) + else: + success = self.ses.send_raw_email( + recipient, forward_to, fwd_bytes, worker_name + ) + if success: + log(f"✓ Forwarded externally to {forward_to} via SES", + 'SUCCESS', worker_name) if metrics_callback: metrics_callback('forward', domain)