42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| 
								 | 
							
								import ./make-test-python.nix {
							 | 
						||
| 
								 | 
							
								  name = "postfix";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  machine = { pkgs, ... }: {
							 | 
						||
| 
								 | 
							
								    imports = [ common/user-account.nix ];
							 | 
						||
| 
								 | 
							
								    services.postfix = {
							 | 
						||
| 
								 | 
							
								      enable = true;
							 | 
						||
| 
								 | 
							
								      enableSubmissions = true;
							 | 
						||
| 
								 | 
							
								      submissionsOptions = {
							 | 
						||
| 
								 | 
							
								        smtpd_tls_security_level = "none";
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    environment.systemPackages = let
							 | 
						||
| 
								 | 
							
								      checkConfig = pkgs.writeScriptBin "check-config" ''
							 | 
						||
| 
								 | 
							
								        #!${pkgs.python3.interpreter}
							 | 
						||
| 
								 | 
							
								        import sys
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        state = 1
							 | 
						||
| 
								 | 
							
								        success = False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        with open("/etc/postfix/master.cf") as masterCf:
							 | 
						||
| 
								 | 
							
								          for line in masterCf:
							 | 
						||
| 
								 | 
							
								            if state == 1 and line.startswith("submissions"):
							 | 
						||
| 
								 | 
							
								              state = 2
							 | 
						||
| 
								 | 
							
								            elif state == 2 and line.startswith(" ") and "smtpd_tls_security_level=encrypt" in line:
							 | 
						||
| 
								 | 
							
								              success = True
							 | 
						||
| 
								 | 
							
								            elif state == 2 and not line.startswith(" "):
							 | 
						||
| 
								 | 
							
								              state == 3
							 | 
						||
| 
								 | 
							
								        if not success:
							 | 
						||
| 
								 | 
							
								          sys.exit(1)
							 | 
						||
| 
								 | 
							
								      '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    in [ checkConfig ];
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  testScript = ''
							 | 
						||
| 
								 | 
							
								    machine.wait_for_unit("postfix.service")
							 | 
						||
| 
								 | 
							
								    machine.succeed("check-config")
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								}
							 |