diff --git a/src/managesieve-login/client-authenticate.c b/src/managesieve-login/client-authenticate.c
index b186f8440abc6588114e49fa9a0285d1eb61b112..fe68ca4d1c99adec4d84496b2b8d13defc1991a1 100644
--- a/src/managesieve-login/client-authenticate.c
+++ b/src/managesieve-login/client-authenticate.c
@@ -64,9 +64,10 @@ void managesieve_client_auth_result(struct client *client,
 		*/
 		referral = t_str_new(128);
 		str_printfa(referral, "REFERRAL sieve://%s;AUTH=%s@%s",
-			    reply->destuser, client->auth_mech_name, reply->host);
-		if ( reply->port != 4190 )
-			str_printfa(referral, ":%u", reply->port);
+			    reply->proxy.username, client->auth_mech_name,
+			    reply->proxy.host);
+		if (reply->proxy.port != 4190)
+			str_printfa(referral, ":%u", reply->proxy.port);
 
 		if ( result == CLIENT_AUTH_RESULT_REFERRAL_SUCCESS ) {
 			client_send_okresp(client, str_c(referral), text);;
diff --git a/src/managesieve-login/managesieve-proxy.c b/src/managesieve-login/managesieve-proxy.c
index 4e789802131cac8ef119821f862a64bcf1e2aec6..bd95a1f90f44cc19282012d5fa943bd02c29192d 100644
--- a/src/managesieve-login/managesieve-proxy.c
+++ b/src/managesieve-login/managesieve-proxy.c
@@ -448,7 +448,7 @@ int managesieve_proxy_parse_line(struct client *client, const char *line)
 	struct managesieve_client *msieve_client =
 		(struct managesieve_client *)client;
 	struct ostream *output;
-	enum login_proxy_ssl_flags ssl_flags;
+	enum auth_proxy_ssl_flags ssl_flags;
 	managesieve_response_t response = MANAGESIEVE_RESPONSE_NONE;
 	string_t *command;
 	int ret = 0;
@@ -473,7 +473,7 @@ int managesieve_proxy_parse_line(struct client *client, const char *line)
 			command = t_str_new(128);
 
 			ssl_flags = login_proxy_get_ssl_flags(client->login_proxy);
-			if ((ssl_flags & PROXY_SSL_FLAG_STARTTLS) != 0) {
+			if ((ssl_flags & AUTH_PROXY_SSL_FLAG_STARTTLS) != 0) {
 				if (!msieve_client->proxy_starttls) {
 					login_proxy_failed(client->login_proxy,
 						login_proxy_get_event(client->login_proxy),
@@ -649,6 +649,7 @@ managesieve_proxy_send_failure_reply(struct client *client,
 	case LOGIN_PROXY_FAILURE_TYPE_INTERNAL:
 	case LOGIN_PROXY_FAILURE_TYPE_REMOTE:
 	case LOGIN_PROXY_FAILURE_TYPE_PROTOCOL:
+	case LOGIN_PROXY_FAILURE_TYPE_AUTH_REDIRECT:
 		client_send_reply_code(client, MANAGESIEVE_CMD_REPLY_NO,
 				       "TRYLATER", LOGIN_PROXY_FAILURE_MSG);
 		break;