Dmarc transactional (#1402)

* make sure transactional email use the same domain for header from and envelope from

* fix import
This commit is contained in:
Son Nguyen Kim 2022-11-04 14:22:28 +01:00 committed by GitHub
parent 5bbf6a2654
commit 25743da161
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 5 deletions

View File

@ -299,6 +299,7 @@ def send_email(
from_name = from_name or NOREPLY from_name = from_name or NOREPLY
from_addr = from_addr or NOREPLY from_addr = from_addr or NOREPLY
from_domain = get_email_domain_part(from_addr)
if html: if html:
msg = MIMEMultipart("alternative") msg = MIMEMultipart("alternative")
@ -337,7 +338,7 @@ def send_email(
# use a different envelope sender for each transactional email (aka VERP) # use a different envelope sender for each transactional email (aka VERP)
sl_sendmail( sl_sendmail(
generate_verp_email(VerpType.transactional, transaction.id), generate_verp_email(VerpType.transactional, transaction.id, from_domain),
to_email, to_email,
msg, msg,
retries=retries, retries=retries,

View File

@ -14,7 +14,12 @@ import sqlalchemy
from app import config from app import config
from app.db import Session from app.db import Session
from app.email import headers from app.email import headers
from app.email_utils import generate_verp_email, render, add_dkim_signature from app.email_utils import (
generate_verp_email,
render,
add_dkim_signature,
get_email_domain_part,
)
from app.mail_sender import sl_sendmail from app.mail_sender import sl_sendmail
from app.models import ( from app.models import (
Alias, Alias,
@ -147,7 +152,11 @@ class ExportUserDataJob:
transaction = TransactionalEmail.create(email=to_email, commit=True) transaction = TransactionalEmail.create(email=to_email, commit=True)
sl_sendmail( sl_sendmail(
generate_verp_email(VerpType.transactional, transaction.id), generate_verp_email(
VerpType.transactional,
transaction.id,
get_email_domain_part(config.NOREPLY),
),
to_email, to_email,
msg, msg,
ignore_smtp_error=False, ignore_smtp_error=False,

View File

@ -6,8 +6,8 @@ import os
import time import time
import uuid import uuid
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from email.message import Message
from functools import wraps from functools import wraps
from mailbox import Message
from smtplib import SMTP, SMTPException from smtplib import SMTP, SMTPException
from typing import Optional, Dict, List, Callable from typing import Optional, Dict, List, Callable

View File

@ -1315,7 +1315,7 @@ Email sent on behalf of alias {alias.email} using mailbox {mailbox.email}""",
# this notif is considered transactional email # this notif is considered transactional email
transaction = TransactionalEmail.create(email=other_mb.email, commit=True) transaction = TransactionalEmail.create(email=other_mb.email, commit=True)
sl_sendmail( sl_sendmail(
generate_verp_email(VerpType.transactional, transaction.id), generate_verp_email(VerpType.transactional, transaction.id, alias_domain),
other_mb.email, other_mb.email,
notif, notif,
) )