Index: head/mail/postsrsd/Makefile =================================================================== --- head/mail/postsrsd/Makefile (revision 434960) +++ head/mail/postsrsd/Makefile (revision 434961) @@ -1,36 +1,35 @@ # Created by: Krzysztof Stryjek # $FreeBSD$ PORTNAME= postsrsd -PORTVERSION= 1.3 -PORTREVISION= 2 +PORTVERSION= 1.4 CATEGORIES= mail MAINTAINER= ports@bsdserwis.com COMMENT= Postfix Sender Rewriting Scheme daemon LICENSE= GPLv2+ LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= help2man:misc/help2man \ base64:converters/base64 RUN_DEPENDS= base64:converters/base64 USE_GITHUB= yes GH_ACCOUNT= roehling USES= cmake pkgconfig CMAKE_ARGS= --no-warn-unused-cli \ -DCMAKE_INCLUDE_PATH="${LOCALBASE}/include" \ -DCMAKE_LIBRARY_PATH="${LOCALBASE}/lib" USE_RC_SUBR= ${PORTNAME} PORTDOCS= README.md main.cf.ex README_UPGRADE.md OPTIONS_DEFINE= DOCS DOCS_CMAKE_ON= -DENABLE_DOCS:STRING="ON" -PLIST_FILES= sbin/postsrsd man/man8/postsrsd.8.gz etc/postsrsd.secret +PLIST_FILES= sbin/postsrsd man/man8/postsrsd.8.gz .include Index: head/mail/postsrsd/distinfo =================================================================== --- head/mail/postsrsd/distinfo (revision 434960) +++ head/mail/postsrsd/distinfo (revision 434961) @@ -1,2 +1,3 @@ -SHA256 (roehling-postsrsd-1.3_GH0.tar.gz) = 0f72c41052204a17c35a22a7651430156ca1dbcb98b1bfe48e44ec76248b62fc -SIZE (roehling-postsrsd-1.3_GH0.tar.gz) = 26409 +TIMESTAMP = 1488207086 +SHA256 (roehling-postsrsd-1.4_GH0.tar.gz) = f3230d57c36ba4688cc3beb90fbb0f199a06381e4df2edbc4ef541a9e8a574ff +SIZE (roehling-postsrsd-1.4_GH0.tar.gz) = 26555 Index: head/mail/postsrsd/files/patch-srs2.c =================================================================== --- head/mail/postsrsd/files/patch-srs2.c (revision 434960) +++ head/mail/postsrsd/files/patch-srs2.c (nonexistent) @@ -1,15 +0,0 @@ ---- srs2.c.orig 2015-12-13 08:56:05 UTC -+++ srs2.c -@@ -21,7 +21,11 @@ - #include /* tyepdefs */ - #include /* timeval / timezone struct */ - #include /* memcpy, strcpy, memset */ --#include -+#if defined(__FreeBSD__) -+# include -+#else -+# include -+#endif - - #ifdef USE_OPENSSL - #include Property changes on: head/mail/postsrsd/files/patch-srs2.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/mail/postsrsd/files/patch-srs2.h =================================================================== --- head/mail/postsrsd/files/patch-srs2.h (revision 434960) +++ head/mail/postsrsd/files/patch-srs2.h (nonexistent) @@ -1,11 +0,0 @@ ---- srs2.h.orig 2015-12-13 08:56:05 UTC -+++ srs2.h -@@ -23,7 +23,7 @@ - #ifdef __APPLE__ - #include - #endif -- -+#include - - #ifndef __BEGIN_DECLS - #define __BEGIN_DECLS Property changes on: head/mail/postsrsd/files/patch-srs2.h ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/mail/postsrsd/files/patch-CMakeLists.txt =================================================================== --- head/mail/postsrsd/files/patch-CMakeLists.txt (revision 434960) +++ head/mail/postsrsd/files/patch-CMakeLists.txt (revision 434961) @@ -1,88 +1,88 @@ --- CMakeLists.txt.orig 2015-12-13 08:56:05 UTC +++ CMakeLists.txt @@ -4,11 +4,14 @@ include(CheckIncludeFile) option(GENERATE_SRS_SECRET "Generate a random SRS secret if none exists during install" ON) option(USE_APPARMOR "Enable AppArmor profile" OFF) +option(MK_CHROOT_DIR "Chroot jail for daemon" OFF) +if(MK_CHROOT_DIR) set(CHROOT_DIR "${CMAKE_INSTALL_PREFIX}/lib/${PROJECT_NAME}" CACHE PATH "Chroot jail for daemon") +endif() set(SYSCONF_DIR "/etc" CACHE PATH "Global system configuration folder") set(SYSD_UNIT_DIR "${SYSCONF_DIR}/systemd/system" CACHE PATH "Systemd unit file folder") -set(CONFIG_DIR "${SYSCONF_DIR}/default" CACHE PATH "Location of startup configuration file") +set(CONFIG_DIR "${CMAKE_INSTALL_PREFIX}/etc" CACHE PATH "Location of startup configuration file") set(DOC_DIR "share/doc/${PROJECT_NAME}" CACHE PATH "Path for documentation files") mark_as_advanced(CHROOT_DIR SYSCONF_DIR SYSD_UNIT_DIR CONFIG_DIR DOC_DIR) @@ -16,8 +19,6 @@ find_program(HELP2MAN help2man DOC "path find_program(DD dd DOC "path to dd executable") find_program(BASE64 base64 DOC "path to base64 executable") find_program(OPENSSL openssl DOC "path to OpenSSL executable") -find_program(INSSERV insserv DOC "path to insserv executable") -find_program(CHKCONFIG chkconfig DOC "path to chkconfig executable") find_library(LIBSOCKET socket) find_library(LIBNSL nsl) -@@ -46,26 +47,6 @@ if(HAVE_TIME_H) - add_definitions(-DHAVE_TIME_H) +@@ -54,26 +55,6 @@ if(HAVE_SYS_TYPES_H) + add_definitions(-DHAVE_SYS_TYPES_H) endif() -if(NOT DEFINED INIT_FLAVOR) - if(IS_DIRECTORY "${SYSD_UNIT_DIR}" AND EXISTS "/usr/lib/systemd/systemd") - message(STATUS "Detected init flavor: systemd") - set(INIT_FLAVOR "systemd" CACHE STRING "Init daemon of this system") - elseif(IS_DIRECTORY "${SYSCONF_DIR}/init" AND EXISTS "/lib/init/upstart-job") - message(STATUS "Detected init flavor: upstart") - set(INIT_FLAVOR "upstart" CACHE STRING "Init daemon of this system") - elseif(IS_DIRECTORY "${SYSCONF_DIR}/init.d" AND EXISTS "${SYSCONF_DIR}/init.d/functions") - message(STATUS "Detected init flavor: sysv-redhat") - set(INIT_FLAVOR "sysv-redhat" CACHE STRING "Init daemon of this system") - elseif(IS_DIRECTORY "${SYSCONF_DIR}/init.d" AND EXISTS "/lib/lsb/init-functions") - message(STATUS "Detected init flavor: sysv-lsb") - set(INIT_FLAVOR "sysv-lsb" CACHE STRING "Init daemon of this system") - else() - message(STATUS "Detected init flavor: none") - message(STATUS "System startup files will not be installed") - set(INIT_FLAVOR "" CACHE STRING "Init daemon of this system") - endif() -endif() - add_executable(${PROJECT_NAME} postsrsd.c sha1.c srs2.c) if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") -@@ -74,15 +55,7 @@ endif() +@@ -82,15 +63,7 @@ endif() get_target_property(POSTSRSD ${PROJECT_NAME} LOCATION) get_filename_component(POSTSRSD ${POSTSRSD} NAME_WE) -set(APPARMOR_PROFILE "${CMAKE_INSTALL_PREFIX}/sbin/${POSTSRSD}") -string(REGEX REPLACE "^/+" "" APPARMOR_PROFILE "${APPARMOR_PROFILE}") -string(REPLACE "/" "." APPARMOR_PROFILE "${APPARMOR_PROFILE}") -configure_file(init/${PROJECT_NAME}.sysv-lsb.in ${PROJECT_NAME}.sysv-lsb @ONLY) -configure_file(init/${PROJECT_NAME}.sysv-redhat.in ${PROJECT_NAME}.sysv-redhat @ONLY) -configure_file(init/${PROJECT_NAME}.upstart.in ${PROJECT_NAME}.upstart @ONLY) -configure_file(init/${PROJECT_NAME}.apparmor.in ${PROJECT_NAME}.apparmor @ONLY) -configure_file(init/${PROJECT_NAME}.systemd.in ${PROJECT_NAME}.systemd @ONLY) configure_file(init/${PROJECT_NAME}.default.in ${PROJECT_NAME}.default @ONLY) configure_file(postinstall.cmake.in postinstall.cmake @ONLY) -@@ -92,7 +65,7 @@ add_custom_command(TARGET ${PROJECT_NAME +@@ -100,7 +73,7 @@ add_custom_command(TARGET ${PROJECT_NAME COMMAND ${HELP2MAN} ARGS -s8 -o${PROJECT_NAME}.8 -n "Postfix Sender Rewriting Scheme daemon" -N -h-h -v-v ${CMAKE_CURRENT_BINARY_DIR}/${POSTSRSD} VERBATIM ) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.8 DESTINATION "share/man/man8") +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.8 DESTINATION "man/man8") endif() if(USE_APPARMOR) -@@ -100,6 +73,8 @@ if(USE_APPARMOR) +@@ -108,6 +81,8 @@ if(USE_APPARMOR) endif() install(TARGETS ${PROJECT_NAME} DESTINATION "sbin") +if(ENABLE_DOCS) install(FILES README.md README_UPGRADE.md main.cf.ex DESTINATION "${DOC_DIR}") +endif() install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/postinstall.cmake") Index: head/mail/postsrsd/files/patch-postinstall.cmake.in =================================================================== --- head/mail/postsrsd/files/patch-postinstall.cmake.in (revision 434960) +++ head/mail/postsrsd/files/patch-postinstall.cmake.in (revision 434961) @@ -1,64 +1,69 @@ --- postinstall.cmake.in.orig 2015-12-13 08:56:05 UTC +++ postinstall.cmake.in -@@ -7,51 +7,13 @@ set(INIT_FLAVOR "@INIT_FLAVOR@") +@@ -1,4 +1,3 @@ +-set(GENERATE_SRS_SECRET "@GENERATE_SRS_SECRET@") + set(SYSCONF_DIR "@SYSCONF_DIR@") + set(SYSD_UNIT_DIR "@SYSD_UNIT_DIR@") + set(CHROOT_DIR "@CHROOT_DIR@") +@@ -7,51 +6,13 @@ set(INIT_FLAVOR "@INIT_FLAVOR@") set(SECRET_FILE "@PROJECT_NAME@.secret") set(DD "@DD@") set(BASE64_ENCODE "@BASE64_ENCODE@") -set(INSSERV "@INSSERV@") -set(CHKCONFIG "@CHKCONFIG@") if(CHROOT_DIR AND NOT EXISTS "$ENV{DESTDIR}${CHROOT_DIR}") message(STATUS "Chroot jail: $ENV{DESTDIR}${CHROOT_DIR}") file(MAKE_DIRECTORY "$ENV{DESTDIR}${CHROOT_DIR}") endif() -if(INIT_FLAVOR) - if (NOT EXISTS "$ENV{DESTDIR}${CONFIG_DIR}/@PROJECT_NAME@") - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.default" DESTINATION "${CONFIG_DIR}" RENAME "@PROJECT_NAME@") - else() - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.default" DESTINATION "${CONFIG_DIR}" RENAME "@PROJECT_NAME@.new") - message(STATUS "") - message(STATUS "*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*") - message(STATUS "*!* ${CONFIG_DIR}/@PROJECT_NAME@ will NOT be overwritten!") - message(STATUS "*!* Please note the changes from @PROJECT_NAME@.new in the same folder and") - message(STATUS "*!* update your configuration accordinly.") - message(STATUS "*!* See also README_UPGRADE.md for details") - message(STATUS "*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*") - message(STATUS "") - endif() -endif() - -if(INIT_FLAVOR STREQUAL "sysv-lsb") - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.sysv-lsb" TYPE PROGRAM DESTINATION "${SYSCONF_DIR}/init.d" RENAME "@PROJECT_NAME@") - if(INSSERV) - execute_process( - COMMAND ${INSSERV} -p "$ENV{DESTDIR}${SYSCONF_DIR}/init.d" @PROJECT_NAME@ - ) - endif() -elseif(INIT_FLAVOR STREQUAL "sysv-redhat") - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.sysv-redhat" TYPE PROGRAM DESTINATION "${SYSCONF_DIR}/init.d" RENAME "@PROJECT_NAME@") - if(CHKCONFIG AND NOT "$ENV{DESTDIR}") - execute_process( - COMMAND ${CHKCONFIG} --add @PROJECT_NAME@ - ) - endif() -elseif(INIT_FLAVOR STREQUAL "upstart") - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.upstart" DESTINATION "${SYSCONF_DIR}/init" RENAME "@PROJECT_NAME@.conf") -elseif(INIT_FLAVOR STREQUAL "systemd") - file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/@PROJECT_NAME@.systemd" DESTINATION "${SYSD_UNIT_DIR}" RENAME "@PROJECT_NAME@.service") -endif() - -if(GENERATE_SRS_SECRET AND DD AND BASE64_ENCODE AND EXISTS "/dev/urandom" AND NOT EXISTS "$ENV{DESTDIR}${SYSCONF_DIR}/${SECRET_FILE}") +if(GENERATE_SRS_SECRET AND DD AND BASE64_ENCODE AND EXISTS "/dev/urandom") message(STATUS "Generating secret key") execute_process( COMMAND ${DD} if=/dev/urandom bs=18 count=1 -@@ -60,7 +22,7 @@ if(GENERATE_SRS_SECRET AND DD AND BASE64 +@@ -60,7 +21,7 @@ if(GENERATE_SRS_SECRET AND DD AND BASE64 ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) -file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/${SECRET_FILE}" DESTINATION "${SYSCONF_DIR}" RENAME "${SECRET_FILE}" PERMISSIONS OWNER_READ OWNER_WRITE) +file(INSTALL FILES "@CMAKE_CURRENT_BINARY_DIR@/${SECRET_FILE}" DESTINATION "${CONFIG_DIR}" RENAME "${SECRET_FILE}" PERMISSIONS OWNER_READ OWNER_WRITE) file(REMOVE "@CMAKE_CURRENT_BINARY_DIR@/${SECRET_FILE}") endif() Index: head/mail/postsrsd/files/postsrsd.in =================================================================== --- head/mail/postsrsd/files/postsrsd.in (revision 434960) +++ head/mail/postsrsd/files/postsrsd.in (revision 434961) @@ -1,98 +1,87 @@ #!/bin/sh # # $FreeBSD$ # # PROVIDE: postsrsd # REQUIRE: DAEMON # BEFORE: mail # KEYWORD: shutdown # Define these postsrsd_* variables in one of these files: # /etc/rc.conf # /etc/rc.conf.local # /etc/rc.conf.d/postsrsd # # postsrsd_enable (bool): Set to "NO" by default. # Set it to "YES" to enable dkim-milter # postsrsd_uid (str): Set username to run postsrsd. # postsrsd_secret (str): Secret file file. See postsrsd(8) # postsrsd_domain (str): Local domain name: rewrite to originate from this domain # postsrsd_exclude_domains (str): Domains to exclude (comma-separated list) # postsrsd_forward_port (int): Port to listen for forward map # postsrsd_reverse_port (int): Port to listen for reverse map # postsrsd_idle_timeout (int): Timeout for idle client connection # postsrsd_flags (str): Flags passed to start command. . /etc/rc.subr name="postsrsd" rcvar=postsrsd_enable start_precmd="postsrsd_prepcmd" stop_postcmd="postsrsd_postcmd" command="%%PREFIX%%/sbin/postsrsd" _piddir="/var/run/postsrsd" pidfile="${_piddir}/${name}.pid" load_rc_config $name # # DO NOT CHANGE THESE DEFAULT VALUES HERE # : ${postsrsd_enable="NO"} : ${postsrsd_domain=`/bin/hostname`} : ${postsrsd_uid="mailnull"} : ${postsrsd_secret="%%PREFIX%%/etc/postsrsd.secret"} : ${postsrsd_forward_port="10001"} : ${postsrsd_reverse_port="10002"} : ${postsrsd_idle_timeout="1800"} : ${postsrsd_exclude_domains=""} # Options other than above can be set with $postsrsd_flags. # see postsrsd documentation for detail. -if [ "x${postsrsd_uid}" != "x" ];then - _uid_prefix="-u" -fi -if [ "x${postsrsd_domain}" != "x" ];then - postsrsd_domain="-d ${postsrsd_domain}" -fi -if [ "x${postsrsd_secret}" != "x" ];then - postsrsd_secret="-s ${postsrsd_secret}" -fi -if [ "x${postsrsd_forward_port}" != "x" ];then - postsrsd_forward_port="-f ${postsrsd_forward_port}" -fi -if [ "x${postsrsd_reverse_port}" != "x" ];then - postsrsd_reverse_port="-r ${postsrsd_reverse_port}" -fi -if [ "x${postsrsd_idle_timeout}" != "x" ];then - postsrsd_idle_timeout="-t ${postsrsd_idle_timeout}" -fi -if [ "x${postsrsd_exclude_domains}" != "x" ];then - postsrsd_exclude_domains="-X${postsrsd_exclude_domains}" -fi +[ -n "${postsrsd_uid}" ] && _uid_prefix="-u" +[ -n "${postsrsd_domain}" ] && cmd_args="-d ${postsrsd_domain}" +[ -n "${postsrsd_secret}" ] && cmd_args="${cmd_args} -s ${postsrsd_secret}" +[ -n "${postsrsd_forward_port}" ] && cmd_args="${cmd_args} -f ${postsrsd_forward_port}" +[ -n "${postsrsd_reverse_port}" ] && cmd_args="${cmd_args} -r ${postsrsd_reverse_port}" +[ -n "${postsrsd_idle_timeout}" ] && cmd_args="${cmd_args} -t ${postsrsd_idle_timeout}" +[ -n "${postsrsd_exclude_domains}" ] && cmd_args="${cmd_args} -X${postsrsd_exclude_domains}" -command_args=" -D ${_uid_prefix} ${postsrsd_uid} -p ${pidfile} ${postsrsd_domain} ${postsrsd_secret} ${postsrsd_forward_port} ${postsrsd_reverse_port} ${postsrsd_idle_timeout} ${postsrsd_exclude_domains} ${postsrsd_flags}" +command_args=" -D ${_uid_prefix} ${postsrsd_uid} -p ${pidfile} ${cmd_args} ${postsrsd_flags}" postsrsd_prepcmd () { if [ ! -d ${_piddir} ] ; then mkdir -p ${_piddir} fi if [ -n "${postsrsd_uid}" ] ; then chown ${postsrsd_uid} ${_piddir} + fi + if [ ! -f "${postsrsd_secret}" ] ; then + tr -cd "[:alnum:]" < /dev/urandom | head -c 24 > "${postsrsd_secret}" fi } postsrsd_postcmd() { # just if the directory is empty rmdir ${_piddir} > /dev/null 2>&1 } # to let rc.subr kill them all unset pidfile run_rc_command "$1"