1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

[PR #7765/acddb190 backport][stable-8] mail module/callback: allow to configure the Message-ID header's domain name (#7805)

mail module/callback: allow to configure the Message-ID header's domain name (#7765)

Allow to configure the Message-ID header's domain name.

(cherry picked from commit acddb190ba)

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
patchback[bot] 2024-01-01 14:30:35 +01:00 committed by GitHub
parent 42c65f32eb
commit 395fc1e77a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 2 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- "mail module, mail callback plugin - allow to configure the domain name of the Message-ID header with a new ``message_id_domain`` option (https://github.com/ansible-collections/community.general/pull/7765)."

View file

@ -71,6 +71,16 @@ options:
ini: ini:
- section: callback_mail - section: callback_mail
key: bcc key: bcc
message_id_domain:
description:
- The domain name to use for the L(Message-ID header, https://en.wikipedia.org/wiki/Message-ID).
- The default is the hostname of the control node.
type: str
ini:
- section: callback_mail
key: message_id_domain
version_added: 8.2.0
''' '''
import json import json
@ -131,7 +141,7 @@ class CallbackModule(CallbackBase):
content += 'To: %s\n' % ', '.join([email.utils.formataddr(pair) for pair in to_addresses]) content += 'To: %s\n' % ', '.join([email.utils.formataddr(pair) for pair in to_addresses])
if self.cc: if self.cc:
content += 'Cc: %s\n' % ', '.join([email.utils.formataddr(pair) for pair in cc_addresses]) content += 'Cc: %s\n' % ', '.join([email.utils.formataddr(pair) for pair in cc_addresses])
content += 'Message-ID: %s\n' % email.utils.make_msgid() content += 'Message-ID: %s\n' % email.utils.make_msgid(domain=self.get_option('message_id_domain'))
content += 'Subject: %s\n\n' % subject.strip() content += 'Subject: %s\n\n' % subject.strip()
content += body content += body

View file

@ -140,6 +140,13 @@ options:
- Allows for manual specification of host for EHLO. - Allows for manual specification of host for EHLO.
type: str type: str
version_added: 3.8.0 version_added: 3.8.0
message_id_domain:
description:
- The domain name to use for the L(Message-ID header, https://en.wikipedia.org/wiki/Message-ID).
- Note that this is only available on Python 3+. On Python 2, this value will be ignored.
type: str
default: ansible
version_added: 8.2.0
''' '''
EXAMPLES = r''' EXAMPLES = r'''
@ -254,6 +261,7 @@ def main():
subtype=dict(type='str', default='plain', choices=['html', 'plain']), subtype=dict(type='str', default='plain', choices=['html', 'plain']),
secure=dict(type='str', default='try', choices=['always', 'never', 'starttls', 'try']), secure=dict(type='str', default='try', choices=['always', 'never', 'starttls', 'try']),
timeout=dict(type='int', default=20), timeout=dict(type='int', default=20),
message_id_domain=dict(type='str', default='ansible'),
), ),
required_together=[['password', 'username']], required_together=[['password', 'username']],
) )
@ -275,6 +283,7 @@ def main():
subtype = module.params.get('subtype') subtype = module.params.get('subtype')
secure = module.params.get('secure') secure = module.params.get('secure')
timeout = module.params.get('timeout') timeout = module.params.get('timeout')
message_id_domain = module.params['message_id_domain']
code = 0 code = 0
secure_state = False secure_state = False
@ -350,10 +359,11 @@ def main():
msg['Date'] = formatdate(localtime=True) msg['Date'] = formatdate(localtime=True)
msg['Subject'] = Header(subject, charset) msg['Subject'] = Header(subject, charset)
try: try:
msg['Message-ID'] = make_msgid(domain='ansible') msg['Message-ID'] = make_msgid(domain=message_id_domain)
except TypeError: except TypeError:
# `domain` is only available in Python 3 # `domain` is only available in Python 3
msg['Message-ID'] = make_msgid() msg['Message-ID'] = make_msgid()
module.warn("The Message-ID domain cannot be set on Python 2; the system's hostname is used")
msg.preamble = "Multipart message" msg.preamble = "Multipart message"
for header in headers: for header in headers: