at 23.11-pre 2.2 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 = { pkgs, ... }: { 9 imports = [ common/user-account.nix ]; 10 services.postfix = { 11 enable = true; 12 enableSubmission = true; 13 enableSubmissions = true; 14 tlsTrustedAuthorities = "${certs.ca.cert}"; 15 sslCert = "${certs.${domain}.cert}"; 16 sslKey = "${certs.${domain}.key}"; 17 submissionsOptions = { 18 smtpd_sasl_auth_enable = "yes"; 19 smtpd_client_restrictions = "permit"; 20 milter_macro_daemon_name = "ORIGINATING"; 21 }; 22 }; 23 24 security.pki.certificateFiles = [ 25 certs.ca.cert 26 ]; 27 28 networking.extraHosts = '' 29 127.0.0.1 ${domain} 30 ''; 31 32 environment.systemPackages = let 33 sendTestMail = pkgs.writeScriptBin "send-testmail" '' 34 #!${pkgs.python3.interpreter} 35 import smtplib 36 37 with smtplib.SMTP('${domain}') as smtp: 38 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test\n\nTest data.') 39 smtp.quit() 40 ''; 41 42 sendTestMailStarttls = pkgs.writeScriptBin "send-testmail-starttls" '' 43 #!${pkgs.python3.interpreter} 44 import smtplib 45 import ssl 46 47 ctx = ssl.create_default_context() 48 49 with smtplib.SMTP('${domain}') as smtp: 50 smtp.ehlo() 51 smtp.starttls(context=ctx) 52 smtp.ehlo() 53 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test STARTTLS\n\nTest data.') 54 smtp.quit() 55 ''; 56 57 sendTestMailSmtps = pkgs.writeScriptBin "send-testmail-smtps" '' 58 #!${pkgs.python3.interpreter} 59 import smtplib 60 import ssl 61 62 ctx = ssl.create_default_context() 63 64 with smtplib.SMTP_SSL(host='${domain}', context=ctx) as smtp: 65 smtp.sendmail('root@localhost', 'alice@localhost', 'Subject: Test SMTPS\n\nTest data.') 66 smtp.quit() 67 ''; 68 in [ sendTestMail sendTestMailStarttls sendTestMailSmtps ]; 69 }; 70 71 testScript = '' 72 machine.wait_for_unit("postfix.service") 73 machine.succeed("send-testmail") 74 machine.succeed("send-testmail-starttls") 75 machine.succeed("send-testmail-smtps") 76 ''; 77}