SpamAssassin funktioniert mit Getmail nicht richtig ...

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@jahlives

Der letze Tip war anscheinend der Beste. Habe keinen Fehler mehr in /var/log/messages

Hoffentlich bleibt es auch erstmal so!
Schön, dass es nun funzt. Sei dir aber bewusst, dass dieser Fehler wiederkommen wird sobald du E-Mails für einen anderen User als Robert abholen willst. Dann stimmen die Rechte wieder nicht mehr.
Hässlich und unsicher (sollte aber funzen) wäre es den spamd unter root laufen zu lassen. Denn root hat immer genügend Rechte in allen User Homes rumzuschreiben.
Die sauberste Lösung wäre es dir Gedanken zu machen ob du nicht mit virtuellen Mailusern arbeiten willst. Diese bieten den Vorteil, dass alle Mailoperationen unter dem gleichen lokalen User laufen. Setze ich selber ein und das ist wirklich sehr flexibel. Allerdings setzt dies einiges an Konfig-Aufwand voraus, ist aber durchaus machbar
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Was passiert denn wenn ich ein weiteres rc-File anlege und unter dem gleichen Benutzer Mails abhole?

Eigentlich dürfte sich da doch nichts ändern?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Was passiert denn wenn ich ein weiteres rc-File anlege und unter dem gleichen Benutzer Mails abhole?

Eigentlich dürfte sich da doch nichts ändern?
Das geht problemlos, denn es ist ja der gleiche lokale User Robert. Problematisch wird es erst wenn du neben E-Mails für Robert auch E-Mails für XXX abholen willst. Dann hast du das Problem, dass User Robert unter dem spamd child läuft, nicht im Home von XXX rumschreiben darf.
Eine Alternative zu root könnte es sein den spamd unter dem User admin zu starten und dem User admin die entsprechenden Rechte für die Homeverzeichnisse zu geben
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Ich habe immer noch das Problem, dass Spam-Mails, die in meinem Postfach bei GMX landen von getmail nicht abgeholt werden. in /var/log/messages und auch /var/log/getmail.log kann ich keine Einträge dazu finden
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Nach einem neustart der DS wird die Mail jetzt auch abgeholt und korrekt als SPAM gekenzeichnet.

Ein Fehler taucht in der Kommandozeile auf, nachdem ich mein script, das getmail startet, gestartet habe:

$ Warning: filter Filter_external spamc (allow_root_commands="True", arguments="()", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned fewer headers (12) than supplied (16)

In /var/log/messages und getmail.log sind keine Fehlermeldungen festzustellen!
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@jahlives

Hast du eine Idee
Ich weiss leider auch nicht sicher, weil ich ja den SA von ipkg verwende und diesen Fehler nicht habe. Genaugenommen ist es nur eine Warning, was nicht heissen muss, dass etwas nicht funzt.
Die Meldung besagt, dass spamassassin 16 Header Zeilen bekommt, aber nur 12 davon zurückgibt.
Test: Schick dir mal ne Email an deine gmx Adresse. Log dich dann bei gmx (via Webmail) ein und schau dir die E-Mail als Quelltext an. Kopier alle Header Zeilen in ein File.
Dann lässt du getmail die Email abholen. Mit deinem Client (Outlook oder Thunderbird oder was auch immer du verwendest) schaust du dir wieder den Quelltext der abgeholten Mail an. Vergleiche die Header und berichte hier welche fehlen.

Gruss

tobi

p.s. das Mailabholen klappt jetzt aber grundsätzlich? Wenn alle Mails abgeholt werden kannst du sonst die Fehlermeldung auch unterdrücken. Dazu kannst du dein getmail Script so starten
Code:
/path/to/script.sh > /dev/null 2>&1
damit werden alle Ausgaben des Scriptes nach /dev/null also ins Nirvana umgeleitet. Damit sollte die Meldung von der shell verschwunden sein.
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
nein leider klappt mail abzuholen schon wieder nicht. Es sind Mails auf dem server vorhanden. Wenn ich die ds neustarten, den SA dann starten und dann auch noch mein script zum abholen der files starten würde, so ginge es beim ersten mal. Dann legt sich die DS schlafen und nach einer gewissen Zeit werden die Mails einfach nicht mehr abgeholt. Sie bleiben einfach im GMX Postfach.
Das ist sehr komisch!

Also die DS wacht nach 3 Stunden eigentlich auf und holt dann die Mails, die auf dem Konto sind.
 
Zuletzt bearbeitet:

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
@jahlives

Keine Idee. Ich bin am verzweifeln.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Hast du denn auchmal probiert getmail direkt in der Konsole, also nicht über dein Script auszuführen?
Dazu einfach mal den getmail Befehl 1:1 aus deinem Script auf der Konsole angeben.
Wenn ich mich richtig entsinne, dann verwendest du mein getmail Script, richtig? Dort gibt es ja die Option das Logfile für das Script festzulegen. Schau auch mal in diese Logs. Nach einem Neustart musst du busybox wieder nach /tmp kopieren und /tmp/sh als Link auf /tmp/busybox erstellen, sonst macht das Script keinen Wank
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
@jahlives

So mache ich das. Kopiere alles nach tmp und starte dann das script. Dann SA. Dann holt er auch die mails beim verstanden mal ab. Wahrscheinlich auch beim darauffolgenden mal, aber nicht mit sicherheit. In dieser hinsicht bin ich echt sm Ende. Vielleicht hast du ja ne idee
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Bitte probier jetzt mal genau das folgende:

  1. Stell die PID des getmail Scriptes fest
    Code:
    ps | grep getmail
    das ist die erste Nummer vor dem Benutzernamen (wohl bei dir VOR root)
  2. Beende dann das Script anhand der PID
    Code:
    kill PID
  3. Stell sicher, dass der spamd läuft
  4. Schick dir eine Testmail an gmx
  5. ruf dann "dein" getmail Kommando mittels su auf der Konsole auf
    Code:
    su DEIN_USER -c "/opt/bin/getmail -q -d --getmaildir /volume1/homes/DEIN_USER/.getmail -r DEIN_GMX_FILE.rc"
    DEIN_USER und DEIN_GMX_FILE entsprechend anpassen
  6. Prüfe ob du die E-Mail in deinem Client erhalten hast und sie auch von spamd gescannt wurde
  7. Falls 6. ja dann nochmals 4 - 6 machen
  8. Hast du beide E-Mails erhalten?
Falls du die E-Mails nicht erhalten hast, dann muss es eine Fehlermeldung von getmail auf der Konsole gegeben haben. Die würde mich dann interessieren.
Wie sieht eigentlich DEIN_GMX_FILE aus? Eigentlich nur der Teil mit der Verbindung zum spamd (Passwort und Username unbedingt unkenntlich machen, wenn du das ganze File postest)
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Gebe ich
Rich (BBCode):
ps | grep getmail
ein, so bekomme ich keinen Prozess angezeigt. Das ist glaube ich aber auch richtig so, da ich ja mit einem Script arbeite, das getmail aufruft, wenn ein Benutzer an der DS angemeldet ist oder nach 3 Stunden automatisch. @jahlives, du hast das in diesem Thread http://www.synology-forum.de/showthread.html?t=10598 entwickelt.


Meine gmx.rc sieht so aus:

Rich (BBCode):
[options]
delete = true
message_log = ~/.getmail/log
message_log = /var/log/getmail.log

[retriever]
type = SimplePOP3SSLRetriever
server = pop.gmx.net
port = 995
username = *****
password = *****
use_apop = false
timeout = 180
delete_dup_msgids = false

[destination]
type = Maildir
path = ~/.Maildir/
user = Ronald
filemode = 0600

[filter-spamassassin]
type = Filter_external
path = /usr/syno/mailstation/bin/spamc
allow_root_commands = true
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
so ich habe mit
Rich (BBCode):
kill $(cat /tmp/checkmail)
mein checkmailscript gekillt und dann mit
Rich (BBCode):
sh getmail.sh
den getmail-Aufruf gestartet. Es werden auch alle Mails damit abgerufen und von SA auch gescannt. Die erste Mail, nachdem der Abruf aufgehört hat zu funktionieren war auch als SPAM gekennzeichnet obwohl es eigentlich keine SPAM-Mail war.

Als Fehler bekomme ich auch den schon bekannten Fehler:

Warning: filter Filter_external spamc (allow_root_commands="True", arguments="()", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned fewer headers (12) than supplied (21)
Warning: filter Filter_external spamc (allow_root_commands="True", arguments="()", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned fewer headers (12) than supplied (23)
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Noch eine interessante Entdeckung, die vielleicht weiterhelfen könnte: Starte ich das getmail-script manuell, so wird sogar die SPAM-Mail mit dem Header "ASD" abgerufen. Das war vorher beim automatisierten Script nie der Fall. Ein Fehler trat auch wieder auf:

Warning: filter Filter_external spamc (allow_root_commands="True", arguments="()", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned fewer headers (12) than supplied (22)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Also für mich fehlen im rc File einige Angaben beim spamassassin
Code:
[filter-spamassassin]
type = Filter_external
path = /usr/syno/mailstation/bin/spamc
allow_root_commands = true
arguments = ("-s 250000", "-p 783", "-u DEIN_USER", )
Du hast wiedermal überhaupt nicht das gemacht worum ich dich gebeten habe. Ich wollte, dass du getmail manuell (OHNE DEIN SCRIPT!!) auf der Konsole aufrufst. Dies wollte ich weil es sein kann dass das Script die Fehler nach /dev/null schreibt und du damit keinerlei Fehlermeldung erhalten könntest. Ich weiss schon, dass es mein Script ist ;)
Also mach die Anpassungen an deinem rc File (stünde auch so im Wiki) und ruf dann getmail manuell auf so wie in meinem letzten Post Punkt 5 beschrieben
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
@jahlives
Es tut mir leid, ich habe nicht richtig gelesen. Danke für deine Hilfe.

Ich habe jetzt nach deiner Anleitung versucht die Mails abzurufen. Vorher hatte ich meine gmx.rc nach deiner Maßgabe geändert. Der Mailabruf hat nicht funktioniert. Nun bekomme ich auf der Konsole folgende Fehlermeldungen:

Filter error (filter Filter_external spamc (allow_root_commands="True", arguments="('-s 250000', '-p 783', '-u Ronald')", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned 64 (Error in argument 1, char 2: argument required for option s)
)
Filter error (filter Filter_external spamc (allow_root_commands="True", arguments="('-s 250000', '-p 783', '-u Ronald')", command="spamc", exitcodes_drop="('99', '100')", exitcodes_keep="('0',)", group="None", ignore_stderr="False", path="/usr/syno/mailstation/bin/spamc", unixfrom="False", user="None") returned 64 (Error in argument 1, char 2: argument required for option s)
)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich schau mir das heute abend zu Hause auf meiner Kiste mal an. Irgendwie werden da wohl die Argumente nicht "richtig" erkannt
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Probier mal
Code:
[FONT=monospace]
[/FONT]arguments = ("-s","250000","-p","783","-u","Roland",)
und den manuellen Test mit getmail auf der Konsole wiederholen
 

Hawk999

Benutzer
Mitglied seit
08. Feb 2010
Beiträge
273
Punkte für Reaktionen
0
Punkte
16
Jetzt hat es geklappt ohne die Ausgabe einer Fehlermeldung.

Habe eine Testmail mir zugeschickt und sie dann nach deiner Anleitung abgeholt. Wurde auch von SA überprüft.

Dann gleichen Vorgang nochmals. Hat auch wieder geklappt.

Was ist jetzt zu tun?
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat