#!/bin/bash # Test TLS tracking features, which require faking SPF. set -e . "$(dirname "$0")/../util/lib.sh" init check_hostaliases # Build with the DNS override, so we can fake DNS records. export GOTAGS="dnsoverride" # Launch minidns in the background using our configuration. minidns_bg --addr=":9053" -zones=zones >> .minidns.log 2>&1 # Two chasquid servers: # A - listens on :1025, hosts srv-A # B - listens on :2025, hosts srv-B CONFDIR=A generate_certs_for srv-A CONFDIR=A add_user usera@srv-A userA CONFDIR=B generate_certs_for srv-B CONFDIR=B add_user userb@srv-B userB rm -rf .data-A .data-B .mail .certs mkdir -p .logs-A .logs-B .mail .certs # Put public certs in .certs, and use it as our trusted cert dir. cp A/certs/srv-A/fullchain.pem .certs/srv-a.pem cp B/certs/srv-B/fullchain.pem .certs/srv-b.pem export SSL_CERT_DIR=$PWD/.certs/ chasquid -v=2 --logfile=.logs-A/chasquid.log --config_dir=A \ --testing__dns_addr=127.0.0.1:9053 \ --testing__max_received_headers=5 \ --testing__outgoing_smtp_port=2025 & chasquid -v=2 --logfile=.logs-B/chasquid.log --config_dir=B \ --testing__dns_addr=127.0.0.1:9053 \ --testing__outgoing_smtp_port=1025 & wait_until_ready 1025 wait_until_ready 2025 wait_until_ready 9053 smtpc userB@srv-B < content wait_for_file .mail/userb@srv-b mail_diff content .mail/userb@srv-b # A should have a secure outgoing connection to srv-b. if ! grep -q 'outgoing_sec_level:\s*TLS_SECURE' ".data-A/domaininfo/s:srv-b"; then fail "A is missing the domaininfo for srv-b" fi # B should have a secure incoming connection from srv-a. if ! grep -q 'incoming_sec_level:\s*TLS_CLIENT' ".data-B/domaininfo/s:srv-a"; then fail "B is missing the domaininfo for srv-a" fi # In A, remove domaininfo data about srv-B. # Check that it was cleared successfully. CONFDIR=A chasquid-util domaininfo-remove srv-b if grep -q 'outgoing_sec_level:' ".data-A/domaininfo/s:srv-b"; then fail "Error clearing A's domaininfo about srv-b" fi # While at it, check that a domaininfo-remove for an unknown domain results in # an error. if CONFDIR=A chasquid-util domaininfo-remove srv-X > .cdu-di-r-x.log 2>&1; then fail "Expected error on chasquid-util domaininfo-remove srv-X" fi success