#!/bin/bash # # /etc/mail/system/sm-client.pre # # Author: Werner Fink # Please send feedback to http://www.suse.de/feedback/ # # Description: # # Helper script to set up the environment for sendmail # Mail Transport Client if started by systemd # typeset -i timeout=1000 typeset port=smtp for cfg in /etc/sendmail.cf /etc/mail/sendmail.cf ; do test -s $cfg && break done for sed in /bin/sed /usr/bin/sed ; do test -x $sed && break done for usleep in /bin/usleep /usr/bin/usleep ; do test -x $usleep && break done # # Make sure that configuration is uptodate # test -x /usr/bin/make && /usr/bin/make -C /etc/mail > /dev/null 2>&1 # # Check for DaemonPortOptions # PortOpts=$($sed -rn '/^O[[:blank:]]+DaemonPortOptions=.*Name=MTA.*$/I { s/[[:blank:]]+//g s/^O[^=]+=(.*)/\1/p }' $cfg) unset sed cfg # # Seek for port beside 25 aka smtp # for opt in ${PortOpts//,/ } ; do case "${opt%=*}" in [Pp]ort) port=${opt#*=} break ;; esac done unset opt # # Now wait that sendmail MTA is becoming ready # Ping the bash special virtual file /dev/tcp/localhost/ # while exec 3>&2 2>&- < /dev/tcp/localhost/$port && break exec 2>&3 3>&- ((timeout-- <= 0)) && break $usleep 10000 do : done test -e /dev/fd/3 && exec 2>&3 3>&- unset port usleep timeout # # end of /etc/mail/system/sm-client.pre