diff --git a/mail/sendmail/Makefile b/mail/sendmail/Makefile new file mode 100644 index 000000000..b61ac654f --- /dev/null +++ b/mail/sendmail/Makefile @@ -0,0 +1,133 @@ +# +# Copyright (C) 2017 Val Kulkov +# +# 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 + +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)) + diff --git a/mail/sendmail/files/OpenWrt b/mail/sendmail/files/OpenWrt new file mode 100644 index 000000000..bdcaad283 --- /dev/null +++ b/mail/sendmail/files/OpenWrt @@ -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') +') diff --git a/mail/sendmail/files/lm_getver.c b/mail/sendmail/files/lm_getver.c new file mode 100644 index 000000000..c12d1e7f7 --- /dev/null +++ b/mail/sendmail/files/lm_getver.c @@ -0,0 +1,9 @@ +#include +#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) + ); +} diff --git a/mail/sendmail/files/sharedlibrary.m4 b/mail/sendmail/files/sharedlibrary.m4 new file mode 100644 index 000000000..2c131be80 --- /dev/null +++ b/mail/sendmail/files/sharedlibrary.m4 @@ -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 diff --git a/mail/sendmail/files/site.OpenWrt.m4 b/mail/sendmail/files/site.OpenWrt.m4 new file mode 100644 index 000000000..9c485e493 --- /dev/null +++ b/mail/sendmail/files/site.OpenWrt.m4 @@ -0,0 +1,5 @@ +define(`confCC', `TARGET_CC') +define(`confCCOPTS', `TARGET_CFLAGS') +APPENDDEF(`confENVDEF',`-DSTARTTLS') +APPENDDEF(`confLIBS', `-lssl -lcrypto') + diff --git a/mail/sendmail/patches/010-enable-nonroot-install.patch b/mail/sendmail/patches/010-enable-nonroot-install.patch new file mode 100644 index 000000000..ff6e8b301 --- /dev/null +++ b/mail/sendmail/patches/010-enable-nonroot-install.patch @@ -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: + diff --git a/mail/sendmail/patches/011-libmilter-so-version.patch b/mail/sendmail/patches/011-libmilter-so-version.patch new file mode 100644 index 000000000..fdd5eee11 --- /dev/null +++ b/mail/sendmail/patches/011-libmilter-so-version.patch @@ -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') diff --git a/mail/sendmail/patches/100-misc-os-musl-fixes.patch b/mail/sendmail/patches/100-misc-os-musl-fixes.patch new file mode 100644 index 000000000..dbe15175e --- /dev/null +++ b/mail/sendmail/patches/100-misc-os-musl-fixes.patch @@ -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 */ + # 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'` diff --git a/mail/sendmail/patches/101-fix-format-security.patch b/mail/sendmail/patches/101-fix-format-security.patch new file mode 100644 index 000000000..f559d96d9 --- /dev/null +++ b/mail/sendmail/patches/101-fix-format-security.patch @@ -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; diff --git a/mail/sendmail/patches/102-pthreads-stack-size.patch b/mail/sendmail/patches/102-pthreads-stack-size.patch new file mode 100644 index 000000000..a2e10d6d0 --- /dev/null +++ b/mail/sendmail/patches/102-pthreads-stack-size.patch @@ -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 + #include + ++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; + diff --git a/mail/sendmail/patches/103-create-install-dirs.patch b/mail/sendmail/patches/103-create-install-dirs.patch new file mode 100644 index 000000000..fa998105e --- /dev/null +++ b/mail/sendmail/patches/103-create-install-dirs.patch @@ -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: