mail/emailrelay: tune up initscript and config

Previously, configuration of emailrelay was done by fiddling around
with the commandline inside the initscript. Introduce a config file
in /etc/config for basic configuration and at the same time switch
to a procd-style initscript.

Signed-off-by: Paul Wassi <p.wassi@gmx.at>
This commit is contained in:
Paul Wassi
2017-11-16 11:38:11 +01:00
parent e83d0c0d8d
commit 084a9ee0c1
3 changed files with 90 additions and 10 deletions
+58 -7
View File
@@ -1,15 +1,66 @@
#!/bin/sh /etc/rc.common
#see http://emailrelay.sourceforge.net/reference.html for command line reference
START=90
USE_PROCD=1
PROG=/usr/bin/emailrelay
NAME=emailrelay
start() {
logger -t 'emailrelay' "Starting emailrelay service."
service_start /usr/bin/emailrelay --as-server --poll 60 --forward-to smtpserver:smtpport --spool-dir /tmp --client-tls --client-auth /etc/emailrelay.auth --server-auth /etc/emailrelay.auth --log
emailrelay_instance()
{
local enabled mode port remote_clients server_tls server_auth extra_cmdline smarthost client_tls client_auth
config_get_bool enabled "$1" enabled
config_get mode "$1" mode
config_get port "$1" port
config_get_bool remote_clients "$1" remote_clients
config_get server_tls "$1" server_tls
config_get server_auth "$1" server_auth
config_get extra_cmdline "$1" extra_cmdline
config_get smarthost "$1" smarthost
config_get_bool client_tls "$1" client_tls
config_get client_auth "$1" client_auth
[ "$enabled" = 0 ] && return 1
procd_open_instance
procd_set_param command "$PROG" --no-daemon
case "$mode" in
"server"|\
"proxy")
procd_append_param command "--as-${mode}"
[ -n "$smarthost" ] && procd_append_param command "$smarthost"
[ -n "$port" ] && procd_append_param command --port "$port"
[ "$remote_clients" = 1 ] && procd_append_param command --remote-clients
[ -n "$server_tls" ] && procd_append_param command --server-tls "$server_tls"
[ -n "$server_auth" ] && procd_append_param command --server-auth "$server_auth"
[ "$client_tls" = 1 ] && procd_append_param command --client-tls
[ -n "$client_auth" ] && procd_append_param command --client-auth "$client_auth"
;;
"cmdline")
# empty by intention (just append extra_cmdline)
;;
*)
echo "no mode specified"
return 1
;;
esac
[ -n "$extra_cmdline" ] && procd_append_param command $extra_cmdline
procd_set_param respawn
procd_close_instance
}
stop() {
logger -t 'emailrelay' "Stopping emailrelay service."
service_stop /usr/bin/emailrelay
start_service()
{
[ ! -d /var/spool/emailrelay ] && mkdir -p /var/spool/emailrelay
config_load "${NAME}"
config_foreach emailrelay_instance emailrelay
}