File nullmailer.spec of Package nullmailer

%if 0%{?suse_version} >= 1200 || 0%{?fedora} >= 16
%define systemdunitdir  %(pkg-config --variable=systemdsystemunitdir systemd)
%endif
%if 0%{?suse_version} < 1000
%define defined()	%{expand:%%{?%{1}:1}%%{!?%{1}:0}}
%define undefined()	%{expand:%%{?%{1}:0}%%{!?%{1}:1}}
%endif
%if 0%{?fedora}
%define ext_man .gz
%endif

Name: nullmailer
Summary: Simple relay-only mail transport agent
Version: 1.11
Release: 4
License: GPL-2.0
Group: Productivity/Networking/Email/Servers
Source: http://untroubled.org/nullmailer/archive/%{version}/nullmailer-%{version}.tar.gz
# Own creation, GPL
Source1: rc.nullmailer
# Own creation, GPL
Source2: README.SUSE
# Own creation, GPL
Source3: permissions
# Own creation, GPL
Source4: permissions.paranoid
# Own creation, GPL
Source5: %{name}-rpmlintrc
# PATCH-FEATURE-UPSTREAM conrad@quisquis.de
Source6: mailq.1
# Own creation, GPL
Source7: permissions.secure
# Own creation, GPL
Source8: apparmor.mailq
# Own creation, GPL
Source9: apparmor.nullmailer
# Own creation, GPL
Source10: apparmor.nullmailer-send
# Own creation, GPL
Source11: nullmailer.service
# PATCH-FIX-OPENSUSE conrad@quisquis.de
Patch1: nullmailer-1.05-fhs.patch
# PATCH-FIX-OPENSUSE conrad@quisquis.de
Patch2: nullmailer-1.05-mailuser.patch
# PATCH-FEATURE-UPSTREAM conrad@quisquis.de
Patch3: nullmailer-1.10-ipv6.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
URL: http://untroubled.org/nullmailer/
Provides: smtpdaemon smtp_daemon
Conflicts: sendmail
Conflicts: qmail
%if 0%{?fedora} == 0
Requires(pre): pwdutils
Requires(pre): permissions
%else
Requires(pre): shadow-utils
%endif
%if %{defined insserv_prereq}
Requires(pre): %insserv_prereq
%endif
%if %{defined fillup_prereq}
Requires(pre): %fillup_prereq
%endif
%if 0%{?suse_version} > 1130 || 0%{?fedora} >= 16
BuildRequires: libgnutls-devel
%define enable_tls	"--enable-tls"
%endif
BuildRequires: gcc-c++
%if 0%{?suse_version} > 1130 || 0%{?sles_version} >= 11
# This seems to be required for insserv_cleanup to work... :-(
BuildRequires: udev
# Avoid unowned directory warning
BuildRequires: apparmor-profiles
%endif
%if %{undefined systemdunitdir}
Requires: daemontools
%endif
%if %{defined systemdunitdir}
Requires: systemd
BuildRequires: systemd-devel, pkg-config
%endif

%description
Nullmailer is a mail transport agent designed to only relay all its
messages through a fixed set of "upstream" hosts.  It is also designed
to be secure.

%prep
%setup -q
cp %{S:2} .
%patch1 -p0
%patch2 -p0
%patch3 -p1

%build
%if 0%{?suse_version} >= 1000
PIE=-fPIE
pie=-pie
%endif
export CFLAGS="%{optflags} $PIE" CXXFLAGS="%{optflags} $PIE" LDFLAGS="%{optflags} $pie" LDXXFLAGS="%{optflags} $pie"
%configure %{enable_tls}
make %{?_smp_mflags}
for i in doc/nullmailer-queue.8 doc/nullmailer-send.8; do
    if [ ! -r "$i.orig" ]; then cp "$i" "$i.orig"; fi
    sed 's=/var/nullmailer/=%{_localstatedir}/spool/nullmailer/=;s=/usr/local/etc=%{_sysconfdir}=;s=/usr/local/libexec=%{_libexecdir}=' <"$i.orig" >"$i"
done

%install
make DESTDIR="%{buildroot}" install
%__rm "%{buildroot}%{_bindir}"/nullmailer-smtpd
mkdir -p "%{buildroot}/usr/lib"
ln -s ../sbin/sendmail "%{buildroot}/usr/lib/"
install -m 0644 "%{S:6}" "%{buildroot}%{_mandir}/man1"
%if 0%{?fedora} == 0
install -D -m 0644 "%{S:3}" "%{buildroot}%{_sysconfdir}/permissions.d/%{name}"
install -D -m 0644 "%{S:4}" "%{buildroot}%{_sysconfdir}/permissions.d/%{name}.paranoid"
install -D -m 0644 "%{S:7}" "%{buildroot}%{_sysconfdir}/permissions.d/%{name}.secure"
mkdir -p "%{buildroot}%{_sysconfdir}/apparmor.d"
install -m 0644 "%{S:8}" "%{buildroot}%{_sysconfdir}/apparmor.d/usr.bin.mailq"
%endif
%if %{undefined systemdunitdir}

# SYSV-Init

mkdir -p "%{buildroot}%{_localstatedir}/log/nullmailer"
mkdir -p "%{buildroot}%{_libexecdir}/nullmailer/service/log"
sed 's=/bin/sh=/bin/ash=' <scripts/nullmailer.run >"%{buildroot}%{_libexecdir}/nullmailer/service/run"
sed 's=/bin/sh=/bin/ash=' <scripts/nullmailer-log.run >"%{buildroot}%{_libexecdir}/nullmailer/service/log/run"
chmod 0755 "%{buildroot}%{_libexecdir}/nullmailer/service/run"
chmod 0755 "%{buildroot}%{_libexecdir}/nullmailer/service/log/run"
install -D -m 0755 "%{S:1}" "%{buildroot}%{_initrddir}/nullmailer"
ln -s "%{_initrddir}/nullmailer" "%{buildroot}%{_sbindir}/rcnullmailer"
install -m 0644 "%{S:9}" "%{buildroot}%{_sysconfdir}/apparmor.d/usr.lib.nullmailer.service"

# /SYSV-Init

%endif
%if %{defined systemdunitdir}

# systemd-init

mkdir -p "%{buildroot}%{systemdunitdir}"
%if 0%{?fedora} == 0
install -m 0644 "%{S:10}" "%{buildroot}%{_sysconfdir}/apparmor.d/usr.sbin.nullmailer-send"
%endif
install -m 0644 "%{S:11}" "%{buildroot}%{systemdunitdir}/nullmailer.service"

# /systemd-init

%endif

%__debug_install_post

%clean
[ "%{buildroot}" = "/" ] || rm -rf "%{buildroot}"

%pre
getent group mail >/dev/null || groupadd -r mail
getent group trusted >/dev/null || groupadd -r trusted
getent passwd mail >/dev/null || useradd -r -g mail -d "%{_libexecdir}/nullmailer/service" -s /sbin/nologin -c "User for nullmailer" mail
exit 0

%post
if ! [ -s "%{_sysconfdir}/nullmailer/me" ]; then
	/bin/hostname --fqdn >"%{_sysconfdir}/nullmailer/me"
fi
if ! [ -s "%{_sysconfdir}/nullmailer/defaultdomain" ]; then
	/bin/hostname --domain >"%{_sysconfdir}/nullmailer/defaultdomain"
fi
%if 0%{?set_permissions:1} > 0
    %set_permissions "%{_sbindir}/nullmailer-queue"
    %set_permissions "%{_bindir}/mailq"
%else
%if 0%{?run_permissions:1} > 0
    %run_permissions
%endif
%endif
%if %{defined systemdunitdir}
test -n "$FIRST_ARG" || FIRST_ARG=$1
if test "$FIRST_ARG" -ge 1 ; then
    /bin/systemctl enable nullmailer.service >/dev/null 2>&1 || :
fi
%endif

%if 0%{?suse_version} >= 1120
%verifyscript
%verify_permissions -e %{_sbindir}/nullmailer-queue
%verify_permissions -e %{_bindir}/mailq
%endif

%preun
%if %{undefined systemdunitdir}
%stop_on_removal nullmailer
%endif
%if %{defined systemdunitdir}
test -n "$FIRST_ARG" || FIRST_ARG=$1
if test "$FIRST_ARG" -lt 1 ; then
    /bin/systemctl --no-reload disable nullmailer.service >/dev/null 2>&1 || :
    /bin/systemctl stop nullmailer.service >/dev/null 2>&1 || :
fi
%endif

%postun
%if %{undefined systemdunitdir}
%restart_on_update nullmailer
%insserv_cleanup
%endif
%if %{defined systemdunitdir}
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
test -n "$FIRST_ARG" || FIRST_ARG=$1
if test "$FIRST_ARG" -ge 1 ; then
    /bin/systemctl try-restart nullmailer.service >/dev/null 2>&1 || :
fi
%endif

%files
%defattr(-,root,root,-)
%doc AUTHORS BUGS COPYING INSTALL NEWS README README.SUSE TODO
%config(noreplace) %{_sysconfdir}/nullmailer/
%if 0%{?fedora} == 0
%config %{_sysconfdir}/permissions.d/%{name}
%config %{_sysconfdir}/permissions.d/%{name}.paranoid
%config %{_sysconfdir}/permissions.d/%{name}.secure
%config %{_sysconfdir}/apparmor.d/usr.bin.mailq
%verify(not user group mode) %attr(04710,mail,trusted) %{_bindir}/mailq
%verify(not user group mode) %attr(04711,mail,mail) %{_sbindir}/nullmailer-queue
%else
%attr(04710,mail,trusted) %{_bindir}/mailq
%attr(04711,mail,mail) %{_sbindir}/nullmailer-queue
%endif
%{_bindir}/nullmailer-inject
/usr/lib/sendmail
%{_libexecdir}/nullmailer/
%{_mandir}/man1/mailq.1%{ext_man}
%{_mandir}/man1/nullmailer-inject.1%{ext_man}
%{_mandir}/man1/sendmail.1%{ext_man}
%{_mandir}/man7/nullmailer.7%{ext_man}
%{_mandir}/man8/nullmailer-queue.8%{ext_man}
%{_mandir}/man8/nullmailer-send.8%{ext_man}
%{_sbindir}/nullmailer-send
%{_sbindir}/sendmail
%attr(-,mail,mail) %{_localstatedir}/spool/nullmailer/
%if %{undefined systemdunitdir}
%config %{_sysconfdir}/apparmor.d/usr.lib.nullmailer.service
%{_initrddir}/nullmailer
%{_sbindir}/rcnullmailer
%attr(-,mail,mail) %{_localstatedir}/log/nullmailer/
%endif
%if %{defined systemdunitdir}
%if 0%{?fedora} == 0
%config %{_sysconfdir}/apparmor.d/usr.sbin.nullmailer-send
%endif
%{systemdunitdir}/nullmailer.service
%endif

%changelog
openSUSE Build Service is sponsored by