diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c
index 5198e81363d66b587e5416060da468a2e6640c28..9dd728bbb7663078e07b1ce9c04c6143a9be35a1 100644
--- a/src/lib-sieve-tool/sieve-tool.c
+++ b/src/lib-sieve-tool/sieve-tool.c
@@ -137,7 +137,8 @@ int sieve_tool_getopt(struct sieve_tool *tool)
 			tool->sieve_extensions = i_strdup(optarg);
 			break;
 		case 'u':
-			tool->username = i_strdup(optarg);
+			if ( tool->username == NULL )
+				tool->username = i_strdup(optarg);
 			break;
 		case 'P': 
 			/* Plugin */
@@ -383,6 +384,9 @@ void sieve_tool_set_setting_callback
 const char *sieve_tool_get_username
 (struct sieve_tool *tool)
 {
+	if ( tool->username == NULL )
+		return getenv("USER");
+
 	return tool->username;
 }