From: Daniel F. Dickinson Date: Thu, 8 Aug 2019 21:50:33 +0000 (-0400) Subject: msmtp-scripts: Backport to fix runtime failure X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=refs%2Fpull%2F10001%2Fhead;p=feed%2Fpackages.git msmtp-scripts: Backport to fix runtime failure This commit syncs msmtp-scripts with master as current openwrt-19.07 is broken. Cherry-picks and squashes the following commits from master. 6d8cff9a msmtp-scripts: Fix LICENSE information d163eaea msmtp-scripts: Overhaul and update like upstream 3c15d410 msmtp-scripts: Make conn_test default nc b9cc3cf2 msmtp-scripts: Fix spool/lock dir permissions f76408af msmtp-scripts: Add msmtprc permission docs Signed-off-by: Daniel F. Dickinson --- diff --git a/mail/msmtp-scripts/Makefile b/mail/msmtp-scripts/Makefile index 480e11c807..f965ebb833 100644 --- a/mail/msmtp-scripts/Makefile +++ b/mail/msmtp-scripts/Makefile @@ -1,7 +1,6 @@ # # Copyright (C) 2009 David Cooper -# Copyright (C) 2009-2015 OpenWrt.org -# Copyright (C) 2016 Daniel Dickinson +# Copyright (C) 2016-2019 Daniel Dickinson # # This is free software, licensed under the GNU General Public License v2. # See /LICENSE for more information. @@ -10,14 +9,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=msmtp-scripts -PKG_VERSION:=1.0.8 -PKG_RELEASE:=1 +PKG_VERSION:=1.2.4 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_SOURCE_URL:=@SF/msmtp-scripts -PKG_HASH:=2aec48d47b02facf2a33cf97a7434e969c1a054224406e6c55320d825c7902b2 +PKG_SOURCE_URL:=https://launchpad.net/$(PKG_NAME)/1.2/$(PKG_VERSION)/+download +PKG_HASH:=fc85ab8ed1348be584adfc1feb89f51daed7404e9e8643652ff31d2af00f1cf5 +PKG_MAINTAINER:=Daniel F. Dickinson -PKG_LICENSE:=GPL-3.0+ +PKG_LICENSE:=GPL-3.0-or-later PKG_LICENSE_FILES:=COPYING include $(INCLUDE_DIR)/package.mk @@ -25,24 +25,20 @@ include $(INCLUDE_DIR)/package.mk define Package/msmtp-scripts/Default SECTION:=mail CATEGORY:=Mail - TITLE:=DEPRECATED: Simple sendmail SMTP queueing and forwarding - URL:=http://msmtp-scripts.sourceforge.net/ + TITLE:=Forwarding only SMTP with queuing + URL:=https://msmtp-scripts.thecshore.com endef define Package/msmtp-scripts/Default/description - DEPRECATED: SourceForge project is abandonded; and upstream (on GitHub) - has deprecated this project. See: - https://github.com/cshore-history/msmtp-scripts#deprecation-notice - msmtp-scripts are scripts wrappers around the msmtp SMTP client that - add queueing, logging to syslog or file, a subset of sendmail/postfix + add queueing, logging to syslog or file, and a subset of sendmail/postfix mailq/postsuper/postqueue commands implemented in a compatible fashion. endef define Package/msmtpq-ng $(call Package/msmtp-scripts/Default) DEPENDS+= +msmtp - TITLE+= (msmtpq-ng wrappers) + TITLE+= (common) endef define Package/msmtpq-ng/conffiles @@ -60,16 +56,15 @@ define Package/msmtpq-ng-mta $(call Package/msmtp-scripts/Default) TITLE+= (as MTA) DEPENDS+=+msmtpq-ng - USERID:=msmtp=482:msmtp=482 ALTERNATIVES:=\ - 400:/usr/sbin/sendmail:/usr/bin/msmtpq-ng-mta \ - 400:/usr/lib/sendmail:/usr/bin/msmtpq-ng-mta \ - 400:/usr/sbin/mailq:/usr/bin/msmtpq-ng-queue-mta \ - 400:/usr/sbin/postqueue:/usr/bin/msmtpq-ng-queue-mta \ - 400:/usr/sbin/postsuper:/usr/sin/msmtpq-ng-queue-mta + 400:/usr/sbin/sendmail:/usr/sbin/msmtpq-ng-mta \ + 400:/usr/lib/sendmail:/usr/sbin/msmtpq-ng-mta \ + 400:/usr/sbin/mailq:/usr/sbin/msmtpq-ng-queue-mta \ + 400:/usr/sbin/postqueue:/usr/sbin/msmtpq-ng-queue-mta \ + 400:/usr/sbin/postsuper:/usr/sbin/msmtpq-ng-queue-mta endef -define Package/msmtp-queue-mta/conffiles +define Package/msmtpq-ng-mta/conffiles /etc/msmtpq-ng-mta.rc endef @@ -79,12 +74,47 @@ define Package/msmtpq-ng-mta/description and postsuper symlinks to wrappers that configure msmtpq-ng for use as the system mail transport agent via the sendmail command. + +**NB**: In order for msmtpq-ng-mta aka sendmail to +send mail for non-root users (not just queue it +after failing), the user must have permissions to +access /etc/msmtprc -- package msmtp sets msmtprc +to rw only by root by default as a security measure +(it _can_ contain information like passwords with +which to send mail through your email server). + +There are a couple of choices. One is to leave +the default permissions (in which cases the mail +will queue and fail to send until the mailq -q +runner which runs in a root crontab sends the mail). +Another is to give any non-root daemon users (or +any other users) group access (i.e. create a +group for all the users who should be able to +send mail, add the users to it, and give the +group read-only permissions on the msmtrpc). +A final option (which is only resonable if you +have no secrets in msmtprc because you are +sending unauthenticated mail to a server that +accepts mail directly for the intended user -- +usually that means a self-hosted system mail +server, rather than trying to send mail to +public servers (which don't typically accept +mail from normal user IP addresses, even if +you ISP doesn't block the traffic) is to +make msmtprc world readable. + +The first option is probably the best choice +for most users, as it just means a 15 +minute delay in the mail getting off the +system, and doesn't involve special permissions +for non-root daemons or users. endef define Package/msmtpq-ng-mta-smtpd $(call Package/msmtp-scripts/Default) DEPENDS+= +msmtpq-ng-mta +xinetd - TITLE+= (basic SMTP server) + TITLE+= (localhost SMTPd) + USERID:=msmtp=482:msmtp=482 endef define Package/msmtp-ng-mta-smtpd/description @@ -98,13 +128,13 @@ define Package/msmtp-ng-mta-smtpd/description the hold queue before it can be delivered. endef -define Package/msmtpq-ng-mta/postinst - mkdir -p $${IPKG_INSTROOT}/etc/crontabs - if ! grep -q msmtpq-ng-mta $${IPKG_INSTROOT}/etc/crontabs/root; then echo $$'\n'"*/60 * * * * /usr/bin/msmtpq-ng-mta -q" >>$${IPKG_INSTROOT}/etc/crontabs/root; fi +define Package/msmtpq-ng-mta-smtpd/conffiles +/etc/xinetd.d/ms-mta-smtpd endef -define Package/msmtp-queue-mta/prerm - if grep -q msmtpq-ng-mta $${IPKG_INSTROOT}/etc/crontabs/root; then grep -v '\*/60 \* \* \* \* /usr/bin/msmtpq-ng-mta -q' $${IPKG_INSTROOT}/etc/crontabs/root >$${IPKG_INSTROOT}/etc/crontabs/root.new; mv -f $${IPKG_INSTROOT}/etc/crontabs/root.new $${IPKG_INSTROOT}/etc/crontabs; fi +define Package/msmtpq-ng-mta/postinst + mkdir -p $${IPKG_INSTROOT}/etc/crontabs + if ! grep -q msmtpq-ng-mta $${IPKG_INSTROOT}/etc/crontabs/root 2>/dev/null; then echo $$'\n'"*/60 * * * * /usr/bin/msmtpq-ng-mta -q" >>$${IPKG_INSTROOT}/etc/crontabs/root; fi endef define Build/Configure @@ -117,26 +147,25 @@ endef define Package/msmtpq-ng/install $(INSTALL_DIR) $(1)/etc - $(INSTALL_CONF) ./files/msmtpq-ng.rc $(1)/etc/msmtpq-ng.rc + $(INSTALL_DATA) ./files/msmtpq-ng.rc $(1)/etc/msmtpq-ng.rc $(INSTALL_DIR) $(1)/usr/bin - $(CP) $(PKG_BUILD_DIR)/msmtpq-ng/msmtpq-ng $(1)/usr/bin/ - $(SED) 's/logger -i/logger/' $(1)/usr/bin/msmtpq-ng - $(CP) $(PKG_BUILD_DIR)/msmtpq-ng/msmtpq-ng-queue $(1)/usr/bin/ + $(CP) $(PKG_BUILD_DIR)/src/usr/bin/msmtpq-ng $(1)/usr/bin/ + $(SED) "s,nc -vz,printf \"HEAD / HTTP/1.1\\\\r\\\\nHost: \$$$${EMAIL_CONN_TEST_SITE}\\\\r\\\\n\\\\r\\\\n\"|nc," $(1)/usr/bin/msmtpq-ng + $(CP) $(PKG_BUILD_DIR)/src/usr/bin/msmtpq-ng-queue $(1)/usr/bin/ endef define Package/msmtpq-ng-mta/install $(INSTALL_DIR) $(1)/usr/bin $(1)/usr/sbin $(1)/usr/lib $(1)/etc/init.d - $(INSTALL_CONF) $(PKG_BUILD_DIR)/msmtpq-ng-mta/msmtpq-ng-mta.rc $(1)/etc/ - echo 'MSMTP_LOCK_DIR=/var/lock/msmtp' >>$(1)/etc/msmtpq-ng-mta.rc - $(INSTALL_BIN) $(PKG_BUILD_DIR)/msmtpq-ng-mta/msmtpq-ng-mta $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/msmtpq-ng-mta/msmtpq-ng-queue-mta $(1)/usr/bin/ + $(INSTALL_DATA) ./files/msmtpq-ng-mta.rc $(1)/etc/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/usr/sbin/msmtpq-ng-mta $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/usr/sbin//msmtpq-ng-queue-mta $(1)/usr/sbin/ $(INSTALL_DIR) $(1)/etc/crontabs $(INSTALL_BIN) ./files/msmtpq-ng-mta.init $(1)/etc/init.d/msmtpq-ng-mta endef define Package/msmtpq-ng-mta-smtpd/install $(INSTALL_DIR) $(1)/etc/xinetd.d - $(INSTALL_BIN) $(PKG_BUILD_DIR)/msmtpq-ng-mta/sendmail-bs.xinetd $(1)/etc/xinetd.d/msmtpq-ng-mta-smtpd + $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/etc/xinetd.d/ms-mta-smtpd $(1)/etc/xinetd.d/ms-mta-smtpd endef diff --git a/mail/msmtp-scripts/files/msmtpq-ng-mta.init b/mail/msmtp-scripts/files/msmtpq-ng-mta.init index 944164c205..1636d58bfa 100644 --- a/mail/msmtp-scripts/files/msmtpq-ng-mta.init +++ b/mail/msmtp-scripts/files/msmtpq-ng-mta.init @@ -4,14 +4,16 @@ START=90 boot() { - [ ! -d /var/spool/msmtp ] && { - mkdir -m 0770 -p /var/spool/msmtp - chown msmtp:msmtp /var/spool/msmtp - } + if [ ! -d /var/spool/msmtp ]; then + mkdir -m1777 -p /var/spool/msmtp + else + chmod 1777 /var/spool/msmtp + fi - [ ! -d /var/lock/msmtp ] && { - mkdir -m 0770 -p /var/lock/msmtp - chown msmtp:msmtp /var/lock/msmtp - } + if [ ! -d /var/lock/msmtp ]; then + mkdir -m1777 -p /var/lock/msmtp + else + chmod 1777 /var/spool/msmtp + fi } diff --git a/mail/msmtp-scripts/files/msmtpq-ng-mta.rc b/mail/msmtp-scripts/files/msmtpq-ng-mta.rc new file mode 100644 index 0000000000..bb1536adb9 --- /dev/null +++ b/mail/msmtp-scripts/files/msmtpq-ng-mta.rc @@ -0,0 +1,22 @@ +#!/bin/sh + +#Q=/var/spool/msmtp/"$(id -un)" +#LOG=syslog +#MAXLOGLEVEL=7 +#MSMTP_LOCK_DIR=/var/lock/msmtp/"$(id -un)" +#MSMTP_UMASK=077 +#MSMTP_LOG_UMASK=007 +#MSMTP_QUEUE_QUIET=true +#MSMTP_IGNORE_NO_RECIPIENTS=true +#MSMTP_QUEUE_ONLY=false +#MSMTP_SEND_DELAY=0 +#MSMTP_MAXIMUM_QUEUE_LIFETIME=345600 # Four days +#MSMTPQ_NG=msmtpq-ng +#MSMTPQ_NG_QUEUE=msmtpq-ng-queue +#MSMTP_CONF=/etc/msmtprc +EMAIL_CONN_TEST=n +#EMAIL_CONN_TEST_PING=openwrt.org +#EMAIL_CONN_TEST_IP=8.8.8.8 +EMAIL_CONN_TEST_SITE=openwrt.org +#MSMTP_HOLD_SMTP_MAIL=true +#MSMTP_HOLD_CLI_MAIL=false diff --git a/mail/msmtp-scripts/files/msmtpq-ng.rc b/mail/msmtp-scripts/files/msmtpq-ng.rc index 1790021262..ef8c0f051a 100644 --- a/mail/msmtp-scripts/files/msmtpq-ng.rc +++ b/mail/msmtp-scripts/files/msmtpq-ng.rc @@ -1,14 +1,17 @@ +#!/bin/sh + #Q=~/msmtp.queue #LOG=~/log/.msmtp.queue.log #MAXLOGLEVEL=7 -#MSMTP_LOCKDIR=/var/lock -EMAIL_CONN_TEST=p -EMAIL_CONN_TEST_SITE=www.lede-project.org +#MSMTP_LOCK_DIR=~/.msmtp.lock +EMAIL_CONN_TEST=n +#EMAIL_CONN_TEST_PING=openwrt.org #EMAIL_CONN_TEST_IP=8.8.8.8 +EMAIL_CONN_TEST_SITE=openwrt.org #MSMTP_UMASK=077 #MSMTP_LOG_UMASK=077 #MSMTP_QUEUE_QUIET=false -#MSMTP_IGNORE_NO_RECIPIENTS=false +#MSMTP_IGNORE_NO_RECIPIENTS=true #MSMTP_QUEUE_ONLY=false #MSMTP_SEND_DELAY=0 #MSMTP_MAXIMUM_QUEUE_LIFETIME=345600 # Four days @@ -16,3 +19,5 @@ EMAIL_CONN_TEST_SITE=www.lede-project.org #MSMTPQ_NG_QUEUE=msmtpq-ng-queue #MSMTP_HOLD_SMTP_MAIL=true #MSMTP_HOLD_CLI_MAIL=false +#MSMTP_CONF=/etc/msmtprc +#LOCK_CMD=flock