Dovecot 2.2.27 proxy - enforcing per client IP connection limits
Sami Ketola
sami.ketola at dovecot.fi
Thu Mar 16 13:58:14 UTC 2017
Hi,
It would be quite hard to enforce a limit at the proxy level since the proxies do not share any information. Currently I do not know any way of enforcing a limit at the proxies already.
Sami
> On 16 Mar 2017, at 7.14, Adi Pircalabu <adi at ddns.com.au> wrote:
>
> Thanks,
>
> I thought this might be the case. Is there any solution to enforce this on the proxy? If not, will a feature request be considered anytime soon? I see the proxies as the first line of defense against IMAP "abuse" and I think it's consistent having the same configurable option available on both backends and the proxies.
>
> ---
> Adi Pircalabu
>
> On 14-03-2017 20:17, Sami Ketola wrote:
>> Hi,
>> mail_max_userip_connections is only enforced at the backend level. The
>> setting has no effect on proxy. If you want to force the limit then
>> you can only do it in the backend.
>> Sami
>>> On 9 Mar 2017, at 12.05, Adi Pircalabu <adi at ddns.com.au> wrote:
>>> Quick follow-up: updated the proxies to 2.2.28, but I still couldn't find a way to limit the inbound IMAP connections per IP & username. I know "mail_max_userip_connections" limit works for the mail stores, but it doesn't seem to have any effect on the proxies. I'm using a mix of Dovecot & Courier-IMAP servers as backends.
>>> Basically I need to find a way to enforce the maximum limit for the username<>remoteip so that, if I have:
>>> ESTCONNS=`doveadm -f flow proxy list | grep "username=usern at domain.com.proto=imap" | wc -l`
>>> $ESTCONNS is lower or equal than the configured limit.
>>> The proxies are configured as per https://wiki2.dovecot.org/PasswordDatabase/ExtraFields/Proxy to forward the password to the remote server using MySQL. In dovecot-sql.conf.ext I have:
>>> password_query = SELECT NULL AS password, 'Y' as nopassword, host, email as email, 'any-cert' as 'starttls', 'Y' AS proxy FROM mailbox WHERE email = '%u' AND disabled_smtpauth=0
>>> At the moment the only way I can limit the number of established connections per source IP address on the Dovecot proxies is using iptables, which isn't what I want.
>>> Where else can I look?
>>> Adi Pircalabu, System Administrator
>>> DDNS, a Total Internet Company
>>> 159 Barkly Avenue, Burnley, Vic 3121, T +61 3 9815 6868
>>> On 08/03/17 12:32, Adi Pircalabu wrote:
>>>> Hi,
>>>> Trying to keep abusive/buggy IMAP clients at bay on a number of Dovecot proxy servers, I've reconfigured them to use "mail_max_userip_connections = 50" in the "protocol imap" section, followed by restarting Dovecot. Yet, I'm still seeing 160+ established connections from a single IP address for the same email account. Am I missing anything?
>>>> # 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
>>>> # Pigeonhole version 0.4.16 (fed8554)
>>>> # OS: Linux 2.6.32-642.4.2.el6.x86_64 x86_64 CentOS release 6.8 (Final)
>>>> auth_cache_negative_ttl = 5 mins
>>>> auth_cache_size = 16 M
>>>> auth_cache_ttl = 18 hours
>>>> default_client_limit = 6120
>>>> default_process_limit = 500
>>>> managesieve_notify_capability = mailto
>>>> managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapflags notify
>>>> mbox_write_locks = fcntl
>>>> namespace inbox {
>>>> inbox = yes
>>>> location =
>>>> mailbox Drafts {
>>>> special_use = \Drafts
>>>> }
>>>> mailbox Junk {
>>>> special_use = \Junk
>>>> }
>>>> mailbox Sent {
>>>> special_use = \Sent
>>>> }
>>>> mailbox "Sent Messages" {
>>>> special_use = \Sent
>>>> }
>>>> mailbox Trash {
>>>> special_use = \Trash
>>>> }
>>>> prefix =
>>>> }
>>>> passdb {
>>>> args = /etc/dovecot/dovecot-sql.conf.ext
>>>> driver = sql
>>>> }
>>>> plugin {
>>>> sieve = file:~/sieve;active=~/.dovecot.sieve
>>>> sieve_extensions = +notify +imapflags
>>>> }
>>>> protocols = imap pop3 lmtp sieve
>>>> service auth {
>>>> client_limit = 6120
>>>> }
>>>> service imap-login {
>>>> process_limit = 2048
>>>> process_min_avail = 20
>>>> service_count = 0
>>>> vsz_limit = 256 M
>>>> }
>>>> service imap {
>>>> process_limit = 2048
>>>> }
>>>> service managesieve-login {
>>>> inet_listener sieve {
>>>> port = 4190
>>>> }
>>>> service_count = 0
>>>> vsz_limit = 128 M
>>>> }
>>>> service managesieve {
>>>> process_limit = 1024
>>>> }
>>>> service pop3 {
>>>> process_limit = 1024
>>>> }
>>>> [...]
>>>> protocol imap {
>>>> imap_capability = IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE
>>>> mail_max_userip_connections = 50
>>>> }
More information about the dovecot
mailing list