diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c
index 7b734aa14dd4158ba573cd6b3a894a555a396785..8e03c1ca13086f2cfb167d06c0f6a5f48ec5a40d 100644
--- a/src/lib-sieve/plugins/vacation/cmd-vacation.c
+++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c
@@ -1039,13 +1039,30 @@ static bool act_vacation_commit
 	}    
 	
 	/* Are we perhaps trying to respond to ourselves ? 
-	 * (FIXME: verify this to :addresses as well?)
 	 */
-	if ( sieve_address_compare(sender, recipient, TRUE) 
-		== 0 ) {
-		sieve_result_global_log(aenv, "discarded vacation reply to own address");	
+	if ( sieve_address_compare(sender, recipient, TRUE) == 0 ) {
+		sieve_result_global_log(aenv,
+			"discarded vacation reply to own address <%s>",
+			str_sanitize(sender, 128));	
 		return TRUE;
 	}
+
+	/* Are we perhaps trying to respond to one of our alternative :addresses?
+	 */
+	if ( ctx->addresses != NULL ) {
+		const char * const *alt_address = ctx->addresses;
+		
+		while ( *alt_address != NULL ) {
+			if ( sieve_address_compare(sender, *alt_address, TRUE) == 0 ) {
+				sieve_result_global_log(aenv,
+					"discarded vacation reply to own address <%s> "
+					"(as specified using :addresses argument)",
+					str_sanitize(sender, 128));	
+				return TRUE;
+			}
+			alt_address++;
+		}			
+	}
 	
 	/* Did whe respond to this user before? */
 	if ( sieve_action_duplicate_check_available(senv) ) {