emailsec._alignment
1import typing 2 3import publicsuffixlist 4 5AlignmentMode = typing.Literal["relaxed", "strict"] 6 7 8def is_spf_aligned( 9 rfc5312_mail_from: str, 10 rfc5322_from: str, 11 mode: AlignmentMode = "relaxed", 12) -> bool: 13 match mode: 14 case "strict": 15 return rfc5312_mail_from.lower() == rfc5322_from.lower() 16 case "relaxed": 17 psl = publicsuffixlist.PublicSuffixList() 18 return psl.privatesuffix(rfc5312_mail_from) == psl.privatesuffix( 19 rfc5322_from 20 ) 21 22 23def is_dkim_aligned( 24 dkim_domain: str, 25 rfc5322_from: str, 26 mode: AlignmentMode = "relaxed", 27) -> bool: 28 match mode: 29 case "strict": 30 return dkim_domain.lower() == rfc5322_from.lower() 31 case "relaxed": 32 psl = publicsuffixlist.PublicSuffixList() 33 return psl.privatesuffix(dkim_domain) == psl.privatesuffix(rfc5322_from)
AlignmentMode =
typing.Literal['relaxed', 'strict']
def
is_spf_aligned( rfc5312_mail_from: str, rfc5322_from: str, mode: Literal['relaxed', 'strict'] = 'relaxed') -> bool:
9def is_spf_aligned( 10 rfc5312_mail_from: str, 11 rfc5322_from: str, 12 mode: AlignmentMode = "relaxed", 13) -> bool: 14 match mode: 15 case "strict": 16 return rfc5312_mail_from.lower() == rfc5322_from.lower() 17 case "relaxed": 18 psl = publicsuffixlist.PublicSuffixList() 19 return psl.privatesuffix(rfc5312_mail_from) == psl.privatesuffix( 20 rfc5322_from 21 )
def
is_dkim_aligned( dkim_domain: str, rfc5322_from: str, mode: Literal['relaxed', 'strict'] = 'relaxed') -> bool:
24def is_dkim_aligned( 25 dkim_domain: str, 26 rfc5322_from: str, 27 mode: AlignmentMode = "relaxed", 28) -> bool: 29 match mode: 30 case "strict": 31 return dkim_domain.lower() == rfc5322_from.lower() 32 case "relaxed": 33 psl = publicsuffixlist.PublicSuffixList() 34 return psl.privatesuffix(dkim_domain) == psl.privatesuffix(rfc5322_from)