Procmailrc - Syntax für automatic respond

Mitglied: Zitruslimmonade

Zitruslimmonade (Level 2) - Jetzt verbinden

26.07.2006, aktualisiert 27.07.2006, 6912 Aufrufe, 14 Kommentare

Merkwürdige Syntax das :-) face-smile

Guten Morgen,

Nachdem ich nun mit Hilfe unseres Mailadmins eine standard procmailrc datei für unsere User erstellt habe, haben wir aus verschiedensten Gründen die Notwendigkeit eine automatische Antwort zu senden sobald eine mail an eine bestimmte adresse ankommt (die muss allerdings nicht unterschieden werden da jeder user seine eigene Datei hat :-) face-smile )

Das ist das eine Problem, das zweite scheint ein wenig komplexer zu sein

folgendes Szenario: Ich bekomme eine Spammail, unser Server besitzt einen spamfilter, in der procmailrc wird angegeben das die mail im fiklter getestet werden soll und dann weitergeleitet an eine zweite mailbox (zwecks archivierung) gut unser Spamfilter erkennt allerdings nicht das es sich um spam handelt und leitet sie demnach weiter an einen Server (im speziellen Fall T-Zones) Dieser erkennt allerdings den Spam und sendet eine Fehlermeldung an unseren Mailserver zurück mit der eigendlichen mail, da unser Spamfilter immernoch nicht reagiert und noch keine Filtermöglichkeit existiert (nach der ich hier frage) wird die mail wieder an t-zones weitergeleitet und das spiel beginnt von Vorn. Gut nach ca 50 mal ist schluss da der mailserver was gegen loops hat aber das ist kein Zustand

Meine Fragen beinhalten also die Syntax wie ich
1. Automatische Antworten erstellen kann
2. die Errormessages von T-Zones filtere

Herzlichen Dank

PS: No Idea about syntax of procmail... first contact yesterday morning :-) face-smile
Mitglied: Zitruslimmonade
26.07.2006 um 12:45 Uhr
Also irgendwie schein ich arg untypische Fragen zu haben :-) face-smile Keine Antwort auf IP-Telefon-Fragen, keine Antwort auf procmailrc... mhh. dumme sache..

Eventuell erstmal soviel das Problem mit dem automatischen response hab ich mir jetz eventuell gelöst.
Im procmailrc habe ich das programm vacation aufgerufen, allerdings habe ich keine Ahnung ob das auch das macht was ich gern möchte... also das Programm schon aber ob es auch mit dem aufruf klappt...
Ich hatte es in der .forward datei getestet ohne den spamfilter zu benutzen.. das ging spitze, nur war dann auch ne antwort auf spammails zu erwarten was ich eigendlich vermeiden möchte

Eventuell jetz jem,and eine Idee ?? wär toll

gruss
chris
Bitte warten ..
Mitglied: JohnnyB
26.07.2006 um 14:35 Uhr
Allgemeine procmail - Syntax zum eintragen in die procmailrc

:0[Flags][[:]Sperrdatei]
*Bedingung
Aktion

Anmerkung: die Bedingung muß als Regulärer Ausdruck angegeben werden und Kommentare werden mit # eingeleitet.

#Autoresponse
:0
  • ^From:.*absender@boese-jungens\.org
  • !X-Loop: Benutzer@meinedomaene.com
| ( formail -r -a "X-Loop: Benutzer@meinedomaene.com"; \
echo "Dies ist eine automatisch erzeugte Antwort."; \
echo "Mail wurde abgelehnt; sie wird niemals gelesen werden." ) \
| sendmail -t -oi

#T-Zones Errormessage
:0
  • ^Subject:.*Errormessage-Betreff
/absoluten/Pfad/zum/Speicherort/der/Errormessage


Hinweis: Die Reihenfolge der Rezepte ist wichtig. Wenn eine Bedingung für eine zu prüfende Nachricht zutrifft, so werden die nachfolgenden Bedingungen nicht mehr beachtet, es sei denn eine oder mehrere der direkt nachfolgenden Bedingungen haben als Flags A, a oder e gesetzt.
Wenn als Aktion in eine Datei geschrieben wird, so sollte zumindest ein Doppelpunkt nach :0[Flags] gesetzt werden, damit bei hohem Nachrichtenaufkommen nicht mehrere Prozesse von procmail gleichzeitig versuchen in die selbe Datei zu schreiben. Wird da nur der Doppelpunkt angegeben, so erstellt sich procmail seine eigene Sperrdatei. Wird explizit eine Sperrdatei angegeben, so wird diese verwendet.
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 14:53 Uhr
na das war auf jeden schon mal aufschlussreich, danke.. aber kannst du mir zwei sachen erklären, ich brauche folgende zwei dine, ersten den "nicht" befehl.. also wenn die bedingung nicht zutrifft
und wie gebe ich folgendes an wenn ich den from Mail Delivery Subsystem <MAILER-DAEMON@muni.cz> filtern will ??

Ich hatte bis jetzt folgende idee, ist aber nich ganz was ich wollte da die errors in eine spezielle box geleitet werden, das mag ich nich

:0fw
| /usr/local/bin/spamc
:0:
  • ^X-Spam-Status: Yes
mail/spam

:0:
  • ^subject: Mail Delivery Subsystem <MAILER-DAEMON@muni.cz>
mail/error

:0 c
|/usr/bin/vacation username
Bitte warten ..
Mitglied: JohnnyB
26.07.2006 um 15:14 Uhr
Zu erstens:
Eine Bedingung wird negiert, indem vor die Bedingung ein Ausrufezeichen gestellt wird. Das Ausrufezeichen steht für das logische NOT.

Zu zweitens:
Wenn Du die From-Zeile filtern willst:

  • ^From:.*MAILER-DAEMON@muni\.cz.*

Du hast es im Ansatz eigentlich richtig gemacht, nur muß man beim Umgang mit regulären Ausdrücken einiges beachten:
Ein Punkt steht immer für ein beliebiges Zeichen und ein Sternchen ist ein Multiplikator der angibt, daß das Zeichen/Ausdruck direkt vor dem Sternchen entweder keinmal, einmal oder beliebig oft vorkommen darf. Das Dach steht für den Zeilenanfang und ein $ steht für das Zeilenende.
Obige Zeile bedeutet also im einzelnen:
Die Zeile beginnt mit From: ( ^From: )
Danach können beliebig viele oder auch keine beliebigen Zeichen stehen ( .* )
Danach muß die genaue Gruppe MAILER-DAEMON@muni.cz folgen, hierbei ist es wichtig die Sonderfunktion des Punktes mit Hilfe des Backslashes auszuschalten.
Anschließend können wieder beliebig viele Zeichen kommen ( .* )

Generell solltest Du überall dort wo ein Leerzeichen steht die Kombination ( .* ) verwenden, es können ja auch mal mehrere sein, dann würde das nicht erkannt. Außerdem kann es sein, daß Sonderzeichen wie < oder > als Suchkriterien verwendet werden, daher solche Zeichen, auch Klammern immer mit dem Backslash eindeutig als Schriftzeichen markieren.

Hoffe, ich konnte helfen.
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 15:18 Uhr
klasse man...
also noch mal besten dank und würde dir empfehlen die beiden posts einfach mal zu einem Tutorial zusammenzubauen.. ich weis nich obs jemand bracu (gab ja leider wenig anteilnahme :-) face-smile) aber auf jeden Fall wars Hilfreich und hat mir echt weiter geholfen
Ich werd jetz mal das File anpassen und testen

tschau
chris
Bitte warten ..
Mitglied: JohnnyB
26.07.2006 um 15:24 Uhr
Keine Ursache.

Laß' uns wissen, ob es funktioniert. Und wenn ja, dann sei so nett und setz' den Thread auf solved.

Johnny.
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 15:27 Uhr
:0fw
| /usr/local/bin/spamc
:0:
  • ^X-Spam-Status: Yes
mail/spam

:0c
  • !^From:.*MAILER-DAEMON@muni\.cz.*
backup@muni.cz

  • !X-Loop: Benutzer@ics.muni.cz
| ( formail -r -a "X-Loop: Benutzer@ics.muni.cz.com"; \
echo "Dies ist eine automatisch erzeugte Antwort."; \
echo "any tests, please dont pay attention to this email" ) \
| sendmail -t -oi

ist dat nun ritsch so ??
beim versenden der autoresponder bin ich mir absolut net sicher
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 15:51 Uhr
könntest du dir die Mühe machen und mal die Syntax im weiter unten stehenden post chacken ??

wär super dann könnten eventuelle Probs nur anderweitig auftreten...

Dank
Chris
Bitte warten ..
Mitglied: JohnnyB
26.07.2006 um 16:07 Uhr
Also, ich würde erstmal Kommentare verwenden, das macht das ganze übersichtlicher.

#Schicke alle ankommenden Mails zum Spamfilter und warte darauf, daß sie bearbeitet werden
:0fw
|/usr/local/bin/spamc

#Schiebe alle Mails, die als Spam gekennzeichnet sind in das Verzeichnis MAILDIR/mail/spam
:0:
  • ^X-Spam-Status: Yes
mail/spam


So weit so gut. Was dann kommt, daraus werde ich leider noch nicht schlau. Du wilst eine Kopie aller Mails machen die von dem angegebenen Mailerdeamon kommen. Aber die zeile backup@muni.cz würde hier ja bedeuten, daß diese Kopien im Verzeichnis MAILDIR/backup@muni.cz gespeichert würden. Da mußt Du mir nochmal sagen, was Du damit machen willst.
Dann die Sache mit dem Autoresponder. Zum versenden ist eigentlich nur der Teil nach der Pipe notwendig. Mit formail -r wird eine Antwort generiert und bestehende Header und Body gelöscht. Mit der Option -a Header: Text wird der angegebene Header angefügt, wenn er nicht schon vorhanden ist. Die Echo-Befehle schreiben dann jeweils eine Zeile in den Message-Body und schließlich wird die Nachricht hier an sendmail zur Auslieferung übergeben (Wenn ihr ein anderes Programm zum ausliefern verwendet, dann mußt du nochmal zu deinem Mail-Admin). Hierbei bedeutet die Option -t, daß sendmail den Empfänger der Nachricht aus dem Nachrichten-Header feststellen soll, und -oi sorgt dafür, daß es keine Zeile behandelt, die nur aus einem einzigen Punkt als Eingabe enthält (wird nur selten gebraucht, wird aber üblicherweise eingefügt, um sicherzugehen).
Damit jetzt nicht der Empfänger deiner Nachricht, diese einfach wieder zurückschickt, haben wird den X-Loop Header eingefügt (formail -r -a "X-Loop: ich@meinedomaene.com";) und durch die Prüfung der Bedingung
  • !X-Loop: ich@meinedomaene.com
werden wir nur eine Antwort senden, wenn die Mail diesen Header nicht hat. Eventuell zurückgesendete Antwortmails können wir mittels

#Prüfe Mails auf Zurückgesendeten Autoresponse und schicke sie ins Nirvana
:0
  • ^X-Loop:.*ich@meinedomaene.com.*
/dev/null

ins Datennirvana schicken.
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 16:15 Uhr
mhh also backup soll folgender massen funzen

vielleicht die ganze logik ist besser
also mail kommt im system an, mal wird auf spam geprüft und wenn nicht zutreffend dann wird geprüft ob sie eine deamon ist wenn auch das negativ sollen alle anderen mails die über bleiben an die 2.mailadresse geschickt werden.. wohin gegen die eigendliche mailbox auch die deamon mails bekommen soll...Da es nun einige Kollegen geben soll die urlaub haben, sollen emails die nicht spam und nicht deamon sind eine nachricht zugesendet bekommen

Ich hab hoffentlich nicht wieder das "vergnügen" mit dem emailadmin zu telefonieren.. sendmail is druff ... tja leider steh ich bei diesem herrn in ungnade aber das tut zur eigendlichen sache nichts, ist aber der grund warum ich den spass machen muss :-) face-smile

könntest du mir sagen was ich anpassen muss das diese Logic dann auch hinhaut ??

danks nochmnal
Bitte warten ..
Mitglied: JohnnyB
26.07.2006 um 16:34 Uhr
Off Topic: Ich muß jetzt mal Einkaufen gehen und kann mich erst später wieder um dein Problem kümmern, sorry.

On Topic: Leider habe ich immer noch nicht ganz begriffen, was du machen willst. Hier mal so wie ich es verstanden habe:

1. alle Mails durch den Spamfilter schicken
2. Diejenigen Mails, die der Spamfilter als Spam gekennzeichnet hat in ein Spamverzeichnis schieben.
3. Bei den restlichen prüfen, ob sie von dem Mailerdeamon stammen und falls ja soll eine Kopie davon an backup@muni.cz schicken
4. Alle restlichen Mails, zusätzlich die vom Mailerdeamon ins Mailpostfach verschieben.
5. Für Kollegen, die im Urlaub sind, soll für jede reguläre (also gültige) Mail, die nicht von dem Mailerdeamon sind, eine entsprechende Mitteilung, daß der Empfänger im Urlaub ist an den Absender geschickt werden.
Bitte warten ..
Mitglied: Zitruslimmonade
26.07.2006 um 16:39 Uhr
genau anders rum.. die mails vom deamon nur in die Inbox und die restlichen, nicht spam mails neben der inbox auch an die Backup emailadresse...

Eine automatische antwort soll auf alle nicht spam und nicht deamon mails geschickt werden...
genau das ist das prob

Muss leider auch weg... Haben noch ein meeting und dann wirds nach 14 stunden arbeit auch mal zeit ins bett zu fallen...

ich danke dir schon mal und freu mich morgen weiter zu basten :-) face-smile
Dank dir für die Hilfe (gut einkauf !!!)

gruss
chris
Bitte warten ..
Mitglied: JohnnyB
27.07.2006 um 00:43 Uhr
Ich würde es mal so probieren:

procmailrc

  1. Standardisiert das Headerformat, und sorgt dafür,
  2. daß nach jedem Header-Feldnamen ein Lehrzeichen steht
:0fwh
| formail -z

  1. 1. Regel
  2. Jede Mail an den Spamfilter schicken
:0fw:
|/usr/local/bin/spamc

  1. 2.Regel
  2. Jede Mail, die als Spam gekennzeichnet wurde ins Spamverzeichnis verschieben
:0
  • ^X-Spam: Yes
mail/spam

  1. 3. Regel
  2. Prüfen, ob Mail von Mailerdaemon stammt, wenn nicht, dann an eine Kopie an die Backup adresse schicken
:0fwc:
  • !^From:.*MAILER-DAEMON@muni\.cz.*
| ( formail -I "To: backup@muni.cz";) | sendmail -t -oi

  1. 4. Regel
  2. Prüfen, ob Empfänger im Urlaub ist, wenn ja wird eine Antwort erzeugt
  3. Benötigt die Textdatei /verwaltung/urlaub.txt
  4. Wird nur auf Nachrichten angewandt, die auch dem Muster der vorhergehenden Regel entsprechen (Option A)
  5. Hier auf alle Nachrichten, die nicht von dem Mailer-daemon stammen
:0Afwc:
  • ? formail -x"To:" | egrep -i -f /verwaltung/urlaub.txt
| ( formail -r; echo "Der Empfänger ihrer Mail befindet sich zur Zeit im Urlaub."; ) | sendmail -t -oi

  1. 5.Regel
  2. Alle Mails, welche die oben aufgeführten Regeln passiert haben in die Inbox verschieben
:0
mail/inbox

Anmerkung zur 4. Regel: In die Datei urlaub.txt trägst Du für jeden Kollegen, der im Urlaub ist eine Zeile mit seiner Email-Adresse ein. So mußt Du nicht jedesmal eine neue Regel für jeden Kollegen erstellen, sondern nur die entsprechenden Adressen in die Datei eintragen, bzw. entfernen, sobald der Kollege wieder im Dienst ist.

Da ich noch nie mit procmail gearbeitet habe und derzeit auch kein entsprechendes System zum testen, kann ich leider nicht prüfen, ob es funktioniert. Vor allem die Konstrukte mit den regulären Ausdrücken. Da kann es sein, daß die Negierung evtl. geklammert werden muß, also !(was auch immer) Das mußt du halt ausprobieren, dabei lernt man sowieso am meisten. Ich habe meine Infos nur aus einem Unix-Administrationsbuch zusammengebastelt, wo procmail nicht sehr ausführlich beschrieben ist. Hier noch zwei Internetseiten, die vielleicht hilfreich sein könnten:

1. Procmail Quickstart von Nancy McGough / Infinite Ink
www.ii.com/internet/robots/procmail/qs/

2. Timo Salmis Seite "Procmail Tips and Recipes"
www.uwasa.fi/~ts/info/proctips.html
Bitte warten ..
Mitglied: Zitruslimmonade
27.07.2006 um 10:59 Uhr
hihi, was spass,
alle mal hände wech davon.. mir hats die mailbox destroyed :-) face-smile derbe geschichte

werd mal testen woran es lag und liegt
gruss
chris
Bitte warten ..
Heiß diskutierte Inhalte
Off Topic
Ein Weg weg von Microsoft. Wie würde man es angehen? Lasst uns doch etwas spinnen
it-fraggleVor 15 StundenAllgemeinOff Topic48 Kommentare

Guten Morgen Kollegen, es treibt mich schon seit einigen Jahren um, dass es sinnvoll wäre langsam einen Weg weg von Microsoftprodukten zu finden. Mir ...

Batch & Shell
Wieso funktioniert das nicht?
gelöst Hundy132Vor 1 TagFrageBatch & Shell10 Kommentare

Hallo Freunde, kann mir irgendjemand sagen wieso meine Batch datei nicht funktioniert? So sieht Sie aus: Hier soll ein ein vorgegebenes Passwort Eingegeben werden ...

Router & Routing
Probleme mit VPN Verbindung über shrewsoft
martenkVor 1 TagFrageRouter & Routing25 Kommentare

Hallo Gemeinschaft, habe ein Problem mit der o.g. Verbindung die Verbindung wird aufgebaut und ich kann auch den entfernten Rechner anpingen unter ipconfig sehe ...

Server-Hardware
HPE ProLiant MicroServer Gen10 Plus - Wo wird das OS installiert?
mayho33Vor 1 TagFrageServer-Hardware13 Kommentare

Hallo @ All, Ich liebäugle mit einem neuem Server (siehe Überschrift). Mein alter Gen8 ist zwar immer noch am laufen, aber es gibt einiges ...

Windows Server
Server 2019 RDS-CALs für Domänen-Admins? Ernsthaft?
gelöst anteNopeVor 23 StundenFrageWindows Server7 Kommentare

Nabend zusammen, ich habe hier heute einen RDS auf Basis eines Server 2019 STD installiert und mit User-CALs lizenziert. Soweit funktioniert auch alles. Nur ...

Exchange Server
Outlook Automatisch auf alle eingehendem Mail eine Antwortvorlage versenden
shooanVor 1 TagFrageExchange Server12 Kommentare

Guten Morgen, ich hätte da gerne mal ein Problem zur Lösung. Auf das Freigegeben Postfach Bewerbung@ wünscht nun die Führung das auf alle Mail ...

Exchange Server
Transparente Mail-Archivierung Exch. 2016 m. direktem Outlook-Zugriff
departure69Vor 1 TagFrageExchange Server17 Kommentare

Hallo. - Windows 2016 AD-Domäne, 2 DCs unter W2K16 Std. (1 x physisch, 1 x virtuell unter Hyper-V), Funktionsebene 2016 - Exchange 2016 unter ...

LAN, WAN, Wireless
100m GBit-Richtfunk im Freien - Produktempfehlungen?
mstrd308Vor 1 TagFrageLAN, WAN, Wireless9 Kommentare

Hallo zusammen, ich bin auf der Suche nach Produktempfehlungen um einen Richtfunk von einem Gebäude zu einen weiteren zu realisieren. Die Peripherie soll draußen ...