at master 2.2 kB view raw
1import ../make-test-python.nix ( 2 { pkgs, ... }: 3 { 4 name = "maddy-unencrypted"; 5 meta = with pkgs.lib.maintainers; { 6 maintainers = [ onny ]; 7 }; 8 9 nodes = { 10 server = 11 { ... }: 12 { 13 services.maddy = { 14 enable = true; 15 hostname = "server"; 16 primaryDomain = "server"; 17 openFirewall = true; 18 ensureAccounts = [ "postmaster@server" ]; 19 ensureCredentials = { 20 # Do not use this in production. This will make passwords world-readable 21 # in the Nix store 22 "postmaster@server".passwordFile = "${pkgs.writeText "postmaster" "test"}"; 23 }; 24 }; 25 }; 26 27 client = 28 { ... }: 29 { 30 environment.systemPackages = [ 31 (pkgs.writers.writePython3Bin "send-testmail" { } '' 32 import smtplib 33 from email.mime.text import MIMEText 34 35 msg = MIMEText("Hello World") 36 msg['Subject'] = 'Test' 37 msg['From'] = "postmaster@server" 38 msg['To'] = "postmaster@server" 39 with smtplib.SMTP('server', 587) as smtp: 40 smtp.login('postmaster@server', 'test') 41 smtp.sendmail('postmaster@server', 'postmaster@server', msg.as_string()) 42 '') 43 (pkgs.writers.writePython3Bin "test-imap" { } '' 44 import imaplib 45 46 with imaplib.IMAP4('server') as imap: 47 imap.login('postmaster@server', 'test') 48 imap.select() 49 status, refs = imap.search(None, 'ALL') 50 assert status == 'OK' 51 assert len(refs) == 1 52 status, msg = imap.fetch(refs[0], 'BODY[TEXT]') 53 assert status == 'OK' 54 assert msg[0][1].strip() == b"Hello World" 55 '') 56 ]; 57 }; 58 }; 59 60 testScript = '' 61 start_all() 62 server.wait_for_unit("maddy.service") 63 server.wait_for_open_port(143) 64 server.wait_for_open_port(587) 65 client.succeed("send-testmail") 66 client.succeed("test-imap") 67 ''; 68 } 69)