mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Handle new DKIM record format
This commit is contained in:
parent
73523097de
commit
7979d3ae3b
1 changed files with 50 additions and 10 deletions
|
@ -415,17 +415,57 @@ def _get_DKIM(domain):
|
||||||
with open(DKIM_file) as f:
|
with open(DKIM_file) as f:
|
||||||
dkim_content = f.read()
|
dkim_content = f.read()
|
||||||
|
|
||||||
|
# Gotta manage two formats :
|
||||||
|
#
|
||||||
|
# Legacy
|
||||||
|
# -----
|
||||||
|
#
|
||||||
|
# mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
|
||||||
|
# "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCYhnvJ+JgF9tfVbUVy6L20b2IVHygZD1GjY6k+/je+3y3C9BzPAlEitL4s2vkQpPfAevw8P6uE7s1usCa/tnTzmq4r6Q/9YRf+Wx5e79XuIY5/ZKJw1YKkDWRlGzpenu8i+6kssaPqPmtmQaYuoOwTlcpXcN9qKNIodDsaWOxBwIDAQAB" )
|
||||||
|
#
|
||||||
|
# New
|
||||||
|
# ------
|
||||||
|
# mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
|
||||||
|
# "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxWIw/R6QIL7nbJr+yX4cS8TfFx1POMvnzbsDWAFG5U4aPqLwCkJNqrum1hG9rzCb43pGkNy5JNAh0tTZpxq+S1kBAu+DAOSHgbYVg2Tr6zTm9YNL1n/thjKB9U/dyaCzWnxlMFJYkXNlDICtSSf47ZWqcrurkAOfmtmGYQivoz8ipXMvou4t22W9DbZR+XpPbtc3RkCKK32E8O"
|
||||||
|
# "02OT9PHbsBCOakb+W1vkocVZpZo78eu5Q2phOntE9Vl2MXtd54+TEdWv6zPcGrHrF9aazEuGcNQwSUgJaHlEceT2u8X+sliwIr0on3Om2NMaTDkPgZzg2poQIDPkyxDQire7jGBwIDAQAB"
|
||||||
|
# )
|
||||||
|
|
||||||
|
is_legacy_format = " h=sha256; " not in dkim_content
|
||||||
|
|
||||||
|
# Legacy DKIM format
|
||||||
|
if is_legacy_format:
|
||||||
dkim = re.match((
|
dkim = re.match((
|
||||||
r'^(?P<host>[a-z_\-\.]+)[\s]+([0-9]+[\s]+)?IN[\s]+TXT[\s]+[^"]*'
|
r'^(?P<host>[a-z_\-\.]+)[\s]+([0-9]+[\s]+)?IN[\s]+TXT[\s]+'
|
||||||
'(?=.*(;[\s]*|")v=(?P<v>[^";]+))'
|
'[^"]*"v=(?P<v>[^";]+);'
|
||||||
'(?=.*(;[\s]*|")k=(?P<k>[^";]+))'
|
'[\s"]*k=(?P<k>[^";]+);'
|
||||||
'(?=.*(;[\s]*|")p=(?P<p>[^";]+))'), dkim_content, re.M | re.S
|
'[\s"]*p=(?P<p>[^";]+)'), dkim_content, re.M | re.S
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
dkim = re.match((
|
||||||
|
r'^(?P<host>[a-z_\-\.]+)[\s]+([0-9]+[\s]+)?IN[\s]+TXT[\s]+'
|
||||||
|
'[^"]*"v=(?P<v>[^";]+);'
|
||||||
|
'[\s"]*h=(?P<h>[^";]+);'
|
||||||
|
'[\s"]*k=(?P<k>[^";]+);'
|
||||||
|
'[\s"]*p=(?P<p>[^";]+)'
|
||||||
|
'[\s"]*(?P<p2>[^";]+)'), dkim_content, re.M | re.S
|
||||||
)
|
)
|
||||||
|
|
||||||
if not dkim:
|
if not dkim:
|
||||||
return (None, None)
|
return (None, None)
|
||||||
|
|
||||||
|
if is_legacy_format:
|
||||||
return (
|
return (
|
||||||
dkim.group('host'),
|
dkim.group('host'),
|
||||||
'"v={v}; k={k}; p={p}"'.format(v=dkim.group('v'), k=dkim.group('k'), p=dkim.group('p'))
|
'"v={v}; k={k}; p={p}"'.format(v=dkim.group('v'),
|
||||||
|
k=dkim.group('k'),
|
||||||
|
p=dkim.group('p'))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return (
|
||||||
|
dkim.group('host'),
|
||||||
|
'"v={v}; h={h}; k={k}; p={p}"'.format(v=dkim.group('v'),
|
||||||
|
h=dkim.group('h'),
|
||||||
|
k=dkim.group('k'),
|
||||||
|
p=dkim.group('p')
|
||||||
|
+dkim.group('p2'))
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue