diff -ur dovecot-1.1.rc6/src/imap-login/client.c dovecot-1.1.rc6-ifm/src/imap-login/client.c --- dovecot-1.1.rc6/src/imap-login/client.c Mon May 5 00:01:52 2008 +++ dovecot-1.1.rc6-ifm/src/imap-login/client.c Fri May 30 10:02:00 2008 @@ -453,7 +453,8 @@ client->created = ioloop_time; client->refcount = 1; client->common.tls = ssl; - client->common.secured = ssl || net_ip_compare(ip, local_ip); + /* trusted_net() Added 070627 Peter Eriksson */ + client->common.secured = ssl || net_ip_compare(ip, local_ip) || trusted_net(ip); client->common.local_ip = *local_ip; client->common.ip = *ip; diff -ur dovecot-1.1.rc6/src/lib/network.c dovecot-1.1.rc6-ifm/src/lib/network.c --- dovecot-1.1.rc6/src/lib/network.c Thu May 15 07:22:24 2008 +++ dovecot-1.1.rc6-ifm/src/lib/network.c Fri May 30 10:01:57 2008 @@ -752,3 +752,41 @@ } return TRUE; } + +/* Added 070627 Peter Eriksson */ + +#ifndef TRUSTED_IPV4_NETWORK +#define TRUSTED_IPV4_NETWORK "130.236." +#endif + +bool trusted_net(const struct ip_addr *ip) +{ + bool res = FALSE; + char *addr = NULL; + + + if (ip->family == AF_INET) { + addr = net_ip2addr(ip); + + if (addr && strncmp(addr, TRUSTED_IPV4_NETWORK, strlen(TRUSTED_IPV4_NETWORK)) == 0) + res = TRUE; + } + +#ifdef HAVE_IPV6 + else { + struct ip_addr tip; + + if (net_ipv6_mapped_ipv4_convert(ip, &tip) == 0) { + addr = net_ip2addr(&tip); + + if (addr && strncmp(addr, TRUSTED_IPV4_NETWORK, strlen(TRUSTED_IPV4_NETWORK)) == 0) + res = TRUE; + } + } +#endif + + if (addr) + free(addr); + + return res; +} diff -ur dovecot-1.1.rc6/src/pop3-login/client.c dovecot-1.1.rc6-ifm/src/pop3-login/client.c --- dovecot-1.1.rc6/src/pop3-login/client.c Mon May 5 00:01:54 2008 +++ dovecot-1.1.rc6-ifm/src/pop3-login/client.c Fri May 30 10:02:02 2008 @@ -318,7 +318,9 @@ client->created = ioloop_time; client->refcount = 1; client->common.tls = ssl; - client->common.secured = ssl || net_ip_compare(ip, local_ip); + + /* trusted_net() Added 070627 Peter Eriksson */ + client->common.secured = ssl || net_ip_compare(ip, local_ip) || trusted_net(ip); client->common.local_ip = *local_ip; client->common.ip = *ip;