Postlogin script
j.emerlik
j.emerlik at gmail.com
Thu Nov 16 16:44:10 EET 2017
I finally used it like this:
case $IP in
10.120.12[0-7].*) exec "$@" ;;
111.111.11.4[0-9]) exec "$@" ;;
esac
Thanks a lot
Regards,
Jacek
case $IP in
10.120.12[0-7].*) exec "$@" ;;
195.150.13.4[0-9]) exec "$@" ;;
esac
2017-11-10 23:03 GMT+01:00 Joseph Tam <jtam.home at gmail.com>:
> "j.emerlik" <j.emerlik at gmail.com> writes:
>
> I would like to prepare postlogin a script that allow imap connection to
>> roundcube for all but restrict imap access for selected users.
>>
>
> "from" roundcube?
>
> Is possible in condition IF use IP addresses as range or with mask (because
>> I've more than one web servers) ?
>>
>
> Of course -- many ways to skin this cat.
>
> If you have only a handful of IPs
>
> case "$IP" in
> 12.34.56.78) exec "$@";;
> 23.45.67.89) exec "$@";;
> ...
> esac
>
> If you have CIDR that align neatly on octet boundaries
>
> case "$IP" in
> 12.34.56.*) exec "$@";;
> 23.45.67.*) exec "$@";;
> ...
> esac
>
> The toughest situation (using script techniques) is for
> CIDR ranges just shy of a full octet boundary e.g. /25. You can use
> "cut -d .", "IFS=." or "expr" to break the IP into octets,
> then test the components. e.g. 12.34.56.0/25
>
> # Example 1
> PART1=`echo $IP | cut -d. -f1,2,3`
> PART2=`echo $IP | cut -d. -f4`
> [ "$PART1" = "12.34.56" -a "$PART2" -ge 0 -a "$PART2" -le 127 ] &&
> exec "$@"
>
> # Example 2
> PART2=`expr "$IP" : '.*\.\([0-9]*\)'
> expr "$IP" : "12.34.56." && [ "$PART2" -ge 0 -a "$PART2" -le 127 ]
> && exec "$@"
>
> # Example 3 (dodgy, I haven't fully thought this through)
> `echo "$IP" | { IFS=. read a b c PART2; [ "$a.$b.$c" = "12.34.56"
> -a "$PART2" -ge 0 -a "$PART2" -le 127 ] && echo "exec $@"; }`
>
> If you have a busy IMAP server, you'll probably want to use Aki's passdb
> solution instead, rather than incurring the execution overhead for each
> and every authentication.
>
> Joseph Tam <jtam.home at gmail.com>
>
More information about the dovecot
mailing list