1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Löschen automatisieren

Discussion in 'Mail-Programme' started by Fehlerchen, May 2, 2004.

Thread Status:
Not open for further replies.
  1. Fehlerchen

    Fehlerchen Kbyte

    Hallo Forum!

    Folgendes Problem:

    Ich habe ein Postfach bei meinem Hoster eingerichtet, in dem alle eintreffenden Mails ohne Nachfrage gelöscht werden sollen (Spam).
    Ich möchte weder einen lokalen Mailserver installieren, noch einen Verweis von den Forenusern erhalten, mir doch einen Web.de-Account zuzulegen.

    Mit telnet scheint es ja nicht möglich zu sein, denn es soll ja automatisch mit einem Antwortscript erfolgen.

    Kennt sich jemand damit aus?

    --Fehlerchen--
     
  2. Fehlerchen

    Fehlerchen Kbyte

    @sarkastic_one

    Falls Du hier nochmal reinschauen solltest: ein dickes fettes Dankeschön!

    Funktioniert 1a!

    --Fehlerchen--
     
  3. ... aus irgend einem undefinierbaren Grund konnte ich mich auf dem PCWelt Server nicht mehr einloggen. Eigentlich war ich es ja. Wer weiß, was da wieder mal los war. Schreibe also momentan mit einem Test-Account und möchte Dich Bitten, alles weitere per PN / Mail zu klären.


    -- Fehlerchen --
     
  4. sarkastic_one

    sarkastic_one Halbes Megabyte

    Das ist aber seltsam, eigentlich sollte er alles auf einmal löschen...

    füge mal in die while-Schleife ein System.out.println(s); ein:
    Code:
         while (vorhanden) {
            out.writeBytes("DELE " + Integer.toString(lv) + CRLF);
            s = in.readLine();
            System.out.println(s);
            vorhanden = (s.indexOf("+") == 0);
            lv++;
          }
    
    Dadurch bekommst du die Antworten vom Server ausgegeben. Herauskommen sollte immer "+OK message deleted" (oder was ähnliches) bis aufs' letzte mal, da sollte "-ERR not found" rauskommen.
     
  5. Fehlerchen

    Fehlerchen Kbyte

    hatte es schon mitbekommen (wer lesen kann ist echt im Vorteil ... :rolleyes: )

    Ergebnis:

    Script funktioniert. Danke!

    A B E R !!

    Bei jedem Scriptaufruf löscht er genau 3 Mails. Das ist eindeutig zu wenig. Oder soll ich das Script mit einer Batch 10 mal oder noch öfter aufrufen?

    (nicht wundern, ich mache so was wirklich zum ersten Mal ...)


    -- Fehlerchen --
     
  6. sarkastic_one

    sarkastic_one Halbes Megabyte

    Du kopierst den ganzen Text in die Datei "Mailkiller.java", die du im \bin-Ordner abspeicherst.

    Dann gehst du über die Konsole da rein und sagst "javac Mailkiller.java"
     
  7. Fehlerchen

    Fehlerchen Kbyte

    edit - habe es installiert - melde mich wieder. Danke!!!!





    --Fehlerchen--
     
  8. sarkastic_one

    sarkastic_one Halbes Megabyte

    Na dann mal los! :D
    Du solltest die Source als Mailkiller.java abspeichern; Java ist da sehr heikel - die Datei muß genau so heißen wie die Klasse (public class ASdfGH... gehört in ASdfGH.java)

    Hab ich gestern in einer ruhigen Minute runtergetippt. Dem entsprechend leider auch der Konzeptfehler beim eigentlichen löschen in der 1. Version :rolleyes:
     
  9. Fehlerchen

    Fehlerchen Kbyte

    .... die 50 kg Kit ähm ....MB stören mich nicht. Wenn was stört, dann wären das die englischsprachigen Teile des Kit's.
    Da ich ja lernen will, hole ich mir jetzt einfach das Kit und werde das Ding selbst kompilieren (lassen). Falls es nicht klappt, komme ich auf Deinen zweiten Vorschlag zurück.

    Hast Du das Script nun extra für mich geschrieben oder hast Du das aus einer Kiste ausgekramt - vielleicht weil es schon mal gebraucht wurde?


    ... ich muß jetzt Kit besorgen

    --Fehlerchen--

    ... ich sehe gerade, das Teil gibt es als Multilinguage Version - also auch deutsch .... :)
     
  10. sarkastic_one

    sarkastic_one Halbes Megabyte

    Oha, muß ich einen Gang runterschalten :D

    Wenn man Java-Applets/-Applications kompilieren will, braucht man ein sog. Software Development Kit. Die Aktuelle Version von Sun ist 1.4.2_04. Allerdings wiegt das Paket 50MB.

    Wenn es Installiert ist kopiert man seine Source am einfachsten in das J2SE v1.4.2\bin-Verzeichnis und kompiliert sie in der Konsole mit "javac MeineSource.java". Heraus kommt die sog. Klasse MeineSource.class, die man mit "java MeineSource" starten kann.

    Ich schreib' das ganze um, damit du es nicht selber kompilieren mußt. Wenn du willst schicke ich dir die fertige Klasse per Mail. Starten mußt du die dann einfach über
    "java Mailkiller <Mailserver> 110 <Username> <Password>".
    Brauchen tust du dann nur mehr die Java VM. Die hast du aber wenn du ein Java-Plugin für den Browser installiert hast; ansonsten schau mal bei http://java.sun.com vorbei...

    Der überarbeitete Code;
    Code:
    import java.io.*;
    import java.net.*;
    
    public class Mailkiller {
      static String Mailserver = "";
      static int popPort = 110;
      static String Username = "";
      static String Password = "";
      static boolean vorhanden = true;
      final static byte[] CRLFAscii = {13, 10};
      final static String CRLF = new String(CRLFAscii);
      public static void main(String[] args) {
        try {
          Mailserver = args[0];
          popPort = Integer.parseInt(args[1]);
          Username = args[2];
          Password = args[3];
          Socket sock = new Socket(Mailserver, popPort);
          DataInputStream in = new DataInputStream(sock.getInputStream());
          DataOutputStream out = new DataOutputStream(sock.getOutputStream());
          String s = in.readLine();
          out.writeBytes("USER " + Username + CRLF);
          s = in.readLine();
          if (s.indexOf("+") != 0) { throw new Exception("User unbekannt"); }
          out.writeBytes("PASS " + Password + CRLF);
          s = in.readLine();
          if (s.indexOf("+") != 0) {
            throw new Exception("Passwort falsch oder User unbekannt"); }
          int lv = 1;
          while (vorhanden) {
            out.writeBytes("DELE " + Integer.toString(lv) + CRLF);
            s = in.readLine();
            vorhanden = (s.indexOf("+") == 0);
            lv++;
          }
          out.writeBytes("QUIT" + CRLF);
          s = in.readLine();
          lv--; lv--;
          System.out.println(Integer.toString(lv) + " Mails geloescht");
        }
        catch (Exception e) {
          System.err.println("Fehler aufgetreten");
          e.printStackTrace();
        }
      }
    }
    
     
  11. Fehlerchen

    Fehlerchen Kbyte

    ... schön von Dir, dieses nette Script. Aber jetzt verrate mir nur noch, was ich damit machen soll. Compilern? Wie? Womit?

    Also mit programmieren habe ich (noch) nichts am Hut.

    Aber trotzdem schon mal ein Dankeschön.


    --Fehlerchen--
     
  12. sarkastic_one

    sarkastic_one Halbes Megabyte

    Wäre eine Java-Application genehm?

    Kompilieren lasse ich es dir selber (sonst kommt wieder wer mit vorsicht Virus!!! :D

    z.B. Über den Taskplaner 1x am Tag ausführen lassen.

    Code:
    import java.io.*;
    import java.net.*;
    
    public class Mailkiller {
    // Mail Konfiguration hier eintragen ....
      final static String Mailserver = ""; // Mailserver eintragen
      final static int popPort = 110;      // POP-Server-Port; nicht ändern
      final static String Username = "";   // Vollständiger Benutzername
      final static String Password = "";   // zugehöriges Passwort
    // .... Ende des Config-Bereiches
      final static byte[] CRLFAscii = {13, 10};
      final static String CRLF = new String(CRLFAscii);
      public static void main(String[] args) {
        try {
          Socket sock = new Socket(Mailserver, popPort);
          DataInputStream in = new DataInputStream(sock.getInputStream());
          DataOutputStream out = new DataOutputStream(sock.getOutputStream());
          String s = in.readLine();
          out.writeBytes("USER " + Username + CRLF);
          s = in.readLine();
          if (s.indexOf("+") != 0) { throw new Exception("User unbekannt"); }
          out.writeBytes("PASS " + Password + CRLF);
          s = in.readLine();
          if (s.indexOf("+") != 0) {
            throw new Exception("Passwort falsch oder User unbekannt"); }
          int lv = 0;
          while (! (Character.isDigit(s.charAt(lv)))) { lv++; }
          s = s.substring(lv);
          lv = 0;
          while (Character.isDigit(s.charAt(lv))) { lv++; }
          s = s.substring(0, lv);
          int MailAnzahl = Integer.parseInt(s);
          for (lv = 1; lv <= MailAnzahl; lv++) {
            out.writeBytes("DELE " + Integer.toString(lv) + CRLF);
            s = in.readLine();
          }
          out.writeBytes("QUIT" + CRLF);
          s = in.readLine();
        }
        catch (Exception e) {
          System.err.println("Fehler aufgetreten");
          e.printStackTrace();
        }
      }
    }
    
     
Thread Status:
Not open for further replies.

Share This Page