PDF2SMTP - Fehlersuche

Schritte und Stellen zur Fehlersuche:

Ehe Sie mich direkt anrufen, um einen Fehler zu melden oder Unterstützung bei der Suche nach Fehlern anzufordern bitte ich folgende Dinge zu prüfen:

Laden Sie sich zuerst das verbesserte und korrigierte Skript herunter.

Wenn Sie sich das Diagramm noch mal anschauen, dann sehen Sie mehrere Möglichkeiten, den Fehler einzukreisen:

Das Logfile

PDF2SMTP protokolliert sehr ausführlich seine Tätigkeit in einer Textdatei. Diese liegt als Standard in "c:\Programme\gs\redmon\pdf2smtp.log". Der Inhalt dieser Datei ist für die Fehlersuche sehr hilfreich.

1. Fehler beim Drucken

Halten Sie mal den Netzwerkdrucker an. Dazu müssen Sie auf dem Server mit dem frei gegebenen Drucker einfach die Warteschlange anhalten (Rechte Maustaste auf den Drucker).

Nun muss der Anwender erneut drucken. Prüfen sie:

  • Kommt der Druckauftrag in der Warteschlange an ?
    JA: Der Client druckt anscheinend korrekt
    NEIN: PDF2SMTP kann noch gar nichts für Sie tun. Prüfen Sie, warum schon ein einfacher Netzwerkdruck nicht funktioniert.
  • Schauen Sie sich den Druckauftragsnamen an.
    Sind dort vielleicht Sonderzeichen enthalten ?
    JA -> Dann müssen Sie das PDF2SMTP Skripts eventuell anpassen. Der Name des Auftrags wird mit genutzt. Dies müssen Sie dann abstellen. Besonders häufig sind "Doppelpunkte" hier störend, da diese unter DOS als Sonderzeichen nach dem Laufwerksbuchstaben zählen und nicht im Dateinamen vorkommen dürfen.
  • Wer ist der Besitzer des Auftrags. Welcher Name steht dort ?
    GAST: Dann ist ihr Arbeitsplatz nicht in der Domäne oder der lokale Anwender nicht als Domänenbenutzer angemeldet. Sie werden dann das Problem haben, dass die PDF-Datei nicht per Mail zugesendet werden kann. Deaktivieren die den GAST-Zugriff in ihrer Domäne und auf dem Server. Kontrollieren Sie die Berechtigungen auf die Druckerfreigabe. Entfernen Sie den Eintrag "Jeder" und fügen statt dessen eine Gruppe mit den berechtigten Anwendern hinzu. Jetzt ist die Arbeitsstation dazu gezwungen, sich explizit anzumelden.

Vergessen Sie nicht nach dem Erfolg den Drucker wieder zu starten.

2./3. REDMON

Wenn der Druckauftrag schon zum Server gelangt, dann ruft der Spooler den Portmonitor "REDMON" auf, welcher seinerseits das Programm REDRUN startet. Dieses holt die Daten ab und legt sie in eine temporäre Datei und startet dann erst den Batch PDF2SMTP. Dies "sehen" sie bei einigen Servern daran, dass auf dem Server ein schwarzes "DOS-Fenster" sichtbar wird. Als allererstes legt der BATCH eine Protokolldatei an. Schauen Sie in diese Protokolldatei (c:\Programme\gs\redmon\pdf2smtp.log)

  • Wird diese Datei angelegt ?
    JA: Wunderbar, dann startet REDMON, REDRUN und sogar unser Skript
    NEIN: Kontrollieren Sie noch mal alle Einstellungen von REDMON, dem Skript, die Portzuweisung etc.
  • Kontrollieren Sie den Inhalt der Logdatei
    Sind die Umgebungsvariablen mit sinnvollen Werten belegt ?
  • Berechtigungen auf CMD.EXE
    REDMON ruft CMD.EXE auf, um den Batch zu starten. Auf sicheren Systemen (IISLOCKD, Windows 2003, Domain Controllern ) kann es sein, dass NTFS-Rechte auf CMD.EXE den Aufruf verhindern. Sie können mit NTFILMON (Sysinternals) bzw. mit der Zugriffsüberwachung auf CMD.EXE solche Probleme einkreisen. Eventuell m��ssen Sie dann die NFTS-Rechte erweitern, dass z.B. Domänenbenutzer LESE-Rechte haben. Dies ist zwar aus Sicherheitsaspekten nicht optimal aber kein großes Risiko, wenn die CMD.EXE immer nur den Batch startet und nicht von anderen Prozessen aufgerufen werden kann.

Die Hauptarbeit dann erfolgt durch das Skript.

4. PDF2SMTP Batch

PDF2SMTP ist nun dafür zuständig die Daten zu konvertieren. Hierbei kann es auch zu Fehlern kommen:

  • TEMP-Datei kann nicht angelegt werden
  • Ungültige Zeichen in den Variablen, die der BATCH oder Ghostscript nicht verarbeiten kann.
  • Ghostscript wird nicht aufgerufen, kann nicht gefunden werden
    Prüfen Sie Pfade und Berechtigungen. REDMON startet als "LOCALSYSTEM". Normalerweise hat das System immer ausreichend Rechte.
  • Ghostscript kann die Datei nicht konvertieren
    Dann sollten Sie vor dem Aufruf von Ghostscript die Druckdatei kopieren, z.B. mit "COPY %1 C:\REDMON.PS"  und dann diese Postscriptdatei von Hand mal Ghostscript zur Konvertierung übergeben. Dann sehen Sie eventuelle Fehler bei der Konvertierung.

Temporär können Sie den "DEL"-Befehl auskommentieren, damit PDF2SMTP die temporären Dateien nicht löscht und sie damit zu einer weiteren untersuchung bereit stehen.

Sie können dann auch die einzelnen Aufrufe im Skript manuell durchführen, bis es funktioniert und Sie den Fehler gefunden haben. Meist sind es irgendwelche Sonderzeichen oder andere Dinge in den Variablen. Das Skript hat keine ausgefuchste Plausibilitätsprüfung.

ACHTUNG: Vermeiden Sie den Einsatz von "PAUSE" im Skript, da damit der Batch angehalten wird. Die Diagnosefunktionen über die Protokolldatei sind meist völlig ausreichend.

5. Versand per Mail und Zustellung

Ein weiteres Problem kann die Zustellung der Nachricht an das Postfach sein. Dazu sendet der Batch die Mail mittels BLAT an den vorgegebenen Empfänger, der aus dem Namen des Druckauftragbesitzers generiert wird. Kontrollieren Sie bitte:

  • Ist der Name in "REDMON_USER" mit sinnvollen Daten gefüllt ?
    Hier sollte der Windows NT Anmeldename des Anwenders drin stehen
  • Bildungsregel für Mailadressen
    Funktioniert ihre Bildungsregel für die Mailadresse.
    In der Regel "REDMON_USER@firma.de".  Ich hoffe sie haben im Skript ihre SMTP-Domäne eingetragen. Seit Version 1.3 wird auch die Mailadresse im Logfile aufgezeichnet
  • BLAT kann nicht senden
    Kann BLAT eine Mail an ihrem Mailserver senden ?
    Einige Systeme akzeptieren Mails nur von bestimmten IP-Adressen oder nach vorheriger Autorisierung über POP3. Ihr Mailserver muss von ihrem PDF-Server die Mails ohne Anmeldung annehmen. Testen Sie dies durch einen manuellen Aufruf von
    BLAT.EXE - -server ip-des-server -f pdf2smtp@ihredomain.de
     -t ihre_mailadresse@ihrefirma.de -s Testmail

    Kommt die Mail an ?
    JA: Dann scheint das OK  zu sein
    NEIN: Kontrollieren Sie Mailadresse, Mailserver, Erreichbarkeit.
  • Personal Firewall
    BLAT ist ein ein Programm, welches eine IP-Verbindung zum Mailserver auf den Port 25 aufbauen muss. Einige "Personal Firewalls" blockieren dies. Bitte kontrollieren Sie daher die Logdatei. Seit Version 1.3 protokolliert  auf BLAT seine Meldungen dort hinein. Nicht alle Firewall zeigen den Verbindungsversuch an. Einige blockieren stillschweigend die Verbindung.
  • Alte BLAT-Version
    Seit dem Script Versino 1.4 wurde das Logging mit der Option "-log" mit aufgenommen. Dazu ist aber die aktuelle Version von BLAT erforderlich. ältere Versionen ohne diese Option senden keine Mail !
  • Fehler in den Druckdaten
    Manchmal erstellt Ghostscript keine PDF-Datei, da er die Druckdaten nicht verarbeiten kann. Sie können Sich einen Hinweise dazu geben lassen, indem sie folgende Zeile vor den Aufruf von BLAT hinzufügen:
    if not exist %PDFFILE% then echo Fehler bei der PDF Erzeugung >> %PDFFILE%
    Dann wird eine Datei mit dem Fehler gesendet. Natürlich ist das System für Warnungen Ausbaubar.

Windows 2003 und Rechte

Je aktueller Windows wird, desto restriktiver sind die Berechtigungen gesetzt. Das gipfelt aktuell bei Windows 2003 darin, dass auf einem Server ein normaler Anwender nicht mehr die CMD.EXE aufrufen kann. Das bedeutet leider, dass PDF2SMTP auch nicht mehr vom Spooler gestartet werden kann, es sei denn Sie geben ihren Anwendern, die PDF2SMTP verwenden sollen, auch das Lese und Ausführen Recht auf die CMD.EXE.

Zudem letzt PDF2SMTP natürlich temporäre Dateien und Protokolldateien an. Auch hier sollten Sich sicherstellen, dass die Anwender und der Spooler natürlich die Berechtigungen dazu haben.

Sonstige Probleme

Folgende Probleme sind bekannt:

  • Dokument mit Sonderzeichen
    Da einige Anwendungen auch "WhiteSpace" als Beschreibung verwenden, das aber von einem DOS-Batch nicht erlaubt wird, können solche Dokumente nicht konvertiert werden.
    Temporäre Abhilfe: ändern Sie Sie Bildungsregel für PDFFILE so, dass diese kritischen Bestandteile nicht benutzt werden.
  • UNC-Zugriff
    Einige Leser versuchen mangels eines Mailservers die PDF-Dateien in die Heimatverzeichnisse der Benutzer zu kopieren. Da Das Skript als "localSystem" läuft, ist dies nur mit dem Einsatz von RUNAS oder anderen Wege, (FTP etc. ) möglich. Sie könnten auch bei der Verbindung zum Server mit "NET uSE" noch einen Benutzrer samt Kennwort übergeben oder mit den relativ unsicherern "nullsessionshares" arbeiten. Unter Win2000/2003 hat LocalSystem die Rechte des Computerkontos, was Mitglied in "DomainComputer" ist und damit berechtigt werden könnte.
  • Schwarz/Weiß statt Farbe
    Sollten ihre PDF-Dateien ausnahmslos Schwarz/Weiß statt in Farbe sein, dann sollten Sie den Postscript Druckertreiber und besonders die verwendete PPD-Datei prüfen und ersetzen. In dieser Datei sind die Fähigkeiten des Druckers hinterlegt. Zudem können Sie auch in den Eigenschaften des Druckers die Einstellungen anpassen. Zuletzt erlauben auch einige Programme wie Powerpoint und andere explizit einen Schwarz/Weiß Druck, selbst wenn der Drucker Farbe drucken kann.

Ich hoffe Sie haben mittlerweile ihren Fehler gefunden. Ansonsten können Sie mir gerne ein Nachricht senden -> Kontakt

PDF2SMTP und Windows NT

Sowohl REDMON, Ghostscript, BLAT und das Batchfile sind unter Windows NT4 Server und Workstation ablauffähig. Allerdings haben sehr viele Windows NT4 Administratoren berichtet, dass das Script nicht aufgerufen wird.

Eine genauere untersuchung eines NT4 Server mit FILEMON (Sysinternals) hat ergeben, dass der Spooler die REDMON.DLL startet und diese auch REDRUN aufruft, die Druckdatei in eine temporäre Datei schreibt und für das Batchfile sogar noch eine CMD.EXE geladen und gestartet wird. Warum auch immer kommt das Batchfile nicht zur Ausführung.

Allerdings ist es problemlos möglich, dass REDMON direkt ein Batchfile startet. Basierend auf dieser Tatsache wurde PDF2SMTP in der Version 1.5 derart umgestellt, dass nun direkt der Batch aufgerufen werden muss. Die Druckdaten, die der Portmonitor auf "STDOUT" leitet, kann der Batch selbst nicht annehmen. Dafür wird das Programm "REDFILE" (ebenfalls in REDMON enthalten) genutzt.

Damit ist es auch unter Windows NT4 möglich, PDF2SMTP einzusetzen. Laden Sie sich dazu einfach die Version 1.5 herunter und passen das Skript entsprechend an.

PDF2SMTP und RPC-Patch MS04-012 (KB828741)

Es mehren sich die Gerüchte, dass dieser Patch auch die Funktion von PDF2SMTP behindert. Nach der Installation des Patches soll es für Gerätetreiber nicht mehr möglich sein, Batchdateien zu starten. Ich konnte diese Situation aber auf meinen Systemen noch nicht beobachten, so dass ich diese Verhalten weder bestätigen noch verneinen kann. PDF2SMTP Version 1.5 ist ein Batchfile, der mit REDFILE die Dateien von STDIN abholt.

PDF2SMTP und Windows 98

Das Programm REDMON funktioniert auch mit Windows 95/98. Ebenso kann Ghostscript und BLAT unter Windows eingesetzt werden. Allerdings ist es mir bislang nicht gelungen, REDMON unter Windows 9x erfolgreich zum laufen zu bekommen. Weitere untersuchungen hierzu haben ich mittlerweile eingestellt, da hierfür vermutlich keine Anfragen mehr kommen.

PDF2SMTP mit LPR und NetWare

Ein Windows Server kann auch über LPD/LPR angesprochen werden. Damit wäre es denkbar, dass Druckaufträge auch auf diesem Wege übermittelt werden. Allerdings erlaubt LPD/LPR keine Anmeldung und Identifizierung des Absenders. (NTUSERNAME). Daher können auf diesem Wege zwar PDF-Dateien erzeugt werden, aber BLAT kann diese nicht zurücksenden. Der Benutzer hierbei ist SYSTEM oder GAST. Sie könnten diesen Sonderfall abfangen und die PDF-Datei immer an den gleichen Benutzer oder einen Exchange öffentlichen Ordner senden oder in einem Verzeichnis bereitstellen.

Die meisten Postscript Treiber schreiben den Benutzernamen in die Postscriptdatei. Der Anfang kann z.B. so aussehen:

%!PS-Adobe-3.0
%%Title: pdf2smtp.cmd - Editor
%%Creator: PScript5.dll Version 5.2
%%CreationDate: 3/23/2004 19:11:35
%%For: fcarius
%%BoundingBox: (atend)
%%Pages: (atend)
%%Orientation: Portrait
%%PageOrder: Special
%%DocumentNeededResources: (atend)
%%DocumentSuppliedResources: (atend)
%%DocumentData: Clean7Bit
%%TargetDevice: (Ghostscript-Printer) (3010.600) 3
%%LanguageLevel: 3
%%EndComments

Für Systeme, bei denen die Nutzung von "%REDMON_USER% nicht möglich ist, wäre eine Auswertung des Headers möglich. Prüfen Sie vorher aber, ob der verwendete Postscript Treiber wirklich die Informationen hinterlegt