{ vhack, pkgs, vhackPackages, ... }: let domain = "mail.server.test"; common = import ../../../common/email/functions.nix {inherit pkgs vhackPackages;}; in vhack.runTest { name = "email"; serverDomains = [ {server = domain;} ]; nodes = { server = {config, ...}: { systemd.tmpfiles.rules = [ #- path mode user group - content "f /passwords/alice 777 root root - alice-password" "f /passwords/bob 777 root root - bob-password" ]; # This DNS resolver is only there for rspamd (and apparently not even needed). But it # also removes our own name server changes, so the test node could no longer find # e.g. `acme.test` and so on. # See: https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/work_items/100 mailserver.localDnsResolver = false; vhack = { mail = { enable = true; fqdn = domain; domains = [ domain ]; accounts = { "alice@${domain}" = { passwordFile = "/passwords/alice"; }; "bob@${domain}" = { passwordFile = "/passwords/bob"; }; }; }; }; }; alice = common.mkUser "alice" domain; bob = common.mkUser "bob" domain; }; services = [ {server = "postfix.service";} ]; ports = [ {server = 993;} # imap {server = 465;} # smtp ]; testScript = {...}: # Python '' with subtest("Both start without mail"): alice.succeed("sudo -u alice ${common.scripts.expectNoNewMail}") bob.succeed("sudo -u bob ${common.scripts.expectNoNewMail}") with subtest("Alice can send an email to bob"): alice.succeed("sudo -u alice ${pkgs.writeShellScript "alice-send" '' set -xe cat << EOF | msmtp --debug --account alice bob@${domain} >&2 Hi Bob! This is an email. It contains a subject and a body. ALICE EOF ''}") bob.succeed("sudo -u bob ${common.scripts.expectNewMail}") ''; }