Corrected code follows (missing do/done). Save to file, chmod +x name-of-file, don't run this script from cron.
It needs to be started at boot time, or before you make a VPN connection. #!/bin/sh while : do ifconfig xxx | egrep 'UP|DOWN' sleep 2 done | while read status do case "$status" in *UP*) if [ "$prev" -ne up ] then prev=up postconf -X defer_transports postfix reload fi;; *) if [ "$prev" -ne down ] then prev=down postconf defer_transports=smtp postfix reload fi;; esac done Wietse