Fixed "core" Docker image to allow x86_32 building, updated documentation for SSE4.2 requirement.

- "core" Docker image : Switched from uname -m architecture detection to apk --print-arch to better reflect the binary distribution architecture instead of the current Kernel architecture. This allows building a i686 linux image on a amd64 machine.
- "core" Docker image : Adding rust toolchain in dependancies to allow python modules to build properly on uncommonly supported architectures (like i686)
- Documentation : Updated setup requirement to mention SSE4.2 requirement
- Documentation : Updated faq with the full explanation for the SSE4.2 requirement and the reference to the mailu issue.
This commit is contained in:
Vincent PARRES-GACON
2025-02-06 09:56:39 +01:00
parent aecbd4632d
commit 6387713ad0
3 changed files with 19 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ RUN set -euxo pipefail \
; addgroup -Sg ${MAILU_GID} mailu \ ; addgroup -Sg ${MAILU_GID} mailu \
; adduser -Sg ${MAILU_UID} -G mailu -h /app -g "mailu app" -s /bin/bash mailu \ ; adduser -Sg ${MAILU_UID} -G mailu -h /app -g "mailu app" -s /bin/bash mailu \
; apk add --no-cache bash ca-certificates curl python3 tzdata \ ; apk add --no-cache bash ca-certificates curl python3 tzdata \
; ! [[ "$(uname -m)" == x86_64 ]] \ ; ! [[ "$(apk --print-arch)" == x86_64 ]] \
|| apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing hardened-malloc || apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing hardened-malloc
WORKDIR /app WORKDIR /app
@@ -52,10 +52,10 @@ ENV \
SNUFFLEUPAGUS_URL="https://github.com/jvoisin/snuffleupagus/archive/refs/tags/v${SNUFFLEUPAGUS_VERSION}.tar.gz" SNUFFLEUPAGUS_URL="https://github.com/jvoisin/snuffleupagus/archive/refs/tags/v${SNUFFLEUPAGUS_VERSION}.tar.gz"
RUN set -euxo pipefail \ RUN set -euxo pipefail \
; machine="$(uname -m)" \ ; machine="$(apk --print-arch)" \
; deps="build-base gcc libffi-dev python3-dev mariadb-dev" \ ; deps="build-base gcc libffi-dev python3-dev mariadb-dev" \
; [[ "${machine}" != x86_64 ]] && \ ; [[ "${machine}" != x86_64 ]] && \
deps="${deps} cargo git libretls-dev mariadb-connector-c-dev postgresql-dev" \ deps="${deps} rust cargo git libretls-dev mariadb-connector-c-dev postgresql-dev" \
; apk add --virtual .build-deps ${deps} \ ; apk add --virtual .build-deps ${deps} \
; [[ "${machine}" == armv7* ]] && \ ; [[ "${machine}" == armv7* ]] && \
mkdir -p /root/.cargo/registry/index && \ mkdir -p /root/.cargo/registry/index && \

View File

@@ -996,3 +996,16 @@ If the admin container is `unable to connect to an external MariaDB database due
MariaDB has no support for utf8mb4_0900_ai_ci which is the new default since MySQL version 8.0. MariaDB has no support for utf8mb4_0900_ai_ci which is the new default since MySQL version 8.0.
.. _`unable to connect to an external MariaDB database due to incompatible collation`: https://github.com/Mailu/Mailu/issues/3449 .. _`unable to connect to an external MariaDB database due to incompatible collation`: https://github.com/Mailu/Mailu/issues/3449
Why is Rspamd giving me an "Illegal instruction" error ?
`````````````````````````````````````````````````````````
On Linux amd64 (x84_64), if the antispam container is crashing and gives you an `Illegal instruction` error, you may have a CPU that lacks support of the ``SSE4.2`` instruction set.
The more modern and FOSS ``vectorscan`` library used by rspamd superseeded the now closed source Intel ``hyperscan`` library in Alpine Linux, and since August 2024 it requires the ``SSE4.2`` instruction set to work properly.
Pre-2013 Intel Atom CPUs (Like N2800 or D425), Intel pre-Nehalem architectures and AMD pre-Bulldozer architectures does not support ``SSE4.2``.
A workaround to this issue is to use a x86_32 (or i686) version of rspamd, because the ``vectorscan`` library is only used on 64-bit capable systems.
Note that this may stop working in the future, as 32-bit software support is being progressively dropped.
*Issue reference:* `3713`_.

View File

@@ -22,6 +22,9 @@ linux/arm64v8 or linux/armv7 hardware, so it
should run on pretty much any cloud server as long as enough power is should run on pretty much any cloud server as long as enough power is
provided. provided.
On x86_64, check that your processor supports the ``SSE4.2`` instruction set.
For example, pre-2013 Intel Atom CPUs lacks ``SSE4.2`` support. See :ref:`faq`.
You should also have at least a DNS hostname and a DNS name for receiving You should also have at least a DNS hostname and a DNS name for receiving
emails. Some instructions are provided on the matter in the article emails. Some instructions are provided on the matter in the article
:ref:`dns_setup`. :ref:`dns_setup`.