|
new file 100644
|
|
|
import re
|
|
|
import time
|
|
|
|
|
|
|
|
|
import testinfra.utils.ansible_runner
|
|
|
|
|
|
|
|
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
|
|
'.molecule/ansible_inventory').get_hosts('parameters-no-incoming')
|
|
|
|
|
|
|
|
|
def test_postfix_main_cf_file_content(File):
|
|
|
"""
|
|
|
Tests if the Postfix main configuration file content is correct.
|
|
|
"""
|
|
|
|
|
|
config = File('/etc/postfix/main.cf')
|
|
|
config_lines = config.content.split("\n")
|
|
|
|
|
|
assert "myhostname = parameters-no-incoming" in config_lines
|
|
|
assert "mydestination = parameters-no-incoming, parameters-no-incoming, localhost.localdomain, localhost" in config_lines
|
|
|
assert "relayhost = mail-server" in config_lines
|
|
|
assert "mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128" in config_lines
|
|
|
assert "smtp_tls_security_level=verify" in config_lines
|
|
|
assert "smtp_tls_CAfile=/etc/ssl/certs/smtp_relay_truststore.pem" in config_lines
|
|
|
assert "smtp_host_lookup = dns, native" in config_lines
|
|
|
|
|
|
|
|
|
def test_relay_mail_sending(Command, File, Sudo):
|
|
|
"""
|
|
|
Tests if mails are sent correctly via relay if relay has been configured.
|
|
|
"""
|
|
|
|
|
|
send = Command('swaks --suppress-data --to root@domain1 --server localhost')
|
|
|
assert send.rc == 0
|
|
|
message_id = re.search('Ok: queued as (.*)', send.stdout).group(1)
|
|
|
|
|
|
# Wait for a little while for message to be processed.
|
|
|
time.sleep(5)
|
|
|
|
|
|
with Sudo():
|
|
|
mail_log = File('/var/log/mail.log')
|
|
|
# Pattern used to verify the mail was sent over relay on default port.
|
|
|
pattern = r"%s: to=<root@domain1>, relay=mail-server\[[^]]*\]:25.*status=sent" % message_id
|
|
|
|
|
|
assert re.search(pattern, mail_log.content) is not None
|