forward raw email

This commit is contained in:
Andreas Knuth 2026-02-09 14:04:00 -06:00
parent a593db160b
commit d9b6399dc7
1 changed files with 27 additions and 25 deletions

View File

@ -134,6 +134,7 @@ class RulesProcessor:
except Exception as e: except Exception as e:
log(f"⚠ OOO reply failed to {sender_addr}: {e}", 'ERROR', worker_name) log(f"⚠ OOO reply failed to {sender_addr}: {e}", 'ERROR', worker_name)
def _handle_forwards( def _handle_forwards(
self, self,
recipient: str, recipient: str,
@ -143,25 +144,20 @@ class RulesProcessor:
domain: str, domain: str,
worker_name: str, worker_name: str,
metrics_callback=None, metrics_callback=None,
rule: dict = None # NEU rule: dict = None
): ):
"""Handle email forwarding""" """Handle email forwarding"""
# NEU: SMTP Override aus Rule lesen
smtp_override = None smtp_override = None
if rule: if rule:
smtp_override = rule.get('forward_smtp_override') smtp_override = rule.get('forward_smtp_override')
for forward_to in forwards: for forward_to in forwards:
try: 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: if smtp_override:
# Migration: Original-Mail unverändert weiterleiten
raw_bytes = parsed.as_bytes()
success = self._send_via_legacy_smtp( success = self._send_via_legacy_smtp(
recipient, forward_to, fwd_bytes, recipient, forward_to, raw_bytes,
smtp_override, worker_name smtp_override, worker_name
) )
if success: if success:
@ -171,24 +167,30 @@ class RulesProcessor:
else: else:
log(f"⚠ Legacy SMTP forward failed to {forward_to}", log(f"⚠ Legacy SMTP forward failed to {forward_to}",
'WARNING', worker_name) '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: else:
success = self.ses.send_raw_email( # Normaler Forward (neue FWD-Message)
recipient, forward_to, fwd_bytes, worker_name fwd_msg = self._create_forward_message(
parsed, recipient, forward_to, original_from
) )
if success: fwd_bytes = fwd_msg.as_bytes()
log(f"✓ Forwarded externally to {forward_to} via SES",
'SUCCESS', worker_name) 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: if metrics_callback:
metrics_callback('forward', domain) metrics_callback('forward', domain)