Daten von Postfix auswerten



  • Hallo allerseits.
    Ich möchte Emails von Postfix über ein Programm abfangen. Postfix bietet dafür ja die Option, die Mails an ein Programm zu schicken.

    Ich habe in meinem jugendlichen Leichtsinn angenommen, die Email würde quasi als cin ankommen und folgendes TEstprogramm geschrieben:

    #include <iostream>
    #include <fstream.h>
    using namespace std;
    
    int main() {
       char ch;
       fstream inout("test.txt",ios::out|ios::app);
       while (cin.get(ch)) {
          ch>>inout;
          cout << ch;
       }
       cout << "DABN!";
       return (-1);
    }
    

    Allerdings taucht in der Datei "test.txt" nix auf. Wo ist denn da wohl der Denkfehler?



  • ch >> inout;
    


  • Nö. Daran liegts nicht. Ich habe das Script auch erstmal vereinfacht, um Fehler in der Abbruchbedingung auszuschließen:

    #include <iostream>
    #include <fstream.h>
    using namespace std;
    
    int main() {
       char ch;
       string oi;
       ofstream inout("test.txt",ios::out|ios::app);
       cin >>oi;
       inout << oi;
       return (0);
    }
    

    Wenn ich es per Hand aufrufe wird nun jede eingegebene Zeile in der Textdatei gespeichert. Beim Aufruf von Postfix hingegen klappt nix. (Postfix ist im übrigen korrekt eingestellt; die Logfile sagt:

    delivered to command: /var/www/mailtest/test.out



  • Das kann ich ja nicht wissen,
    dachte du hättest oben ein Testprogramm geschrieben um den Schreibvorgang zu testen...
    ...was im übrigen wegen der besagten Stelle im Quelltext nicht kompilierbar ist.

    Ich denke, Postfix übergibt die EMails als Pfad an dein Programm.
    Du solltest mal Parameter für die Main-Funktion einfügen und diese ausgeben.



  • Es hat sich erledigt.

    Das Problem war, daß die Datei "test.txt" beim Aufruf von Postfix nicht versucht wurde im Ordner von test.out zu erstellen, sondern im Ordner von Postfix. Und da fehlten die Berechtigungen...

    Danke auf jeden Fall für die Mühe.


Anmelden zum Antworten