##trace # force single job compilation #%%define _smp_mflags -j1 %global debug_package %{nil} %global _lto_cflags %{nil} %global gitdate 2026xxxx %global commit xxxx %global shortcommit %(c=%{commit}; echo ${c:0:7}) #%%global version 3.14.2 #%%global release 1 # set this to "1" if building a snapshot #%%global snapshot 0 #%%undefine _package_note_flags #%%define _build_id_links none Name: rspamd Version: 4.1.2 Release: 1%{?dist} Summary: Rapid spam filtering system License: ASL 2.0 and LGPLv3 and BSD and MIT and CC0 and zlib URL: https://github.com/rspamd/rspamd/ Source0: https://github.com/rspamd/rspamd/archive/%{version}.tar.gz#/%{name}-%{version}.tar.gz Source1: 80-rspamd.preset Source2: rspamd.logrotate Source3: rspamd.sysusers Source4: rspamd.tmpfilesd # https://gitlab.archlinux.org/archlinux/packaging/packages/rspamd BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: ninja-build BuildRequires: perl BuildRequires: ragel BuildRequires: binutils-devel BuildRequires: file-devel BuildRequires: glib2-devel BuildRequires: jemalloc-devel BuildRequires: lapack-devel BuildRequires: libarchive-devel BuildRequires: libcurl-devel BuildRequires: libicu-devel BuildRequires: libsodium-devel BuildRequires: libunwind-devel BuildRequires: libzstd-devel BuildRequires: luajit-devel BuildRequires: openblas-devel BuildRequires: openssl-devel BuildRequires: pcre2-devel BuildRequires: sqlite-devel BuildRequires: vectorscan-devel BuildRequires: xxhash-devel BuildRequires: zlib-devel BuildRequires: systemd-units BuildRequires: systemd-rpm-macros Requires: jemalloc Requires: logrotate Requires: luajit Requires: openblas Requires: pcre2 Requires: vectorscan Requires: xxhash Requires: fmt Requires: libarchive Requires: libcurl Requires: libzstd Requires: zlib %description Rspamd is a rapid, modular and lightweight spam filter. It is designed to work with big amount of mail and can be easily extended with own filters written in lua. %package plugin-aliases Summary: Rspamd aliases Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-aliases Rspamd aliases Lua plugin. FIXME %package plugin-antivirus Summary: Rspamd antivirus Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-antivirus Rspamd antivirus Lua plugin. The Antivirus module integrates with various virus scanners https://docs.rspamd.com/modules/antivirus %package plugin-arc Summary: Rspamd arc Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-arc Rspamd arc Lua plugin. This module verifies and signs ARC (Authenticated Received Chain) signatures and seals for emails. https://docs.rspamd.com/modules/arc %package plugin-asn Summary: Rspamd asn Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-asn Rspamd asn Lua plugin. The ASN module retrieves Autonomous System Number (ASN) information and related data for the sender's IP address. This includes the ASN, country code of the ASN owner, and the IP's announced subnet (network prefix). The retrieved information is stored as mempool variables and made available to other plugins and modules for use in filtering rules. https://docs.rspamd.com/modules/asn %package plugin-aws-s3 Summary: Rspamd aws_s3 Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-aws-s3 Rspamd aws_s3 Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/aws_s3.conf %package plugin-bayes-expiry Summary: Rspamd bayes_expiry Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-bayes-expiry Rspamd bayes_expiry Lua plugin. The bayes expiry module provides intelligent expiration of statistical tokens for Redis-based Bayesian classifiers using the new schema storage format. https://docs.rspamd.com/modules/bayes_expiry %package plugin-bimi Summary: Rspamd bimi Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-bimi Rspamd bimi Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/bimi.conf %package plugin-clickhouse Summary: Rspamd clickhouse Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-clickhouse Rspamd clickhouse Lua plugin. The Clickhouse module pushes message-related metadata to ClickHouse, an open-source column-oriented database management system optimized for real-time analytics. https://docs.rspamd.com/modules/clickhouse %package plugin-clustering Summary: Rspamd clustering Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-clustering Rspamd clustering Lua plugin. FIXME %package plugin-contextal Summary: Rspamd contextal Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-contextal Rspamd contextal Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/contextal.conf FIXME %package plugin-dcc Summary: Rspamd dcc Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-dcc Rspamd dcc Lua plugin. This module performs DCC (Distributed Checksum Clearinghouses) lookups to determine the bulkiness of a message based on how many recipients have seen similar content. https://docs.rspamd.com/modules/dcc %package plugin-dkim-signing Summary: Rspamd dkim_signing Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-dkim-signing Rspamd dkim_signing Lua plugin. The Rspamd 1.5 version has introduced a convenient method of configuring DKIM signing through the addition of the DKIM signing module. A more customizable option is available in the DKIM module through the sign_condition. DKIM signing currently works with Milter based MTAs (Sendmail, Postfix), Haraka & Communigate. For DKIM signing to work, you must scan outbound mail with rspamd. https://docs.rspamd.com/modules/dkim_signing %package plugin-dmarc Summary: Rspamd dmarc Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-dmarc Rspamd dmarc Lua plugin. DMARC is a technology that uses SPF and DKIM to enable domain owners to publish policies regarding how email messages with their domain in the (RFC5322) From field should be handled. https://docs.rspamd.com/modules/dmarc %package plugin-dynamic-conf Summary: Rspamd dynamic_conf Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-dynamic-conf Rspamd dynamic_conf Lua plugin. %package plugin-elastic Summary: Rspamd elastic Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-elastic Rspamd elastic Lua plugin. Elasticsearch module pushes a variety of message-related metadata to an instance of Elasticsearch or OpenSearch. https://docs.rspamd.com/modules/elastic #%%package plugin-emails #Summary: Rspamd emails Lua plugin #Requires: %%{name}%%{?_isa} = %%{version}-%%{release} #%%description plugin-emails #Rspamd emails Lua plugin. #Deprecated, preserved for compatibility purposes! Use rbl module. %package plugin-external-relay Summary: Rspamd external_relay Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-external-relay Rspamd external_relay Lua plugin. This plugin is designed for users who need to conduct scans after the MX has processed a message, such as those who receive mail over POP3 and forward it to a local MTA. https://docs.rspamd.com/modules/external_relay %package plugin-external-services Summary: Rspamd external_services Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-external-services Rspamd external_services Lua plugin. The External Services module, which has been available since Rspamd 1.9.0, enables integration with a range of external services. https://docs.rspamd.com/modules/external_services %package plugin-force-actions Summary: Rspamd force_actions Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-force-actions Rspamd force_actions Lua plugin. The purpose of this module is to force an action to be applied if particular symbols are found/not found and optionally return a specified SMTP message. https://docs.rspamd.com/modules/force_actions %package plugin-forged-recipients Summary: Rspamd forged_recipients Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-forged-recipients Rspamd forged_recipients Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/forged_recipients.conf FIXME %package plugin-fuzzy-collect Summary: Rspamd fuzzy_collect Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-fuzzy-collect Rspamd fuzzy_collect Lua plugin. The fuzzy_check module queries fuzzy storage workers to find messages matching known fuzzy patterns. It also handles learning (adding hashes to storage) when triggered via rspamc or the controller API. https://docs.rspamd.com/modules/fuzzy_check %package plugin-gpt Summary: Rspamd gpt Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-lualib-llm = %{version}-%{release} %description plugin-gpt Rspamd gpt Lua plugin. The Rspamd GPT Plugin, introduced in Rspamd 3.9, integrates OpenAI's GPT API to enhance spam filtering capabilities using advanced natural language processing techniques. https://docs.rspamd.com/modules/gpt %package plugin-greylist Summary: Rspamd greylist Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-greylist Rspamd greylist Lua plugin. The purpose of this module is to delay messages that have a spam score above the greylisting action threshold. https://docs.rspamd.com/modules/greylisting %package plugin-hfilter Summary: Rspamd hfilter Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-hfilter Rspamd hfilter Lua plugin. The hfilter module is a collection of lightweight checks targeting common problems and bad patterns in SMTP HELO, reverse DNS/hostname, From, recipients, message-id, and message content (URLs). It is used to add small, explainable signals that often correlate with spammy infrastructure or message formatting issues https://docs.rspamd.com/modules/hfilter %package plugin-history-redis Summary: Rspamd history_redis Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-history-redis Rspamd history_redis Lua plugin. The purpose of this module is to enable the storage of history in Redis lists with increased precision, thanks to its finer control over fields, optional compression, and out-of-the-box cluster support. https://docs.rspamd.com/modules/history_redis %package plugin-http-headers Summary: Rspamd http_headers Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-http-headers Rspamd http_headers Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/http_headers.conf FIXME #%%package plugin-ip-score #Summary: Rspamd ip_score Lua plugin #Requires: %%{name}%%{?_isa} = %%{version}-%%{release} #%%description plugin-ip-score #Rspamd ip_score Lua plugin. %package plugin-known-senders Summary: Rspamd known_senders Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-known-senders Rspamd known_senders Lua plugin. The known_senders module maintains a Redis-backed set of hashed sender addresses for a configured set of domains. It lets you: - mark messages from previously seen senders as known - flag first-time senders from those domains - verify inbound replies using data produced by the replies module (global and per-sender local checks) Requires Redis; optional support for RedisBloom. https://docs.rspamd.com/modules/known_senders %package plugin-maillist Summary: Rspamd maillist Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-maillist Rspamd maillist Lua plugin. The mailing lists module detects messages delivered via common mailing list software. It is typically used to reduce or suppress scores from rules that would otherwise trigger on list mail (e.g. bulk-like traits, footer content, or subject munging). https://docs.rspamd.com/modules/maillist %package plugin-maps-stats Summary: Rspamd maps_stats Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-maps-stats Rspamd maps_stats Lua plugin. FIXME %package plugin-metadata-exporter Summary: Rspamd metadata_exporter Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-metadata-exporter Rspamd metadata_exporter Lua plugin. The Metadata exporter operates on a set of rules that identify interesting messages, and subsequently sends information based on these rules to an external service. The exporter supports Redis Pub/Sub, HTTP POST, and SMTP as built-in backends, while also allowing users to define custom backends as desired. https://docs.rspamd.com/modules/metadata_exporter %package plugin-metric-exporter Summary: Rspamd metric_exporter Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-metric-exporter Rspamd metric_exporter Lua plugin. Metric exporter collects statistics from Rspamd and feeds them to external monitoring/graphing systems. Graphite is the only supported backend for now. https://docs.rspamd.com/modules/metric_exporter %package plugin-mid Summary: Rspamd mid Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-mid Rspamd mid Lua plugin. The purpose of the MID module is to suppress the INVALID_MSGID (malformed Message-ID header) and MISSING_MID (missing Message-ID) rules for messages which are DKIM-signed by some particular domains. The module is disabled by default and requires a source map to be configured before it becomes active. https://docs.rspamd.com/modules/mid %package plugin-milter-headers Summary: Rspamd milter_headers Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-milter-headers Rspamd milter_headers Lua plugin. The milter headers module (formerly known as rmilter headers) has been added in Rspamd 1.5 to provide a relatively simple way to configure adding/removing of headers via Rmilter (the alternative being to use the API). https://docs.rspamd.com/modules/milter_headers %package plugin-mime-types Summary: Rspamd mime_types Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-mime-types Rspamd mime_types Lua plugin. This module is intended to do some mime types sanity checks. That includes the following: - Checks whether mime type is from the good list (e.g. multipart/alternative or text/html) - Checks if a mime type is from the bad list (e.g. multipart/form-data) - Checks if an attachment filename extension is different from the intended mime type - Checks for archives content (rar and zip are supported) and find certain bad files inside - Checks for some other bad patterns commonly used by spammers, e.g. extensions hiding (e.g. .pdf.exe) https://docs.rspamd.com/modules/mime_types %package plugin-multimap Summary: Rspamd multimap Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-multimap Rspamd multimap Lua plugin. The Multimap module has been specifically designed to handle rules that are based on various types of lists which are dynamically updated by Rspamd, and are referred to as maps. This module is particularly useful for organizing whitelists, blacklists, and other lists via files. Additionally, it is capable of loading remote lists using the HTTP and HTTPS protocols or the RESP (REdis Serialization Protocol). https://docs.rspamd.com/modules/multimap %package plugin-mx-check Summary: Rspamd mx_check Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-mx-check Rspamd mx_check Lua plugin. The MX Check module verifies that the sending domains in a message actually have working mail infrastructure. For each candidate domain it resolves the MX records (falling back to A/AAAA per RFC 5321 §5.1 when no MX exists), classifies the resolved IP addresses, and — for routable, public addresses — opens a short TCP probe to port 25 to confirm that something is listening. The outcome is expressed through a rich set of symbols so that the spam filter can score legitimate senders, forged/parked domains, and transient failures differently. https://docs.rspamd.com/modules/mx_check %package plugin-neural Summary: Rspamd neural Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-lualib-llm = %{version}-%{release} %description plugin-neural Rspamd neural Lua plugin. The neural network module performs post-classification of messages using a small neural network. https://docs.rspamd.com/modules/neural %package plugin-once-received Summary: Rspamd once_received Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-once-received Rspamd once_received Lua plugin. This module is intended to do simple checks for mail with one Received header. The underlying concept is that genuine emails tend to have multiple received headers, whereas spam originating from compromised user devices often exhibit certain negative characteristics, such as the use of dynamic or broadband IP addresses. https://docs.rspamd.com/modules/once_received %package plugin-p0f Summary: Rspamd p0f Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-p0f Rspamd p0f Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/p0f.conf FIXME %package plugin-phishing Summary: Rspamd phishing Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-phishing Rspamd phishing Lua plugin. The purpose of this module is to identify potentially phished URLs. https://docs.rspamd.com/modules/phishing %package plugin-ratelimit Summary: Rspamd ratelimit Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-ratelimit Rspamd ratelimit Lua plugin. Ratelimit plugin is designed to limit messages coming from certain senders, to certain recipients from certain IP addresses combining these parameters into a separate limits. To enable a shared cache across multiple scanners, all the established limits are securely stored within a Redis server (or a cluster of servers). https://docs.rspamd.com/modules/ratelimit %package plugin-rbl Summary: Rspamd rbl Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-rbl Rspamd rbl Lua plugin. The RBL module offers support for checking various message elements, such as the sender's IP addresses, URLs, emails, Received headers chains, SMTP data (e.g. HELO domain), and more, against a set of Runtime Black Lists (RBL) typically provided through dedicated DNS zones. https://docs.rspamd.com/modules/rbl %package plugin-replies Summary: Rspamd replies Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-replies Rspamd replies Lua plugin. This module gathers the message-id header of emails that authenticated users have sent and saves the corresponding hashes to Redis. https://docs.rspamd.com/modules/replies %package plugin-reputation Summary: Rspamd reputation Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-reputation Rspamd reputation Lua plugin. This plugin is designed to monitor the reputation of various objects and adjust scores accordingly. https://docs.rspamd.com/modules/reputation %package plugin-rspamd-update Summary: Rspamd rspamd_update Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-rspamd-update Rspamd rspamd_update Lua plugin. This module enables you to load rspamd rules, adjust symbol scores, and implement actions without restarting the full daemon. https://docs.rspamd.com/modules/rspamd_update %package plugin-settings Summary: Rspamd settings Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-settings Rspamd settings Lua plugin. FIXME %package plugin-spamassassin Summary: Rspamd spamassassin Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-spamassassin Rspamd spamassassin Lua plugin. This module is intended to enable the adoption and reading of SpamAssassin rules within Rspamd. https://docs.rspamd.com/modules/spamassassin %package plugin-spamtrap Summary: Rspamd spamtrap Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-spamtrap Rspamd spamtrap Lua plugin. The spamtrap module enables you to catch trapped spam emails, and even those from a catch-all domain. https://docs.rspamd.com/modules/spamtrap %package plugin-spf Summary: Rspamd spf Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-spf Rspamd spf Lua plugin. The SPF module checks the sender's SPF Many mail providers use SPF records to determine eligible hosts for sending email on a specific domain. https://docs.rspamd.com/modules/spf #%%package plugin-trie #Summary: Rspamd trie Lua plugin #Requires: %%{name}%%{?_isa} = %%{version}-%%{release} #%%description plugin-trie #Rspamd trie Lua plugin. %package plugin-url-redirector Summary: Rspamd url_redirector Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-url-redirector Rspamd url_redirector Lua plugin. This module provides a hook for RBL module to resolve redirects. https://docs.rspamd.com/modules/url_redirector %package plugin-url-suspect Summary: Rspamd url_suspect Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-url-suspect Rspamd url_suspect Lua plugin. https://github.com/rspamd/rspamd/blob/master/conf/modules.d/url_suspect.conf FIXME %package plugin-whitelist Summary: Rspamd whitelist Lua plugin Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-whitelist Rspamd whitelist Lua plugin. Whitelist module is intended to decrease or increase scores for some messages that are known to be from the trusted sources based on DKIM/SPF/DMARC policies (for generic lists please use multimap module). https://docs.rspamd.com/modules/whitelist %package webui Summary: Rspamd web interface Requires: %{name}%{?_isa} = %{version}-%{release} %description webui Rspamd web interface %package plugins-all Summary: All packaged Rspamd Lua plugins Requires: %{name}-lualib-extra = %{version}-%{release} Requires: %{name}-plugin-aliases = %{version}-%{release} Requires: %{name}-plugin-antivirus = %{version}-%{release} Requires: %{name}-plugin-arc = %{version}-%{release} Requires: %{name}-plugin-asn = %{version}-%{release} Requires: %{name}-plugin-aws-s3 = %{version}-%{release} Requires: %{name}-plugin-bayes-expiry = %{version}-%{release} Requires: %{name}-plugin-bimi = %{version}-%{release} Requires: %{name}-plugin-clickhouse = %{version}-%{release} Requires: %{name}-plugin-clustering = %{version}-%{release} Requires: %{name}-plugin-contextal = %{version}-%{release} Requires: %{name}-plugin-dcc = %{version}-%{release} Requires: %{name}-plugin-dkim-signing = %{version}-%{release} Requires: %{name}-plugin-dmarc = %{version}-%{release} Requires: %{name}-plugin-dynamic-conf = %{version}-%{release} Requires: %{name}-plugin-elastic = %{version}-%{release} #Requires: %%{name}-plugin-emails = %%{version}-%%{release} Requires: %{name}-plugin-external-relay = %{version}-%{release} Requires: %{name}-plugin-external-services = %{version}-%{release} Requires: %{name}-plugin-force-actions = %{version}-%{release} Requires: %{name}-plugin-forged-recipients = %{version}-%{release} Requires: %{name}-plugin-fuzzy-collect = %{version}-%{release} Requires: %{name}-plugin-gpt = %{version}-%{release} Requires: %{name}-plugin-greylist = %{version}-%{release} Requires: %{name}-plugin-hfilter = %{version}-%{release} Requires: %{name}-plugin-history-redis = %{version}-%{release} Requires: %{name}-plugin-http-headers = %{version}-%{release} #Requires: %%{name}-plugin-ip-score = %%{version}-%%{release} Requires: %{name}-plugin-known-senders = %{version}-%{release} Requires: %{name}-plugin-maillist = %{version}-%{release} Requires: %{name}-plugin-maps-stats = %{version}-%{release} Requires: %{name}-plugin-metadata-exporter = %{version}-%{release} Requires: %{name}-plugin-metric-exporter = %{version}-%{release} Requires: %{name}-plugin-mid = %{version}-%{release} Requires: %{name}-plugin-milter-headers = %{version}-%{release} Requires: %{name}-plugin-mime-types = %{version}-%{release} Requires: %{name}-plugin-multimap = %{version}-%{release} Requires: %{name}-plugin-mx-check = %{version}-%{release} Requires: %{name}-plugin-neural = %{version}-%{release} Requires: %{name}-plugin-once-received = %{version}-%{release} Requires: %{name}-plugin-p0f = %{version}-%{release} Requires: %{name}-plugin-phishing = %{version}-%{release} Requires: %{name}-plugin-ratelimit = %{version}-%{release} Requires: %{name}-plugin-rbl = %{version}-%{release} Requires: %{name}-plugin-replies = %{version}-%{release} Requires: %{name}-plugin-reputation = %{version}-%{release} Requires: %{name}-plugin-rspamd-update = %{version}-%{release} Requires: %{name}-plugin-settings = %{version}-%{release} Requires: %{name}-plugin-spamassassin = %{version}-%{release} Requires: %{name}-plugin-spamtrap = %{version}-%{release} Requires: %{name}-plugin-spf = %{version}-%{release} #Requires: %%{name}-plugin-trie = %%{version}-%%{release} Requires: %{name}-plugin-url-redirector = %{version}-%{release} Requires: %{name}-plugin-url-suspect = %{version}-%{release} Requires: %{name}-plugin-whitelist = %{version}-%{release} %description plugins-all Meta package that installs all packaged upstream Rspamd Lua plugins. %package rules-core Summary: Core upstream Rspamd Lua rules Requires: %{name}%{?_isa} = %{version}-%{release} %description rules-core Core upstream Rspamd Lua rules. %package rules-regexp Summary: Upstream Rspamd regexp Lua rules Requires: %{name}%{?_isa} = %{version}-%{release} %description rules-regexp Upstream Rspamd regexp Lua rules. %package rules-controller Summary: Upstream Rspamd controller Lua rules Requires: %{name}%{?_isa} = %{version}-%{release} %description rules-controller Upstream Rspamd controller Lua rules used by controller/WebUI helper endpoints. %package rules-all Summary: All packaged upstream Rspamd Lua rules Requires: %{name}-rules-core = %{version}-%{release} Requires: %{name}-rules-regexp = %{version}-%{release} Requires: %{name}-rules-controller = %{version}-%{release} %description rules-all Meta package that installs all packaged upstream Rspamd Lua rules. %package lualib-extra Summary: Optional Rspamd Lua support libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description lualib-extra Optional upstream Rspamd Lua support libraries used by non-minimal plugins, rules, and administrative workflows. %package lualib-llm Summary: Rspamd LLM Lua support libraries Requires: %{name}%{?_isa} = %{version}-%{release} %description lualib-llm Rspamd Lua helpers shared by LLM-capable plugins such as gpt and neural. %package full Summary: Full Rspamd install with all packaged plugins, rules and the webui Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}-plugins-all = %{version}-%{release} Requires: %{name}-rules-all = %{version}-%{release} Requires: %{name}-lualib-extra = %{version}-%{release} Requires: %{name}-lualib-llm = %{version}-%{release} Requires: %{name}-webui = %{version}-%{release} %description full Meta package that installs Rspamd with all packaged upstream Lua plugins and rules. %prep %autosetup -p1 -n %{name}-%{version} %cmake \ -DENABLE_LTO=ON \ -DDEBIAN_BUILD=0 \ -DLINKER_NAME=/usr/bin/ld.bfd \ -DNO_SHARED=ON \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DCONFDIR=%{_sysconfdir}/%{name} \ -DMANDIR=%{_mandir} \ -DDBDIR=%{_localstatedir}/lib/rspamd \ -DRUNDIR=%{_rundir}/%{name} \ -DLOGDIR=%{_localstatedir}/log/%{name} \ -DSHAREDIR=%{_datadir}/%{name} \ -DLIBDIR=%{_libdir}/%{name}/ \ -DSYSTEMDDIR=%{_unitdir} \ -DWANT_SYSTEMD_UNITS=OFF \ -DRSPAMD_USER=%{name} \ -DRSPAMD_GROUP=%{name} \ -DENABLE_LIBUNWIND=ON \ -DENABLE_HYPERSCAN=ON \ -DENABLE_LUAJIT=ON \ -DENABLE_JEMALLOC=ON \ -DENABLE_OPTIMIZATION=ON \ -DENABLE_SNOWBALL=ON \ -DENABLE_PCRE2=ON \ -DSYSTEM_XXHASH=ON \ -DSYSTEM_ZSTD=ON \ -DENABLE_BLAS=ON \ -DINSTALL_WEBUI=ON \ -DINSTALL_EXAMPLES=OFF \ -DENABLE_URL_INCLUDE=ON \ -DNO_TARGET_VERSIONS=ON %cmake_build %install %cmake_install rm -f %{buildroot}%{_libdir}/debug/usr/bin/rspam* # Remove default config files rm -rf %{buildroot}%{_sysconfdir}/%{name}/* # Remove man pages rm -rf %{buildroot}%{_mandir} # remove deprecated emails plugin # https://docs.rspamd.com/modules/emails rm -v %{buildroot}%{_datadir}/%{name}/plugins/emails.lua # this module was removed in rspamd 2.0 # https://docs.rspamd.com/modules/ip_score rm -v %{buildroot}%{_datadir}/%{name}/plugins/ip_score.lua # remove deprecated trie plugin # https://docs.rspamd.com/modules/trie rm -v %{buildroot}%{_datadir}/%{name}/plugins/trie.lua %files %{_bindir}/rspam{adm,c,d}{,-%{version}} %{_bindir}/rspamd_stats %{_bindir}/mapstats %dir %{_datadir}/%{name} %{_datadir}/%{name}/effective_tld_names.dat %dir %{_datadir}/%{name}/{languages,plugins,rules,lualib} %{_datadir}/%{name}/languages/* %{_datadir}/%{name}/lualib/fun.lua %{_datadir}/%{name}/lualib/global_functions.lua %{_datadir}/%{name}/lualib/lua_cache.lua %{_datadir}/%{name}/lualib/lua_cfg_transform.lua %{_datadir}/%{name}/lualib/lua_cfg_utils.lua %{_datadir}/%{name}/lualib/lua_hs_cache.lua %{_datadir}/%{name}/lualib/lua_maps.lua %{_datadir}/%{name}/lualib/lua_maps_expressions.lua %{_datadir}/%{name}/lualib/lua_meta.lua %{_datadir}/%{name}/lualib/lua_mime.lua %{_datadir}/%{name}/lualib/lua_redis.lua %{_datadir}/%{name}/lualib/lua_settings.lua %{_datadir}/%{name}/lualib/lua_stat.lua %{_datadir}/%{name}/lualib/lua_util.lua %{_datadir}/%{name}/lualib/lua_verdict.lua %{_datadir}/%{name}/lualib/lupa.lua %dir %{_datadir}/%{name}/lualib/{lua_magic,lua_selectors,lua_shape,plugins,rspamadm,redis_scripts} %{_datadir}/%{name}/lualib/lua_magic/types.lua %{_datadir}/%{name}/lualib/lua_selectors/*.lua %{_datadir}/%{name}/lualib/lua_shape/core.lua %{_datadir}/%{name}/lualib/lua_shape/plugin_schema.lua %{_datadir}/%{name}/lualib/lua_shape/registry.lua %{_libdir}/%{name}/* %dir %{_sysconfdir}/%{name} %files plugin-aliases %{_datadir}/%{name}/plugins/aliases.lua %{_datadir}/%{name}/lualib/lua_aliases.lua %files plugin-antivirus %{_datadir}/%{name}/plugins/antivirus.lua %dir %{_datadir}/%{name}/lualib/lua_scanners %{_datadir}/%{name}/lualib/lua_scanners/*.lua %files plugin-arc %{_datadir}/%{name}/plugins/arc.lua %files plugin-asn %{_datadir}/%{name}/plugins/asn.lua %files plugin-aws-s3 %{_datadir}/%{name}/plugins/aws_s3.lua %{_datadir}/%{name}/lualib/lua_aws.lua %files plugin-bayes-expiry %{_datadir}/%{name}/plugins/bayes_expiry.lua %files plugin-bimi %{_datadir}/%{name}/plugins/bimi.lua %files plugin-clickhouse %{_datadir}/%{name}/plugins/clickhouse.lua %files plugin-clustering %{_datadir}/%{name}/plugins/clustering.lua %files plugin-contextal %{_datadir}/%{name}/plugins/contextal.lua %files plugin-dcc %{_datadir}/%{name}/plugins/dcc.lua %files plugin-dkim-signing %{_datadir}/%{name}/plugins/dkim_signing.lua %files plugin-dmarc %{_datadir}/%{name}/plugins/dmarc.lua %{_datadir}/%{name}/lualib/plugins/dmarc.lua %files plugin-dynamic-conf %{_datadir}/%{name}/plugins/dynamic_conf.lua %files plugin-elastic %{_datadir}/%{name}/plugins/elastic.lua #%%files plugin-emails #%%{_datadir}/%%{name}/plugins/emails.lua %files plugin-external-relay %{_datadir}/%{name}/plugins/external_relay.lua %files plugin-external-services %{_datadir}/%{name}/plugins/external_services.lua %files plugin-force-actions %{_datadir}/%{name}/plugins/force_actions.lua %files plugin-forged-recipients %{_datadir}/%{name}/plugins/forged_recipients.lua %files plugin-fuzzy-collect %{_datadir}/%{name}/plugins/fuzzy_collect.lua %files plugin-gpt %{_datadir}/%{name}/plugins/gpt.lua %files plugin-greylist %{_datadir}/%{name}/plugins/greylist.lua %files plugin-hfilter %{_datadir}/%{name}/plugins/hfilter.lua %files plugin-history-redis %{_datadir}/%{name}/plugins/history_redis.lua %files plugin-http-headers %{_datadir}/%{name}/plugins/http_headers.lua #%%files plugin-ip-score #%%{_datadir}/%%{name}/plugins/ip_score.lua %files plugin-known-senders %{_datadir}/%{name}/plugins/known_senders.lua %files plugin-maillist %{_datadir}/%{name}/plugins/maillist.lua %files plugin-maps-stats %{_datadir}/%{name}/plugins/maps_stats.lua %files plugin-metadata-exporter %{_datadir}/%{name}/plugins/metadata_exporter.lua %files plugin-metric-exporter %{_datadir}/%{name}/plugins/metric_exporter.lua %files plugin-mid %{_datadir}/%{name}/plugins/mid.lua %files plugin-milter-headers %{_datadir}/%{name}/plugins/milter_headers.lua %files plugin-mime-types %{_datadir}/%{name}/plugins/mime_types.lua %files plugin-multimap %{_datadir}/%{name}/plugins/multimap.lua %files plugin-mx-check %{_datadir}/%{name}/plugins/mx_check.lua %files plugin-neural %{_datadir}/%{name}/plugins/neural.lua %{_datadir}/%{name}/lualib/lua_neural_external.lua %{_datadir}/%{name}/lualib/lua_neural_learn.lua %{_datadir}/%{name}/lualib/plugins/neural.lua %{_datadir}/%{name}/lualib/redis_scripts/neural_maybe_invalidate.lua %{_datadir}/%{name}/lualib/redis_scripts/neural_maybe_lock.lua %{_datadir}/%{name}/lualib/redis_scripts/neural_save_unlock.lua %{_datadir}/%{name}/lualib/redis_scripts/neural_train_size.lua %files plugin-once-received %{_datadir}/%{name}/plugins/once_received.lua %files plugin-p0f %{_datadir}/%{name}/plugins/p0f.lua %files plugin-phishing %{_datadir}/%{name}/plugins/phishing.lua %files plugin-ratelimit %{_datadir}/%{name}/plugins/ratelimit.lua %{_datadir}/%{name}/lualib/plugins/ratelimit.lua %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_check.lua %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_cleanup_pending.lua %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_update.lua %files plugin-rbl %{_datadir}/%{name}/plugins/rbl.lua %{_datadir}/%{name}/lualib/plugins/rbl.lua %files plugin-replies %{_datadir}/%{name}/plugins/replies.lua %files plugin-reputation %{_datadir}/%{name}/plugins/reputation.lua %files plugin-rspamd-update %{_datadir}/%{name}/plugins/rspamd_update.lua %files plugin-settings %{_datadir}/%{name}/plugins/settings.lua %files plugin-spamassassin %{_datadir}/%{name}/plugins/spamassassin.lua %files plugin-spamtrap %{_datadir}/%{name}/plugins/spamtrap.lua %files plugin-spf %{_datadir}/%{name}/plugins/spf.lua #%%files plugin-trie #%%{_datadir}/%%{name}/plugins/trie.lua %files plugin-url-redirector %{_datadir}/%{name}/plugins/url_redirector.lua %files plugin-url-suspect %{_datadir}/%{name}/plugins/url_suspect.lua %files plugin-whitelist %{_datadir}/%{name}/plugins/whitelist.lua %files plugins-all %files rules-core %{_datadir}/%{name}/rules/*.lua %files rules-regexp %dir %{_datadir}/%{name}/rules/regexp %{_datadir}/%{name}/rules/regexp/*.lua %files rules-controller %dir %{_datadir}/%{name}/rules/controller %{_datadir}/%{name}/rules/controller/*.lua %files rules-all %files lualib-extra %{_datadir}/%{name}/lualib/*.lua %dir %{_datadir}/%{name}/lualib/{lua_content,lua_ffi,lua_magic,lua_scanners,lua_selectors,lua_shape,plugins,rspamadm,redis_scripts} %{_datadir}/%{name}/lualib/{lua_content,lua_ffi,lua_magic,lua_scanners,lua_selectors,lua_shape,plugins,rspamadm,redis_scripts}/*.lua %{_datadir}/%{name}/lualib/plugins/neural/providers/*.lua %exclude %{_datadir}/%{name}/lualib/llm_common.lua %exclude %{_datadir}/%{name}/lualib/llm_context.lua %exclude %{_datadir}/%{name}/lualib/llm_search_context.lua %exclude %{_datadir}/%{name}/lualib/fun.lua %exclude %{_datadir}/%{name}/lualib/global_functions.lua %exclude %{_datadir}/%{name}/lualib/lua_cache.lua %exclude %{_datadir}/%{name}/lualib/lua_aliases.lua %exclude %{_datadir}/%{name}/lualib/lua_aws.lua %exclude %{_datadir}/%{name}/lualib/lua_cfg_transform.lua %exclude %{_datadir}/%{name}/lualib/lua_cfg_utils.lua %exclude %{_datadir}/%{name}/lualib/lua_hs_cache.lua %exclude %{_datadir}/%{name}/lualib/lua_maps.lua %exclude %{_datadir}/%{name}/lualib/lua_maps_expressions.lua %exclude %{_datadir}/%{name}/lualib/lua_meta.lua %exclude %{_datadir}/%{name}/lualib/lua_mime.lua %exclude %{_datadir}/%{name}/lualib/lua_neural_external.lua %exclude %{_datadir}/%{name}/lualib/lua_neural_learn.lua %exclude %{_datadir}/%{name}/lualib/lua_redis.lua %exclude %{_datadir}/%{name}/lualib/lua_settings.lua %exclude %{_datadir}/%{name}/lualib/lua_stat.lua %exclude %{_datadir}/%{name}/lualib/lua_util.lua %exclude %{_datadir}/%{name}/lualib/lua_verdict.lua %exclude %{_datadir}/%{name}/lualib/lupa.lua %exclude %{_datadir}/%{name}/lualib/lua_magic/types.lua %exclude %{_datadir}/%{name}/lualib/lua_selectors/*.lua %exclude %{_datadir}/%{name}/lualib/lua_shape/core.lua %exclude %{_datadir}/%{name}/lualib/lua_shape/plugin_schema.lua %exclude %{_datadir}/%{name}/lualib/lua_shape/registry.lua %exclude %{_datadir}/%{name}/lualib/plugins/dmarc.lua %exclude %{_datadir}/%{name}/lualib/plugins/neural.lua %exclude %{_datadir}/%{name}/lualib/plugins/rbl.lua %exclude %{_datadir}/%{name}/lualib/plugins/ratelimit.lua %exclude %{_datadir}/%{name}/lualib/lua_scanners/*.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_check.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_cleanup_pending.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/ratelimit_update.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/neural_maybe_invalidate.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/neural_maybe_lock.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/neural_save_unlock.lua %exclude %{_datadir}/%{name}/lualib/redis_scripts/neural_train_size.lua %files lualib-llm %{_datadir}/%{name}/lualib/llm_common.lua %{_datadir}/%{name}/lualib/llm_context.lua %{_datadir}/%{name}/lualib/llm_search_context.lua %files full %files webui %{_datadir}/%{name}/www %changelog * Wed Jul 22 2026 Patrick Laimbock - 4.1.2-1 - update to version 4.1.2 - remove deprecated plugins * Tue Jul 21 2026 Patrick Laimbock - 4.1.1-1 - initial build for Fedora 44 - based on https://codeberg.org/ldv/copr-server/src/branch/main/rspamd