nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 87 lines 2.5 kB view raw
1let 2 certs = import ./common/acme/server/snakeoil-certs.nix; 3 domain = certs.domain; 4in 5import ./make-test-python.nix { 6 name = "postfix"; 7 8 nodes.machine = 9 { pkgs, ... }: 10 { 11 imports = [ common/user-account.nix ]; 12 services.postfix = { 13 enable = true; 14 enableSubmission = true; 15 enableSubmissions = true; 16 tlsTrustedAuthorities = "${certs.ca.cert}"; 17 config.smtpd_tls_chain_files = [ 18 certs.${domain}.key 19 certs.${domain}.cert 20 ]; 21 submissionsOptions = { 22 smtpd_sasl_auth_enable = "yes"; 23 smtpd_client_restrictions = "permit"; 24 milter_macro_daemon_name = "ORIGINATING"; 25 }; 26 }; 27 28 security.pki.certificateFiles = [ 29 certs.ca.cert 30 ]; 31 32 networking.extraHosts = '' 33 127.0.0.1 ${domain} 34 ''; 35 36 environment.systemPackages = 37 let 38 sendTestMail = pkgs.writeScriptBin "send-testmail" '' 39 #!${pkgs.python3.interpreter} 40 import smtplib 41 42 with smtplib.SMTP('${domain}') as smtp: 43 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.') 44 smtp.quit() 45 ''; 46 47 sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" '' 48 #!${pkgs.python3.interpreter} 49 import smtplib 50 import ssl 51 52 ctx = ssl.create_default_context() 53 54 with smtplib.SMTP('${domain}') as smtp: 55 smtp.ehlo() 56 smtp.starttls(context=ctx) 57 smtp.ehlo() 58 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test STARTTLS\n\nTest data.') 59 smtp.quit() 60 ''; 61 62 sendTestMailSmtps = pkgs.writeScriptBin "send-testmail-smtps" '' 63 #!${pkgs.python3.interpreter} 64 import smtplib 65 import ssl 66 67 ctx = ssl.create_default_context() 68 69 with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp: 70 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.') 71 smtp.quit() 72 ''; 73 in 74 [ 75 sendTestMail 76 sendTestMailStarttls 77 sendTestMailSmtps 78 ]; 79 }; 80 81 testScript = '' 82 machine.wait_for_unit("postfix.service") 83 machine.succeed("send-testmail") 84 machine.succeed("send-testmail-starttls") 85 machine.succeed("send-testmail-smtps") 86 ''; 87}