kienzlefax-fuer-linux

kienzlefax

der ideale Faxserver für die Arztpraxis

Einfach was ausdrucken auf einem der faxdrucker:

drawing

Eine oder mehrere Dateien zum versenden auswählen:

drawing

Faxe werden je datei einzeln abgeschickt, ggf mehrere an die selbe Nummer hintereinander: drawing

Sendeberichte:

drawing

kienzlefax – Systemdesign (README.md)

Stand: 2026-02-13
Ziel: Ubuntu LTS Fax-Workflow mit maximaler Robustheit (SMB→PDF→Web-UI→Queue→Worker→HylaFAX→Archiv/Fehler).


1) Zielbild


2) Begriffe / feste Namen


3) Verzeichnislayout

Basis: /srv/kienzlefax/

3.1 Eingang (aus “Druckern”)

/srv/kienzlefax/incoming/

3.2 Drop-in (ohne Drucken)

/srv/kienzlefax/pdf-zu-fax/

3.3 Queue (Producer → Consumer)

3.4 Archiv (admin-only Share “sendeberichte”, flach)

/srv/kienzlefax/sendeberichte/

3.5 sendefehler (guest-write) – zweigeteilt

A) Drop-in / Nachbearbeitung (Original unverändert, OHNE Report):

B) Fehler-Ausgabe (Report+Dokument, NICHT sendbar):

3.6 Telefonbuch

/srv/kienzlefax/phonebook.sqlite

3.7 Web


4) Exklusionsregel (wichtig)

Ziel: sendefehler/eingang ist sendbar, sendefehler/berichte niemals.

Web-UI bietet als sendbare Quellen nur:

Defensiver Dateifilter in sendbaren Quellen:

Benennung (filterbar):


5) Execution Model (Producer–Consumer)

5.1 Producer: Web-UI (PHP)

5.2 Consumer: Worker (systemd service)


6) Job-Format

Jobordner: /srv/kienzlefax/queue/<jobid>/

doc.pdf
job.json (Minimal durch UI):

{
  "job_id": "JOB-YYYYMMDD-HHMMSS-rand",
  "created_at": "ISO8601",
  "source": { "src": "fax1|...|sendefehler", "filename_original": "..." },
  "recipient": { "name": "...", "number": "49...." },
  "options": { "ecm": true, "resolution": "fine|standard" },
  "status": "queued"
}

7) HylaFAX: Realisierter Finalize-Mechanismus (B)

Finalisierung erfolgt nicht “naiv” nur über Rückgabecode von sendfax, sondern über:


8) PDF-Sendebericht

Der Worker erzeugt pro Job einen PDF-Sendebericht (Seite 1) und merge’t ihn mit dem gesendeten Dokument (Seite 2..n).

Erforderliche Felder (aus doneq/q und job.json):

Archiv/Fehler-PDF enthält Report + Dokument in einer Datei (keine separaten report/doc Dateien).


9) Header-Erweiterung (neu umgesetzt)

Änderung nach Absprache: Direkt vor sendfax wird optional ein Header in das PDF eingearbeitet.

9.1 Mechanik

9.2 Regeln


10) CUPS “Drucker” → PDF-Ablage (realisiert)

Es werden 5 CUPS-Queues fax1..fax5 angelegt, die PDF-Dateien direkt in /srv/kienzlefax/incoming/faxX/ schreiben.

10.1 Technische Umsetzung (robust)

10.2 AppArmor Hinweis

CUPS läuft häufig unter AppArmor. Bei Problemen:


11) Rechtekonzept (praktisch bewährt)

Damit CUPS (lp), Apache (www-data) und Worker (faxworker) zuverlässig arbeiten und Dateien verschieben können:

11.1 Gemeinsame Gruppe

11.2 Setgid + Default-ACL


12) Samba-Shares (Konzept)

Guest/Everyone (bewusst write)

Admin-only

Drucker-Freigabe (SMB) erfolgt separat; im Setup werden CUPS-Queues bereitgestellt.


13) UI-Konzept (eine PHP-Datei)

Quellen / Views (bookmarkbar)

Aktive Jobs immer sichtbar


14) Offene Punkte (für weitere README-Dateien)

Die Einrichtung weiterer Komponenten (z.B. Asterisk/IAX/Modem/Gateway, HylaFAX-Modem-Setup, Firewall, TLS/Reverse Proxy) wird in separaten README.md dokumentiert und hier später verlinkt.

Geplante weitere Dokumente: