diff --git a/mail/emailrelay/Makefile b/mail/emailrelay/Makefile index afe939adea..b9b595fe48 100644 --- a/mail/emailrelay/Makefile +++ b/mail/emailrelay/Makefile @@ -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 diff --git a/mail/emailrelay/files/emailrelay.config b/mail/emailrelay/files/emailrelay.config new file mode 100644 index 0000000000..1a4eb6758f --- /dev/null +++ b/mail/emailrelay/files/emailrelay.config @@ -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' + diff --git a/mail/emailrelay/files/emailrelay.init b/mail/emailrelay/files/emailrelay.init index 9fc33996ec..5b78f2170a 100644 --- a/mail/emailrelay/files/emailrelay.init +++ b/mail/emailrelay/files/emailrelay.init @@ -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 }