chore(PROJ-60): Xapian-Reste aus Dockerfile, Makefile und Doku entfernen
Dockerfile und Makefile bauten noch mit CGO_ENABLED=1 -tags xapian und installierten libxapian-dev/libxapian30, obwohl der Xapian-Code bereits entfernt wurde. PRD.md und api-v1.md erwähnten Xapian noch im Tech-Stack bzw. als Such-Syntax-Referenz. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
7c028601cf
commit
c1338f6721
+5
-9
@@ -1,25 +1,20 @@
|
|||||||
# ── Stage 1: Go Backend Build (CGO + Xapian) ─────────────────────────────────
|
# ── Stage 1: Go Backend Build (CGO-frei, Manticore Search) ───────────────────
|
||||||
FROM golang:1.24-bookworm AS go-builder
|
FROM golang:1.24-bookworm AS go-builder
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
libxapian-dev pkg-config build-essential \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY go.mod go.sum ./
|
COPY go.mod go.sum ./
|
||||||
RUN go mod download
|
RUN go mod download
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN CGO_ENABLED=1 go build -tags xapian -buildvcs=false \
|
RUN CGO_ENABLED=0 go build -buildvcs=false \
|
||||||
-ldflags="-s -w" \
|
-ldflags="-s -w" \
|
||||||
-o /out/archivmail ./cmd/archivmail/
|
-o /out/archivmail ./cmd/archivmail/
|
||||||
|
|
||||||
# ── Stage 2: Runtime Image ────────────────────────────────────────────────────
|
# ── Stage 2: Runtime Image ────────────────────────────────────────────────────
|
||||||
FROM debian:bookworm-slim
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
# Xapian runtime library only (no dev headers)
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
libxapian30 ca-certificates \
|
ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN useradd --system --shell /bin/false --uid 999 --create-home archivmail
|
RUN useradd --system --shell /bin/false --uid 999 --create-home archivmail
|
||||||
@@ -27,7 +22,8 @@ RUN useradd --system --shell /bin/false --uid 999 --create-home archivmail
|
|||||||
COPY --from=go-builder /out/archivmail /usr/local/bin/archivmail
|
COPY --from=go-builder /out/archivmail /usr/local/bin/archivmail
|
||||||
|
|
||||||
# Volumes: config + data werden von außen gemountet
|
# Volumes: config + data werden von außen gemountet
|
||||||
RUN mkdir -p /var/archivmail/store /var/archivmail/astore /var/archivmail/xapian \
|
# Manticore Search läuft als eigener Dienst/Container (Port 9306), nicht hier
|
||||||
|
RUN mkdir -p /var/archivmail/store /var/archivmail/astore \
|
||||||
&& chown -R archivmail:archivmail /var/archivmail
|
&& chown -R archivmail:archivmail /var/archivmail
|
||||||
|
|
||||||
USER archivmail
|
USER archivmail
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ LDFLAGS = -X main.Version=$(VERSION) -s -w
|
|||||||
|
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
# Build — requires: apt install libxapian-dev
|
# Build — CGO-frei, Manticore Search als Volltext-Backend
|
||||||
build:
|
build:
|
||||||
go build -tags xapian -ldflags "$(LDFLAGS)" -o bin/$(APP) ./cmd/archivmail
|
CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o bin/$(APP) ./cmd/archivmail
|
||||||
go build -tags xapian -ldflags "$(LDFLAGS)" -o bin/$(IMPORTER) ./cmd/archivmail-import
|
CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o bin/$(IMPORTER) ./cmd/archivmail-import
|
||||||
go build -tags xapian -ldflags "$(LDFLAGS)" -o bin/$(EXPORTER) ./cmd/archivmail-export
|
CGO_ENABLED=0 go build -ldflags "$(LDFLAGS)" -o bin/$(EXPORTER) ./cmd/archivmail-export
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf bin/
|
rm -rf bin/
|
||||||
@@ -35,7 +35,7 @@ test-cover:
|
|||||||
|
|
||||||
smoke: build
|
smoke: build
|
||||||
@echo "Starting daemon in background for smoke test..."
|
@echo "Starting daemon in background for smoke test..."
|
||||||
mkdir -p /tmp/archivmail-test/{store,xapian,logs}
|
mkdir -p /tmp/archivmail-test/{store,logs}
|
||||||
./bin/archivmail --config config/config.test.yml &
|
./bin/archivmail --config config/config.test.yml &
|
||||||
sleep 2
|
sleep 2
|
||||||
bash smoke_test.sh
|
bash smoke_test.sh
|
||||||
@@ -51,7 +51,7 @@ install: build
|
|||||||
install -D -m 644 config/config.yml /etc/archivmail/config.yml
|
install -D -m 644 config/config.yml /etc/archivmail/config.yml
|
||||||
install -D -m 644 debian/archivmail.service /lib/systemd/system/archivmail.service
|
install -D -m 644 debian/archivmail.service /lib/systemd/system/archivmail.service
|
||||||
useradd --system --no-create-home --shell /usr/sbin/nologin archivmail 2>/dev/null || true
|
useradd --system --no-create-home --shell /usr/sbin/nologin archivmail 2>/dev/null || true
|
||||||
mkdir -p /var/archivmail/{store,astore,xapian}
|
mkdir -p /var/archivmail/{store,astore}
|
||||||
mkdir -p /var/log/archivmail
|
mkdir -p /var/log/archivmail
|
||||||
chown -R archivmail:archivmail /var/archivmail /var/log/archivmail
|
chown -R archivmail:archivmail /var/archivmail /var/log/archivmail
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|||||||
+1
-1
@@ -48,7 +48,7 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System, das E-Mails au
|
|||||||
- **DSGVO-konform:** E-Mails verlassen nie den eigenen Server; Löschkonzept vorhanden
|
- **DSGVO-konform:** E-Mails verlassen nie den eigenen Server; Löschkonzept vorhanden
|
||||||
- **Großes Volumen:** Architektur skaliert auf > 100.000 E-Mails
|
- **Großes Volumen:** Architektur skaliert auf > 100.000 E-Mails
|
||||||
- **Einfache Architektur:** Go-Backend REST API + Next.js-Frontend, kleines Team (1–2 Devs)
|
- **Einfache Architektur:** Go-Backend REST API + Next.js-Frontend, kleines Team (1–2 Devs)
|
||||||
- **Tech Stack:** Go (Backend, SMTP-Daemon, Storage, Xapian) + Next.js/TypeScript (Web-GUI) + PostgreSQL
|
- **Tech Stack:** Go (Backend, SMTP-Daemon, Storage) + Manticore Search (Volltext-Index) + Next.js/TypeScript (Web-GUI) + PostgreSQL
|
||||||
|
|
||||||
## Non-Goals
|
## Non-Goals
|
||||||
- Kein vollständiger E-Mail-Client (kein eigenständiges Senden von E-Mails durch Nutzer)
|
- Kein vollständiger E-Mail-Client (kein eigenständiges Senden von E-Mails durch Nutzer)
|
||||||
|
|||||||
+2
-2
@@ -48,7 +48,7 @@ GET /api/v1/mails
|
|||||||
|
|
||||||
| Parameter | Typ | Beschreibung | Beispiel |
|
| Parameter | Typ | Beschreibung | Beispiel |
|
||||||
|-----------|-----|-------------|---------|
|
|-----------|-----|-------------|---------|
|
||||||
| `q` | string | Volltext-Suche (Xapian QueryParser) | `q=Rechnung+2024` |
|
| `q` | string | Volltext-Suche (Manticore QueryParser) | `q=Rechnung+2024` |
|
||||||
| `from` | string | Absender (exakt oder Partial-Match) | `from=alice@firma.de` |
|
| `from` | string | Absender (exakt oder Partial-Match) | `from=alice@firma.de` |
|
||||||
| `to` | string | Empfänger | `to=bob@firma.de` |
|
| `to` | string | Empfänger | `to=bob@firma.de` |
|
||||||
| `cc` | string | CC-Empfänger | `cc=team@firma.de` |
|
| `cc` | string | CC-Empfänger | `cc=team@firma.de` |
|
||||||
@@ -200,7 +200,7 @@ Gibt Version und Status des Servers zurück. Nützlich zum Testen der Verbindung
|
|||||||
|
|
||||||
## Volltext-Suche Syntax (`q`-Parameter)
|
## Volltext-Suche Syntax (`q`-Parameter)
|
||||||
|
|
||||||
Der `q`-Parameter unterstützt Xapian QueryParser-Syntax:
|
Der `q`-Parameter unterstützt Manticore QueryParser-Syntax:
|
||||||
|
|
||||||
| Syntax | Beispiel | Bedeutung |
|
| Syntax | Beispiel | Bedeutung |
|
||||||
|--------|---------|-----------|
|
|--------|---------|-----------|
|
||||||
|
|||||||
Reference in New Issue
Block a user