Save original envelope for debugging
This commit is contained in:
parent
936fa17005
commit
0e3c46d944
|
@ -6,6 +6,9 @@ import random
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
|
from aiosmtpd.smtp import Envelope
|
||||||
|
|
||||||
from email import policy, message_from_bytes, message_from_string
|
from email import policy, message_from_bytes, message_from_string
|
||||||
from email.header import decode_header, Header
|
from email.header import decode_header, Header
|
||||||
from email.message import Message, EmailMessage
|
from email.message import Message, EmailMessage
|
||||||
|
@ -1432,7 +1435,7 @@ def save_email_for_debugging(msg: Message, file_name_prefix=None) -> str:
|
||||||
if TEMP_DIR:
|
if TEMP_DIR:
|
||||||
file_name = str(uuid.uuid4()) + ".eml"
|
file_name = str(uuid.uuid4()) + ".eml"
|
||||||
if file_name_prefix:
|
if file_name_prefix:
|
||||||
file_name = file_name_prefix + file_name
|
file_name = "{}-{}".format(file_name_prefix, file_name)
|
||||||
|
|
||||||
with open(os.path.join(TEMP_DIR, file_name), "wb") as f:
|
with open(os.path.join(TEMP_DIR, file_name), "wb") as f:
|
||||||
f.write(msg.as_bytes())
|
f.write(msg.as_bytes())
|
||||||
|
@ -1443,6 +1446,24 @@ def save_email_for_debugging(msg: Message, file_name_prefix=None) -> str:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def save_envelope_for_debugging(envelope: Envelope, file_name_prefix=None) -> str:
|
||||||
|
"""Save envelope for debugging to temporary location
|
||||||
|
Return the file path
|
||||||
|
"""
|
||||||
|
if TEMP_DIR:
|
||||||
|
file_name = str(uuid.uuid4()) + ".eml"
|
||||||
|
if file_name_prefix:
|
||||||
|
file_name = "{}-{}".format(file_name_prefix, file_name)
|
||||||
|
|
||||||
|
with open(os.path.join(TEMP_DIR, file_name), "wb") as f:
|
||||||
|
f.write(envelope.original_content)
|
||||||
|
|
||||||
|
LOG.d("envelope saved to %s", file_name)
|
||||||
|
return file_name
|
||||||
|
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def get_spamd_result(msg: Message) -> Optional[SpamdResult]:
|
def get_spamd_result(msg: Message) -> Optional[SpamdResult]:
|
||||||
spam_result_header = msg.get_all(headers.SPAMD_RESULT)
|
spam_result_header = msg.get_all(headers.SPAMD_RESULT)
|
||||||
if not spam_result_header:
|
if not spam_result_header:
|
||||||
|
|
|
@ -131,6 +131,7 @@ from app.email_utils import (
|
||||||
get_mailbox_bounce_info,
|
get_mailbox_bounce_info,
|
||||||
save_email_for_debugging,
|
save_email_for_debugging,
|
||||||
get_spamd_result,
|
get_spamd_result,
|
||||||
|
save_envelope_for_debugging,
|
||||||
)
|
)
|
||||||
from app.errors import (
|
from app.errors import (
|
||||||
NonReverseAliasInReplyPhase,
|
NonReverseAliasInReplyPhase,
|
||||||
|
@ -2584,8 +2585,8 @@ class MailHandler:
|
||||||
envelope.rcpt_tos,
|
envelope.rcpt_tos,
|
||||||
msg[headers.FROM],
|
msg[headers.FROM],
|
||||||
msg[headers.TO],
|
msg[headers.TO],
|
||||||
save_email_for_debugging(
|
save_envelope_for_debugging(
|
||||||
msg, file_name_prefix=e.__class__.__name__
|
envelope, file_name_prefix=e.__class__.__name__
|
||||||
), # todo: remove
|
), # todo: remove
|
||||||
)
|
)
|
||||||
return status.E404
|
return status.E404
|
||||||
|
|
Loading…
Reference in New Issue