# any connections.
#director_user_expire = 15 min
+# TCP/IP port that accepts doveadm connections (instead of director connections)
+# If you enable this, you'll also need to add inet_listener for the port.
+#director_doveadm_port = 0
+
# To enable director service, uncomment the modes and assign a port.
service director {
unix_listener login/director {
DEF(SET_STR, director_servers),
DEF(SET_STR, director_mail_servers),
DEF(SET_TIME, director_user_expire),
+ DEF(SET_UINT, director_doveadm_port),
SETTING_DEFINE_LIST_END
};
.director_servers = "",
.director_mail_servers = "",
- .director_user_expire = 60*15
+ .director_user_expire = 60*15,
+ .director_doveadm_port = 0
};
const struct setting_parser_info director_setting_parser_info = {
const char *director_servers;
const char *director_mail_servers;
unsigned int director_user_expire;
+ unsigned int director_doveadm_port;
};
extern const struct setting_parser_info director_setting_parser_info;
if (net_getpeername(conn->fd, &ip, &port) == 0 &&
(IPADDR_IS_V4(&ip) || IPADDR_IS_V6(&ip))) {
- /* TCP/IP connection - this is another director */
- if (director_client_connected(conn->fd, &ip) == 0)
+ /* TCP/IP connection */
+ if (port == director->set->director_doveadm_port) {
master_service_client_connection_accept(conn);
+ (void)doveadm_connection_init(director, conn->fd);
+ } else {
+ if (director_client_connected(conn->fd, &ip) == 0)
+ master_service_client_connection_accept(conn);
+ }
return;
}