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