diff -r faf41aff1efc src/managesieve-login/managesieve-login-settings.c
--- a/src/managesieve-login/managesieve-login-settings.c	Thu Nov 19 21:47:21 2009 +0100
+++ b/src/managesieve-login/managesieve-login-settings.c	Tue Dec 15 21:41:35 2009 +0000
@@ -9,27 +9,27 @@
 #include <stddef.h>
 
 struct service_settings managesieve_login_settings_service_settings = {
-	MEMBER(name) "managesieve-login",
-	MEMBER(protocol) "managesieve",
-	MEMBER(type) "login",
-	MEMBER(executable) "managesieve-login",
-	MEMBER(user) "dovecot",
-	MEMBER(group) "",
-	MEMBER(privileged_group) "",
-	MEMBER(extra_groups) "",
-	MEMBER(chroot) "login",
+	.name = "managesieve-login",
+	.protocol = "managesieve",
+	.type = "login",
+	.executable = "managesieve-login",
+	.user = "dovecot",
+	.group = "",
+	.privileged_group = "",
+	.extra_groups = "",
+	.chroot = "login",
 
-	MEMBER(drop_priv_before_exec) FALSE,
+	.drop_priv_before_exec = FALSE,
 
-	MEMBER(process_min_avail) 0,
-	MEMBER(process_limit) 0,
-	MEMBER(client_limit) 0,
-	MEMBER(service_count) 1,
-	MEMBER(vsz_limit) 64,
+	.process_min_avail = 0,
+	.process_limit = 0,
+	.client_limit = 0,
+	.service_count = 1,
+	.vsz_limit = 64,
 
-	MEMBER(unix_listeners) ARRAY_INIT,
-	MEMBER(fifo_listeners) ARRAY_INIT,
-	MEMBER(inet_listeners) ARRAY_INIT
+	.unix_listeners = ARRAY_INIT,
+	.fifo_listeners = ARRAY_INIT,
+	.inet_listeners = ARRAY_INIT
 };
 
 #undef DEF
@@ -44,8 +44,8 @@
 };
 
 static const struct managesieve_login_settings managesieve_login_default_settings = {
-	MEMBER(managesieve_implementation_string) PACKAGE_NAME,
-	MEMBER(managesieve_sieve_capability) ""
+	.managesieve_implementation_string = PACKAGE_NAME,
+	.managesieve_sieve_capability = ""
 };
 
 static const struct setting_parser_info *managesieve_login_setting_dependencies[] = {
@@ -54,18 +54,18 @@
 };
 
 static const struct setting_parser_info managesieve_login_setting_parser_info = {
-	MEMBER(module_name) "managesieve-login",
-	MEMBER(defines) managesieve_login_setting_defines,
-	MEMBER(defaults) &managesieve_login_default_settings,
+	.module_name = "managesieve-login",
+	.defines = managesieve_login_setting_defines,
+	.defaults = &managesieve_login_default_settings,
 	
-	MEMBER(type_offset) (size_t)-1,
-	MEMBER(struct_size) sizeof(struct managesieve_login_settings),
+	.type_offset = (size_t)-1,
+	.struct_size = sizeof(struct managesieve_login_settings),
 
-	MEMBER(parent_offset) (size_t)-1,
-	MEMBER(parent) NULL,
+	.parent_offset = (size_t)-1,
+	.parent = NULL,
 
-	MEMBER(check_func) NULL,
-	MEMBER(dependencies) managesieve_login_setting_dependencies
+	.check_func = NULL,
+	.dependencies = managesieve_login_setting_dependencies
 };
 
 const struct setting_parser_info *managesieve_login_settings_set_roots[] = {
diff -r faf41aff1efc src/managesieve/main.c
--- a/src/managesieve/main.c	Thu Nov 19 21:47:21 2009 +0100
+++ b/src/managesieve/main.c	Tue Dec 15 21:41:35 2009 +0000
@@ -6,6 +6,7 @@
 #include "ioloop.h"
 #include "istream.h"
 #include "ostream.h"
+#include "abspath.h"
 #include "str.h"
 #include "base64.h"
 #include "process-title.h"
@@ -238,6 +239,7 @@
 	};
 	enum master_service_flags service_flags = 0;
 	enum mail_storage_service_flags storage_service_flags = 0;
+	const char *postlogin_socket_path;
 
 	if (IS_STANDALONE() && getuid() == 0 &&
 	    net_getpeername(1, NULL, NULL) == 0) {
@@ -259,6 +261,8 @@
 					     &argc, &argv, NULL);
 	if (master_getopt(master_service) > 0)
 		return FATAL_DEFAULT;
+	postlogin_socket_path = argv[1] == NULL ? NULL : t_abspath(argv[1]);
+
 	master_service_init_finish(master_service);
 	master_service_set_die_callback(master_service, managesieve_die);
 
@@ -279,6 +283,7 @@
 		} T_END;
 	} else {
 		master_login = master_login_init(master_service, "auth-master",
+						 postlogin_socket_path,
 						 login_client_connected);
 		io_loop_set_running(current_ioloop);
 	}
diff -r faf41aff1efc src/managesieve/managesieve-client.c
--- a/src/managesieve/managesieve-client.c	Thu Nov 19 21:47:21 2009 +0100
+++ b/src/managesieve/managesieve-client.c	Tue Dec 15 21:41:35 2009 +0000
@@ -156,7 +156,7 @@
 	ident = mail_user_get_anvil_userip_ident(client->user);
 	if (ident != NULL) {
 		master_service_anvil_send(master_service, t_strconcat(
-			"CONNECT\t", my_pid, "\t", ident, "/managesieve\n", NULL));
+			"CONNECT\t", my_pid, "\tsieve/", ident, "\n", NULL));
 		client->anvil_sent = TRUE;
 	}
 
@@ -231,9 +231,9 @@
 
 	if (client->anvil_sent) {
 		master_service_anvil_send(master_service, t_strconcat(
-			"DISCONNECT\t", my_pid, "\t",
-			mail_user_get_anvil_userip_ident(client->user), "/managesieve"
-		"\n", NULL));
+			"DISCONNECT\t", my_pid, "\tsieve/",
+			mail_user_get_anvil_userip_ident(client->user),
+			"\n", NULL));
 	}
 	mail_user_unref(&client->user);
 
diff -r faf41aff1efc src/managesieve/managesieve-settings.c
--- a/src/managesieve/managesieve-settings.c	Thu Nov 19 21:47:21 2009 +0100
+++ b/src/managesieve/managesieve-settings.c	Tue Dec 15 21:41:35 2009 +0000
@@ -27,28 +27,28 @@
 /* </settings checks> */
 
 struct service_settings managesieve_settings_service_settings = {
-	MEMBER(name) "managesieve",
-	MEMBER(protocol) "managesieve",
-	MEMBER(type) "",
-	MEMBER(executable) "managesieve",
-	MEMBER(user) "",
-	MEMBER(group) "",
-	MEMBER(privileged_group) "",
-	MEMBER(extra_groups) "",
-	MEMBER(chroot) "",
+	.name = "managesieve",
+	.protocol = "managesieve",
+	.type = "",
+	.executable = "managesieve",
+	.user = "",
+	.group = "",
+	.privileged_group = "",
+	.extra_groups = "",
+	.chroot = "",
 
-	MEMBER(drop_priv_before_exec) FALSE,
+	.drop_priv_before_exec = FALSE,
 
-	MEMBER(process_min_avail) 0,
-	MEMBER(process_limit) 0,
-	MEMBER(client_limit) 0,
-	MEMBER(service_count) 1,
-	MEMBER(vsz_limit) -1U,
+	.process_min_avail = 0,
+	.process_limit = 0,
+	.client_limit = 0,
+	.service_count = 1,
+	.vsz_limit = -1U,
 
-	MEMBER(unix_listeners) { { &managesieve_unix_listeners_buf,
+	.unix_listeners = { { &managesieve_unix_listeners_buf,
 				   sizeof(managesieve_unix_listeners[0]) } },
-	MEMBER(fifo_listeners) ARRAY_INIT,
-	MEMBER(inet_listeners) ARRAY_INIT
+	.fifo_listeners = ARRAY_INIT,
+	.inet_listeners = ARRAY_INIT
 };
 
 #undef DEF
@@ -73,17 +73,17 @@
 };
 
 static struct managesieve_settings managesieve_default_settings = {
-	MEMBER(mail_debug) FALSE,
-	MEMBER(verbose_proctitle) FALSE,
+	.mail_debug = FALSE,
+	.verbose_proctitle = FALSE,
 
 	/* RFC-2683 recommends at least 8000 bytes. Some clients however don't
 	   break large message sets to multiple commands, so we're pretty
 	   liberal by default. */
-	MEMBER(managesieve_max_line_length) 65536,
-	MEMBER(managesieve_implementation_string) PACKAGE_NAME,
-	MEMBER(managesieve_client_workarounds) "",
-	MEMBER(managesieve_logout_format) "bytes=%i/%o",
-	MEMBER(managesieve_max_compile_errors) 5
+	.managesieve_max_line_length = 65536,
+	.managesieve_implementation_string = PACKAGE_NAME,
+	.managesieve_client_workarounds = "",
+	.managesieve_logout_format = "bytes=%i/%o",
+	.managesieve_max_compile_errors = 5
 };
 
 static const struct setting_parser_info *managesieve_setting_dependencies[] = {
@@ -92,18 +92,18 @@
 };
 
 const struct setting_parser_info managesieve_setting_parser_info = {
-	MEMBER(module_name) "managesieve",
-	MEMBER(defines) managesieve_setting_defines,
-	MEMBER(defaults) &managesieve_default_settings,
+	.module_name = "managesieve",
+	.defines = managesieve_setting_defines,
+	.defaults = &managesieve_default_settings,
 
-	MEMBER(type_offset) (size_t)-1,
-	MEMBER(struct_size) sizeof(struct managesieve_settings),
+	.type_offset = (size_t)-1,
+	.struct_size = sizeof(struct managesieve_settings),
 
-	MEMBER(parent_offset) (size_t)-1,
-	MEMBER(parent) NULL,
+	.parent_offset = (size_t)-1,
+	.parent = NULL,
 
-	MEMBER(check_func) managesieve_settings_verify,
-	MEMBER(dependencies) managesieve_setting_dependencies
+	.check_func = managesieve_settings_verify,
+	.dependencies = managesieve_setting_dependencies
 };
 
 const struct setting_parser_info *managesieve_settings_set_roots[] = {
