03.18.08
dovecot: max connections per host /ip p2.
Согласно рекомендациям Timo я сделал такой простейший патч:
— src/master/mail-process.c.orig 2008-03-18 19:55:04.000000000 -0400
+++ src/master/mail-process.c 2008-03-18 19:55:35.000000000 -0400
@@ -75,7 +75,8 @@ mail_process_group_lookup(enum process_t
struct mail_process_group lookup_group;
lookup_group.process.type = type;
- lookup_group.user = t_strdup_noconst(user);
+ /*lookup_group.user = t_strdup_noconst(user);*/
+ lookup_group.user = “”;
lookup_group.remote_ip = *ip;
return hash_lookup(mail_process_groups, &lookup_group);
@@ -89,7 +90,8 @@ mail_process_group_create(enum process_t
group = i_new(struct mail_process_group, 1);
group->process.type = type;
- group->user = i_strdup(user);
+ /*group->user = i_strdup(user);*/
+ group->user = “”;
group->remote_ip = *ip;
i_array_init(&group->processes, 10);
— src/login-common/sasl-server.c.orig 2008-03-19 09:36:56.000000000 -0400
+++ src/login-common/sasl-server.c 2008-03-19 09:37:21.000000000 -0400
@@ -51,7 +51,7 @@ master_callback(struct client *client, e
case MASTER_LOGIN_STATUS_INTERNAL_ERROR:
break;
case MASTER_LOGIN_STATUS_MAX_CONNECTIONS:
- data = “Maximum number of connections from user+IP exceeded”;
+ data = “Maximum number of connections from ip exceeded”;
break;
}
call_client_callback(client, reply, data, NULL);
patch
Вcе работает, но имхо, это может быть только временным воркэраундом, так как работает не так, хотелось бы. Оное ограничивает только кол-во _логинов_ с одного ip. Может кому-то это покажется тем же самым или совсем несущественной разницей, но при этом не ограничиваются коннекты, их можно
сделать сколько угодно, переполнив пул соединений сервера. Так
что будем ждать более правильного решения. Правда в мейллист
все-таки отпишусь, чтобы как-то повлиять на предполагаемую реализацию сего. Кстати, хотелось бы иметь возможность
ограничивать как общее кол-во соединений с ip, так и кол-во соединений к конкретному аккаунту.