69 lines
1.3 KiB
Bash
69 lines
1.3 KiB
Bash
#!/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/<port>
|
|
#
|
|
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
|