hello list, I'm trying to build a postfix rpm that has mysql support included. I've found the line where I need to define mysql support but it seems that I am being tripped up by some build dependencies: [root@beta SPECS]# rpmbuild -ba postfix.spec error: Failed build dependencies: MySQL-shared is needed by postfix-2.9.1-1.rhel5.x86_64 MySQL-devel is needed by postfix-2.9.1-1.rhel5.x86_64 This is the line I've enabled in the space file in order to include mysql support %define with_mysql 1 and this is the line in the spec that seems to pertain to the error: %if %{with_mysql} Requires: MySQL-shared BuildRequires: MySQL-shared, MySQL-devel %endif What I'm wondering is if I comment out the lines that require MySQL-shared and MySQL-devel will I end up with a usable install of postfix with MySQL support? Here is the spec file that I am trying to use: ============= # W A R N I N G -- DO NOT EDIT THIS FILE -- W A R N I N G # # postfix.spec # # This file was generated automatically from /home/sjmudd/RPM/SRC/postfix/postfix.spec.in. # If you want to build postfix with other options see make-postfix.spec in # the same directory for instructions. # -- # Note: For complete source info for building these rpms see: # https://github.com/sjmudd/postfix-rpm # # File used to generate the distribution-specific postfix.spec file. # If you need to make changes to postfix.spec, make them to postfix.spec.in # and regenerate the spec file. # # See make-postfix.spec in %{_sourcedir} for more information. # # This spec file was built on distribution: rhel-5.0 # # Information imported from postfix.spec.in: DO NOT CHANGE IT BY HAND # # mysql_paths - paths where locally installed MySQL resides (or 0) # - if using this option mysql_paths should be as # follows: </pathto/mysql/include>:</pathto/mysql/lib> # e.g.: /usr/mysql/include:/usr/mysql/lib # - The order is important and only 2 directories may # be given. # requires_db - used to add dbX dependencies in the package # smtpd_multiline_greeting - my patch to allow multiline banner # mps - man page suffix, .gz except Mandrake >= 8 which uses .bz2 # with_cdb - include CDB support by Michael Tokarev # <mjt@xxxxxxxxx> # with_dovecot - include DOVECOT SASL authentication # with_ldap - include LDAP support # with_mysql - include support for www.mysql.com's MySQL rpms # with_mysql_redhat - include support for RedHat's MySQL rpms # with_pcre - include pcre support # with_pgsql - include Postgres database support # with_sasl - include Cyrus SASL/AUTH support (0 to disable sasl, # 1 for sasl v1, or 2 for sasl v2, sasl_library is # the sasl library to link against, distribution dependent) # with_spf - include libspf2 library support (EXPERIMENTAL) # - rpms for libspf can be found at http://www.sosdg.org/rpm/libspf/ # with_tls - include TLS support # with_tlsfix - include TLS fix # - needed for rh6.2, rh9 and rhel3 # with_vda - add virtual delivery agent patch # # Please send bugfixes and comments to the packager. # # distribution which the spec file was built from %define distribution rhel-5.0 # distribution which we are building Postfix on # - call my script once to speed up build process %define distro_info %(sh $(rpm --eval '%{_sourcedir}')/postfix-get-distribution --distro-info) %define build_dist_full %(echo "%distro_info" | cut -d" " -f5) %define build_name %(echo "%distro_info" | cut -d" " -f1) %define build_major %(echo "%distro_info" | cut -d" " -f3) %define build_minor %(echo "%distro_info" | cut -d" " -f4) %define build_dist %{build_name}-%{build_major}.%{build_minor} %define mps %(test "%{build_name}" = mandrake -a "%{build_major}" -ge 8 && echo .bz2 || echo .gz) %define mysql_paths 0 %define mysql_local %(test "%{mysql_paths}" != 0 && echo 1 || echo 0) %define mysql_include %(echo "%{mysql_paths}" | cut -d: -f1) %define mysql_lib %(echo "%{mysql_paths}" | cut -d: -f2) # determine PCRE library based on distribution name %define pcre_requires %(test %{build_dist} = mandrake && echo libpcre0 || echo pcre) # determine SASL library based on distribution name %define sasl_library %(test %{build_dist} = mandrake && echo libsasl-devel || echo cyrus-sasl-devel) %define requires_db 4 %define requires_zlib 1 %define smtpd_multiline_greeting 1 # alternatives priority can now be changed in one place. # - this used to be 30 but RH seems to have defined other higher values # and some users need another value. # Don't change this unless you really think you need to. %define with_alt_prio 30 %define with_cdb 0 %define with_ldap 0 %define with_mysql 1 %define with_mysql_redhat 1 %define with_pcre 0 %define with_pgsql 0 %define with_sasl 0 %define with_spf 0 %define with_dovecot 0 %define with_tls 1 %define with_tlsfix 2 %define with_vda 1 # support the conditional builds via rpm's --with debug %define debug %{?_with_debug:1}%{?!_with_debug:0} # patch and version information %define V_vda 2.5.4 %define V_cdb 1.1.11-20021104 %define V_postfinger 1.30 # If set to 1 if official version, 0 if snapshot %define official 1 %define V_postfix 2.9.1 %define rel 1.rhel5 %if %{official} %define V_tarball %{V_postfix} %define ftp_dir official %else %define V_release_date RC2 %define V_tarball %{V_postfix}-%{V_release_date} %define ftp_dir experimental %endif # rpm does not accept '-' in version strings so replace them with a '.' # - (only affects snapshots) %define V_package %(echo %{V_tarball} | sed 's/-/./g') # rpm-workaround: # # We can NOT use %{_docdir}/%{name}-%{version} for installing the docs # from the 'install' section as RPM kindly removes this directory after # we have installed files to it. (standard part of 'doc' processing!) # #define docdir %{_docdir}/%{name}-%{version} %define docdir %{_docdir}/%{name}-%{V_package}-documentation %define readme_dir %{docdir}/README_FILES %define html_dir %{docdir}/html %define examples_dir %{docdir}/examples %define newaliases_path %{_bindir}/newaliases.postfix %define mailq_path %{_bindir}/mailq.postfix %define rmail_path %{_bindir}/rmail.postfix %define sendmail_path %{_sbindir}/sendmail.postfix # Don't use %{_libdir} as it gives the wrong directory on x86_64 servers %define usrlib_sendmail /usr/lib/sendmail.postfix %define initdir /etc/rc.d/init.d %define whinge /usr/bin/logger -p mail.info -t postfix/rpm %define die_cmd die(){ %whinge "$*"; exit 1; } Name: postfix Group: System Environment/Daemons URL: http://www.postfix.org License: IBM Public License PreReq: chkconfig, initscripts, shadow-utils PreReq: /etc/init.d, /sbin/service, chkconfig >= 1.3 Epoch: 2 Provides: MTA smtpd smtpdaemon Provides: %{_sbindir}/sendmail %{_bindir}/mailq %{_bindir}/newaliases %{_bindir}/rmail Provides: %{_mandir}/man1/newaliases.1.%{mps} %{_mandir}/man5/newaliases.5.%{mps} Version: %{V_package} Release: %{rel} Packager: Simon J Mudd <sjmudd@xxxxxxxxx> Summary: Postfix Mail Transport Agent Vendor: Built on %{build_dist_full} (%{build_dist}) Source0: ftp://ftp.porcupine.org/mirrors/postfix-release/%{ftp_dir}/postfix-%{V_tarball}.tar.gz Source1: make-postfix.rpm Source2: postfix-get-distribution Source3: postfix-etc-init.d-postfix Source4: postfix-chroot.sh Source5: postfix-aliases Source7: postfix.spec.in Source8: make-postfix.spec Source10: README-Postfix-SASL-RedHat.txt Source12: ftp://ftp.corpit.ru/pub/postfix/postfix-dict_cdb-%{V_cdb}.tar.gz Source16: http://postfix.wl0.org/ftp/postfinger/postfinger-%{V_postfinger} # Sources >= 100 are config files Source100: postfix-sasl.conf Source101: postfix-pam.conf Source102: postfix-saslauthd.conf # Obligatory Patches Patch0: postfix-2.3.3-vda.patch Patch3: postfix-files.patch Patch5: postfix-makedefs.patch # Optional patches # FIXME: There is also a 64-bit patch (not included) for 2.5.4 Patch4: http://vda.sourceforge.net/VDA/postfix-%{V_vda}-vda-ng.patch.gz # SPF patch Patch8: http://www.linuxrulz.org/nkukard/postfix/postfix-2.3/postfix-2.3.2_libspf2-1.2.x-20060819.patch Patch99: ftp://ftp.wl0.org/SOURCES/postfix-2.8.3-multiline-greeting.patch BuildRoot: %{_tmppath}/%{name}-%{V_package}-buildroot # Determine packaging requirements BuildRequires: /usr/bin/cc, gawk, sed, ed, patch, rpm >= 4 Requires: gawk, sed, ed %if %{with_spf} BuildRequires: libspf2-devel >= 1.2.5 Requires: libspf2 >= 1.2.5 %endif %if %{requires_db} Requires: db%{requires_db} BuildRequires: db%{requires_db}-devel %endif %if %{with_cdb} Requires: tinycdb BuildRequires: tinycdb %endif %if %{with_ldap} Requires: openldap >= 1.2.9 BuildRequires: openldap-devel >= 1.2.9 %endif %if %{with_pcre} Requires: %{pcre_requires} BuildRequires: %{pcre_requires}, %{pcre_requires}-devel %endif # Needed by some Mysql and some TLS packages %if %{requires_zlib} Requires: zlib BuildRequires: zlib-devel %endif %if %{with_mysql_redhat} Requires: mysql BuildRequires: mysql, mysql-devel %endif %if %{mysql_local} BuildRequires: %{mysql_include}/mysql.h Requires: %{mysql_lib}/libmysqlclient.so %endif %if %{with_mysql} Requires: MySQL-shared BuildRequires: MySQL-shared, MySQL-devel %endif %if %{with_pgsql} Requires: postgresql-libs BuildRequires: postgresql-devel %endif %if %{with_sasl} Requires: cyrus-sasl BuildRequires: cyrus-sasl, %{sasl_library} %endif # Postfix compiled with Dovecot support only works with dovecot >= 1 # - however requiring the dovecot rpm to be installed when it may # not be used means that there will be NO explicit dependency # added to the rpm. %if %{with_dovecot} #Requires: dovecot >= 1 NOT REQUIRED / DO NOT ADD %endif %if %{with_tls} Requires: openssl BuildRequires: openssl-devel %endif %description Postfix is a Mail Transport Agent (MTA), intended to be an alternative to the widely-used sendmail. This package includes optional support for LDAP, pcre, mysql, SMTP AUTH (SASL) and TLS. See http://www.redhat.com/support/docs/faqs/RH-postfix-FAQ/book1.html, a slightly outdated FAQ, which covers the steps involved in installing and configuring postfix. The binary and source rpms I produce are currently available at http://postfix.WL0.org, ftp://ftp.WL0.org and the mirrors which can be found at the following URL: http://postfix.WL0.org/en/mirrors/ This package/specfile was built from postfix.spec.in. To see the build options used to build this package see the file %{_sysconfdir}/postfix/postfix.spec.cf To use postfix with alternative options download the source package and rebuild the binary package following the instructions in the source package or on my web page. %prep umask 022 %{die_cmd} # check custom MYSQL path values are sensible to avoid problems # with people mixing include and lib directories if [ "%{mysql_paths}" != 0 ]; then exit_error() { cat <<-EOF ************************************************************************* CUSTOM MYSQL configuration error mysql_paths=%mysql_paths (0=Not used) mysql_local=%mysql_local (0=Not used,1=used) mysql_include=%mysql_include (include directory) mysql_lib=%mysql_lib (lib directory) ERROR: $1 If you don't want to use a custom mysql installation set mysql_paths to 0. ************************************************************************* EOF exit 1 } [ $(echo "%{mysql_paths}" | awk -F: '{ print NF }') = 2 ] || \ exit_error "mysql_paths should be of the form /pathto/mysql/include:/pathto/mysql/lib, with only 2 directories" echo "%{mysql_include}" | grep -q "/lib" && \ exit_error "The first path in mysql_paths appears to be a library path: it should be an include path (e.g. /usr/local/include)" echo "%{mysql_lib}" | grep -q "/include" && \ exit_error "The second path in mysql_paths appears to be an include path: it should be a library path (e.g. /usr/local/lib)" fi # Warn if the distribution this spec file was made for isn't the same as # the current distribution, using a script in the SOURCES directory. # This will be removed and built into the spec file later. distribution=$(sh $(rpm --eval '%{_sourcedir}')/postfix-get-distribution) if [ "${distribution}" != "%{distribution}" ]; then cat <<ENDTEXT ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR This postfix.spec file may not work correctly. It was built for %{distribution}, while you are running ${distribution}. Please rebuild postfix.spec for your distribution by following the instructions in postfix.spec.cf. If this procedure does not allow you to produce a working package, please let me know. ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR ENDTEXT exit 1 fi %setup -q -n postfix-%{V_tarball} # Apply obligatory patches %patch3 -p1 -b .alternatives %patch5 -p1 -b .notls # Apply optional patches %if %{with_cdb} %setup -n postfix-%{V_tarball} -D -T -a 12 sh dict_cdb.sh %endif %if %{with_vda} test -e %{_sourcedir}/postfix-%{V_vda}-vda-ng.patch.gz && \ gzip -dc %{_sourcedir}/postfix-%{V_vda}-vda-ng.patch.gz | patch -p1 -b --suffix .vda -s || \ die "POSTFIX RPM: %{_sourcedir}/postfix-%{V_vda}-vda.patch.gz not found or patch failed" %endif %if %{smtpd_multiline_greeting} %patch99 -p1 -b .multiline %endif %if %{with_spf} %patch8 -p1 -b .spf %endif # Modify master.cf: rmail --> rmail.postfix ed conf/master.cf <<EOF || exit 1 H ,s/rmail/rmail.postfix/ w q EOF %build umask 022 CCARGS= AUXLIBS= %ifarch s390 s390x ppc CCARGS="${CCARGS} -fsigned-char" %endif %if %{with_cdb} CCARGS="${CCARGS} -DHAS_CDB" AUXLIBS="${AUXLIBS} -lcdb" %endif %if %{with_ldap} CCARGS="${CCARGS} -DHAS_LDAP" AUXLIBS="${AUXLIBS} -L/usr/%{_lib} -lldap -llber" %endif %if %{with_pcre} # -I option required for pcre 3.4 (and later?) CCARGS="${CCARGS} -DHAS_PCRE -I/usr/include/pcre" AUXLIBS="${AUXLIBS} -lpcre" %else # we need to explicitly disable pcre unless asked for, otherwise it will # be included if present on the build system. This may cause problems. CCARGS="${CCARGS} -DNO_PCRE" %endif # Postfix compiles without needing zlib on RedHat's mysql package, but # requires zlib when using MySQL's package or if using a locally installed # MySQL binary. %if %{with_mysql} || %{with_mysql_redhat} CCARGS="${CCARGS} -DHAS_MYSQL -I/usr/include/mysql" AUXLIBS="${AUXLIBS} -L/usr/%{_lib}/mysql -lmysqlclient -lm" %endif %if %{mysql_local} CCARGS="${CCARGS} -DHAS_MYSQL -I%{mysql_include}" AUXLIBS="${AUXLIBS} -L%{mysql_lib} -lmysqlclient -lm" %endif %if %{with_pgsql} CCARGS="${CCARGS} -DHAS_PGSQL -I/usr/include/pgsql" AUXLIBS="${AUXLIBS} -lpq -lcrypt" %endif %if %{with_sasl} if [ "%{with_sasl}" -le 1 ]; then %define sasl_lib_dir %{_libdir}/sasl CCARGS="${CCARGS} -DUSE_SASL_AUTH -DUSE_CYRUS_SASL" AUXLIBS="${AUXLIBS} -L%{sasl_lib_dir} -lsasl" else %define sasl_lib_dir %{_libdir}/sasl2 CCARGS="${CCARGS} -I/usr/include/sasl -DUSE_SASL_AUTH -DUSE_CYRUS_SASL" AUXLIBS="${AUXLIBS} -L%{sasl_lib_dir} -lsasl2" fi %endif # Provide support for Dovecot SASL %if %{with_dovecot} CCARGS="${CCARGS} -DUSE_SASL_AUTH" # make dovecot the default IFF we don't include SASL if [ "%{with_sasl}" = 0 ]; then CCARGS="${CCARGS} -DDEF_SERVER_SASL_TYPE=\\\"dovecot\\\"" fi %endif %if %{with_spf} AUXLIBS="${AUXLIBS} -lspf2" CCARGS="${CCARGS} -DHAVE_NS_TYPE" %endif %if %{with_tls} # See http://www.openldap.org/lists/openldap-devel/200105/msg00008.html # - rh6.2 needs LIBS=-ldl to build correctly. # - reported by Jauder Ho <jauderho@xxxxxxxxxxx> if pkg-config openssl; then CCARGS="${CCARGS} -DUSE_TLS $(pkg-config --cflags openssl)" AUXLIBS="${AUXLIBS} $(pkg-config --libs openssl)" else # # CHECK THIS - these lines may no longer be needed (required for external TLS patch) # [ "%{with_tlsfix}" = 1 ] && LIBS=-ldl [ "%{with_tlsfix}" = 2 ] && CCARGS="${CCARGS} -I/usr/kerberos/include" CCARGS="${CCARGS} -DUSE_TLS -I/usr/include/openssl" AUXLIBS="${AUXLIBS} -lssl -lcrypto" fi %else # explicitly disable TLS otherwise will be built on machine if # openssl is available CCARGS="${CCARGS} -DNO_TLS" %endif # Required by some TLS implementations (RHEL 3 and RH9) and also some MySQL # packages %if %{requires_zlib} AUXLIBS="${AUXLIBS} -lz" %endif export CCARGS AUXLIBS make -f Makefile.init makefiles unset CCARGS AUXLIBS # -Wno-comment needed due to large number of warnings on RHEL5 # suggestion by Eric Hoeve <eric@xxxxxxxxxx> make DEBUG="%{?_with_debug:-g}" OPT="$RPM_OPT_FLAGS -Wno-comment" %pre umask 022 # create postfix user and group, and maildrop group if necessary. # Use perl rather than looking in /etc/passwd or /etc/group as this works # in a wider NIS or LDAP environment /usr/bin/getent group postdrop >/dev/null || { %whinge "Adding postdrop group to system" %{_sbindir}/groupadd -r postdrop } /usr/bin/getent group postfix >/dev/null || { %whinge "Adding postfix group to system" %{_sbindir}/groupadd -r postfix } /usr/bin/getent passwd postfix >/dev/null || { %whinge "Adding postfix user to system" %{_sbindir}/useradd -d %{_var}/spool/postfix -s /bin/true -g postfix -G mail -M -r postfix } # Add postfix user to the mail group. This is needed for people using cyrus, # linked by unix sockets (amongst other things). test -z "$(id postfix | awk '{print $3}' | sed -e 's/groups=//' | grep mail)" && { %whinge "Adding postfix user to mail group" %{_sbindir}/usermod -G mail postfix } # check for a new install and see if a non package installed Postfix might # exist. Attempt to avoid overwriting the source config and provide a warning. if [ "$1" = 0 ]; then timenow=$(date +%Y%m%d-%H%M%) pretext="This is a new Postfix RPM installation" [ -f %{_sysconfdir}/postfix ] && { [ -n "$pretext" ] && %whinge "$pretext" && pretext= %whinge "Detected a possible previous non-RPM install in %{_sysconfdir}/postfix." %whinge "- going to move it out of the way to %{_sysconfdir}/postfix.$timenow." mv %{_sysconfdir}/postfix %{_sysconfdir}/postfix.$timenow } [ -d %{initdir}/postfix ] && { [ -n "$pretext" ] && %whinge "$pretext" && pretext= %whinge "Detected a possible previous non-RPM startup script %{initdir}/postfix." %whinge "- going to move it out of the way to %{initdir}/postfix.$timenow." mv %{initdir}/postfix %{initdir}/postfix.$timenow } fi exit 0 %install umask 022 [ -n "${RPM_BUILD_ROOT}" -a "${RPM_BUILD_ROOT}" != "/" ] && { rm -rf ${RPM_BUILD_ROOT} mkdir -p ${RPM_BUILD_ROOT} } %{?!debug:strip -R .comment --strip-unneeded bin/* libexec/*} # rename man pages which may conflict with sendmail's mv man/man1/mailq.1 man/man1/mailq.postfix.1 mv man/man1/newaliases.1 man/man1/newaliases.postfix.1 mv man/man1/sendmail.1 man/man1/sendmail.postfix.1 mv man/man5/aliases.5 man/man5/aliases.postfix.5 # install postfix into build root make non-interactive-package \ install_root=${RPM_BUILD_ROOT} \ config_directory=%{_sysconfdir}/postfix \ daemon_directory=%{_libexecdir}/postfix \ command_directory=%{_sbindir} \ queue_directory=%{_var}/spool/postfix \ sendmail_path=%{sendmail_path} \ newaliases_path=%{newaliases_path} \ mailq_path=%{mailq_path} \ mail_owner=postfix \ setgid_group=postdrop \ html_directory=%{html_dir} \ manpage_directory=%{_mandir} \ readme_directory=%{readme_dir} || exit 1 # To be compatible with later versions of RH sendmail/postfix packages # make /usr/lib/sendmail.postfix point to /usr/sbin/sendmail.postfix. # The alternatives then point /usr/lib/sendmail to /usr/lib/sendmail.postfix. # This *is* all a bit silly ... install -d -m755 $RPM_BUILD_ROOT/usr/lib ln -sf ../sbin/sendmail.postfix $RPM_BUILD_ROOT%{usrlib_sendmail} # RPM compresses man pages automatically. Edit postfix-files to avoid # confusing post-install. ed ${RPM_BUILD_ROOT}%{_libexecdir}/postfix/postfix-files <<EOF || exit 1 H ,s/\(\/man[158]\/.*\.[158]\):/\1%{mps}:/ w q EOF # Change alias_maps and alias_database default directory to use # %{_sysconfdir}/postfix bin/postconf -c ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix -e \ "alias_maps = hash:%{_sysconfdir}/postfix/aliases" \ "alias_database = hash:%{_sysconfdir}/postfix/aliases" \ || exit 1 # Change default smtpd_sasl... parameters for dovecot # - override postfix default behaviour IFF not using cyrus sasl. # - main.cf can still be adjusted manually after installation if required. %if %{with_dovecot} if [ "%{with_sasl}" = 0 ]; then bin/postconf -c ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix -e \ "smtpd_sasl_type = dovecot" \ "smtpd_sasl_path = private/auth" \ || exit 1 fi %endif # Fix a typo in some of the documentation. perl -pi -e "s/DEF_SASL_SERVER_TYPE/DEF_SERVER_SASL_TYPE/g" */SASL_README* # Install Sys V init script mkdir -p ${RPM_BUILD_ROOT}%{initdir} install -c %{_sourcedir}/postfix-etc-init.d-postfix \ ${RPM_BUILD_ROOT}%{initdir}/postfix install -c auxiliary/rmail/rmail ${RPM_BUILD_ROOT}%{rmail_path} install -c auxiliary/qshape/qshape.pl ${RPM_BUILD_ROOT}/%{_sbindir}/qshape # copy new aliases files and generate a ghost aliases.db file cp -f %{_sourcedir}/postfix-aliases ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix/aliases chmod 644 ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix/aliases touch ${RPM_BUILD_ROOT}/%{_sysconfdir}/postfix/aliases.db for i in active bounce corrupt defer deferred flush incoming private saved \ hold maildrop public pid; do mkdir -p ${RPM_BUILD_ROOT}%{_var}/spool/postfix/$i done # install qmqp-source, smtp-sink & smtp-source by hand for i in qmqp-source smtp-sink smtp-source; do install -c -m 755 bin/$i ${RPM_BUILD_ROOT}%{_sbindir}/$i done # install postfinger and postfix-chroot.sh scripts # - postfix-chroot.sh is placed in /etc/postfix to make it more visible install -c -m 755 %{_sourcedir}/postfinger-%{V_postfinger} ${RPM_BUILD_ROOT}%{_bindir}/postfinger install -c -m 755 %{_sourcedir}/postfix-chroot.sh ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix/ [ -d "${RPM_BUILD_ROOT}%{html_dir}" ] || mkdir -p ${RPM_BUILD_ROOT}%{html_dir} [ -d "${RPM_BUILD_ROOT}%{readme_dir}" ] || mkdir -p ${RPM_BUILD_ROOT}%{readme_dir} install -c -m 644 %{_sourcedir}/README-Postfix-SASL-RedHat.txt ${RPM_BUILD_ROOT}%{readme_dir}/ [ -d "${RPM_BUILD_ROOT}%{examples_dir}" ] || mkdir -p ${RPM_BUILD_ROOT}%{examples_dir} cp -pr examples/* ${RPM_BUILD_ROOT}%{examples_dir}/ # disable execution permissions to avoid rpm generating dependencies find ${RPM_BUILD_ROOT}%{examples_dir}/ -type f -exec chmod -x {} \; # Install odd documentation files for file in AAAREADME COMPATIBILITY COPYRIGHT HISTORY PORTING \ RELEASE_NOTES RELEASE_NOTES-1.0 RELEASE_NOTES-1.1 \ RELEASE_NOTES-2.0 RELEASE_NOTES-2.1 RELEASE_NOTES-2.2 \ RELEASE_NOTES-2.3 RELEASE_NOTES-2.4 RELEASE_NOTES-2.5 \ RELEASE_NOTES-2.6 RELEASE_NOTES-2.7 RELEASE_NOTES-2.8 \ TLS_ACKNOWLEDGEMENTS TLS_CHANGES TLS_LICENSE \ US_PATENT_6321267 do install -c -m 644 $file ${RPM_BUILD_ROOT}%{docdir}/ done cat <<EOF >${RPM_BUILD_ROOT}%{docdir}/SEE_ALSO %{_docdir}/%{name}-%{version} may contain other documentation files. EOF # Install the smtpd.conf file for SASL support. %if %{with_sasl} mkdir -p ${RPM_BUILD_ROOT}%{sasl_lib_dir} install -m 644 %SOURCE100 ${RPM_BUILD_ROOT}%{sasl_lib_dir}/smtpd.conf mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d install -m 644 %SOURCE101 ${RPM_BUILD_ROOT}%{_sysconfdir}/pam.d/smtp.postfix mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig install -m 644 %SOURCE102 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/saslauthd.postfix %endif # Include README.rpm explaining where the documentation can be found and # also pointing out how to get updated copies of my package cat <<EOF > ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix/README.rpm README.rpm ========== Documentation ------------- Postfix documentation should be available in the directory %{docdir}/. The main Postfix web site is http://www.postfix.org. Packages -------- Newer versions of source and standard binary packages may be available from http://ftp.WL0.org or the mirrors listed at http://postfix.WL0.org. Look in the appropriate directory according to your distribution. Chrooting --------- The chroot behaviour of my packages has changed over time. Current packages will NOT turn on the chroot environment in Postfix. Older versions did the opposite. If you upgrade from an older version of my package the chroot behaviour will NOT be changed. (Check %{_sysconfdir}/postfix/master.cf for details.) I have provided a simple script postfix-chroot.sh which attempts to cover most situations and should enable you to disable or enable the chroot on your system with little effort. Package Build Options --------------------- This package can be built on several Linux distributions and with several optional features. %{_sysconfdir}/postfix/postfix.spec.cf contains the information used to build this version of the rpm. It can also be used to build a new rpm with the same options. Enjoy! Simon J Mudd, <sjmudd@xxxxxxxxx> EOF # generate postfix.spec.cf # - used to build a newer version of the rpm with the same parameters # as the current package. # - provides build instructions cat - %{_sourcedir}/postfix.spec.cf <<EOF | sed -e '/^# NOTE:/d' > ${RPM_BUILD_ROOT}%{_sysconfdir}/postfix/postfix.spec.cf # # This file contains the following information: # # - configuration options used to build the installed postfix rpm # - generated when the binary rpm was built # # - Postfix RPM build instructions # - for upgrading the installed rpm with the same options # - for building the rpm with other options # # 1. CONFIGURATION OPTIONS OF INSTALLED BINARY RPM # # Package built on: %{build_dist_full} (%{build_dist}) POSTFIX_ALT_PRIO=%{with_alt_prio} POSTFIX_CDB=%{with_cdb} POSTFIX_DB=%{requires_db} POSTFIX_DOVECOT=%{with_dovecot} POSTFIX_LDAP=%{with_ldap} POSTFIX_MYSQL=%{with_mysql} POSTFIX_MYSQL_PATHS=%{mysql_paths} POSTFIX_MYSQL_REDHAT=%{with_mysql_redhat} POSTFIX_PCRE=%{with_pcre} POSTFIX_PGSQL=%{with_pgsql} POSTFIX_SASL=%{with_sasl} POSTFIX_SMTPD_MULTILINE_GREETING=%{smtpd_multiline_greeting} POSTFIX_SPF=%{with_spf} POSTFIX_TLS=%{with_tls} POSTFIX_VDA=%{with_vda} # export values to child processes export POSTFIX_MYSQL POSTFIX_MYSQL_PATHS POSTFIX_MYSQL_REDHAT \\ POSTFIX_LDAP POSTFIX_PCRE POSTFIX_PGSQL \\ POSTFIX_SASL POSTFIX_TLS POSTFIX_VDA \\ POSTFIX_SMTPD_MULTILINE_GREETING POSTFIX_DB \\ POSTFIX_INCLUDE_DB POSTFIX_SPF \\ POSTFIX_CDB POSTFIX_ALT_PRIO POSTFIX_DOVECOT # other options used in the build (but not explicitly changeable by the user) are: # - debug=%{?_with_debug:1}%{?!_with_debug:0} # - pcre_requires=%{pcre_requires}, # - requires_zlib=%{requires_zlib}, # - sasl_library=%{sasl_library} # - tlsfix=%{with_tlsfix} # # %{_sysconfdir}/postfix/makedefs.out is also produced by the build and may be of # interest if you are building Postfix by hand. EOF %post umask 022 chkconfig --add postfix # Upgrade configuration as necessary %{_sbindir}/postfix set-permissions upgrade-configuration \ setgid_group=postdrop mail_owner=postfix \ || : %{_sbindir}/postalias %{_sysconfdir}/postfix/aliases %{_sbindir}/postfix check || : # Add submission to services if not found, required for rh <= 7.0 if ! grep -q ^submission %{_sysconfdir}/services then cat <<EOF >>%{_sysconfdir}/services submission 587/tcp msa # mail message submission submission 587/udp msa # mail message submission EOF fi # Add smtps to services if not found if ! grep -q ^smtps %{_sysconfdir}/services then cat <<EOF >>%{_sysconfdir}/services smtps 465/tcp # SMTP over SSL (TLS) EOF fi # If using sasl create %{_sysconfdir}/sysconfig/saslauthd if necessary # - this file is provided in some (but not all) cyrus-sasl packages # - RHEL3 provides this file in cyrus-sasl >= 2.1.18-2 %if %{with_sasl} [ -f %{_sysconfdir}/sysconfig/saslauthd ] || { grep -v "^# NOTE: " %{_sysconfdir}/sysconfig/saslauthd.postfix > %{_sysconfdir}/sysconfig/saslauthd chmod 644 %{_sysconfdir}/sysconfig/saslauthd %{whinge} "creating new %{_sysconfdir}/sysconfig/saslauthd from local Postfix copy" } %endif # Add comments to the /etc/dovecot.conf configuration file if it exists # showing how to configure with Postfix if needed. If postfix is mentioned # in the dovecot configuration file then DO NOTHING. DOVECOT_CONF=/etc/dovecot.conf if [ -f $DOVECOT_CONF ] && ! grep -q postfix $DOVECOT_CONF; then # Check if auth default is configured and add a COMMENTED SECTION # taken from the SASL_README file. if grep -q 'auth default' $DOVECOT_CONF; then ed $DOVECOT_CONF <<-EOF_END || exit 1 /auth default { a # Postfix - suggested configuration taken from SASL_README (2.3.2). # mechanisms = plain login # socket listen { # client { # path = /var/spool/postfix/private/auth # mode = 0660 # user = postfix # group = postfix # } # } . w q EOF_END else # Add the whole section at the end. cat <<-EOF_END >> $DOVECOT_CONF # Postfix - suggested configuration taken from SASL_README (2.3.2). #auth default { # mechanisms = plain login # passdb pam { # } # userdb passwd { # } # socket listen { # client { # path = /var/spool/postfix/private/auth # mode = 0660 # user = postfix # group = postfix # } # } #} EOF_END fi fi # Apply the alternatives scripts ONLY if installing (not upgrading) to # ensure a link exists from %{_sbindir}/sendmail to # %{sendmail_path} (and other files). # # If performing an upgrade this MUST be done in the trigger scripts. # (old postfix packages, pre-alternatives have a /usr/sbin/sendmail and this # gets removed _AFTER_ the %post stage when the old package is removed) [ "$1" = 1 ] || exit 0 # See changelog for explanation of mta-sendmailman entry. %{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{sendmail_path} %{with_alt_prio} \ --slave %{_bindir}/mailq mta-mailq %{mailq_path} \ --slave %{_bindir}/newaliases mta-newaliases %{newaliases_path} \ --slave %{_bindir}/rmail mta-rmail %{rmail_path} \ --slave /usr/lib/sendmail mta-sendmail %{usrlib_sendmail} \ --slave %{_mandir}/man8/sendmail.8%{mps} mta-sendmailman %{_mandir}/man1/sendmail.postfix.1%{mps} \ --slave %{_mandir}/man1/mailq.1%{mps} mta-mailqman %{_mandir}/man1/mailq.postfix.1%{mps} \ --slave %{_mandir}/man1/newaliases.1%{mps} mta-newaliasesman %{_mandir}/man1/newaliases.postfix.1%{mps} \ --slave %{_mandir}/man5/aliases.5%{mps} mta-aliasesman %{_mandir}/man5/aliases.postfix.5%{mps} \ --initscript postfix exit 0 %triggerpostun -- sendmail # If removing sendmail and not using alternatives: replace with postfix equivalents %whinge "%{V_postfix}-%{rel} triggerpostun -- sendmail: final number of sendmail packages=$2" [ $2 = 0 ] || exit 0 # See changelog for explanation of mta-sendmailman entry. %{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{sendmail_path} %{with_alt_prio} \ --slave %{_bindir}/mailq mta-mailq %{mailq_path} \ --slave %{_bindir}/newaliases mta-newaliases %{newaliases_path} \ --slave %{_bindir}/rmail mta-rmail %{rmail_path} \ --slave /usr/lib/sendmail mta-sendmail %{usrlib_sendmail} \ --slave %{_mandir}/man8/sendmail.8%{mps} mta-sendmailman %{_mandir}/man1/sendmail.postfix.1%{mps} \ --slave %{_mandir}/man1/mailq.1%{mps} mta-mailqman %{_mandir}/man1/mailq.postfix.1%{mps} \ --slave %{_mandir}/man1/newaliases.1%{mps} mta-newaliasesman %{_mandir}/man1/newaliases.postfix.1%{mps} \ --slave %{_mandir}/man5/aliases.5%{mps} mta-aliasesman %{_mandir}/man5/aliases.postfix.5%{mps} \ --initscript postfix exit 0 # ensure the trigger exit status is 0 %triggerpostun -- postfix # If upgrading postfix some versions are pre-alternatives and use # /usr/sbin/sendmail. After uninstalling the old package this file will be # missing and we need to link to the new postfix sendmail binary. %whinge "%{V_postfix}-%{rel} triggerpostun -- postfix: final number of Postfix packages=$2" [ $2 -gt 0 ] || exit 0 # See changelog for explanation of mta-sendmailman entry. %{_sbindir}/alternatives --install %{_sbindir}/sendmail mta %{sendmail_path} %{with_alt_prio} \ --slave %{_bindir}/mailq mta-mailq %{mailq_path} \ --slave %{_bindir}/newaliases mta-newaliases %{newaliases_path} \ --slave %{_bindir}/rmail mta-rmail %{rmail_path} \ --slave /usr/lib/sendmail mta-sendmail %{usrlib_sendmail} \ --slave %{_mandir}/man8/sendmail.8%{mps} mta-sendmailman %{_mandir}/man1/sendmail.postfix.1%{mps} \ --slave %{_mandir}/man1/mailq.1%{mps} mta-mailqman %{_mandir}/man1/mailq.postfix.1%{mps} \ --slave %{_mandir}/man1/newaliases.1%{mps} mta-newaliasesman %{_mandir}/man1/newaliases.postfix.1%{mps} \ --slave %{_mandir}/man5/aliases.5%{mps} mta-aliasesman %{_mandir}/man5/aliases.postfix.5%{mps} \ --initscript postfix exit 0 # ensure the trigger exit status is 0 %preun umask 022 # remove the directory and depth levels of subdirectories queue_hash_depth_remove () { local dir=$1 local depth=$2 local new_depth local a [ -d "$dir" ] && { if [ "$depth" -gt 0 ]; then new_depth=$(($depth - 1)) for a in 0 1 2 3 4 5 6 7 8 9 A B C D E F; do test -d $dir/$a && queue_hash_depth_remove $dir/$a $new_depth done fi rm -f $dir/* rmdir $dir || %whinge "WARNING: preun - unable to remove directory %{_var}/spool/postfix/$dir" } } # remove the rest of the queue directory structure queue_directory_remove () { # remove the hashed directories depth=$(postconf -h hash_queue_depth) for dir in $(postconf -h hash_queue_names | sed -e 's/,/\n/g; s/ //g'); do queue_hash_depth_remove $dir $depth done # now remove the other directories for dir in corrupt hold maildrop pid private public saved; do queue_hash_depth_remove $dir 0 done } # No more postfix packages left so prepare to finish package removal. # _In theory_ there is no chroot environment now, so there is no need to # clean it out. # However it may be prudent later to add back a call to # /etc/postfix/postfix-chroot.sh disable # just to make sure, but won't do this yet. (If you think I should let # me know). if [ "$1" = 0 ]; then service postfix stop >/dev/null 2>&1 chkconfig --del postfix %{_sbindir}/alternatives --remove mta %{sendmail_path} # userdel also deletes the user's group %{_sbindir}/userdel postfix || %whinge "WARNING: failed to remove user postfix" %{_sbindir}/groupdel postdrop || %whinge "WARNING: failed to remove group postdrop" cd %{_var}/spool/postfix && queue_directory_remove fi exit 0 %postun umask 022 if [ "$1" -ge 1 ]; then service postfix condrestart || : # don't use readlink as this is not available on rh73 mta=`[ -L /etc/alternatives/mta ] && ls -la /etc/alternatives/mta | awk '{ print $11 }'` if [ "$mta" = "%{sendmail_path}" ]; then %{_sbindir}/alternatives --set mta %{sendmail_path} fi fi exit 0 %clean umask 022 [ -n "${RPM_BUILD_ROOT}" -a "${RPM_BUILD_ROOT}" != "/" ] && { rm -rf ${RPM_BUILD_ROOT} } || : %files %defattr(-, root, root) %if %{with_sasl} %config(noreplace) %{sasl_lib_dir}/smtpd.conf %config(noreplace) %{_sysconfdir}/pam.d/smtp.postfix %config(noreplace) %{_sysconfdir}/sysconfig/saslauthd.postfix %endif %verify(not md5 size mtime) %config %dir %{_sysconfdir}/postfix %attr(0644, root, root) %{_sysconfdir}/postfix/LICENSE %attr(0644, root, root) %{_sysconfdir}/postfix/TLS_LICENSE %attr(0444, root, root) %config %{_sysconfdir}/postfix/makedefs.out %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/main.cf %attr(0644, root, root) %{_sysconfdir}/postfix/main.cf.default %attr(0644, root, root) %{_sysconfdir}/postfix/bounce.cf.default %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/master.cf %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/access %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/aliases %attr(0644, root, root) %verify(not md5 size mtime) %ghost %{_sysconfdir}/postfix/aliases.db %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/canonical %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/generic %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/header_checks %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/relocated %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/transport %attr(0644, root, root) %verify(not md5 size mtime) %config(noreplace) %{_sysconfdir}/postfix/virtual %attr(0755, root, root) %config %{_libexecdir}/postfix/postfix-script %attr(0755, root, root) %{_libexecdir}/postfix/postfix-wrapper %attr(0755, root, root) %{_libexecdir}/postfix/postmulti-script %attr(0755, root, root) %config %{_libexecdir}/postfix/post-install %attr(0644, root, root) %{_libexecdir}/postfix/postfix-files %attr(0644, root, root) %{_libexecdir}/postfix/main.cf %attr(0644, root, root) %{_libexecdir}/postfix/master.cf %attr(0755, root, root) %{_libexecdir}/postfix/dnsblog %attr(0755, root, root) %{_libexecdir}/postfix/postscreen %attr(0755, root, root) %{_libexecdir}/postfix/tlsproxy %attr(0644, root, root) %{_sysconfdir}/postfix/README.rpm %attr(0644, root, root) %{_sysconfdir}/postfix/postfix.spec.cf %attr(0755, root, root) %{_sysconfdir}/postfix/postfix-chroot.sh %attr(0755, root, root) %config %{initdir}/postfix %dir %verify(not md5 size mtime) %{_var}/spool/postfix # For correct directory permissions check postfix-install script %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/active %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/bounce %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/corrupt %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/defer %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/deferred %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/flush %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/hold %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/incoming %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/private %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/spool/postfix/saved %dir %attr(0730, postfix, postdrop) %verify(not md5 size mtime) %{_var}/spool/postfix/maildrop %dir %attr(0710, postfix, postdrop) %verify(not md5 size mtime) %{_var}/spool/postfix/public %dir %attr(0755, root, root) %verify(not md5 size mtime) %{_var}/spool/postfix/pid %dir %attr(0700, postfix, root) %verify(not md5 size mtime) %{_var}/lib/postfix %doc %{docdir}/AAAREADME %doc %{docdir}/COMPATIBILITY %doc %{docdir}/COPYRIGHT %doc %{docdir}/HISTORY %doc %{docdir}/PORTING %doc %{docdir}/RELEASE_NOTES %doc %{docdir}/RELEASE_NOTES-1.0 %doc %{docdir}/RELEASE_NOTES-1.1 %doc %{docdir}/RELEASE_NOTES-2.0 %doc %{docdir}/RELEASE_NOTES-2.1 %doc %{docdir}/RELEASE_NOTES-2.2 %doc %{docdir}/RELEASE_NOTES-2.3 %doc %{docdir}/RELEASE_NOTES-2.4 %doc %{docdir}/RELEASE_NOTES-2.5 %doc %{docdir}/RELEASE_NOTES-2.6 %doc %{docdir}/RELEASE_NOTES-2.7 %doc %{docdir}/RELEASE_NOTES-2.8 %doc %{docdir}/SEE_ALSO %doc %{docdir}/TLS_ACKNOWLEDGEMENTS %doc %{docdir}/TLS_CHANGES %doc %{docdir}/TLS_LICENSE %doc %{docdir}/US_PATENT_6321267 %doc %dir %{readme_dir} %doc %{readme_dir}/* %doc %dir %{html_dir} %doc %{html_dir}/* %doc %dir %{examples_dir} %doc %dir %{examples_dir}/chroot-setup %dir %dir %{examples_dir}/qmail-local %dir %dir %{examples_dir}/smtpd-policy %doc %{examples_dir}/chroot-setup/* %doc %{examples_dir}/qmail-local/* %doc %{examples_dir}/smtpd-policy/* %dir %attr(0755, root, root) %verify(not md5 size mtime) %{_libexecdir}/postfix %{_libexecdir}/postfix/anvil %{_libexecdir}/postfix/bounce %{_libexecdir}/postfix/cleanup %{_libexecdir}/postfix/discard %{_libexecdir}/postfix/error %{_libexecdir}/postfix/flush %{_libexecdir}/postfix/lmtp %{_libexecdir}/postfix/local %{_libexecdir}/postfix/master %{_libexecdir}/postfix/nqmgr %{_libexecdir}/postfix/oqmgr %{_libexecdir}/postfix/pickup %{_libexecdir}/postfix/pipe %{_libexecdir}/postfix/proxymap %{_libexecdir}/postfix/qmgr %{_libexecdir}/postfix/qmqpd # including as installed by Wietse even with -DNO_TLS ? %{_libexecdir}/postfix/scache %{_libexecdir}/postfix/showq %{_libexecdir}/postfix/smtp %{_libexecdir}/postfix/smtpd %{_libexecdir}/postfix/spawn # including as installed by Wietse even with -DNO_TLS ? %{_libexecdir}/postfix/tlsmgr %{_libexecdir}/postfix/trivial-rewrite %{_libexecdir}/postfix/verify %{_libexecdir}/postfix/virtual %{_sbindir}/postalias %{_sbindir}/postcat %{_sbindir}/postconf %attr(2755,root,postdrop) %{_sbindir}/postdrop %attr(2755,root,postdrop) %{_sbindir}/postqueue %{_sbindir}/postfix %{_sbindir}/postkick %{_sbindir}/postlock %{_sbindir}/postlog %{_sbindir}/postmap %{_sbindir}/postmulti %{_sbindir}/postsuper %{_sbindir}/smtp-sink %{_sbindir}/smtp-source %{_sbindir}/qmqp-source %{sendmail_path} %{mailq_path} %{newaliases_path} %{usrlib_sendmail} %attr(0755, root, root) %{rmail_path} %attr(0755, root, root) %{_bindir}/postfinger %attr(0755, root, root) %{_sbindir}/qshape %{_mandir}/*/* ############################################################################## # List of changes made to this package. # # Although old entries from the changelog have been removed most of them # are available from my CVS repository of changes made to this file. # %changelog * Sun Feb 19 2012 Simon J Mudd <sjmudd@xxxxxxxxx> 2.9.1-1 - minor tweaks and upgrade to 2.9.1 * Sat Feb 11 2012 Simon J Mudd <sjmudd@xxxxxxxxx> 2.9.0-1 - initial work on postfix-2.9.0 - pending issues on upgrade from 2.8.8 # chown: cannot access `/usr/share/doc/postfix-2.8.8-documentation/readme/MEMCACHE_README': No such file or directory * Sat Feb 11 2012 Simon J Mudd <sjmudd@xxxxxxxxx> 2.8.8-1 - upgrade to postfix-2.8.8-1 - previous info removed from here and can be seen in the POSTFIX_2_8 branch ========== Thanks in advance, Tim -- GPG me!! gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B _______________________________________________ CentOS mailing list CentOS@xxxxxxxxxx http://lists.centos.org/mailman/listinfo/centos