forward raw email
This commit is contained in:
parent
a593db160b
commit
d9b6399dc7
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue