# Exim test configuration 2102 .include DIR/aux-var/tls_conf_prefix timezone = UTC primary_hostname = myhost.test.ex # ----- Main settings ----- acl_smtp_rcpt = check_recipient log_selector = +tls_peerdn queue_only queue_run_in_order tls_advertise_hosts = 127.0.0.1 : HOSTIPV4 .ifdef ORDER tls_require_ciphers = ORDER .endif CA = DIR/aux-fixed/exim-ca DRSA = CA/example.com DECDSA = CA/example_ec.com tls_certificate = DRSA/server1.example.com/server1.example.com.pem \ : DECDSA/server1.example_ec.com/server1.example_ec.com.pem tls_privatekey = DRSA/server1.example.com/server1.example.com.unlocked.key \ : DECDSA/server1.example_ec.com/server1.example_ec.com.unlocked.key tls_verify_hosts = HOSTIPV4 tls_verify_certificates = DRSA/server2.example.com/ca_chain.pem # ------ ACL ------ begin acl check_recipient: accept hosts = : deny hosts = HOSTIPV4 !encrypted = * logwrite = cipher: $tls_in_cipher # This appears to lie. Despite what's on the wire, it returns the last cert loaded. warn logwrite = ${if def:tls_in_ourcert \ {Our cert SN: <${certextract{subject}{$tls_in_ourcert}}>} \ {We did not present a cert}} accept condition = ${if !def:tls_in_peercert} logwrite = Peer did not present a cert accept logwrite = Peer cert: logwrite = ver ${certextract {version}{$tls_in_peercert}} logwrite = SR <${certextract {serial_number}{$tls_in_peercert}}> logwrite = SN <${certextract {subject} {$tls_in_peercert}}> logwrite = IN <${certextract {issuer} {$tls_in_peercert}}> logwrite = IN/O <${certextract {issuer,O} {$tls_in_peercert}}> logwrite = NB/r <${certextract {notbefore,raw} {$tls_in_peercert}}> logwrite = NB <${certextract {notbefore} {$tls_in_peercert}}> logwrite = NB/i <${certextract {notbefore,int}{$tls_in_peercert}}> logwrite = NA/i <${certextract {notafter,int} {$tls_in_peercert}}> logwrite = NA <${certextract {notafter} {$tls_in_peercert}}> logwrite = SA <${certextract {sig_algorithm}{$tls_in_peercert}}> logwrite = SG <${certextract {signature} {$tls_in_peercert}}> logwrite = ${certextract {subj_altname} {$tls_in_peercert} {SAN <$value>}{(no SAN)}} logwrite = ${certextract {ocsp_uri} {$tls_in_peercert} {OCU <$value>}{(no OCU)}} logwrite = ${certextract {crl_uri} {$tls_in_peercert} {CRU <$value>}{(no CRU)}} logwrite = md5 fingerprint ${md5:$tls_in_peercert} logwrite = sha1 fingerprint ${sha1:$tls_in_peercert} logwrite = sha256 fingerprint ${sha256:$tls_in_peercert} logwrite = der_b64 ${base64:$tls_in_peercert} # ----- Routers ----- begin routers abc: driver = accept retry_use_local_part transport = local_delivery headers_add = tls-certificate-verified: $tls_certificate_verified # ----- Transports ----- begin transports local_delivery: driver = appendfile file = DIR/test-mail/$local_part headers_add = TLS: cipher=$tls_cipher peerdn=$tls_peerdn user = CALLER # End