Mailinglist Archive: opensuse-de (4880 mails)

< Previous Next >
Re: Kasperfilter
  • From: David Haller <david@xxxxxxxxxx>
  • Date: Mon, 17 Nov 2003 23:24:02 +0100
  • Message-id: <20031117222402.GA16360@xxxxxxxxxxxxxxxxxx>
Hallo ratti,

Jetzt wird der Thread ja noch richtig sinnvoll *lol*

Am Mon, 17 Nov 2003, Joerg Rossdeutscher schrieb:
>Das Problem ist nur: Wenn im gleichen Augenblick fetchmail Post abholt,
>dann würde zwei Prozesse gleichzeitig Daten in das Postfach schreiben,
>und zwar vermutlich durcheinander. Deswegen mache ich das nur, wenn ich
>weiss, daß der Rechner offline ist. Natürlich könnte immer noch was
>querschiessen, cronjobs zum Beispiel, aber auf meinem
>ein-einziger-Client-Server ist das eine akzeptable Lösung. Anonsten
>könnte man die Nachrichten auch anders anschieben, z.B. mit formail.

Du koenntest auch beim ausfiltern mit formail nen X-Header setzen und
dann die mails mit Header per procmail in die normale inbox sortieren.
Via lock-Datei duerfte das sogar dann klappen, wenn gleichzeitig
fetchmail (oder der MTA) dem procmail frische Mails verfuettert.
Allerdings muss man noch dafuer sorgen, dass die "quelldatei"
(plonked) nicht neue Mails erhaelt, was sich durch ein locken,
kopieren, leeren und unlocken machen liesse (spezifiziere in der
procmailrc ein explizites lockfile fuer die plonk datei, z.B.
plonk.lock) und dann in etwa folgendes script:

==== resort-plonked.sh [UNGETESTET!] ====
MBOX="/home/ratti/plonk"
LOCKFILE="/home/ratti/plonk.lock"

trap "release_lock; exit 2;" 1 2 3 4 6 7 8 10 11 12 13 14 15 17

acquire_lock() {
test -e "$LOCKFILE" && exit 37
echo $$ > "$LOCKFILE"
}

release_lock() {
if test -r "$LOCKFILE" && test `cat "$LOCKFILE"` -eq $$
then
rm -f "$LOCKFILE"
else
exit 1
fi
}

acquire_lock

if cp "$MBOX" "${MBOX}.work"
then
> "$MBOX"
else
release_lock
test -f "${MBOX}.work" && rm -f "${MBOX}.work"
exit 1
fi

release_lock

if cat "${MBOX}.work" | procmail
then
rm -f "${MBOX}.work"
fi
====

==== ~/.procmailrc ====
:0 H
* ^X-Plonked-Seen: ratti@localhost
inbox

:0 H: /home/ratti/plonk.lock
* ? (formail -x From: -x Sender: -x Reply-To: -x Received: | fgrep
-iqf $PLONK)
{
:0 fw
| formail -i "X-Plonked-Seen: ratti@localhost"

:0
/home/ratti/plonk
}
====

Als Namen des Headers und fuer das "Token" im Header solltest du dir
evtl. was besseres ausdenken ;) Und auf Faelschungen kannst du
reagieren, in dem du auf 'Old-X-Plonked-Seen' testest (siehe man
formail, vgl. -a, -A, -i, -I)...

HTH,
-dnh

--
90: WWW
Interaktives Echtzeit-Herumstochern in einer Informationssuppe.
(Jochem Huhmann)

< Previous Next >
This Thread
Follow Ups