import os import testinfra.utils.ansible_runner testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts(['mail-server']) def test_connectivity_from_relay(host): """ Tests connectivity towards mail forwarder servers from relay. Connection towards parameters-mandatory should fail. """ with host.sudo(): ping = host.run('hping3 -S -p 25 -c 1 parameters-mandatory-jessie64') assert ping.rc != 0 assert "100% packet loss" in ping.stderr ping = host.run('hping3 -S -p 25 -c 1 parameters-optional-jessie64') assert ping.rc == 0 ping = host.run('hping3 -S -p 25 -c 1 parameters-no-incoming-jessie64') assert "100% packet loss" in ping.stderr assert ping.rc != 0 ping = host.run('hping3 -S -p 25 -c 1 parameters-mandatory-stretch64') assert ping.rc != 0 assert "100% packet loss" in ping.stderr ping = host.run('hping3 -S -p 25 -c 1 parameters-optional-stretch64') assert ping.rc == 0 ping = host.run('hping3 -S -p 25 -c 1 parameters-no-incoming-stretch64') assert "100% packet loss" in ping.stderr assert ping.rc != 0 def test_mail_reception_from_relay(host): """ Tests if mails can be sent from relay to servers configured to use the relay. """ send = host.run('swaks --suppress-data --to root@parameters-optional-jessie64 --server parameters-optional-jessie64') assert send.rc == 0 send = host.run('swaks --suppress-data --to root@parameters-optional-stretch64 --server parameters-optional-stretch64') assert send.rc == 0 def test_open_relay(host): """ Tests if mail forwarder behaves as open relay. """ no_recipients_accepted = 24 send = host.run('swaks --suppress-data --to root@client1 --server parameters-optional-jessie64') assert send.rc == no_recipients_accepted assert "Relay access denied" in send.stdout send = host.run('swaks --suppress-data --to root@client1 --server parameters-optional-stretch64') assert send.rc == no_recipients_accepted assert "Relay access denied" in send.stdout