fetchmail-Problem

Caris

Caris

Jungspund
Ich habe ein Problem mit meiner MTA-Konfiguration unter SuSE 8.1 mit Yast2.
Ich habe den Zugang wie beschrieben unter http://sdb.suse.de/de/sdb/html/fhassel_yast2_mail.html
eingerichtet und meine Mail werden auch tadelos von sendmail versendet, jedoch holt fetchmail meine Mail nicht ab. Weiss jemand von euch Rat? Ich habe den obenstehenden ARtikel genau befolgt, aber ich habe einen DSL-Flat-Anschluss also eine permanente Verbindung.
Ich will nicht jedemal das poll-tcpip- skript aufrufen müssen.
Hilfe?(
 
Zuletzt bearbeitet:
Habe ich das richtig verstanden? Fetchmail holt die Mail zwar ab, nur nicht automatisch, sondern nur immer dann, wenn Du dieses Script startest?

Wenn das der Fall ist, dann müssen wir nur noch den Scheduler Cron entsprechend konfigurieren, damit er beispielsweise alle 15 Minuten das Script einmal startet.

Kannst Du bitte einmal den Inhalt dieses Scripts hier posten?
Falls Fetchmail die Mails nicht abholt, benötige ich das Script auch, wenn ich Dir sagen soll, was da kaputt ist.

Ich warte erstmal die Antwort ab.
 
Original geschrieben von muaddib2
Wenn das der Fall ist, dann müssen wir nur noch den Scheduler Cron entsprechend konfigurieren, damit er beispielsweise alle 15 Minuten das Script einmal startet.

und das ist auch nicht mal nötig :)
Code:
set daemon 180

und schon läuft fetchmail als daemon

cu
 
Erstmal danke für euer Antworten .Mal sehen was sich machen läßt.

Anbei für muadib das Skript.

#!/bin/bash
#
# /etc/ppp/poll.tcpip
#
# Script for polling mail and news, setting system
# time, and sending mails over temporary TCP/IP connections.
#
# Author: Werner Fink <werner@suse.de>
#

#
# Check our lock file
#
if test -e /var/run/poll.lock ; then
running=false
read lpid < /var/run/poll.lock
for l in /proc/$lpid/fd/* ; do
test -L $l || continue
test $0 -ef $l && running=true
done
test "$running" = "true" && exit 0
unset l lpid running
fi
trap 'echo' SIGHUP SIGINT SIGQUIT
trap 'rm -f /var/run/poll.lock; exit 1' SIGTRAP SIGBUS SIGKILL SIGPIPE SIGTERM
trap 'rm -f /var/run/poll.lock; exit 0' EXIT
echo $$ > /var/run/poll.lock

# Tell system what we're doing
logger -t poll.tcpip -p mail.notice " Starting mail and news send/fetch"

#
# Check resources and settings
#

#
# Time to get a stable connenction
#
sleep 5

#
# Now set system time if we have some NTP servers
# and no running xntp.
#
while true ; do
set -- $(runlevel)
test -e /etc/init.d/rc${2}.d/S*xntpd && break
test -x /usr/sbin/ntpdate || break
checkproc /usr/sbin/xntpd &> /dev/null && break
/usr/sbin/rcxntpd ntptimeset
break
done

#
# Do we get mails via UUCP over TCP/IP?
# Note that we only support taylor configuration.
# We seek for the available systems which are
# connected with TCP/IP to do a UUCP file transfer.
#
while true ; do
test -x /usr/lib/uucp/uucico || break
test -r /etc/uucp/call || break
test -r /etc/uucp/sys || break
systems=""
while read sys login passwd rest ; do
case "$sys" in
\#|"") continue ;;
*) systems="$systems $sys"
esac
done < /etc/uucp/call
for sys in $systems ; do
type=$(sed -n "
/^system[[:space:]]\+$sys/,/^\(system\|\$\)/ {
s/^port\W\+\(\w\+\)\$/\1/p
}" < /etc/uucp/sys)
test "$type" = tcp || continue
/usr/lib/uucp/uucico -c -D -S $sys
done
break
done

#
# Do we get mails with fetchmail over pop3/imap?
# We support only a system wide configuration
# file /etc/fetchmailrc.
#
while true ; do
test -x /usr/bin/fetchmail || break
test -r /etc/fetchmailrc || break
/usr/bin/fetchmail -f /etc/fetchmailrc
break
done

#
# Do we get news with fetchnews?
#
while true ; do
test -x /usr/sbin/fetchnews || break
test -s /etc/leafnode/config || break
test -e /var/lock/news/fetchnews.lck && break
/usr/sbin/fetchnews
break
done

#
# Let's throw our mails out here. This is done as the last
# point to avoid mail loops.
#
/usr/sbin/sendmail -q

# Tell system what we're done
logger -t poll.tcpip -p mail.notice " Done mail and news send/fetch"
#
exit 0


Eine Frage noch: Wenn /root/.fetchmailrc nicht existiert, muss ich das dann anlegen?
 
Eine Frage noch: Wenn /root/.fetchmailrc nicht existiert, muss ich das dann anlegen?
Definitiv nicht.
Wie aus dem script ersichtlich ist, wird für fetchmail die /etc/fetchmailrc als Config-Datei vorgegeben. Das ist auch der Standard, wenn fetchmail als Deamon läuft, soweit ich weiss.
Funktioniert Fetchmail denn, wenn du als root "fetchmail -v -c /etc/fetchmailrc" machst? ( -v steht übrigens für verbose zum debuggen)

cu
tom
 
Danke Caris,
Ich weiss nun das, was ich wissen wollte, nämlich, wie der Aufruf funktioniert und wo die fetchmailrc versteckt ist.

Das ist übrigens die Stelle, woran tomvorland und ich das sehen können:
#
# Do we get mails with fetchmail over pop3/imap?
# We support only a system wide configuration
# file /etc/fetchmailrc.
#
while true ; do
test -x /usr/bin/fetchmail || break
test -r /etc/fetchmailrc || break
/usr/bin/fetchmail -f /etc/fetchmailrc
break
done

tomvorland:
Muss er nicht fetchmail -c -v -f /etc/fetchmailrc eintippern?

Caris:
-c steht übrigens für check only. Fetchmail holt dabei nichts ab.
Hinter -f steht die Position und der Name der Konfigurationsdatei

Wenn ersteres klappt, kannst Du
fetchmail -a -v -f /etc/fetchmailrc
eingeben. Dann sollte er die EMails abholen.

Wenn es nicht klappt, würde ich mir nochmal gerne den Inhalt der Datei /etc/fetchmailrc anschauen.
 
Zuletzt bearbeitet:
Also,wenn ich tomvonlands Vorschlage mache passiert folgendes:

fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol auto) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll started
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol IMAP) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll started
fetchmail: couldn't find canonical DNS name of /etc/fetchmailrc
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol IMAP) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll completed
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol POP3) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll started
fetchmail: couldn't find canonical DNS name of /etc/fetchmailrc
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol POP3) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll completed
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol POP2) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll started
fetchmail: couldn't find canonical DNS name of /etc/fetchmailrc
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol POP2) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll completed
fetchmail: 5.9.13 querying /etc/fetchmailrc (protocol auto) at Tue, 11 Mar 2003 10:04:17 +0000 (UTC): poll completed
fetchmail: normal termination, status 11

muadib dein vorschlag funktioniert, aber ist fetchmail den überhaupt irgendwie aktiv? Das Programm muss doch in regelmäßigen Abständen selber Post holen. Zumindest, wenn ich den Mail-Client aufrufe. Benutze Kmail und Korn als Notifier.
 
Deswegen habe ich auch ja eingeworfen, dass dazwischen ein "-f" fehlt. fetchmail hat dadurch versucht, einen Server namens "/etc/fetchmailrc" im Internet zu finden.

Fetchmail kann als Dämon ablaufen und dann in regelmässigen Abständen Mails abholen und zwar mittels des oben beschriebenen Eintrags "set daemin 180".
Eine andere Möglichkeit besteht darin, dem cron-Daemin mitzuteilen, dass er zeitgesteuert das fetchmail-script startet.

Das folgende Beispiel zeigt das zeitgesteuerte Abholen der E-Mails mit dem selbstgeschriebenen Script "getmail"

Du erstellt als Root eine Datei, die meinetwegen crontab.conf heisst:
Code:
SHELL=/bin/sh
MAILTO=mailadmin
10 6-22 * * 1-5 /root/getmail
40 6-22 * * 1-5 /root/getmail
25 6-22/2 * * 6-7 /root/getmail

Die gestartete Shell ist /bin/sh, Durchführung des Prozesses wird an den user mailadmin gesandt
Die Mails werden von Montag bis Freitag von 6-22 Uhr um jeweils X Uhr 10 und um X Uhr 40 abgeholt.
Am Wochenende werden die Mails nur alle 2 Stunden einmal geholt.

Die Crontab.conf wird mit dem Befehl
Code:
 crontab -u root crontab.conf
aktiviert für den Benutzer root.

Getmail sieht dann so aus:
Code:
echo Fetchmail gestartet.
echo --------------------------------------------- >>/var/log/fetchmail 2>&1
date >>/var/log/fetchmail 2>&1
ping -c 4 mail.nordwest.net >>/var/log/fetchmail 2>&1
killall fetchmail
fetchmail -a -v >>/var/log/fetchmail 2>&1

Erläuterung:
Ich schreibe die Logs in eine eigene Logdatei rein. Ansonsten schreibt fetchmail alles in die allgemeine Syslog.
Bevor es losgeht, setze ich einen Ping ab. Ich hatte Probleme damit, dass die Leitung ins Internet nicht schnell genug aufgebaut wurde.
Dann kille ich den letzten Fetchmail-Prozess. Zwei Prozesse gleichzeitig funktionieren nicht. Wenn man dann die Abholzeiten zu niedrig setzt, kann es passieren, dass eine Mailbombe den EMail-Empfang zum Erliegen bringt, weil der Abholprozess der Mail ja immer wieder kurz vor der Übertragung gekillt wird und neu beginnt. Da habe ich noch keine Lösung drauf. Aber ich analysiere gerade das Script von SuSE. Da scheint mir eine Lösung drin zu stecken.
Schliesslich der eigentlich Fetchmail-Aufruf.
 
Zuletzt bearbeitet:
Original geschrieben von muaddib2

tomvorland:
Muss er nicht fetchmail -c -v -f /etc/fetchmailrc eintippern?

Hi

Du hast natürlich recht.
Ich habe das -c mit dem -f verwechselt.

@Caris: Das -c darfst Du also garnicht eingeben, denn sonst siehst Du ja nicht, was passiert, wenn fetchmail versucht die mails zu holen.
Also: Um erstmal zu checken ob fetchmail ünerhaupt funtioniert:

fetchmail -v -f /etc/fetchmailrc

Wenn das geht, kommt muaddib2's Howto als nächstes.

cu
tom
 
Also erstmal Dank an Alle für die schnelle Hilfe.

Hab das Problem, dann doch noch anders gelöst, denn die SuSE sind ja doch nicht so schlecht wie ich immer denke.Es liegt halt an der Intelligenz des Anwenders.

Unter /usr/share/doc/packages/fetchmail/Readme.SUSE
findet sich folgendes Skript:

If you want to fetch mail periodically, you can start fetchmail as a daemon
using the following init script:

#! /bin/sh
# Copyright (c) 1996-2000 SuSE GmbH Nuremberg, Germany. All rights reserved.
#
# Authors: Klaus Franken
# Björn Jacke
#
# /etc/init.d/fetchmail
#
# please edit /etc/fetchmailrc and make a chmod 600 /etc/fetchmailrc
#
### BEGIN INIT INFO
# Provides: fetchmail
# Required-Start: $network
# Required-Stop:
# Default-Start: 3 5
# Default-Stop:
# Description: run fetchmail in daemon mode
### END INIT INFO

. /etc/rc.config
return=$rc_done

case "$1" in
start)
echo -n "Starting fetchmail-daemon"
/usr/bin/fetchmail -d 900 -a -f /etc/fetchmailrc -L /var/log/fetchmail 2>&1 || return=$rc_failed
echo -e "$return"
;;
stop)
echo -n "Shutting down fetchmail-daemon"
/usr/bin/fetchmail -quit || return=$rc_failed
echo -e "$return"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

exit 0


The file to which the -f option points must be the .fetchmailrc of the user who
has to fetch the mail.
Put the script in /etc/init.d/ and make it executable:

cd /etc/init.d/
chmod +x fetchmail

and finally run "insserv".

Your SuSE Team

Was soll man da noch sagen, RTFM!!!!
Habe dann die Zeile ./etc/rc.config gegen /etc/rc.status ausgetauscht,weil rc.config gibt nicht mehr und voila! Alles Läuft zu meiner Zufriedenheit.

Allen nochmal herzlichen Dank!
 
Hallo zusammen!
Ich bin per Google auf diesen Thread gestoßen. Ich habe das Problem, dass mein fetchmail-daemon immer nur mit einem Intervall von 600 Sekunden läuft, obwohl "set daemon 60" in der /etc/fetchmailrc steht. Testweise habe ich diesen Eintrag auch in der /root/.fetchmailrc und in der /home/fetchmail/.fetchmailrc (der fetchmail-daemon läuft unter diesem Benutzernamen) gesetzt.

/etc/fetchmailrc
# Edit carefully, see /usr/share/doc/packages/yast2-mail/fetchmailrc.txt
set daemon 60
poll "xyz.abc.de" protocol IMAP : user "test" there with password "test123" is "siggi" here ;

Leider ohne Ergebnis:

fetchmail: awakened at Wed Mar 28 09:44:10 2007
fetchmail: Server certificate verification error: unable to get local issuer certificate
fetchmail: Server certificate verification error: certificate not trusted
fetchmail: sleeping at Wed Mar 28 09:44:11 2007 for 600 seconds

Fetchmail per Cron ausführen zu lassen, fände ich nicht gut, da der Daemon ja bereits läuft...

Betriebssystem ist OpenSuSE 10.2.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

So, dann will ich meine Frage mal selbst beantworten :D

Dieser Wert von 600 Sekunden ist unter /etc/sysconfig/fetchmail und /etc/rc.d/fetchmail fest eingetragen. In beiden Dateien findet man einen Parameter namens "FETCHMAIL_POLLING_INTERVAL" und den kann man beliebig anpassen. Fetchmail neu starten und gut :)

Danke euch allen :D
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben