File notqmail.spec of Package notqmail

%undefine _missing_build_ids_terminate_build
%global _unpackaged_files_terminate_build 1
%global debug_package %{nil}

%define nq_docdir          %{_docdir}/%{name}-doc
%if %{defined _project}
# define build_on_obs if building on openSUSE build service
%global build_on_obs       1
%else
%define _project           local
%global build_on_obs       0
%global _hardened_build    1
%endif
%global qmaildir           /var/qmail
#log directory if we use multilog in supervise scripts
%global logdir             /var/log/svc
%global see_base           For a description of notqmail visit https://notqmail.org/
%if 0%{?suse_version}
%global noperms            1
%else
%global noperms            0
%endif

Name: notqmail
Version: 1.07
Release: 1.0%{?dist}
Summary: A community driven fork of qmail
License: CC-PDDC
URL: https://notqmail.org
Source0: notqmail-1.07.tar.xz
%if %noperms == 0
%if 0%{?suse_version} >= 1120
Source1:%{name}-permissions.easy
Source2:%{name}-permissions.secure
Source3:%{name}-permissions.paranoid
%endif
%endif
Source4:qmail-send.service
Source5:system-users-qmail.conf
%if %{undefined suse_version} && %{undefined sles_version}
Group: System Environment/Base
%else
Group: Productivity/Networking/Email/Servers
%endif
BuildRequires: rpm gcc make binutils coreutils grep
BuildRequires: glibc glibc-devel procps
BuildRequires: diffutils

%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version}
Requires(pre): shadow-utils
Requires(postun): shadow-utils
%endif
%if 0%{?suse_version} || 0%{?sles_version}
Requires(pre): pwdutils
Requires(postun): pwdutils
%endif
%if %{undefined fedora_version} && %{undefined centos_version} && %{undefined rhel_version} && %{undefined sles_version} && %{undefined suse_version}
BuildRequires: sysuser-tools
%endif
%if 0%{?suse_version} >= 1500 || 0%{?sles_version} >= 15
BuildRequires: sysuser-tools
%endif


%if %build_on_obs == 1
##################################### OBS ####################################
%if 0%{?rhel_version} == 700
BuildRequires: groff-base
%else
BuildRequires: groff
%endif

%if 0%{?suse_version}
BuildRequires: -post-build-checks  
#!BuildIgnore: post-build-checks  
%endif
##############################################################################
%else
BuildRequires: groff
%endif

Requires: /usr/sbin/useradd /usr/sbin/userdel /usr/sbin/groupadd /usr/sbin/groupdel
Requires: /sbin/chkconfig procps /usr/bin/awk /usr/bin/which
Requires: coreutils grep /bin/sh glibc
Requires: binutils sed findutils
%if "%{?_unitdir}" == ""
Requires: initscripts
%endif
%if %noperms == 0
%if 0%{?suse_version} >= 1120
PreReq: permissions
%endif
%endif

Provides: user(alias)       > 999
Provides: user(qmaild)      > 999
Provides: user(qmaill)      > 999
Provides: user(qmailp)      > 999
Provides: user(qmailq)      > 999
Provides: user(qmailr)      > 999
Provides: user(qmails)      > 999
Provides: group(nofiles)    > 999
Provides: group(qmail)      > 999
Provides: smtp_daemon
%if %{undefined fedora_version} && %{undefined centos_version} && %{undefined rhel_version} && %{undefined sles_version} && %{undefined suse_version}
%sysusers_requires
%endif
%if 0%{?suse_version} >= 1500 || 0%{?sles_version} >= 15
%sysusers_requires
%endif

%if %build_on_obs == 1
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXXX)
%endif

%description
notqmail is a community-driven fork of qmail, beginning where netqmail
left off: providing stable, compatible, small releases to which existing
qmail users can safely update.
notqmail also aims higher: developing an extensible, easily packaged, and
increasingly useful modern mail server.

%package      doc
Summary:        Documentations for the %{name} package
%if %{undefined suse_version} && %{undefined sles_version}
Group: System Environment/Base
%else
Group: Productivity/Networking/Email/Servers
%endif
BuildArch:      noarch

%description doc
notqmail is a community-driven fork of qmail, beginning where netqmail
left off: providing stable, compatible, small releases to which existing
qmail users can safely update.
notqmail also aims higher: developing an extensible, easily packaged, and
increasingly useful modern mail server.
This package contains the documentation for %{name}

%{see_base}

%prep
%setup

%build
%if %{undefined fedora_version} && %{undefined centos_version} && %{undefined rhel_version} && %{undefined sles_version} && %{undefined suse_version}
%sysusers_generate_pre %{S:5} notqmail
%endif
%if 0%{?suse_version} >= 1500 || 0%{?sles_version} >= 15
%sysusers_generate_pre %{S:5} notqmail
%endif
make -s it man

%install
env DESTDIR=%{buildroot} ./instpackage
%{__rm} -rf %{buildroot}%{qmaildir}/man/man3 %{buildroot}%{qmaildir}/man/cat*
mkdir -p %{buildroot}%{_mandir}
mv %{buildroot}%{qmaildir}/man/man? %{buildroot}%{_mandir}
mkdir -p %{buildroot}%{nq_docdir}
mv %{buildroot}%{qmaildir}/doc/* %{buildroot}%{nq_docdir}
%{__cp} COPYRIGHT %{buildroot}%{nq_docdir}
%if %noperms == 0
%if 0%{?suse_version} >= 1120
mkdir -p %{buildroot}%{_sysconfdir}/permissions.d/
install -m 644 %{S:1} %{buildroot}%{_sysconfdir}/permissions.d/%{name}-permissions
install -m 644 %{S:2} %{buildroot}%{_sysconfdir}/permissions.d/%{name}-permissions.secure
%endif
%endif
%if "%{?_unitdir}" != ""
  mkdir -p %{buildroot}%{_unitdir}
  install -m 644 %{S:4} %{buildroot}%{_unitdir}/%{name}.service
%endif
rm %{buildroot}%{qmaildir}/bin/{qail,elq,pinq}

%files
%defattr(-, root, root,-)
%dir %attr(755,root,qmail)        %{qmaildir}
%dir %attr(755,root,qmail)        %{qmaildir}/bin
%dir %attr(755,root,qmail)        %{qmaildir}/boot
%dir %attr(755,root,qmail)        %{qmaildir}/control
%dir %attr(755,root,qmail)        %{qmaildir}/users
%dir %attr(2755,alias,qmail)      %{qmaildir}/alias
%dir %attr(750,qmailq,qmail)      %{qmaildir}/queue
%dir %attr(700,qmails,qmail)      %{qmaildir}/queue/bounce
     %attr(700,qmails,qmail)      %{qmaildir}/queue/info
%dir %attr(700,qmailq,qmail)      %{qmaildir}/queue/intd
     %attr(700,qmails,qmail)      %{qmaildir}/queue/local
%dir %attr(750,qmailq,qmail)      %{qmaildir}/queue/lock
%attr(600,qmails,qmail)           %{qmaildir}/queue/lock/sendmutex
%attr(644,qmailr,qmail)           %{qmaildir}/queue/lock/tcpto
%attr(622,qmails,qmail)           %{qmaildir}/queue/lock/trigger
     %attr(750,qmailq,qmail)      %{qmaildir}/queue/mess
%dir %attr(700,qmailq,qmail)      %{qmaildir}/queue/pid
     %attr(700,qmails,qmail)      %{qmaildir}/queue/remote
%dir %attr(750,qmailq,qmail)      %{qmaildir}/queue/todo
%attr(0700,root,qmail)            %{qmaildir}/bin/qmail-lspawn
%attr(0711,root,qmail)            %{qmaildir}/bin/splogger
%attr(0755,root,qmail)            %{qmaildir}/bin/preline
%attr(0700,root,qmail)            %{qmaildir}/bin/qmail-newu
%attr(0755,root,qmail)            %{qmaildir}/bin/qsmhook
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-popup
%attr(0755,root,qmail)            %{qmaildir}/bin/qreceipt
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-showctl
%attr(0755,root,qmail)            %{qmaildir}/bin/maildir2mbox
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-qread
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-getpw
%attr(0755,root,qmail)            %{qmaildir}/bin/bouncesaying
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-smtpd
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-inject
%attr(0755,root,qmail)            %{qmaildir}/bin/sendmail
%attr(0755,root,qmail)            %{qmaildir}/bin/except
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-pop3d
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-clean
%attr(0755,root,qmail)            %{qmaildir}/bin/qbiff
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-qstat
%attr(0755,root,qmail)            %{qmaildir}/bin/mailsubj
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-tcpok
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-tcpto
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-qmtpd
%attr(0700,root,qmail)            %{qmaildir}/bin/qmail-start
%attr(4711,qmailq,qmail)          %{qmaildir}/bin/qmail-queue
%attr(0755,root,qmail)            %{qmaildir}/bin/maildirmake
%attr(0755,root,qmail)            %{qmaildir}/bin/maildirwatch
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-qmqpd
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-pw2u
%attr(0755,root,qmail)            %{qmaildir}/bin/datemail
%attr(0700,root,qmail)            %{qmaildir}/bin/qmail-newmrh
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-local
%attr(0755,root,qmail)            %{qmaildir}/bin/predate
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-send
%attr(0755,root,qmail)            %{qmaildir}/bin/forward
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-rspawn
%attr(0755,root,qmail)            %{qmaildir}/bin/qmail-qmqpc
%attr(0755,root,qmail)            %{qmaildir}/bin/condredirect
%attr(0755,root,qmail)            %{qmaildir}/bin/tcp-env
%attr(0711,root,qmail)            %{qmaildir}/bin/qmail-remote

%attr(0755,root,qmail)            %{qmaildir}/boot/proc+df
%attr(0755,root,qmail)            %{qmaildir}/boot/proc
%attr(0755,root,qmail)            %{qmaildir}/boot/home
%attr(0755,root,qmail)            %{qmaildir}/boot/binm2+df
%attr(0755,root,qmail)            %{qmaildir}/boot/binm3
%attr(0755,root,qmail)            %{qmaildir}/boot/home+df
%attr(0755,root,qmail)            %{qmaildir}/boot/binm1
%attr(0755,root,qmail)            %{qmaildir}/boot/binm2
%attr(0755,root,qmail)            %{qmaildir}/boot/binm1+df
%attr(0755,root,qmail)            %{qmaildir}/boot/binm3+df
%if "%{?_unitdir}" != ""
                                  %{_unitdir}/%{name}.service
%endif

%if %noperms == 0
%if 0%{?suse_version} >= 1120
%attr(644,root,root)                               %{_sysconfdir}/permissions.d/%{name}-permissions
%attr(644,root,root)                               %{_sysconfdir}/permissions.d/%{name}-permissions.secure
%endif
%endif
%if %noperms == 0
%if 0%{?suse_version} >= 1120
%verify (not user group mode) %attr(6551, qmailq, qmail)   %{qmaildir}/bin/qmail-queue
%verify (not user group mode) %attr(2555, alias, qmail)    %{qmaildir}/alias
%endif
%endif

%files doc
%{_mandir}/man?/*%{?ext_man}
%{nq_docdir}

### SCRIPTLETS ###############################################################################
%verifyscript
ID=$(id -u)
if [ $ID -ne 0 ] ; then
  echo "You are not root" 1>&2
  exit 1
fi

%if %noperms == 0
%if 0%{?suse_version} >= 1120
%verify_permissions -e %{qmaildir}/sbin/qmail-queue
%verify_permissions -e %{qmaildir}/alias
%endif
%endif

%pretrans
argv1=$1
ID=$(id -u)
if [ $ID -ne 0 ] ; then
  echo "You are not root" 1>&2
  exit 1
fi
if test -f %{_sysconfdir}/systemd/system/multi-user.target.wants/notqmail.service
then
  echo "Giving %{name} exactly 5 seconds to exit nicely"
  /bin/systemctl stop notqmail > /dev/null 2>&1
fi
sleep 5

%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?suse_version} < 1500 || 0%{?sles_version < 15}
%pre
/usr/bin/getent group nofiles   > /dev/null || /usr/sbin/groupadd nofiles
/usr/bin/getent group qmail     > /dev/null || /usr/sbin/groupadd qmail
/usr/bin/getent passwd alias    > /dev/null || /usr/sbin/useradd -M -g nofiles  -d %{qmaildir}/alias  -s /sbin/nologin alias
/usr/bin/getent passwd qmaild   > /dev/null || /usr/sbin/useradd -M -g nofiles  -d %{qmaildir}        -s /sbin/nologin qmaild
/usr/bin/getent passwd qmaill   > /dev/null || /usr/sbin/useradd -M -g nofiles  -d %{logdir}          -s /sbin/nologin qmaill
/usr/bin/getent passwd qmailp   > /dev/null || /usr/sbin/useradd -M -g nofiles  -d %{qmaildir}        -s /sbin/nologin qmailp
/usr/bin/getent passwd qmailq   > /dev/null || /usr/sbin/useradd -M -g qmail    -d %{qmaildir}        -s /sbin/nologin qmailq
/usr/bin/getent passwd qmailr   > /dev/null || /usr/sbin/useradd -M -g qmail    -d %{qmaildir}        -s /sbin/nologin qmailr
/usr/bin/getent passwd qmails   > /dev/null || /usr/sbin/useradd -M -g qmail    -d %{qmaildir}        -s /sbin/nologin qmails
for i in alias qmaild qmaill qmailp qmailq qmailr qmails qscand
do
  %{__rm} -f /var/spool/mail/$i
done
%else
%pre -f notqmail.pre
%endif

%service_add_pre %{name}.service

### SCRIPTLET ###############################################################################
%post
%if %noperms == 0
%if 0%{?suse_version} >= 1120
%if 0%{?set_permissions:1} > 0
  if [ ! -f /tmp/no_permissions ] ; then
    %set_permissions %{name}
  fi
%else
  if [ ! -f /tmp/no_permissions ] ; then
    %run_permissions
  fi
%endif
%endif
%endif
#%{qmaildir}/bin/instchown
%service_add_post %{name}.service

### SCRIPTLET ###############################################################################
%preun
argv1=$1
if [ -z "$argv1" ] ; then
  argv1=0
fi
# we are doing upgrade
if [ $argv1 -eq 1 ] ; then
  exit 0
fi
%service_del_preun %{name}.service

### SCRIPTLET ###############################################################################
%postun
argv1=$1
ID=$(id -u)
if [ $ID -ne 0 ] ; then
  echo "You are not root" 1>&2
  exit 1
fi
if [ -z "$argv1" ] ; then
  argv1=0
fi
# we are doing upgrade
if [ $argv1 -eq 1 ] ; then
  exit 0
fi
%service_del_postun %{name}.service
(
# remove users / groups
for i in alias qmaild qmaill qmailp qmailq qmailr qmails
do
  echo "Removing user $i"
  /usr/bin/getent passwd $i > /dev/null && /usr/sbin/userdel $i >/dev/null || true
done
for i in nofiles qmail
do
  echo "Removing group $i"
  /usr/bin/getent group $i > /dev/null && /usr/sbin/groupdel $i  >/dev/null || true
done

for i in postmaster mailer-daemon root
do
  %{__rm} -f %{qmaildir}/alias/.qmail-"$i"
done
%{__rm} -rf %{qmaildir}/alias/Maildir
) >> /tmp/%{name}-setup.log 2>&1

### SCRIPTLET ###############################################################################
%posttrans
argv1=$1
ID=$(id -u)
if [ $ID -ne 0 ] ; then
  echo "You are not root" 1>&2
  exit 1
fi

%changelog
* Sun Aug 11 2019 17:35:00 +0530 mbhangui@gmail.com 1.07-1.0
1. First release
openSUSE Build Service is sponsored by