Ansible Mail Module Failing

1,298 views
Skip to first unread message

Simon Hayes

unread,
Mar 6, 2018, 10:09:52 AM3/6/18
to Ansible Project
I'm running a simple playbook to report on server configurations which is formatted into an html file from a template.  I use the mail module to attach the html file into the body of the mail as follows:

- hosts: localhost
  tasks:
    - name: Send e-mail
      local_action: mail
        port=25
        headers="Content-type=text/html"
        subtype=html
        from="x...@xxx.com"
        to="x...@xxx.com"
        subject='Server Report'
        body="{{ lookup('file', '/tmp/report.html') }}"

When I run this on a group of 13/14 servers the play runs fine, mail is sent and received as expected.  If I add more servers to the group, the initial parts of the playbook run fine, but then it fails when attempting to send the mail.  I've not seen this with any other playbooks or roles I have on the same server, emails seem to send out just fine

TASK [Send e-mail] *******************************************************************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: socket.error: [Errno 111] Connection refused
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_TNdcry/ansible_module_mail.py\", line 386, in <module>\n    main()\n  File \"/tmp/ansible_TNdcry/ansible_module_mail.py\", line 257, in main\n    code, smtpmessage = smtp.connect(host, port=port)\n  File \"/usr/lib64/python2.6/smtplib.py\", line 300, in connect\n    self.sock = self._get_socket(host, port, self.timeout)\n  File \"/usr/lib64/python2.6/smtplib.py\", line 278, in _get_socket\n    return socket.create_connection((port, host), timeout)\n  File \"/usr/lib64/python2.6/socket.py\", line 567, in create_connection\n    raise error, msg\nsocket.error: [Errno 111] Connection refused\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 1}


/var/log/messages shows the following abrtd errors which appear to come from python and ansible_module_mail.py:

Mar  5 17:45:13 <masked_server_name> abrt: [ID - user.info]  detected unhandled Python exception in '/tmp/ansible_TNdcry/ansible_module_mail.py'
Mar  5 17:45:14 <masked_server_name> abrtd: [ID - daemon.err]  Directory 'pyhook-2018-03-05-17:45:14-17875' creation detected
Mar  5 17:45:14 <masked_server_name> abrt-server[18081]: [ID - daemon.err]  Saved Python crash dump of pid 17875 to /var/spool/abrt/pyhook-2018-03-05-17:45:14-17875


What I don't know is whether this is ansible and/or python, or perhaps my poor implementation of the mail module.  Google search has not returned any worthy suggestions or causes.  Could I be missing something server side - python config or sendmail?
Does anyone have any ideas?

Version information:

  ansible 2.4.3.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.6.6 (r266:84292, Aug  9 2016, 06:11:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]


-Simon

Brian Coca

unread,
Mar 6, 2018, 10:00:56 PM3/6/18
to Ansible Project
So the mail module is not correctly capturing the exception, but the
base issue that causes the problem is:

[Errno 111] Connection refused

Which might happen for many reasons, most likely resource starvation
(num of connections/file descriptors/firewall throttle/etc).

I would check dmesg and other logs for the same period on both
machines (the one executing the task and smtp server) to see if either
hit a limit.


--
----------
Brian Coca

rrak...@gmail.com

unread,
Mar 7, 2018, 12:45:35 AM3/7/18
to Ansible Project
@Simon, So whenyou run `ansible-playbook --syntax-check mail.yml`  does it gives some error code?
i tried that with ansible version 2.4 and it works as expected

mrdata...@gmail.com

unread,
Nov 6, 2018, 8:29:40 AM11/6/18
to Ansible Project
I add secure: never and now its work

 - name: mail send
    mail
:
      host
: 127.0.0.1
      port
: 25
     
secure: never
      subject
: "Hello"



вторник, 6 марта 2018 г., 23:09:52 UTC+8 пользователь Simon Hayes написал:
Reply all
Reply to author
Forward
0 new messages