Merge pull request #4369 from val-kulkov/libmilter-package
libmilter-sendmail: the sendmail mail filter API library
This commit is contained in:
commit
5d0971b9cc
11 changed files with 513 additions and 0 deletions
133
mail/sendmail/Makefile
Normal file
133
mail/sendmail/Makefile
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2017 Val Kulkov <val.kulkov@gmail.com>
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v3.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=sendmail
|
||||||
|
PKG_VERSION:=8.15.2
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=http://artfiles.org/sendmail.org/pub/sendmail/ \
|
||||||
|
ftp://ftp.cs.berkeley.edu/ucb/sendmail/ \
|
||||||
|
http://www.netgull.com/sendmail/
|
||||||
|
PKG_HASH:=24f94b5fd76705f15897a78932a5f2439a32b1a2fdc35769bb1a5f5d9b4db439
|
||||||
|
PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
|
||||||
|
|
||||||
|
PKG_LICENSE:=Sendmail
|
||||||
|
PKG_LICENSE_FILES:=LICENSE
|
||||||
|
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
TARGET_OS:=OpenWrt
|
||||||
|
SITECONFIG:=site.$(TARGET_OS).m4
|
||||||
|
|
||||||
|
#
|
||||||
|
# Uncomment the following sections that are currently commented out
|
||||||
|
# to enable building and packaging Sendmail executables and default
|
||||||
|
# configuration files into the "sendmail" package.
|
||||||
|
#
|
||||||
|
# Note that in this edition of the "sendmail" package:
|
||||||
|
# 1. No init script is provided to start the Sendmail daemon.
|
||||||
|
# 2. The initial configuration files in /etc/mail are likely inadequate
|
||||||
|
# for running the Sendmail daemon on your LEDE/OpenWrt device.
|
||||||
|
# 3. You may have to "opkg install m4" to build Sendmail configuration files
|
||||||
|
# from customized mc files on your LEDE/OpenWrt device using m4, or
|
||||||
|
# alternatively you may use a Linux computer to build configuration
|
||||||
|
# files from customized mc files.
|
||||||
|
# 4. Compiling and building the "sendmail" package will likely fail at
|
||||||
|
# the packaging stage if you have already selected and built the "ssmtp"
|
||||||
|
# package. "ssmtp" installs /usr/sbin/sendmail in the form of a symlink
|
||||||
|
# to /usr/sbin/ssmtp. Where /usr/sbin/sendmail is already present,
|
||||||
|
# copying the sendmail executable into /usr/sbin/sendmail results in
|
||||||
|
# an error:
|
||||||
|
# cp: not writing through dangling symlink
|
||||||
|
# ...
|
||||||
|
# lede/source/include/toplevel.mk:206: recipe for target 'package/feeds/packages/libmilter/compile' failed
|
||||||
|
#
|
||||||
|
# ANYONE WHO IS READING THIS MAKEFILE AND WHO HAS THE KNOWLEDGE AND DESIRE
|
||||||
|
# TO COMPLETE PORTING OF SENDMAIL TO LEDE/OPENWRT PLATFORM IS ENCOURAGED
|
||||||
|
# TO DO SO AND TAKE OVER THE MAINTAINERSHIP OF THIS PACKAGE FROM VAL KULKOV.
|
||||||
|
#
|
||||||
|
#define Package/sendmail
|
||||||
|
# SECTION:=mail
|
||||||
|
# CATEGORY:=Mail
|
||||||
|
# DEPENDS:=+libopenssl
|
||||||
|
# TITLE:=A general purpose internetwork mail routing facility
|
||||||
|
# URL:=http://sendmail.org/
|
||||||
|
#endef
|
||||||
|
#
|
||||||
|
#define Package/sendmail/description
|
||||||
|
# Sendmail is a general purpose internetwork email routing facility that
|
||||||
|
# supports many kinds of mail-transfer and delivery methods, including
|
||||||
|
# the Simple Mail Transfer Protocol (SMTP) used for email transport over
|
||||||
|
# the Internet.
|
||||||
|
#endef
|
||||||
|
#
|
||||||
|
#define Package/sendmail/conffiles
|
||||||
|
#/etc/mail/helpfile
|
||||||
|
#/etc/mail/sendmail.cf
|
||||||
|
#/etc/mail/submit.cf
|
||||||
|
#/etc/mail/statistics
|
||||||
|
#endef
|
||||||
|
|
||||||
|
define Package/libmilter-sendmail
|
||||||
|
SECTION:=libs
|
||||||
|
CATEGORY:=Libraries
|
||||||
|
DEPENDS:=+libpthread
|
||||||
|
TITLE:=The sendmail Mail Filter API (Milter) library
|
||||||
|
URL:=http://sendmail.org/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmilter-sendmail/description
|
||||||
|
The sendmail Mail Filter API (Milter) is designed to allow third-party
|
||||||
|
programs access to mail messages as they are being processed in order to
|
||||||
|
filter meta-information and content.
|
||||||
|
endef
|
||||||
|
|
||||||
|
TARGET_CFLAGS += $(FPIC)
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
$(Build/Prepare/Default)
|
||||||
|
$(CP) files/lm_getver.c $(PKG_BUILD_DIR)/libmilter/
|
||||||
|
$(CP) files/$(SITECONFIG) $(PKG_BUILD_DIR)/devtools/Site/
|
||||||
|
$(CP) files/$(TARGET_OS) $(PKG_BUILD_DIR)/devtools/OS/
|
||||||
|
$(CP) files/sharedlibrary.m4 $(PKG_BUILD_DIR)/devtools/M4/UNIX/
|
||||||
|
$(CP) $(PKG_BUILD_DIR)/cf/cf/generic-linux.mc $(PKG_BUILD_DIR)/cf/cf/sendmail.mc
|
||||||
|
$(SED) 's@TARGET_CC@$(TARGET_CC)@g' $(PKG_BUILD_DIR)/devtools/Site/$(SITECONFIG)
|
||||||
|
$(SED) 's@TARGET_CFLAGS@$(TARGET_CFLAGS)@g' $(PKG_BUILD_DIR)/devtools/Site/$(SITECONFIG)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(call Build/Compile/Default,)
|
||||||
|
$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/libmilter $(MAKE_FLAGS) all
|
||||||
|
$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/libmilter $(MAKE_FLAGS) DESTDIR="$(PKG_INSTALL_DIR)" install
|
||||||
|
$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/cf/cf $(MAKE_FLAGS) DESTDIR="$(PKG_INSTALL_DIR)" install-cf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/libmilter $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/include/libmilter/* $(1)/usr/include/libmilter/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmilter.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmilter-sendmail/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmilter.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
#define Package/sendmail/install
|
||||||
|
# $(INSTALL_DIR) $(1)/etc/mail $(1)/usr/bin $(1)/usr/sbin
|
||||||
|
# $(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/mail/* $(1)/etc/mail/
|
||||||
|
# $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
||||||
|
# $(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
|
||||||
|
#endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,libmilter-sendmail))
|
||||||
|
#$(eval $(call BuildPackage,sendmail))
|
||||||
|
|
60
mail/sendmail/files/OpenWrt
Normal file
60
mail/sendmail/files/OpenWrt
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
dnl DO NOT EDIT THIS FILE.
|
||||||
|
dnl Place personal settings in devtools/Site/site.config.m4
|
||||||
|
|
||||||
|
define(`confDEPEND_TYPE', `CC-M')
|
||||||
|
define(`confCCOPTS_SO', `-fPIC')
|
||||||
|
define(`confSM_OS_HEADER', `sm_os_linux')
|
||||||
|
define(`confLIBS', `-ldl')
|
||||||
|
define(`confEBINDIR', `/usr/sbin')
|
||||||
|
define(`confMKDIR', `mkdir')
|
||||||
|
APPENDDEF(`confLIBSEARCH', `crypt nsl')
|
||||||
|
|
||||||
|
define(`confMTCCOPTS', `-D_REENTRANT')
|
||||||
|
define(`confMTLDOPTS', `-lpthread')
|
||||||
|
define(`confLDOPTS_SO', `-shared')
|
||||||
|
define(`confSONAME',`-soname')
|
||||||
|
|
||||||
|
define(`currentuser', esyscmd(`id -nu'))
|
||||||
|
define(`currentgroup', esyscmd(`id -ng'))
|
||||||
|
|
||||||
|
define(`confDONT_INSTALL_CATMAN',)
|
||||||
|
define(`confNO_MAN_BUILD',)
|
||||||
|
define(`confINCOWN', currentuser)
|
||||||
|
define(`confINCGRP', currentgroup)
|
||||||
|
define(`confINCMODE', `644')
|
||||||
|
define(`confLIBOWN', currentuser)
|
||||||
|
define(`confLIBGRP', currentgroup)
|
||||||
|
define(`confLIBMODE', `644')
|
||||||
|
define(`confMBINOWN', currentuser)
|
||||||
|
define(`confMBINGRP', currentgroup)
|
||||||
|
define(`confMBINMODE', `750')
|
||||||
|
define(`confSBINOWN', currentuser)
|
||||||
|
define(`confSBINGRP', currentgroup)
|
||||||
|
define(`confSBINMODE', `755')
|
||||||
|
define(`confUBINOWN', currentuser)
|
||||||
|
define(`confUBINGRP', currentgroup)
|
||||||
|
define(`confUBINMODE', `755')
|
||||||
|
define(`confGBINOWN', currentuser)
|
||||||
|
define(`confGBINGRP', currentgroup)
|
||||||
|
define(`confGBINMODE', `755')
|
||||||
|
define(`confMSPQOWN', currentuser)
|
||||||
|
|
||||||
|
ifelse(confBLDVARIANT, `DEBUG',
|
||||||
|
dnl Debug build
|
||||||
|
`
|
||||||
|
define(`confOPTIMIZE',`-g -Wall')
|
||||||
|
',
|
||||||
|
dnl Optimized build
|
||||||
|
confBLDVARIANT, `OPTIMIZED',
|
||||||
|
`
|
||||||
|
define(`confOPTIMIZE',`-O2')
|
||||||
|
',
|
||||||
|
dnl Purify build
|
||||||
|
confBLDVARIANT, `PURIFY',
|
||||||
|
`
|
||||||
|
define(`confOPTIMIZE',`-g')
|
||||||
|
',
|
||||||
|
dnl default
|
||||||
|
`
|
||||||
|
define(`confOPTIMIZE',`-O2')
|
||||||
|
')
|
9
mail/sendmail/files/lm_getver.c
Normal file
9
mail/sendmail/files/lm_getver.c
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "libmilter/mfapi.h"
|
||||||
|
int main() {
|
||||||
|
printf("%d.%d.%d",
|
||||||
|
SM_LM_VRS_MAJOR(SMFI_VERSION),
|
||||||
|
SM_LM_VRS_MINOR(SMFI_VERSION),
|
||||||
|
SM_LM_VRS_PLVL(SMFI_VERSION)
|
||||||
|
);
|
||||||
|
}
|
25
mail/sendmail/files/sharedlibrary.m4
Normal file
25
mail/sendmail/files/sharedlibrary.m4
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
divert(0)dnl
|
||||||
|
include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/links.m4')dnl
|
||||||
|
bldLIST_PUSH_ITEM(`bldC_PRODUCTS', bldCURRENT_PRODUCT)dnl
|
||||||
|
bldPUSH_TARGET(bldCURRENT_PRODUCT.so.confSOVER)dnl
|
||||||
|
bldPUSH_INSTALL_TARGET(`install-'bldCURRENT_PRODUCT)dnl
|
||||||
|
bldPUSH_CLEAN_TARGET(bldCURRENT_PRODUCT`-clean')dnl
|
||||||
|
|
||||||
|
include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/defines.m4')
|
||||||
|
divert(bldTARGETS_SECTION)
|
||||||
|
|
||||||
|
bldCURRENT_PRODUCT.so.confSOVER: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
|
||||||
|
${LD} ${LDOPTS_SO} -o bldCURRENT_PRODUCT.so.confSOVER confSONAME bldCURRENT_PRODUCT.so.confSOVER ${bldCURRENT_PRODUCT`OBJS'}
|
||||||
|
ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
|
||||||
|
|
||||||
|
install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT.so.confSOVER
|
||||||
|
|
||||||
|
ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${LIBDIR} ]; then confMKDIR -p ${DESTDIR}${LIBDIR}; else :; fi ')
|
||||||
|
${LN} ${LNOPTS} bldCURRENT_PRODUCT.so.confSOVER ${DESTDIR}${LIBDIR}/bldCURRENT_PRODUCT.so
|
||||||
|
${INSTALL} -c -m 644 bldCURRENT_PRODUCT.so.confSOVER ${DESTDIR}${LIBDIR}')
|
||||||
|
|
||||||
|
bldCURRENT_PRODUCT-clean:
|
||||||
|
rm -f ${OBJS} bldCURRENT_PRODUCT.so* ${MANPAGES}
|
||||||
|
|
||||||
|
divert(0)
|
||||||
|
COPTS+= confCCOPTS_SO
|
5
mail/sendmail/files/site.OpenWrt.m4
Normal file
5
mail/sendmail/files/site.OpenWrt.m4
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
define(`confCC', `TARGET_CC')
|
||||||
|
define(`confCCOPTS', `TARGET_CFLAGS')
|
||||||
|
APPENDDEF(`confENVDEF',`-DSTARTTLS')
|
||||||
|
APPENDDEF(`confLIBS', `-lssl -lcrypto')
|
||||||
|
|
17
mail/sendmail/patches/010-enable-nonroot-install.patch
Normal file
17
mail/sendmail/patches/010-enable-nonroot-install.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Index: sendmail-8.15.2/cf/cf/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/cf/cf/Makefile
|
||||||
|
+++ sendmail-8.15.2/cf/cf/Makefile
|
||||||
|
@@ -80,10 +80,10 @@ install:
|
||||||
|
install-cf: install-sendmail-cf install-submit-cf
|
||||||
|
|
||||||
|
install-sendmail-cf: $(CF).cf
|
||||||
|
- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf
|
||||||
|
+ $(INSTALL) -c -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf
|
||||||
|
|
||||||
|
install-submit-cf: $(SUBMIT).cf
|
||||||
|
- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf
|
||||||
|
+ $(INSTALL) -c -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf
|
||||||
|
|
||||||
|
depend:
|
||||||
|
|
16
mail/sendmail/patches/011-libmilter-so-version.patch
Normal file
16
mail/sendmail/patches/011-libmilter-so-version.patch
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
Index: sendmail-8.15.2/libmilter/Makefile.m4
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/libmilter/Makefile.m4
|
||||||
|
+++ sendmail-8.15.2/libmilter/Makefile.m4
|
||||||
|
@@ -9,7 +9,10 @@ define(`confMT', `true')
|
||||||
|
SMSRCDIR=ifdef(`confSMSRCDIR', `confSMSRCDIR', `${SRCDIR}/sendmail')
|
||||||
|
PREPENDDEF(`confINCDIRS', `-I${SMSRCDIR} ')
|
||||||
|
|
||||||
|
-bldPRODUCT_START(`library', `libmilter')
|
||||||
|
+# obtain libmilter version
|
||||||
|
+define(`confSOVER', `esyscmd(`gcc -I../include -o lm_getver lm_getver.c && ./lm_getver')')
|
||||||
|
+
|
||||||
|
+bldPRODUCT_START(`sharedlibrary', `libmilter')
|
||||||
|
define(`bldINSTALLABLE', `true')
|
||||||
|
define(`LIBMILTER_EXTRAS', `errstring.c strl.c')
|
||||||
|
APPENDDEF(`confENVDEF', `-DNOT_SENDMAIL -Dsm_snprintf=snprintf')
|
49
mail/sendmail/patches/100-misc-os-musl-fixes.patch
Normal file
49
mail/sendmail/patches/100-misc-os-musl-fixes.patch
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
--- a/include/sm/conf.h
|
||||||
|
+++ b/include/sm/conf.h
|
||||||
|
@@ -57,7 +57,7 @@
|
||||||
|
# endif /* ! HASNICE */
|
||||||
|
|
||||||
|
# ifndef HASRRESVPORT
|
||||||
|
-# define HASRRESVPORT 1 /* has rrsevport(3) call */
|
||||||
|
+# define HASRRESVPORT 0 /* has rrsevport(3) call */
|
||||||
|
# endif /* ! HASRRESVPORT */
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
@@ -1470,7 +1470,9 @@ extern void *malloc();
|
||||||
|
# define SM_CONF_GETOPT 0 /* need a replacement for getopt(3) */
|
||||||
|
# define HASUNAME 1 /* use System V uname(2) system call */
|
||||||
|
# define HASUNSETENV 1 /* has unsetenv(3) call */
|
||||||
|
-# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
|
||||||
|
+# ifdef __GLIBC__
|
||||||
|
+# define ERRLIST_PREDEFINED /* don't declare sys_errlist */
|
||||||
|
+# endif /* __GLIBC__ */
|
||||||
|
# define GIDSET_T gid_t /* from <linux/types.h> */
|
||||||
|
# ifndef HASGETUSERSHELL
|
||||||
|
# define HASGETUSERSHELL 0 /* getusershell(3) broken in Slackware 2.0 */
|
||||||
|
@@ -1508,6 +1510,7 @@ extern void *malloc();
|
||||||
|
# if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
||||||
|
# define HASSTRERROR 1 /* has strerror(3) */
|
||||||
|
# endif /* defined(__GLIBC__) && defined(__GLIBC_MINOR__) */
|
||||||
|
+# define HASSTRERROR 1 /* Patch for LEDE/OpenWRT: has strerror(3) */
|
||||||
|
# ifndef TZ_TYPE
|
||||||
|
# define TZ_TYPE TZ_NONE /* no standard for Linux */
|
||||||
|
# endif /* ! TZ_TYPE */
|
||||||
|
--- a/devtools/bin/Build
|
||||||
|
+++ b/devtools/bin/Build
|
||||||
|
@@ -320,6 +320,16 @@ then
|
||||||
|
rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
+#
|
||||||
|
+# LEDE/OpenWrt build system
|
||||||
|
+#
|
||||||
|
+if [ -n "$STAGING_DIR" -a -n "$OPENWRT_BUILD" ]
|
||||||
|
+then
|
||||||
|
+ os="OpenWrt"
|
||||||
|
+ rel="any"
|
||||||
|
+ arch="any"
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
|
||||||
|
then
|
||||||
|
arch=`uname -m | sed -e 's/ //g' -e 's/\//-/g'`
|
109
mail/sendmail/patches/101-fix-format-security.patch
Normal file
109
mail/sendmail/patches/101-fix-format-security.patch
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
Index: sendmail-8.15.2/sendmail/envelope.c
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/sendmail/envelope.c
|
||||||
|
+++ sendmail-8.15.2/sendmail/envelope.c
|
||||||
|
@@ -323,7 +323,7 @@ dropenvelope(e, fulldrop, split)
|
||||||
|
|
||||||
|
/* don't free, allocated from e_rpool */
|
||||||
|
e->e_message = sm_rpool_strdup_x(e->e_rpool, buf);
|
||||||
|
- message(buf);
|
||||||
|
+ message("%s", buf);
|
||||||
|
e->e_flags |= EF_CLRQUEUE;
|
||||||
|
}
|
||||||
|
if (msg_timeout == MSG_NOT_BY)
|
||||||
|
@@ -420,7 +420,7 @@ dropenvelope(e, fulldrop, split)
|
||||||
|
/* don't free, allocated from e_rpool */
|
||||||
|
e->e_message = sm_rpool_strdup_x(e->e_rpool,
|
||||||
|
buf);
|
||||||
|
- message(buf);
|
||||||
|
+ message("%s", buf);
|
||||||
|
e->e_flags |= EF_WARNING;
|
||||||
|
}
|
||||||
|
if (msg_timeout == MSG_WARN_BY)
|
||||||
|
Index: sendmail-8.15.2/sendmail/parseaddr.c
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/sendmail/parseaddr.c
|
||||||
|
+++ sendmail-8.15.2/sendmail/parseaddr.c
|
||||||
|
@@ -218,7 +218,7 @@ parseaddr(addr, a, flags, delim, delimpt
|
||||||
|
msg = "Deferring message until queue run";
|
||||||
|
if (tTd(20, 1))
|
||||||
|
sm_dprintf("parseaddr: queueing message\n");
|
||||||
|
- message(msg);
|
||||||
|
+ message("%s", msg);
|
||||||
|
if (e->e_message == NULL && e->e_sendmode != SM_DEFER)
|
||||||
|
e->e_message = sm_rpool_strdup_x(e->e_rpool, msg);
|
||||||
|
a->q_state = QS_QUEUEUP;
|
||||||
|
Index: sendmail-8.15.2/sendmail/srvrsmtp.c
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/sendmail/srvrsmtp.c
|
||||||
|
+++ sendmail-8.15.2/sendmail/srvrsmtp.c
|
||||||
|
@@ -578,13 +578,13 @@ static bool smtp_data __P((SMTP_T *, ENV
|
||||||
|
bool tsave = QuickAbort; \
|
||||||
|
\
|
||||||
|
QuickAbort = false; \
|
||||||
|
- usrerr(response); \
|
||||||
|
+ usrerr("%s", response); \
|
||||||
|
QuickAbort = tsave; \
|
||||||
|
e->e_sendqueue = NULL; \
|
||||||
|
goto doquit; \
|
||||||
|
} \
|
||||||
|
else \
|
||||||
|
- usrerr(response); \
|
||||||
|
+ usrerr("%s", response); \
|
||||||
|
break; \
|
||||||
|
\
|
||||||
|
case SMFIR_REJECT: \
|
||||||
|
@@ -615,7 +615,7 @@ static bool smtp_data __P((SMTP_T *, ENV
|
||||||
|
str, addr, MSG_TEMPFAIL); \
|
||||||
|
LogUsrErrs = false; \
|
||||||
|
} \
|
||||||
|
- usrerr(MSG_TEMPFAIL); \
|
||||||
|
+ usrerr("%s", MSG_TEMPFAIL); \
|
||||||
|
break; \
|
||||||
|
default: \
|
||||||
|
milter_cmd_fail = false; \
|
||||||
|
@@ -931,7 +931,7 @@ smtp(nullserver, d_flags, e)
|
||||||
|
}
|
||||||
|
else if (strncmp(nullserver, "421 ", 4) == 0)
|
||||||
|
{
|
||||||
|
- message(nullserver);
|
||||||
|
+ message("%s", nullserver);
|
||||||
|
goto doquit;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1849,7 +1849,7 @@ smtp(nullserver, d_flags, e)
|
||||||
|
if (nullserver != NULL)
|
||||||
|
{
|
||||||
|
if (ISSMTPREPLY(nullserver))
|
||||||
|
- usrerr(nullserver);
|
||||||
|
+ usrerr("%s", nullserver);
|
||||||
|
else
|
||||||
|
usrerr("550 5.0.0 %s",
|
||||||
|
nullserver);
|
||||||
|
@@ -2452,7 +2452,7 @@ smtp(nullserver, d_flags, e)
|
||||||
|
tempfail = true;
|
||||||
|
smtp.sm_milterize = false;
|
||||||
|
if (response != NULL)
|
||||||
|
- usrerr(response);
|
||||||
|
+ usrerr("%s", response);
|
||||||
|
else
|
||||||
|
message("421 4.7.0 %s closing connection",
|
||||||
|
MyHostName);
|
||||||
|
@@ -3659,7 +3659,7 @@ smtp_data(smtp, e)
|
||||||
|
(void) extenhsc(response + 4, ' ', e->e_enhsc);
|
||||||
|
#endif /* _FFR_MILTER_ENHSC */
|
||||||
|
|
||||||
|
- usrerr(response);
|
||||||
|
+ usrerr("%s", response);
|
||||||
|
if (strncmp(response, "421 ", 4) == 0
|
||||||
|
|| strncmp(response, "421-", 4) == 0)
|
||||||
|
{
|
||||||
|
@@ -3779,7 +3779,7 @@ smtp_data(smtp, e)
|
||||||
|
if (ISSMTPCODE(response))
|
||||||
|
(void) extenhsc(response + 4, ' ', e->e_enhsc);
|
||||||
|
#endif /* _FFR_MILTER_ENHSC */
|
||||||
|
- usrerr(response);
|
||||||
|
+ usrerr("%s", response);
|
||||||
|
if (strncmp(response, "421 ", 4) == 0
|
||||||
|
|| strncmp(response, "421-", 4) == 0)
|
||||||
|
rv = false;
|
48
mail/sendmail/patches/102-pthreads-stack-size.patch
Normal file
48
mail/sendmail/patches/102-pthreads-stack-size.patch
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
This patch increases the stack size for pthreads from 80 KB, the default
|
||||||
|
stack size for musl libc, to 2 MB. The default stack size for glibc is 8 MB.
|
||||||
|
|
||||||
|
OpenDKIM, an application that depends on libmilter, segfaults if the stack
|
||||||
|
size for pthreads is left unchanged at the musl default value of 80 KB.
|
||||||
|
Apparently, OpenDKIM allocates blocks of 64 KB multiple times, which causes
|
||||||
|
libmilter and therefore OpenDKIM to crash:
|
||||||
|
https://git.alpinelinux.org/cgit/aports/commit/?id=95724d1bd53ae87f72e6388cb7323dbd8f84be9d
|
||||||
|
|
||||||
|
This patch follows the patch suggested by an Alpine Linux user in bug report
|
||||||
|
above. Also, a bug report has been filed upstream:
|
||||||
|
https://sourceforge.net/p/opendkim/bugs/258/
|
||||||
|
|
||||||
|
|
||||||
|
Index: sendmail-8.15.2/libmilter/libmilter.h
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/libmilter/libmilter.h
|
||||||
|
+++ sendmail-8.15.2/libmilter/libmilter.h
|
||||||
|
@@ -127,10 +127,10 @@ struct smfi_str
|
||||||
|
# define MI_SOCK_READ(s, b, l) read(s, b, l)
|
||||||
|
# define MI_SOCK_READ_FAIL(x) ((x) < 0)
|
||||||
|
# define MI_SOCK_WRITE(s, b, l) write(s, b, l)
|
||||||
|
-
|
||||||
|
-# define thread_create(ptid,wr,arg) pthread_create(ptid, NULL, wr, arg)
|
||||||
|
# define sthread_get_id() pthread_self()
|
||||||
|
|
||||||
|
+extern int thread_create(pthread_t *ptid, void *(*wr) (void *), void *arg);
|
||||||
|
+
|
||||||
|
typedef pthread_mutex_t smutex_t;
|
||||||
|
# define smutex_init(mp) (pthread_mutex_init(mp, NULL) == 0)
|
||||||
|
# define smutex_destroy(mp) (pthread_mutex_destroy(mp) == 0)
|
||||||
|
Index: sendmail-8.15.2/libmilter/main.c
|
||||||
|
===================================================================
|
||||||
|
--- sendmail-8.15.2.orig/libmilter/main.c
|
||||||
|
+++ sendmail-8.15.2/libmilter/main.c
|
||||||
|
@@ -16,6 +16,12 @@ SM_RCSID("@(#)$Id: main.c,v 8.85 2013-11
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
+int thread_create(pthread_t *ptid, void *(*wr) (void *), void *arg) {
|
||||||
|
+ pthread_attr_t attr;
|
||||||
|
+ pthread_attr_init(&attr);
|
||||||
|
+ pthread_attr_setstacksize(&attr,2*1024*1024);
|
||||||
|
+ return pthread_create(ptid, &attr, wr, arg);
|
||||||
|
+}
|
||||||
|
|
||||||
|
static smfiDesc_ptr smfi = NULL;
|
||||||
|
|
42
mail/sendmail/patches/103-create-install-dirs.patch
Normal file
42
mail/sendmail/patches/103-create-install-dirs.patch
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
--- a/sendmail/Makefile.m4
|
||||||
|
+++ b/sendmail/Makefile.m4
|
||||||
|
@@ -71,6 +71,7 @@ install-set-user-id: bldCURRENT_PRODUCT
|
||||||
|
${INSTALL} -c -o ${S`'BINOWN} -g ${S`'BINGRP} -m ${S`'BINMODE} bldCURRENT_PRODUCT ${DESTDIR}${M`'BINDIR}
|
||||||
|
for i in ${sendmailTARGET_LINKS}; do \
|
||||||
|
rm -f $$i; \
|
||||||
|
+ mkdir -p $$(dirname $$i); \
|
||||||
|
${LN} ${LNOPTS} ${M`'BINDIR}/sendmail $$i; \
|
||||||
|
done
|
||||||
|
|
||||||
|
@@ -79,6 +80,7 @@ install-sm-mta: bldCURRENT_PRODUCT
|
||||||
|
${INSTALL} -c -o ${M`'BINOWN} -g ${M`'BINGRP} -m ${M`'BINMODE} bldCURRENT_PRODUCT ${DESTDIR}${M`'BINDIR}/sm-mta
|
||||||
|
for i in confMTA_LINKS; do \
|
||||||
|
rm -f $$i; \
|
||||||
|
+ mkdir -p $$(dirname $$i); \
|
||||||
|
${LN} ${LNOPTS} ${M`'BINDIR}/sm-mta $$i; \
|
||||||
|
done
|
||||||
|
|
||||||
|
--- a/devtools/M4/UNIX/links.m4
|
||||||
|
+++ b/devtools/M4/UNIX/links.m4
|
||||||
|
@@ -23,6 +23,7 @@ define(`bldMAKE_SOURCE_LINKS',
|
||||||
|
define(`bldMAKE_TARGET_LINKS',
|
||||||
|
` for i in $2; do \
|
||||||
|
rm -f $$i; \
|
||||||
|
+ mkdir -p $$(dirname $$i); \
|
||||||
|
ln -s $1 $$i; \
|
||||||
|
done'
|
||||||
|
)dnl
|
||||||
|
--- a/cf/cf/Makefile
|
||||||
|
+++ b/cf/cf/Makefile
|
||||||
|
@@ -80,9 +80,11 @@ install:
|
||||||
|
install-cf: install-sendmail-cf install-submit-cf
|
||||||
|
|
||||||
|
install-sendmail-cf: $(CF).cf
|
||||||
|
+ mkdir -p ${DESTDIR}$(MAILDIR)
|
||||||
|
$(INSTALL) -c -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf
|
||||||
|
|
||||||
|
install-submit-cf: $(SUBMIT).cf
|
||||||
|
+ mkdir -p ${DESTDIR}$(MAILDIR)
|
||||||
|
$(INSTALL) -c -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf
|
||||||
|
|
||||||
|
depend:
|
Loading…
Reference in a new issue