# # spec file for package rspamd # # Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %{echo: building for suse: ver:%{suse_version} arch:%{_arch} o:%{is_opensuse} "\n"} %bcond_with split_out_client %if 0%{?suse_version} > 1230 || 0%{?rhel_version} > 600 || 0%{?centos_version} > 600 || 0%{?fedora_version} >= 20 || 0%{?el7}%{?fc20}%{?fc21}%{?fc22}%{?fc23}%{?fc24}%{?fc25} %bcond_without systemd %else %bcond_with systemd %endif %ifarch %{ix86} x86_64 %if 0%{?suse_version} > 1500 %bcond_without hyperscan %endif %if (0%{?suse_version} >= 1315) %bcond_without luajit %bcond_without torch %endif %endif %if 0%{?suse_version} >= 1500 && ! 0%{?sle_version} %bcond_without ext_hiredis %endif %if 0%{?suse_version} >= 1500 %bcond_without openblas %bcond_without pcre2 %endif # fails to build atm %bcond_with utils %define rspamd_user _rspamd %define rspamd_group %{rspamd_user} %global _wwwdir /srv/www/webapps Name: rspamd Version: 1.9.0 Release: 0 License: Apache-2.0 Summary: Spam filtering system Url: https://rspamd.com/ Group: Productivity/Networking/Email/Utilities Source0: https://github.com/vstakhov/rspamd/archive/%{version}/%{name}-%{version}.tar.gz Patch0: rspamd-conf.patch Patch1: rspamd-after-redis-target.patch BuildRequires: cmake BuildRequires: curl-devel BuildRequires: db-devel BuildRequires: file-devel BuildRequires: gcc-c++ BuildRequires: gd-devel %if %{with hyperscan} BuildRequires: hyperscan-devel %endif %if %{with jemalloc} BuildRequires: jemalloc-devel %endif BuildRequires: libfann-devel BuildRequires: libicu-devel %if %{with luajit} BuildRequires: luajit-devel %else BuildRequires: lua-devel %endif %if %{with openblas} BuildRequires: openblas-devel %endif BuildRequires: pcre-devel %if %{with pcre2} BuildRequires: pcre2-devel %endif BuildRequires: pkgconfig BuildRequires: pkgconfig(glib-2.0) >= 2.28 %if %{with ext_hiredis} BuildRequires: pkgconfig(hiredis) %endif BuildRequires: pkgconfig(libevent) %if 0%{?suse_version} >= 1500 BuildRequires: pkgconfig(libnsl) %endif BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(sqlite3) BuildRequires: ragel %if %{with systemd} BuildRequires: pkgconfig(systemd) %{?systemd_requires} %endif %if 0%{?suse_version} < 1500 Requires: lua51-LPeg %else Requires: lua53-lpeg %endif %if 0%{?with split_out_client} Requires: rspamd-client = %{version} %else Conflicts: rspamd-client %endif %description Rspamd is a spam filtering system that allows evaluation of messages by a number of rules including regular expressions, statistical analysis and custom services such as URL black lists. Each message is analysed by rspamd and given a "spam score". According to this spam score and the user's settings, rspamd recommends an action for the MTA to apply to the message, for example to pass, reject or add a header. Rspamd is designed to process hundreds of messages per second simultaneously and has a number of features available. %if 0%{?with split_out_client} %package client Group: Productivity/Networking/Email/Utilities # Summary: Spam filtering system - Client tools %description client Rspamd is a spam filtering system that allows evaluation of messages by a number of rules including regular expressions, statistical analysis and custom services such as URL black lists. Each message is analysed by rspamd and given a "spam score". According to this spam score and the user's settings, rspamd recommends an action for the MTA to apply to the message, for example to pass, reject or add a header. Rspamd is designed to process hundreds of messages per second simultaneously and has a number of features available. This package holds the client tools (rspamc and rspamadm) %endif %prep %setup -q %patch0 -p1 %patch1 -p1 %build %if %{with torch} export CFLAGS="%{optflags} -fopenmp" export CXXFLAGS="%{optflags} -fopenmp" %endif %cmake \ %if 0%{suse_version} == 1315 -DCMAKE_USER_MAKE_RULES_OVERRIDE="" \ %endif -DCMAKE_EXE_LINKER_FLAGS:STRING='' \ -DCMAKE_MODULE_LINKER_FLAGS:STRING='' \ -DCMAKE_SHARED_LINKER_FLAGS:STRING='' \ -DRSPAMD_LIBDIR=%{_libdir}/rspamd \ -DCONFDIR=%{_sysconfdir}/rspamd \ -DMANDIR=%{_mandir} \ -DDBDIR=%{_localstatedir}/lib/rspamd \ -DRUNDIR=%{_localstatedir}/run/rspamd \ -DLOGDIR=%{_localstatedir}/log/rspamd \ -DEXAMPLESDIR=%{_datadir}/examples/rspamd \ -DPLUGINSDIR=%{_datadir}/rspamd \ -DLIBDIR=%{_libdir}/rspamd \ -DINCLUDEDIR=%{_includedir} \ -DWWWDIR=%{_wwwdir}/%{name} \ %if 0%{suse_version} > 1315 -DENABLE_OPTIMIZATION=ON \ %endif -DENABLE_REDIRECTOR=ON \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DCMAKE_SKIP_RPATH=OFF \ %if %{with luajit} -DENABLE_LUAJIT=ON \ %else -DENABLE_LUAJIT=OFF \ %endif %if %{with torch} -DENABLE_TORCH=ON \ %else -DENABLE_TORCH=OFF \ %endif -DENABLE_DB=ON \ -DENABLE_SQLITE=ON \ -DENABLE_HIREDIS=ON \ -DENABLE_URL_INCLUDE=ON \ -DNO_SHARED=ON \ -DINSTALL_EXAMPLES=ON \ -DINSTALL_WEBUI=ON \ %if %{with systemd} -DWANT_SYSTEMD_UNITS=ON \ -DSYSTEMDDIR=%{_unitdir} \ %else -DWANT_SYSTEMD_UNITS=OFF \ %endif %if %{with hyperscan} -DENABLE_HYPERSCAN=ON \ %endif -DENABLE_GD=ON \ -DENABLE_FANN=ON \ %if %{with utils} -DENABLE_UTILS=ON \ %endif %if %{with pcre2} -DENABLE_PCRE2=ON \ %endif %if %{with jemalloc} -DENABLE_JEMALLOC=ON \ %endif -DDEBIAN_BUILD=1 \ -DRSPAMD_GROUP=%{rspamd_group} \ -DRSPAMD_USER=%{rspamd_user} make %{?_smp_mflags} %install %cmake_install mkdir -p \ %{buildroot}%{_sbindir} \ %{buildroot}%{_localstatedir}/lib/rspamd \ %{buildroot}%{_localstatedir}/run/rspamd \ %{buildroot}%{_localstatedir}/log/rspamd %if %{with systemd} ln -fs %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name} %endif ln -s rspamd/librspamd-actrie.so %{buildroot}%{_libdir} ln -s rspamd/librspamd-server.so %{buildroot}%{_libdir} %if %{with torch} ln -s rspamd/libdecisiontree.so %{buildroot}%{_libdir} ln -s rspamd/libpaths.so %{buildroot}%{_libdir} ln -s rspamd/libTHNN.so %{buildroot}%{_libdir} ln -s rspamd/libTH.so %{buildroot}%{_libdir} ln -s rspamd/libtorch.so %{buildroot}%{_libdir} %endif install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/local.d cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-normal.inc << EOF # If the mailer is running on the same host use a unix socket #bind_socket = "/run/rspamd/worker.socket mode=0666"; EOF cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-controller.inc << EOF # If the mailer is running on the same host use a unix socket #bind_socket = "/run/rspamd/worker-controller.socket mode=0666"; EOF cat > %{buildroot}%{_sysconfdir}/%{name}/local.d/worker-proxy.inc << EOF # If the mailer is running on the same host use a unix socket #bind_socket = "/run/rspamd/worker-proxy.socket mode=0666"; EOF install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/override.d %pre %{_sbindir}/groupadd -r %{rspamd_group} 2>/dev/null || : %{_sbindir}/useradd -g %{rspamd_group} -c "Rmilter user" -s /bin/false -r %{rspamd_user} 2>/dev/null || : %if 0%{?suse_version} && %{with systemd} %service_add_pre %{name}.service %post #systemd-tmpfiles --create /usr/lib/tmpfiles.d/%{name}.conf ||: %service_add_post %{name}.service %endif %if 0%{?suse_version} %preun %if %{with systemd} %service_del_preun %{name}.service %else %stop_on_removal %{name} %endif %endif %if 0%{?suse_version} %postun %if %{with systemd} %service_del_postun %{name}.service %else %restart_on_update %{name} %insserv_cleanup %endif %endif %files %defattr(-,root,root) %{_sbindir}/rc%{name} %{_bindir}/rspamd %{_bindir}/rspamd-redirector %{_bindir}/rspamd_stats %{_libdir}/librspamd-actrie.so %{_libdir}/librspamd-server.so %if %{with torch} %{_libdir}/libdecisiontree.so %{_libdir}/libpaths.so %{_libdir}/libTHNN.so %{_libdir}/libTH.so %{_libdir}/libtorch.so %endif %dir %{_libdir}/rspamd/ %{_libdir}/rspamd/librspamd-actrie.so %{_libdir}/rspamd/librspamd-server.so %if %{with torch} %{_libdir}/rspamd/libdecisiontree.so %{_libdir}/rspamd/libpaths.so %{_libdir}/rspamd/libTHNN.so %{_libdir}/rspamd/libTH.so %{_libdir}/rspamd/libtorch.so %endif %dir %{_sysconfdir}/rspamd/ %config %{_sysconfdir}/rspamd/2tld.inc %config %{_sysconfdir}/rspamd/actions.conf %config %{_sysconfdir}/rspamd/cgp.inc %config %{_sysconfdir}/rspamd/common.conf %config %{_sysconfdir}/rspamd/composites.conf %config %{_sysconfdir}/rspamd/dmarc_whitelist.inc %config %{_sysconfdir}/rspamd/groups.conf %config %{_sysconfdir}/rspamd/logging.inc %config %{_sysconfdir}/rspamd/maillist.inc %config %{_sysconfdir}/rspamd/metrics.conf %config %{_sysconfdir}/rspamd/mid.inc %config %{_sysconfdir}/rspamd/mime_types.inc %config %{_sysconfdir}/rspamd/modules.conf %config %{_sysconfdir}/rspamd/options.inc %config %{_sysconfdir}/rspamd/redirectors.inc %config %{_sysconfdir}/rspamd/rspamd.conf %config %{_sysconfdir}/rspamd/settings.conf %config %{_sysconfdir}/rspamd/spf_dkim_whitelist.inc %config %{_sysconfdir}/rspamd/statistic.conf %config %{_sysconfdir}/rspamd/surbl-whitelist.inc %config %{_sysconfdir}/rspamd/worker-controller.inc %config %{_sysconfdir}/rspamd/worker-fuzzy.inc %config %{_sysconfdir}/rspamd/worker-normal.inc %config %{_sysconfdir}/rspamd/worker-proxy.inc %dir %{_sysconfdir}/rspamd/local.d %config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-controller.inc %config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-normal.inc %config(noreplace) %{_sysconfdir}/rspamd/local.d/worker-proxy.inc %dir %{_sysconfdir}/rspamd/scores.d %config(noreplace) %{_sysconfdir}/rspamd/scores.d/fuzzy_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/headers_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/hfilter_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/mime_types_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/mua_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/phishing_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/policies_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/rbl_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/statistics_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/subject_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/surbl_group.conf %config(noreplace) %{_sysconfdir}/rspamd/scores.d/whitelist_group.conf %dir %{_sysconfdir}/rspamd/modules.d %config(noreplace) %{_sysconfdir}/rspamd/modules.d/antivirus.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/arc.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/asn.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/chartable.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/clickhouse.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/dcc.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/dkim.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/dkim_signing.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/dmarc.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/elastic.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/emails.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/external_services.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/force_actions.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/forged_recipients.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/fuzzy_check.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/greylist.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/history_redis.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/hfilter.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/ip_score.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/maillist.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/metadata_exporter.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/metric_exporter.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/mid.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/mime_types.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/multimap.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/mx_check.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/neural.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/once_received.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/phishing.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/ratelimit.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/rbl.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/redis.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/regexp.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/replies.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/reputation.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/milter_headers.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/rspamd_update.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/spamassassin.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/spamtrap.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/spf.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/surbl.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/trie.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_redirector.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_reputation.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/url_tags.conf %config(noreplace) %{_sysconfdir}/rspamd/modules.d/whitelist.conf %dir %{_sysconfdir}/rspamd/override.d %dir %{_datadir}/examples %dir %{_datadir}/examples/rspamd %{_datadir}/examples/rspamd/rspamd.conf %dir %{_datadir}/rspamd %{_datadir}/rspamd/effective_tld_names.dat %dir %{_datadir}/rspamd/elastic %{_datadir}/rspamd/elastic/kibana.json %{_datadir}/rspamd/elastic/rspamd_template.json %dir %{_datadir}/rspamd/languages %{_datadir}/rspamd/languages/* %{_datadir}/rspamd/antivirus.lua %{_datadir}/rspamd/arc.lua %{_datadir}/rspamd/asn.lua %{_datadir}/rspamd/bayes_expiry.lua %{_datadir}/rspamd/clickhouse.lua %{_datadir}/rspamd/clustering.lua %{_datadir}/rspamd/dcc.lua %{_datadir}/rspamd/dkim_signing.lua %{_datadir}/rspamd/dmarc.lua %{_datadir}/rspamd/dynamic_conf.lua %{_datadir}/rspamd/elastic.lua %{_datadir}/rspamd/emails.lua %{_datadir}/rspamd/external_services.lua %{_datadir}/rspamd/force_actions.lua %{_datadir}/rspamd/forged_recipients.lua %{_datadir}/rspamd/fuzzy_collect.lua %{_datadir}/rspamd/greylist.lua %{_datadir}/rspamd/hfilter.lua %{_datadir}/rspamd/history_redis.lua %{_datadir}/rspamd/ip_score.lua %{_datadir}/rspamd/maillist.lua %{_datadir}/rspamd/maps_stats.lua %{_datadir}/rspamd/metadata_exporter.lua %{_datadir}/rspamd/metric_exporter.lua %{_datadir}/rspamd/mid.lua %{_datadir}/rspamd/milter_headers.lua %{_datadir}/rspamd/mime_types.lua %{_datadir}/rspamd/multimap.lua %{_datadir}/rspamd/mx_check.lua %{_datadir}/rspamd/neural.lua %{_datadir}/rspamd/once_received.lua %{_datadir}/rspamd/phishing.lua %{_datadir}/rspamd/ratelimit.lua %{_datadir}/rspamd/rbl.lua %{_datadir}/rspamd/replies.lua %{_datadir}/rspamd/reputation.lua %{_datadir}/rspamd/rspamd_update.lua %{_datadir}/rspamd/settings.lua %{_datadir}/rspamd/spamassassin.lua %{_datadir}/rspamd/spamtrap.lua %{_datadir}/rspamd/trie.lua %{_datadir}/rspamd/url_redirector.lua %{_datadir}/rspamd/url_reputation.lua %{_datadir}/rspamd/url_tags.lua %{_datadir}/rspamd/whitelist.lua %dir %{_datadir}/rspamd/lualib %{_datadir}/rspamd/lualib/ansicolors.lua %{_datadir}/rspamd/lualib/argparse.lua %{_datadir}/rspamd/lualib/fun.lua %{_datadir}/rspamd/lualib/global_functions.lua %{_datadir}/rspamd/lualib/lua_auth_results.lua %{_datadir}/rspamd/lualib/lua_cfg_transform.lua %{_datadir}/rspamd/lualib/lua_clickhouse.lua %{_datadir}/rspamd/lualib/lua_dkim_tools.lua %{_datadir}/rspamd/lualib/lua_fuzzy.lua %{_datadir}/rspamd/lualib/lua_maps.lua %{_datadir}/rspamd/lualib/lua_meta.lua %{_datadir}/rspamd/lualib/lua_nn.lua %{_datadir}/rspamd/lualib/lua_redis.lua %{_datadir}/rspamd/lualib/lua_selectors.lua %{_datadir}/rspamd/lualib/lua_stat.lua %{_datadir}/rspamd/lualib/lua_squeeze_rules.lua %{_datadir}/rspamd/lualib/lua_tcp_sync.lua %{_datadir}/rspamd/lualib/lua_util.lua %{_datadir}/rspamd/lualib/plugins_stats.lua %{_datadir}/rspamd/lualib/rescore_utility.lua %{_datadir}/rspamd/lualib/tableshape.lua %if %{with torch} %{_datadir}/rspamd/lualib/moses.lua %dir %{_datadir}/rspamd/lualib/decisiontree %{_datadir}/rspamd/lualib/decisiontree/CartNode.lua %{_datadir}/rspamd/lualib/decisiontree/CartTrainer.lua %{_datadir}/rspamd/lualib/decisiontree/CartTree.lua %{_datadir}/rspamd/lualib/decisiontree/DFD.lua %{_datadir}/rspamd/lualib/decisiontree/DataSet.lua %{_datadir}/rspamd/lualib/decisiontree/DecisionForest.lua %{_datadir}/rspamd/lualib/decisiontree/DecisionForestTrainer.lua %{_datadir}/rspamd/lualib/decisiontree/DecisionTree.lua %{_datadir}/rspamd/lualib/decisiontree/GiniState.lua %{_datadir}/rspamd/lualib/decisiontree/GradientBoostState.lua %{_datadir}/rspamd/lualib/decisiontree/GradientBoostTrainer.lua %{_datadir}/rspamd/lualib/decisiontree/LogitBoostCriterion.lua %{_datadir}/rspamd/lualib/decisiontree/MSECriterion.lua %{_datadir}/rspamd/lualib/decisiontree/RandomForestTrainer.lua %{_datadir}/rspamd/lualib/decisiontree/Sparse2Dense.lua %{_datadir}/rspamd/lualib/decisiontree/SparseTensor.lua %{_datadir}/rspamd/lualib/decisiontree/TreeState.lua %{_datadir}/rspamd/lualib/decisiontree/WorkPool.lua %{_datadir}/rspamd/lualib/decisiontree/_env.lua %{_datadir}/rspamd/lualib/decisiontree/benchmark.lua %{_datadir}/rspamd/lualib/decisiontree/init.lua %{_datadir}/rspamd/lualib/decisiontree/math.lua %{_datadir}/rspamd/lualib/decisiontree/test.lua %{_datadir}/rspamd/lualib/decisiontree/utils.lua %dir %{_datadir}/rspamd/lualib/lua_ffi/ %{_datadir}/rspamd/lualib/lua_ffi/common.lua %{_datadir}/rspamd/lualib/lua_ffi/dkim.lua %{_datadir}/rspamd/lualib/lua_ffi/init.lua %dir %{_datadir}/rspamd/lualib/lua_scanners/ %{_datadir}/rspamd/lualib/lua_scanners/clamav.lua %{_datadir}/rspamd/lualib/lua_scanners/common.lua %{_datadir}/rspamd/lualib/lua_scanners/dcc.lua %{_datadir}/rspamd/lualib/lua_scanners/fprot.lua %{_datadir}/rspamd/lualib/lua_scanners/icap.lua %{_datadir}/rspamd/lualib/lua_scanners/init.lua %{_datadir}/rspamd/lualib/lua_scanners/kaspersky_av.lua %{_datadir}/rspamd/lualib/lua_scanners/oletools.lua %{_datadir}/rspamd/lualib/lua_scanners/savapi.lua %{_datadir}/rspamd/lualib/lua_scanners/sophos.lua %{_datadir}/rspamd/lualib/lua_scanners/spamassassin.lua %{_datadir}/rspamd/lualib/lua_scanners/vadesecure.lua %dir %{_datadir}/rspamd/lualib/nn %{_datadir}/rspamd/lualib/nn/Abs.lua %{_datadir}/rspamd/lualib/nn/AbsCriterion.lua %{_datadir}/rspamd/lualib/nn/Add.lua %{_datadir}/rspamd/lualib/nn/AddConstant.lua %{_datadir}/rspamd/lualib/nn/BCECriterion.lua %{_datadir}/rspamd/lualib/nn/BatchNormalization.lua %{_datadir}/rspamd/lualib/nn/Bilinear.lua %{_datadir}/rspamd/lualib/nn/Bottle.lua %{_datadir}/rspamd/lualib/nn/CAdd.lua %{_datadir}/rspamd/lualib/nn/CAddTable.lua %{_datadir}/rspamd/lualib/nn/CAddTensorTable.lua %{_datadir}/rspamd/lualib/nn/CDivTable.lua %{_datadir}/rspamd/lualib/nn/CMaxTable.lua %{_datadir}/rspamd/lualib/nn/CMinTable.lua %{_datadir}/rspamd/lualib/nn/CMul.lua %{_datadir}/rspamd/lualib/nn/CMulTable.lua %{_datadir}/rspamd/lualib/nn/CReLU.lua %{_datadir}/rspamd/lualib/nn/CSubTable.lua %{_datadir}/rspamd/lualib/nn/Clamp.lua %{_datadir}/rspamd/lualib/nn/ClassNLLCriterion.lua %{_datadir}/rspamd/lualib/nn/ClassSimplexCriterion.lua %{_datadir}/rspamd/lualib/nn/Collapse.lua %{_datadir}/rspamd/lualib/nn/Concat.lua %{_datadir}/rspamd/lualib/nn/ConcatTable.lua %{_datadir}/rspamd/lualib/nn/Constant.lua %{_datadir}/rspamd/lualib/nn/Container.lua %{_datadir}/rspamd/lualib/nn/Contiguous.lua %{_datadir}/rspamd/lualib/nn/Convert.lua %{_datadir}/rspamd/lualib/nn/Copy.lua %{_datadir}/rspamd/lualib/nn/Cosine.lua %{_datadir}/rspamd/lualib/nn/CosineDistance.lua %{_datadir}/rspamd/lualib/nn/CosineEmbeddingCriterion.lua %{_datadir}/rspamd/lualib/nn/Criterion.lua %{_datadir}/rspamd/lualib/nn/CriterionTable.lua %{_datadir}/rspamd/lualib/nn/CrossEntropyCriterion.lua %{_datadir}/rspamd/lualib/nn/Decorator.lua %{_datadir}/rspamd/lualib/nn/DepthConcat.lua %{_datadir}/rspamd/lualib/nn/DistKLDivCriterion.lua %{_datadir}/rspamd/lualib/nn/DistanceRatioCriterion.lua %{_datadir}/rspamd/lualib/nn/DontCast.lua %{_datadir}/rspamd/lualib/nn/DotProduct.lua %{_datadir}/rspamd/lualib/nn/Dropout.lua %{_datadir}/rspamd/lualib/nn/ELU.lua %{_datadir}/rspamd/lualib/nn/ErrorMessages.lua %{_datadir}/rspamd/lualib/nn/Euclidean.lua %{_datadir}/rspamd/lualib/nn/Exp.lua %{_datadir}/rspamd/lualib/nn/FlattenTable.lua %{_datadir}/rspamd/lualib/nn/GPU.lua %{_datadir}/rspamd/lualib/nn/GatedLinearUnit.lua %{_datadir}/rspamd/lualib/nn/GradientReversal.lua %{_datadir}/rspamd/lualib/nn/HardShrink.lua %{_datadir}/rspamd/lualib/nn/HardTanh.lua %{_datadir}/rspamd/lualib/nn/HingeEmbeddingCriterion.lua %{_datadir}/rspamd/lualib/nn/Identity.lua %{_datadir}/rspamd/lualib/nn/Index.lua %{_datadir}/rspamd/lualib/nn/IndexLinear.lua %{_datadir}/rspamd/lualib/nn/Jacobian.lua %{_datadir}/rspamd/lualib/nn/JoinTable.lua %{_datadir}/rspamd/lualib/nn/Kmeans.lua %{_datadir}/rspamd/lualib/nn/L1Cost.lua %{_datadir}/rspamd/lualib/nn/L1HingeEmbeddingCriterion.lua %{_datadir}/rspamd/lualib/nn/L1Penalty.lua %{_datadir}/rspamd/lualib/nn/LayerNormalization.lua %{_datadir}/rspamd/lualib/nn/LeakyReLU.lua %{_datadir}/rspamd/lualib/nn/Linear.lua %{_datadir}/rspamd/lualib/nn/LinearWeightNorm.lua %{_datadir}/rspamd/lualib/nn/Log.lua %{_datadir}/rspamd/lualib/nn/LogSigmoid.lua %{_datadir}/rspamd/lualib/nn/LogSoftMax.lua %{_datadir}/rspamd/lualib/nn/LookupTable.lua %{_datadir}/rspamd/lualib/nn/MM.lua %{_datadir}/rspamd/lualib/nn/MSECriterion.lua %{_datadir}/rspamd/lualib/nn/MV.lua %{_datadir}/rspamd/lualib/nn/MapTable.lua %{_datadir}/rspamd/lualib/nn/MarginCriterion.lua %{_datadir}/rspamd/lualib/nn/MarginRankingCriterion.lua %{_datadir}/rspamd/lualib/nn/MaskedSelect.lua %{_datadir}/rspamd/lualib/nn/Max.lua %{_datadir}/rspamd/lualib/nn/Maxout.lua %{_datadir}/rspamd/lualib/nn/Mean.lua %{_datadir}/rspamd/lualib/nn/Min.lua %{_datadir}/rspamd/lualib/nn/MixtureTable.lua %{_datadir}/rspamd/lualib/nn/Module.lua %{_datadir}/rspamd/lualib/nn/ModuleCriterion.lua %{_datadir}/rspamd/lualib/nn/Mul.lua %{_datadir}/rspamd/lualib/nn/MulConstant.lua %{_datadir}/rspamd/lualib/nn/MultiCriterion.lua %{_datadir}/rspamd/lualib/nn/MultiLabelMarginCriterion.lua %{_datadir}/rspamd/lualib/nn/MultiLabelSoftMarginCriterion.lua %{_datadir}/rspamd/lualib/nn/MultiMarginCriterion.lua %{_datadir}/rspamd/lualib/nn/NaN.lua %{_datadir}/rspamd/lualib/nn/Narrow.lua %{_datadir}/rspamd/lualib/nn/NarrowTable.lua %{_datadir}/rspamd/lualib/nn/Normalize.lua %{_datadir}/rspamd/lualib/nn/OneHot.lua %{_datadir}/rspamd/lualib/nn/PReLU.lua %{_datadir}/rspamd/lualib/nn/Padding.lua %{_datadir}/rspamd/lualib/nn/PairwiseDistance.lua %{_datadir}/rspamd/lualib/nn/Parallel.lua %{_datadir}/rspamd/lualib/nn/ParallelCriterion.lua %{_datadir}/rspamd/lualib/nn/ParallelTable.lua %{_datadir}/rspamd/lualib/nn/PartialLinear.lua %{_datadir}/rspamd/lualib/nn/PixelShuffle.lua %{_datadir}/rspamd/lualib/nn/Power.lua %{_datadir}/rspamd/lualib/nn/PrintSize.lua %{_datadir}/rspamd/lualib/nn/Profile.lua %{_datadir}/rspamd/lualib/nn/RReLU.lua %{_datadir}/rspamd/lualib/nn/ReLU.lua %{_datadir}/rspamd/lualib/nn/ReLU6.lua %{_datadir}/rspamd/lualib/nn/Replicate.lua %{_datadir}/rspamd/lualib/nn/Reshape.lua %{_datadir}/rspamd/lualib/nn/Select.lua %{_datadir}/rspamd/lualib/nn/SelectTable.lua %{_datadir}/rspamd/lualib/nn/Sequential.lua %{_datadir}/rspamd/lualib/nn/Sigmoid.lua %{_datadir}/rspamd/lualib/nn/SmoothL1Criterion.lua %{_datadir}/rspamd/lualib/nn/SoftMarginCriterion.lua %{_datadir}/rspamd/lualib/nn/SoftMax.lua %{_datadir}/rspamd/lualib/nn/SoftMin.lua %{_datadir}/rspamd/lualib/nn/SoftPlus.lua %{_datadir}/rspamd/lualib/nn/SoftShrink.lua %{_datadir}/rspamd/lualib/nn/SoftSign.lua %{_datadir}/rspamd/lualib/nn/SparseJacobian.lua %{_datadir}/rspamd/lualib/nn/SparseLinear.lua %{_datadir}/rspamd/lualib/nn/SpatialAdaptiveAveragePooling.lua %{_datadir}/rspamd/lualib/nn/SpatialAdaptiveMaxPooling.lua %{_datadir}/rspamd/lualib/nn/SpatialAutoCropMSECriterion.lua %{_datadir}/rspamd/lualib/nn/SpatialAveragePooling.lua %{_datadir}/rspamd/lualib/nn/SpatialBatchNormalization.lua %{_datadir}/rspamd/lualib/nn/SpatialClassNLLCriterion.lua %{_datadir}/rspamd/lualib/nn/SpatialContrastiveNormalization.lua %{_datadir}/rspamd/lualib/nn/SpatialConvolution.lua %{_datadir}/rspamd/lualib/nn/SpatialConvolutionLocal.lua %{_datadir}/rspamd/lualib/nn/SpatialConvolutionMM.lua %{_datadir}/rspamd/lualib/nn/SpatialConvolutionMap.lua %{_datadir}/rspamd/lualib/nn/SpatialCrossMapLRN.lua %{_datadir}/rspamd/lualib/nn/SpatialDepthWiseConvolution.lua %{_datadir}/rspamd/lualib/nn/SpatialDilatedConvolution.lua %{_datadir}/rspamd/lualib/nn/SpatialDilatedMaxPooling.lua %{_datadir}/rspamd/lualib/nn/SpatialDivisiveNormalization.lua %{_datadir}/rspamd/lualib/nn/SpatialDropout.lua %{_datadir}/rspamd/lualib/nn/SpatialFractionalMaxPooling.lua %{_datadir}/rspamd/lualib/nn/SpatialFullConvolution.lua %{_datadir}/rspamd/lualib/nn/SpatialFullConvolutionMap.lua %{_datadir}/rspamd/lualib/nn/SpatialLPPooling.lua %{_datadir}/rspamd/lualib/nn/SpatialLogSoftMax.lua %{_datadir}/rspamd/lualib/nn/SpatialMaxPooling.lua %{_datadir}/rspamd/lualib/nn/SpatialMaxUnpooling.lua %{_datadir}/rspamd/lualib/nn/SpatialReflectionPadding.lua %{_datadir}/rspamd/lualib/nn/SpatialReplicationPadding.lua %{_datadir}/rspamd/lualib/nn/SpatialSoftMax.lua %{_datadir}/rspamd/lualib/nn/SpatialSubSampling.lua %{_datadir}/rspamd/lualib/nn/SpatialSubtractiveNormalization.lua %{_datadir}/rspamd/lualib/nn/SpatialUpSamplingBilinear.lua %{_datadir}/rspamd/lualib/nn/SpatialUpSamplingNearest.lua %{_datadir}/rspamd/lualib/nn/SpatialZeroPadding.lua %{_datadir}/rspamd/lualib/nn/SplitTable.lua %{_datadir}/rspamd/lualib/nn/Sqrt.lua %{_datadir}/rspamd/lualib/nn/Square.lua %{_datadir}/rspamd/lualib/nn/Squeeze.lua %{_datadir}/rspamd/lualib/nn/StochasticGradient.lua %{_datadir}/rspamd/lualib/nn/Sum.lua %{_datadir}/rspamd/lualib/nn/THNN.lua %{_datadir}/rspamd/lualib/nn/THNN_h.lua %{_datadir}/rspamd/lualib/nn/Tanh.lua %{_datadir}/rspamd/lualib/nn/TanhShrink.lua %{_datadir}/rspamd/lualib/nn/TemporalConvolution.lua %{_datadir}/rspamd/lualib/nn/TemporalDynamicKMaxPooling.lua %{_datadir}/rspamd/lualib/nn/TemporalMaxPooling.lua %{_datadir}/rspamd/lualib/nn/TemporalRowConvolution.lua %{_datadir}/rspamd/lualib/nn/TemporalSubSampling.lua %{_datadir}/rspamd/lualib/nn/Threshold.lua %{_datadir}/rspamd/lualib/nn/Transpose.lua %{_datadir}/rspamd/lualib/nn/Unsqueeze.lua %{_datadir}/rspamd/lualib/nn/View.lua %{_datadir}/rspamd/lualib/nn/VolumetricAveragePooling.lua %{_datadir}/rspamd/lualib/nn/VolumetricBatchNormalization.lua %{_datadir}/rspamd/lualib/nn/VolumetricConvolution.lua %{_datadir}/rspamd/lualib/nn/VolumetricDilatedConvolution.lua %{_datadir}/rspamd/lualib/nn/VolumetricDilatedMaxPooling.lua %{_datadir}/rspamd/lualib/nn/VolumetricDropout.lua %{_datadir}/rspamd/lualib/nn/VolumetricFractionalMaxPooling.lua %{_datadir}/rspamd/lualib/nn/VolumetricFullConvolution.lua %{_datadir}/rspamd/lualib/nn/VolumetricMaxPooling.lua %{_datadir}/rspamd/lualib/nn/VolumetricMaxUnpooling.lua %{_datadir}/rspamd/lualib/nn/VolumetricReplicationPadding.lua %{_datadir}/rspamd/lualib/nn/WeightNorm.lua %{_datadir}/rspamd/lualib/nn/WeightedEuclidean.lua %{_datadir}/rspamd/lualib/nn/WeightedMSECriterion.lua %{_datadir}/rspamd/lualib/nn/WhiteNoise.lua %{_datadir}/rspamd/lualib/nn/ZeroGrad.lua %{_datadir}/rspamd/lualib/nn/ZipTable.lua %{_datadir}/rspamd/lualib/nn/ZipTableOneToMany.lua %{_datadir}/rspamd/lualib/nn/hessian.lua %{_datadir}/rspamd/lualib/nn/init.lua %{_datadir}/rspamd/lualib/nn/test.lua %{_datadir}/rspamd/lualib/nn/utils.lua %dir %{_datadir}/rspamd/lualib/optim %{_datadir}/rspamd/lualib/optim/ConfusionMatrix.lua %{_datadir}/rspamd/lualib/optim/Logger.lua %{_datadir}/rspamd/lualib/optim/adadelta.lua %{_datadir}/rspamd/lualib/optim/adagrad.lua %{_datadir}/rspamd/lualib/optim/adam.lua %{_datadir}/rspamd/lualib/optim/adamax.lua %{_datadir}/rspamd/lualib/optim/asgd.lua %{_datadir}/rspamd/lualib/optim/cg.lua %{_datadir}/rspamd/lualib/optim/checkgrad.lua %{_datadir}/rspamd/lualib/optim/cmaes.lua %{_datadir}/rspamd/lualib/optim/de.lua %{_datadir}/rspamd/lualib/optim/fista.lua %{_datadir}/rspamd/lualib/optim/init.lua %{_datadir}/rspamd/lualib/optim/lbfgs.lua %{_datadir}/rspamd/lualib/optim/lswolfe.lua %{_datadir}/rspamd/lualib/optim/nag.lua %{_datadir}/rspamd/lualib/optim/polyinterp.lua %{_datadir}/rspamd/lualib/optim/rmsprop.lua %{_datadir}/rspamd/lualib/optim/rprop.lua %{_datadir}/rspamd/lualib/optim/sgd.lua %dir %{_datadir}/rspamd/lualib/paths %{_datadir}/rspamd/lualib/paths/init.lua %endif #if with torch %dir %{_datadir}/rspamd/lualib/rspamadm %{_datadir}/rspamd/lualib/rspamadm/confighelp.lua %{_datadir}/rspamd/lualib/rspamadm/configgraph.lua %{_datadir}/rspamd/lualib/rspamadm/configwizard.lua %{_datadir}/rspamd/lualib/rspamadm/cookie.lua %{_datadir}/rspamd/lualib/rspamadm/corpus_test.lua %{_datadir}/rspamd/lualib/rspamadm/fuzzy_convert.lua %{_datadir}/rspamd/lualib/rspamadm/fuzzy_stat.lua %{_datadir}/rspamd/lualib/rspamadm/grep.lua %{_datadir}/rspamd/lualib/rspamadm/keypair.lua %{_datadir}/rspamd/lualib/rspamadm/mime.lua %{_datadir}/rspamd/lualib/rspamadm/rescore.lua %{_datadir}/rspamd/lualib/rspamadm/stat_convert.lua %if %{with torch} %dir %{_datadir}/rspamd/lualib/torch %{_datadir}/rspamd/lualib/torch/CmdLine.lua %{_datadir}/rspamd/lualib/torch/FFInterface.lua %{_datadir}/rspamd/lualib/torch/File.lua %{_datadir}/rspamd/lualib/torch/Tensor.lua %{_datadir}/rspamd/lualib/torch/TestSuite.lua %{_datadir}/rspamd/lualib/torch/Tester.lua %{_datadir}/rspamd/lualib/torch/init.lua %{_datadir}/rspamd/lualib/torch/paths.lua %{_datadir}/rspamd/lualib/torch/test.lua %endif %dir %{_datadir}/rspamd/rules %{_datadir}/rspamd/rules/forwarding.lua %{_datadir}/rspamd/rules/headers_checks.lua %{_datadir}/rspamd/rules/html.lua %{_datadir}/rspamd/rules/http_headers.lua %{_datadir}/rspamd/rules/mid.lua %{_datadir}/rspamd/rules/misc.lua %{_datadir}/rspamd/rules/rspamd.classifiers.lua %{_datadir}/rspamd/rules/rspamd.lua %{_datadir}/rspamd/rules/subject_checks.lua %dir %{_datadir}/rspamd/rules/regexp %{_datadir}/rspamd/rules/regexp/compromised_hosts.lua %{_datadir}/rspamd/rules/regexp/headers.lua %{_datadir}/rspamd/rules/regexp/misc.lua %{_datadir}/rspamd/rules/regexp/upstream_spam_filters.lua %{_mandir}/man8/rspamd.8* %{_unitdir}/rspamd.service %dir %attr(750,%{rspamd_user},%{rspamd_group}) %{_localstatedir}/lib/rspamd %dir %attr(750,%{rspamd_user},%{rspamd_group}) %{_localstatedir}/log/rspamd %dir %{_wwwdir} %dir %{_wwwdir}/%{name} %{_wwwdir}/%{name}/README.md %{_wwwdir}/%{name}/favicon.ico %{_wwwdir}/%{name}/index.html %{_wwwdir}/%{name}/plugins.txt %{_wwwdir}/%{name}/react-index.html %dir %{_wwwdir}/%{name}/css %{_wwwdir}/%{name}/css/bootstrap.min.css %{_wwwdir}/%{name}/css/d3evolution.css %{_wwwdir}/%{name}/css/footable.bootstrap.min.css %{_wwwdir}/%{name}/css/nprogress.css %{_wwwdir}/%{name}/css/rspamd.css %dir %{_wwwdir}/%{name}/fonts %{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.ttf %{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.woff %{_wwwdir}/%{name}/fonts/glyphicons-halflings-regular.woff2 %dir %{_wwwdir}/%{name}/img %{_wwwdir}/%{name}/img/asc.png %{_wwwdir}/%{name}/img/desc.png %{_wwwdir}/%{name}/img/rspamd_logo_navbar.png %dir %{_wwwdir}/%{name}/js %{_wwwdir}/%{name}/js/main.js %dir %{_wwwdir}/%{name}/js/app %{_wwwdir}/%{name}/js/app/config.js %{_wwwdir}/%{name}/js/app/graph.js %{_wwwdir}/%{name}/js/app/history.js %{_wwwdir}/%{name}/js/app/rspamd.js %{_wwwdir}/%{name}/js/app/stats.js %{_wwwdir}/%{name}/js/app/symbols.js %{_wwwdir}/%{name}/js/app/upload.js %dir %{_wwwdir}/%{name}/js/lib %{_wwwdir}/%{name}/js/lib/bootstrap.min.js %{_wwwdir}/%{name}/js/lib/d3.min.js %{_wwwdir}/%{name}/js/lib/d3evolution.min.js %{_wwwdir}/%{name}/js/lib/d3pie.min.js %{_wwwdir}/%{name}/js/lib/domReady.js %{_wwwdir}/%{name}/js/lib/footable.min.js %{_wwwdir}/%{name}/js/lib/humanize.min.js %{_wwwdir}/%{name}/js/lib/jquery-3.3.1.min.js %{_wwwdir}/%{name}/js/lib/nprogress.min.js %{_wwwdir}/%{name}/js/lib/require.min.js %{_wwwdir}/%{name}/js/lib/visibility.min.js %if 0%{?with split_out_client} %files client %endif %{_mandir}/man1/rspamadm.1* %{_mandir}/man1/rspamc.1* %{_bindir}/rspamadm %{_bindir}/rspamc