Date: Fri, 30 Nov 2007 23:52:48 GMT From: Rainer Schwarze <rsc@admadic.de> To: freebsd-gnats-submit@FreeBSD.org Subject: ports/118364: [PATCH] port mail/qmail-scanner: new option to use C wrapper (no suid perl) Message-ID: <200711302352.lAUNqmH5050475@www.freebsd.org> Resent-Message-ID: <200712010000.lB1002vh002027@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 118364 >Category: ports >Synopsis: [PATCH] port mail/qmail-scanner: new option to use C wrapper (no suid perl) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Dec 01 00:00:01 UTC 2007 >Closed-Date: >Last-Modified: >Originator: Rainer Schwarze >Release: FreeBSD 6.2-RELEASE i386 >Organization: admaDIC >Environment: FreeBSD <not-shown> 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Fri Jan 12 10:40:27 UTC 2007 root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >Description: Using the port mail/qmail-scanner requires using suid perl or a C wrapper which simply calls the perl script. Using the C wrapper was not supported by the ports Makefile. The attached patch adds an option CWRAPPER to the Makefile - turned on by default - which installs the C wrapper being located in the contrib directory of the qmail-scanner package. The patch also adjusts files/pkg-install.in and files/pkg-message.in . The diff was created against the standard qmail-scanner revision, but with this patch applied: http://www.freebsd.org/cgi/query-pr.cgi?prp=118139-2-diff (PR: http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/118139 ) (I'm new to FreeBSD / ports, so I'm not really sure, that I adjusted all relevant parts of the Makefile (CONTRIB?) and the other files.) >How-To-Repeat: >Fix: see patch file Patch attached with submission follows: diff -ruN ../qmail-scanner-current/Makefile ./Makefile --- ../qmail-scanner-current/Makefile Tue Nov 20 21:19:14 2007 +++ ./Makefile Fri Nov 30 23:21:50 2007 @@ -59,7 +59,8 @@ OPTIONS= TNEF "Mark Simpson's Patch (Recommended)" on \ FIX_MIME "Fix broken MIME messages" off \ REDUNDANT "Scan attachments and body mails" on \ - NORMALIZE "Decode encoded headers per MIME Base64" off + NORMALIZE "Decode encoded headers per MIME Base64" off \ + CWRAPPER "use C wrapper (no suid perl script needed)" on SUB_FILES= pkg-install pkg-message SUB_LIST+= QS_USER=${QS_USER} \ @@ -85,6 +86,16 @@ CONFIGURE_ARGS+= --normalize no .endif +.if !defined(WITHOUT_CWRAPPER) +SUB_LIST+= CWRAPPER=yes +SUB_LIST+= QSQ_TARGET=qmail-scanner-queue +CWRAPPER_FLG=yes +.else +SUB_LIST+= CWRAPPER=no +SUB_LIST+= QSQ_TARGET=qmail-scanner-queue.pl +CWRAPPER_FLG=no +.endif + .if defined(QS_USER) CONFIGURE_ARGS+= --qs-user "${QS_USER}" .endif @@ -218,11 +229,20 @@ @${ECHO_MSG} " (Default: yes, Options: yes|no|number)" @${ECHO_MSG} "" @${SED} -e 's,%%SPOOLDIR%%,${SPOOLDIR},g; s,%%QS_USER%%,${QS_USER},g; \ - s,%%QS_ID%%,${QS_ID},g' ${FILESDIR}/pkg-install.in > ${PKGINSTALL} + s,%%QS_ID%%,${QS_ID},g; s,%%CWRAPPER%%,${CWRAPPER_FLG},g' \ + ${FILESDIR}/pkg-install.in > ${PKGINSTALL} @${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL do-build: @${REINPLACE_CMD} -E 's,^#!.*perl(.*)$$,#!${PERL}\1,' ${WRKSRC}/qmail-scanner-queue.pl +.if !defined(WITHOUT_CWRAPPER) +# remove the -T option in the perl script: + @${REINPLACE_CMD} -E 's,^(#!${PERL}.*)-T(.*)$$,\1\2,' ${WRKSRC}/qmail-scanner-queue.pl +# patch the correct paths into the c wrapper: + @${REINPLACE_CMD} -E 's|^(#define REAL_PATH ")/var/qmail/bin/qmail-scanner-queue.pl(".*)$$|\1${PREFIX}/bin/qmail-scanner-queue.pl\2|' ${WRKSRC}/contrib/qmail-scanner-queue.c +# compile the c wrapper: + @${CC} ${CFLAGS} -o ${WRKSRC}/contrib/qmail-scanner-queue ${WRKSRC}/contrib/qmail-scanner-queue.c +.endif do-install: .if !defined(NOPORTDOCS) @@ -236,6 +256,9 @@ .endif @${MKDIR} ${SPOOLDIR} @${INSTALL_SCRIPT} ${WRKSRC}/qmail-scanner-queue.pl ${PREFIX}/bin +.if !defined(WITHOUT_CWRAPPER) + @${INSTALL_PROGRAM} ${WRKSRC}/contrib/qmail-scanner-queue ${PREFIX}/bin +.endif @${INSTALL_DATA} ${WRKSRC}/quarantine-events.txt ${SPOOLDIR}/quarantine-events.txt.sample @${SETENV} PKG_PREFIX="${PREFIX}" ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL @${CAT} ${PKGMESSAGE} diff -ruN ../qmail-scanner-current/files/pkg-install.in ./files/pkg-install.in --- ../qmail-scanner-current/files/pkg-install.in Tue Nov 20 21:17:15 2007 +++ ./files/pkg-install.in Fri Nov 30 23:28:53 2007 @@ -10,6 +10,7 @@ QS_ID=%%QS_ID%% SPOOLDIR=%%SPOOLDIR%% +CWRAPPER=%%CWRAPPER%% case "$2" in PRE-INSTALL) @@ -35,7 +36,13 @@ # Mod and owner ${CHOWN} -R ${QS_USER}:${QS_USER} ${SPOOLDIR} ${CHOWN} ${QS_USER}:${QS_USER} ${PKG_PREFIX}/bin/qmail-scanner-queue.pl - ${CHMOD} 4755 ${PKG_PREFIX}/bin/qmail-scanner-queue.pl + if [ ":${CWRAPPER}" = ":yes" ]; then + ${CHOWN} ${QS_USER}:${QS_USER} ${PKG_PREFIX}/bin/qmail-scanner-queue + ${CHMOD} 6755 ${PKG_PREFIX}/bin/qmail-scanner-queue + ${CHMOD} 0755 ${PKG_PREFIX}/bin/qmail-scanner-queue.pl + else + ${CHMOD} 4755 ${PKG_PREFIX}/bin/qmail-scanner-queue.pl + fi # Initialize ${PKG_PREFIX}/bin/qmail-scanner-queue.pl -z diff -ruN ../qmail-scanner-current/files/pkg-message.in ./files/pkg-message.in --- ../qmail-scanner-current/files/pkg-message.in Tue Nov 20 21:17:15 2007 +++ ./files/pkg-message.in Wed Nov 28 23:29:24 2007 @@ -16,12 +16,12 @@ You just need to add for your tcpserver file (generally called as: tcp.smtp): -QMAILQUEUE="%%PREFIX%%/bin/qmail-scanner-queue.pl" +QMAILQUEUE="%%PREFIX%%/bin/%%QSQ_TARGET%%" Or create an new file in /service/smtpd/env, with the following content and called as "QMAILQUEUE": -%%PREFIX%%/bin/qmail-scanner-queue.pl +%%PREFIX%%/bin/%%QSQ_TARGET%% NOTE: always you change anything in your environment dir, you just need to restart your smtpd, for it use: "svc -k /service/smtpd". >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200711302352.lAUNqmH5050475>