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:
parent
e83d0c0d8d
commit
084a9ee0c1
3 changed files with 90 additions and 10 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
|||
|
||||
PKG_NAME:=emailrelay
|
||||
PKG_VERSION:=1.9
|
||||
PKG_RELEASE:=4
|
||||
PKG_RELEASE:=5
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tar.gz
|
||||
PKG_SOURCE_URL:=@SF/emailrelay/$(PKG_VERSION)
|
||||
|
@ -68,6 +68,7 @@ endef
|
|||
|
||||
|
||||
define Package/emailrelay/conffiles
|
||||
/etc/config/emailrelay
|
||||
/etc/emailrelay.auth
|
||||
endef
|
||||
|
||||
|
@ -106,10 +107,10 @@ define Package/emailrelay/install
|
|||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-passwd $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-poke $(1)/usr/bin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-submit $(1)/usr/bin/
|
||||
$(INSTALL_DIR) $(1)/tmp/spool
|
||||
$(INSTALL_DIR) $(1)/tmp/spool/emailrelay
|
||||
$(INSTALL_DIR) $(1)/etc
|
||||
$(INSTALL_DATA) files/$(PKG_NAME).auth $(1)/etc/
|
||||
$(INSTALL_DIR) $(1)/etc/config
|
||||
$(INSTALL_CONF) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME)
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
|
||||
endef
|
||||
|
|
28
mail/emailrelay/files/emailrelay.config
Normal file
28
mail/emailrelay/files/emailrelay.config
Normal file
|
@ -0,0 +1,28 @@
|
|||
config emailrelay 'server'
|
||||
option enabled '0'
|
||||
option mode 'server'
|
||||
option port '25'
|
||||
option remote_clients '0'
|
||||
# option server_tls '/etc/path/to/certificate'
|
||||
# option server_auth '/etc/emailrelay.auth'
|
||||
# option extra_cmdline ''
|
||||
|
||||
config emailrelay 'proxy'
|
||||
option enabled '0'
|
||||
option mode 'proxy'
|
||||
option smarthost '192.0.2.1:25'
|
||||
option port '25'
|
||||
option remote_clients '0'
|
||||
# option server_tls '/etc/path/to/certificate'
|
||||
# option server_auth '/etc/emailrelay.auth'
|
||||
# option client_tls '1'
|
||||
# option client_auth '/etc/emailrelay.auth'
|
||||
# option extra_cmdline ''
|
||||
|
||||
config emailrelay 'cmdline'
|
||||
option enabled '0'
|
||||
option mode 'cmdline'
|
||||
# specify all arguments that should be passed to emailrelay here
|
||||
# see http://emailrelay.sourceforge.net/reference.html for command line reference
|
||||
option extra_cmdline '--some-other --cmdline-options'
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue