diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8573e10 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/MacroMilter-*.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index d2d4bdf..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# macromilter - -Milter to check mails for suspicious Microsoft VBA macro code \ No newline at end of file diff --git a/macromilter-3.3-var-lib.patch b/macromilter-3.3-var-lib.patch new file mode 100644 index 0000000..543a3ba --- /dev/null +++ b/macromilter-3.3-var-lib.patch @@ -0,0 +1,14 @@ +Patch by Robert Scheck for MacroMilter >= 3.3, which moves the hashtable +from /var/log/macromilter/ to /var/lib/macromilter/, given it is a state database, not a log file. + +--- MacroMilter-master/macromilter/macromilter.py 2017-01-13 16:17:09.000000000 +0100 ++++ MacroMilter-master/macromilter/macromilter.py-var-lib 2017-10-08 18:47:47.150745340 +0200 +@@ -101,7 +101,7 @@ + # ============================================================================= + + LOGFILE_PATH = os.path.join(LOGFILE_DIR, LOGFILE_NAME) +-HASHTABLE_PATH = os.path.join(LOGFILE_DIR, "hashtable.db") ++HASHTABLE_PATH = os.path.join("/var/lib/macromilter", "hashtable.db") + + # Set up a specific logger with our desired output level + log = logging.getLogger('MacroMilter') diff --git a/macromilter.logrotate b/macromilter.logrotate new file mode 100644 index 0000000..bb9eccc --- /dev/null +++ b/macromilter.logrotate @@ -0,0 +1,14 @@ +/var/log/macromilter/macromilter.log { + weekly + missingok + rotate 4 + compress + delaycompress + notifempty + postrotate + systemctl try-restart macromilter.service + endscript + create 0640 macromilter macromilter + sharedscripts + su macromilter macromilter +} diff --git a/macromilter.service b/macromilter.service new file mode 100644 index 0000000..7d7bf1c --- /dev/null +++ b/macromilter.service @@ -0,0 +1,13 @@ +[Unit] +Description=MacroMilter service +After=syslog.target network.target +Before=postfix.service sendmail.service + +[Service] +User=macromilter +Group=macromilter +ExecStart=/usr/bin/macromilter +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/macromilter.spec b/macromilter.spec new file mode 100644 index 0000000..4e056f6 --- /dev/null +++ b/macromilter.spec @@ -0,0 +1,90 @@ +%global commit 4e8295f31a951c5542e1c28a0b5fcd81d039143b +%global shortcommit %(c=%{commit}; echo ${c:0:7}) + +Summary: Milter to check mails for suspicious Microsoft VBA macro code +Name: macromilter +Version: 3.3 +Release: 1.20171009git%{?dist} +License: MIT +URL: https://github.com/sbidy/MacroMilter +Source0: https://github.com/sbidy/MacroMilter/archive/%{commit}/MacroMilter-%{shortcommit}.tar.gz +Source1: macromilter.service +Source2: macromilter.logrotate +Patch0: macromilter-3.3-var-lib.patch +BuildArch: noarch +BuildRequires: python2-devel +BuildRequires: systemd +Requires(pre): shadow-utils +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +# No python3-pymilter package yet +%if 0%{?rhel} > 7 || 0%{?fedora} > 27 +Requires: python2-pymilter +%else +Requires: python-pymilter +%endif +Requires: python2-oletools +%if 0%{?fedora} +Requires: python2-configparser +%else +Requires: python-configparser +%endif + +%description +Python based milter for Sendmail and Postfix MTA servers to check incoming +e-mails for Microsoft Office attachments. If a Microsoft Office document is +attached to the e-mail, it will be scanned for suspicious VBA macro code. +Files with malicious macros are, depending on configuration, either removed +and replaced by harmless text files or alternatively the whole e-mail will +be rejected. + +%prep +%setup -q -n MacroMilter-%{commit} +%patch0 -p1 -b .var-lib + +%build +# Empty build section, most likely nothing required. + +%install +install -D -p -m 755 macromilter/macromilter.py $RPM_BUILD_ROOT%{_bindir}/%{name} +sed -e '1i #!%{_bindir}/python2\n' -i $RPM_BUILD_ROOT%{_bindir}/%{name} +touch -c -r macromilter/macromilter.py $RPM_BUILD_ROOT%{_bindir}/%{name} +install -D -p -m 644 macromilter/config.ini $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/config.ini +install -D -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir}/%{name}.service +install -D -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name} +mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/{lib,log}/%{name}/ + +%pre +getent group %{name} > /dev/null || %{_sbindir}/groupadd -r %{name} +getent passwd %{name} > /dev/null || %{_sbindir}/useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin -c "MacroMilter service" %{name} +exit 0 + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun_with_restart %{name}.service + +%files +%license LICENSE.md +%doc README.md +%{_bindir}/%{name} +%dir %{_sysconfdir}/%{name}/ +%config(noreplace) %{_sysconfdir}/%{name}/config.ini +%dir %{_sysconfdir}/logrotate.d/ +%config(noreplace) %{_sysconfdir}/logrotate.d/%{name} +%{_unitdir}/%{name}.service +%dir %attr(750,%{name},%{name}) %{_localstatedir}/lib/%{name}/ +%dir %attr(750,%{name},%{name}) %{_localstatedir}/log/%{name}/ + +%changelog +* Mon Oct 09 2017 Robert Scheck 3.3-1.20171009git +- Upgrade to 3.3 (GIT 20171009) + +* Sat Oct 07 2017 Robert Scheck 3.3-1.20171007git +- Upgrade to 3.3 (GIT 20171007) +- Initial spec file for Fedora and Red Hat Enterprise Linux diff --git a/sources b/sources new file mode 100644 index 0000000..602172b --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (MacroMilter-4e8295f.tar.gz) = 1afb98e2b48eec57cefb1380f88ebb194205f273f3656e8f253502de9c24b0cbe1b1884b81a7f8c9f36a4ded78d6608f1141a58becdb18925ed1d0e02a5e90b9