diff --git a/TODO b/TODO
index 5315cdf17c6530a315c530fa0aa96635323c7198..8ebb8683232b96b489a5d6b761adf90102273b5b 100644
--- a/TODO
+++ b/TODO
@@ -7,7 +7,7 @@ Next (in order of descending priority/precedence):
 * Improve handling of old/corrupt binaries.
 
 * Full standards compliance review for the engine and all fully implemented 
-  sieve extensions.\
+  sieve extensions.
 * Code cleanup 
 * Make sure cmusieve can be replaced seamlessly with the new plugin.
 * Full security review. Enforce limits on number of created objects, script 
diff --git a/sieve/tests/stop.sieve b/sieve/tests/stop.sieve
index fe56f5ea1c5cd274b931aebbbf089c8cfdc00af4..8f192d90e7c2c11e75aa881d39c2c120945d9585 100644
--- a/sieve/tests/stop.sieve
+++ b/sieve/tests/stop.sieve
@@ -1,6 +1,6 @@
 require "fileinto";
 
-if address :contains "from" "frop" {
+if address :contains "from" "sieve" {
 	fileinto "junk";
 	stop;
 }
diff --git a/src/lib-sieve/ext-reject.c b/src/lib-sieve/ext-reject.c
index 69118395ad49f7d1e0eb4c1965cbb5440796c1c8..22a4380abe78ac132590b9c0016b4f51ef768580 100644
--- a/src/lib-sieve/ext-reject.c
+++ b/src/lib-sieve/ext-reject.c
@@ -228,7 +228,7 @@ static int act_reject_check_duplicate
 	const struct sieve_action *action1 ATTR_UNUSED,
 	void *context1 ATTR_UNUSED, void *context2 ATTR_UNUSED)
 {
-	sieve_runtime_error(renv, "duplicate 'reject' action not allowed.");	
+	sieve_runtime_error(renv, "duplicate 'reject' action not allowed");	
 	return -1;
 }
  
@@ -239,14 +239,14 @@ int act_reject_check_conflict
 {
 	if ( (other_action->flags & SIEVE_ACTFLAG_TRIES_DELIVER) > 0 ) {
 		sieve_runtime_error(renv, "'reject' action conflicts with other action: "
-			"'%s' action tries to deliver the message.",
+			"'%s' action tries to deliver the message",
 			other_action->name);	
 		return -1;
 	}
 
 	if ( (other_action->flags & SIEVE_ACTFLAG_SENDS_RESPONSE) > 0 ) {
 		sieve_runtime_error(renv, "'reject' action conflicts with other action: "
-			"'%s' sends a response to the sender.",
+			"'%s' sends a response to the sender",
 			other_action->name);	
 		return -1;
 	}
diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index 8a52701e156804d914cb8c2ee6032af8a7aaa0f9..81dfd73c1bb6353b4449f18b5631e3f801a3003b 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -456,7 +456,7 @@ static int act_vacation_check_duplicate
 	const struct sieve_action *action1 ATTR_UNUSED,
 	void *context1 ATTR_UNUSED, void *context2 ATTR_UNUSED)
 {
-	sieve_runtime_error(renv, "duplicate 'vacation' action not allowed.");
+	sieve_runtime_error(renv, "duplicate 'vacation' action not allowed");
 	return -1;
 }
 
@@ -467,7 +467,7 @@ int act_vacation_check_conflict
 {
 	if ( (other_action->flags & SIEVE_ACTFLAG_SENDS_RESPONSE) > 0 ) {
 		sieve_runtime_error(renv, "'vacation' action conflicts with other action: "
-			"'%s' action sends a response back to the sender.",	
+			"'%s' action also sends a response back to the sender",	
 			other_action->name);
 		return -1;
 	}
diff --git a/src/lib-sieve/sieve-parser.c b/src/lib-sieve/sieve-parser.c
index 8241ec86b7645eccb9f2d817b8d24b8f3d1fd7d2..0e2f8274a8d42c7599597174a5b2dca005abe5cb 100644
--- a/src/lib-sieve/sieve-parser.c
+++ b/src/lib-sieve/sieve-parser.c
@@ -370,7 +370,7 @@ static bool sieve_parse_commands
 			if ( sieve_parse_commands(parser, command) ) {
 			
 				if ( sieve_lexer_current_token(lexer) != STT_RCURLY ) {
-					sieve_parser_error(parser, "expected end of compound block '}' but found %s",
+					sieve_parser_error(parser, "expected end of compound block '}', but found %s",
 						sieve_lexer_token_string(lexer));
 					result = sieve_parser_recover(parser, STT_RCURLY);				
 				} else