der ideale Faxserver für die Arztpraxis
Einfach was ausdrucken auf einem der faxdrucker:

Eine oder mehrere Dateien zum versenden auswählen:

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

Sendeberichte:

Stand: 2026-02-13
Ziel: Ubuntu LTS Fax-Workflow mit maximaler Robustheit (SMB→PDF→Web-UI→Queue→Worker→HylaFAX→Archiv/Fehler).
sendfax), erzeugt einen PDF-Sendebericht, merge’t ihn mit dem Dokument und legt Ergebnis in Archiv/Fehlerbereich ab.<...>__OK.pdf und <...>.json.Basis: /srv/kienzlefax/
/srv/kienzlefax/incoming/
fax1/fax2/fax3/fax4/fax5//srv/kienzlefax/pdf-zu-fax/
/srv/kienzlefax/staging/ (Web-UI baut Jobordner hier)/srv/kienzlefax/queue/ (fertige Jobs)/srv/kienzlefax/processing/ (vom Worker geclaimte Jobs)/srv/kienzlefax/sendeberichte/
<basename>__<jobid>__OK.pdf<basename>__<jobid>.jsonA) Drop-in / Nachbearbeitung (Original unverändert, OHNE Report):
/srv/kienzlefax/sendefehler/eingang/<original>.pdfB) Fehler-Ausgabe (Report+Dokument, NICHT sendbar):
/srv/kienzlefax/sendefehler/berichte/<basename>__<jobid>__FAILED.pdf/srv/kienzlefax/sendefehler/berichte/<basename>__<jobid>.json/srv/kienzlefax/phonebook.sqlite
/var/www/html/kienzlefax.php/var/www/html/webroot/Ziel: sendefehler/eingang ist sendbar, sendefehler/berichte niemals.
Web-UI bietet als sendbare Quellen nur:
incoming/fax1..fax5pdf-zu-faxsendefehler/eingang (im UI: src=sendefehler)Defensiver Dateifilter in sendbaren Quellen:
*.pdf__OK.pdf oder __FAILED.pdf__REPORT__ enthalten (reserviert)Benennung (filterbar):
<basename>__<jobid>__OK.pdf<basename>__<jobid>__FAILED.pdf<basename>__<jobid>.json/srv/kienzlefax/queue/<jobid>/doc.pdf/srv/kienzlefax/queue/<jobid>/job.jsonfax1..fax5, pdf-zu-fax, sendefehler/eingangfaxworkerqueue/<jobid> → processing/<jobid> (atomic rename)
2) ruft sendfax auf
3) finalisiert Ergebnis über HylaFAX doneq/q<JID>
4) erzeugt Report-PDF + merged PDF
5) schreibt final job.json
6) legt Erfolg im Archiv ab, Fehler im sendefehler-Bereich
7) räumt processing/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"
}
Finalisierung erfolgt nicht “naiv” nur über Rückgabecode von sendfax, sondern über:
sendfax liefert request id = JID/var/spool/hylafax/doneq/q<JID> und entscheidet:
statuscode == 0 → OKDer 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
Archiv/Fehler-PDF enthält Report + Dokument in einer Datei (keine separaten report/doc Dateien).
Änderung nach Absprache: Direkt vor sendfax wird optional ein Header in das PDF eingearbeitet.
doc.pdf per Script zu verarbeiten:
/usr/local/bin/pdf_with_header.shpdf_with_header.sh <in.pdf> <out.pdf>doc_hdr.pdf (aus doc.pdf)sendfax wird doc_hdr.pdf verwendet, wenn das Script vorhanden ist und erfolgreich erzeugt.sendefehler/eingang/ kopiert.Es werden 5 CUPS-Queues fax1..fax5 angelegt, die PDF-Dateien direkt in
/srv/kienzlefax/incoming/faxX/ schreiben.
/usr/lib/cups/backend/kienzlefaxpdfkienzlefaxpdf:/fax1 … kienzlefaxpdf:/fax5CUPS läuft häufig unter AppArmor. Bei Problemen:
Damit CUPS (lp), Apache (www-data) und Worker (faxworker) zuverlässig arbeiten und Dateien verschieben können:
kienzlefaxlp, www-data, faxworker, admin (und ggf. Login-User)/srv/kienzlefax gruppenschreibbar und setgid/srv/kienzlefax/staging, /srv/kienzlefax/queue, /srv/kienzlefax/processing/srv/kienzlefax/incoming/fax1..fax5[pdf-zu-fax] → /srv/kienzlefax/pdf-zu-fax[sendefehler] → /srv/kienzlefax/sendefehler[sendeberichte] → /srv/kienzlefax/sendeberichte[webroot] → /var/www/html/webrootDrucker-Freigabe (SMB) erfolgt separat; im Setup werden CUPS-Queues bereitgestellt.
?src=fax1|fax2|fax3|fax4|fax5|pdf-zu-fax|sendefehler
src=sendefehler zeigt sendefehler/eingang?view=sendelog|phonebook|sendefehler-berichtequeue/ und processing/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: