add debug info when an email is sent from reverse-alias

This commit is contained in:
Son Nguyen Kim 2021-09-22 09:58:40 +02:00
parent 3443499ab9
commit 3b16e502b3
2 changed files with 23 additions and 0 deletions

View File

@ -51,3 +51,4 @@ E522 = (
"550 SL E522 The user you are trying to contact is receiving mail "
"at a rate that prevents additional messages from being delivered."
)
E523 = "550 SL E523 Unknown error"

View File

@ -32,6 +32,7 @@ It should contain the following info:
"""
import argparse
import email
import os
import time
import uuid
from email import encoders
@ -82,6 +83,7 @@ from app.config import (
POSTMASTER,
ALERT_HOTMAIL_COMPLAINT,
ALERT_YAHOO_COMPLAINT,
TEMP_DIR,
)
from app.email import status
from app.email.rate_limit import rate_limited
@ -1848,6 +1850,26 @@ def handle(envelope: Envelope) -> str:
)
return handle_bounce(envelope, email_log, msg)
# case where From: header is a reverse alias which should never happen
from_header = get_header_unicode(msg["From"])
if from_header:
_, from_header_address = parse_full_address(from_header)
if is_reply_email(from_header_address):
LOG.e("email sent from a reverse alias %s", from_header_address)
# get more info for debug
contact = Contact.get_by(reply_email=from_header_address)
if contact:
LOG.d("%s %s %s", contact.user, contact.alias, contact)
# To investigate. todo: remove
if TEMP_DIR:
file_name = str(uuid.uuid4()) + ".eml"
with open(os.path.join(TEMP_DIR, file_name), "wb") as f:
f.write(msg.as_bytes())
LOG.d("email saved to %s", file_name)
return status.E523
if rate_limited(mail_from, rcpt_tos):
LOG.w("Rate Limiting applied for mail_from:%s rcpt_tos:%s", mail_from, rcpt_tos)