 3ba2095a42
			
		
	
	
		3ba2095a42
		
			
		
	
	
	
	
		
			
			This option got introduced in 7904499542814b8a4d04fce8dc7ca8c383c083e7 and it didn't check whether mailUser and mailGroup are null, which they are by default. Now we're only creating the user if createMailUser is set in conjunction with mailUser and the group if mailGroup is set as well. I've added a NixOS VM test so that we can verify whether dovecot works without any additional options set, so it serves as a regression test for issue #29466 and other issues that might come up with future changes to the Dovecot service. Signed-off-by: aszlig <aszlig@redmoonstudios.org> Fixes: #29466 Cc: @qknight, @abbradar, @ixmatus, @siddharthist
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test.nix {
 | |
|   name = "dovecot";
 | |
| 
 | |
|   machine = { pkgs, ... }: {
 | |
|     imports = [ common/user-account.nix ];
 | |
|     services.postfix.enable = true;
 | |
|     services.dovecot2.enable = true;
 | |
|     services.dovecot2.protocols = [ "imap" "pop3" ];
 | |
|     environment.systemPackages = let
 | |
|       sendTestMail = pkgs.writeScriptBin "send-testmail" ''
 | |
|         #!${pkgs.stdenv.shell}
 | |
|         exec sendmail -vt <<MAIL
 | |
|         From: root@localhost
 | |
|         To: alice@localhost
 | |
|         Subject: Very important!
 | |
| 
 | |
|         Hello world!
 | |
|         MAIL
 | |
|       '';
 | |
| 
 | |
|       testImap = pkgs.writeScriptBin "test-imap" ''
 | |
|         #!${pkgs.python3.interpreter}
 | |
|         import imaplib
 | |
| 
 | |
|         with imaplib.IMAP4('localhost') as imap:
 | |
|           imap.login('alice', 'foobar')
 | |
|           imap.select()
 | |
|           status, refs = imap.search(None, 'ALL')
 | |
|           assert status == 'OK'
 | |
|           assert len(refs) == 1
 | |
|           status, msg = imap.fetch(refs[0], 'BODY[TEXT]')
 | |
|           assert status == 'OK'
 | |
|           assert msg[0][1].strip() == b'Hello world!'
 | |
|       '';
 | |
| 
 | |
|       testPop = pkgs.writeScriptBin "test-pop" ''
 | |
|         #!${pkgs.python3.interpreter}
 | |
|         import poplib
 | |
| 
 | |
|         pop = poplib.POP3('localhost')
 | |
|         try:
 | |
|           pop.user('alice')
 | |
|           pop.pass_('foobar')
 | |
|           assert len(pop.list()[1]) == 1
 | |
|           status, fullmail, size = pop.retr(1)
 | |
|           assert status.startswith(b'+OK ')
 | |
|           body = b"".join(fullmail[fullmail.index(b""):]).strip()
 | |
|           assert body == b'Hello world!'
 | |
|         finally:
 | |
|           pop.quit()
 | |
|       '';
 | |
| 
 | |
|     in [ sendTestMail testImap testPop ];
 | |
|   };
 | |
| 
 | |
|   testScript = ''
 | |
|     $machine->waitForUnit('postfix.service');
 | |
|     $machine->waitForUnit('dovecot2.service');
 | |
|     $machine->succeed('send-testmail');
 | |
|     $machine->waitUntilFails('[ "$(postqueue -p)" != "Mail queue is empty" ]');
 | |
|     $machine->succeed('test-imap');
 | |
|     $machine->succeed('test-pop');
 | |
|   '';
 | |
| }
 |