ubuntuusers.de

Procmail - Zeichen in Header entfernen

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

MTK

Anmeldungsdatum:
28. Dezember 2005

Beiträge: 89

Hallo, ich habe auf meinem Server Procmail und benutze es jetzt, um Mails zu filtern. Wenn eine Mail in ein Postfach gelangt, wird sie markiert (mit einem **r**) und weitergeleitet. Alle Mails, die das Zeichen nicht tragen, werden wieder abgewiesen. Wie kann ich aber mir Procmail die 5 Zeichen im Header wieder entfernen? Gibt es so eine Möglichkeit?

Vielen Dank für die Aufmerksamkeit ☺

Markus

Edit: Rechtschreibung verbessert...

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2178

Wohnort: dahoam

Moin,

interessantes Thema. Leider bin ich nur Mail-Amateur, deswegen nur ein paar Ideen:

  • Ich war eigentlich drauf und dran zu sagen, dass Procmail dafür nicht gemacht ist (dazu unten mehr), aber anscheinend geht das! Der Trick ist das :0 f, dass die Übergabe der Mail in eine Pipe ermöglicht, und dann dort mit sed der Header nacheditiert (hier: der String entfernt) wird.

:0 f
* Subject: "**r**"
| sed 's/**r**//g'

vorsicht vor den Sternchen, die werden normalerweise als Wildcards für beliebige Zeichen verwendet.

  • Grundsätzlich zum Setup: Ich hätte im Server ein eigenes Mailflag definiert (analog zu 'X-Spam:'-Flag), das bereits im Server für die gewollten Mails gesetzt wird. Im Mailclient kann man dann einfach danach filtern (insbes. mit procmail), muss aber nachher nicht mehr im Subject etwas nacheditieren.

  • Noch grundsätzlicher gibt's eigentlich schon ein paar Programme zur Spam-Bekämpfung (wenn das Dein Anliegen ist).

Wichtig: Wie gesagt, ich bin nur Mail-Amateur. Nichts von dem oben ist getestet, das ausprobieren und debuggen überlasse ich Dir. Im Netz gibt es eine ganze Menge von procmail-Rezepten, Google weiß mehr.

Dirk

MTK

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2005

Beiträge: 89

Vielen Dank! Ich wusste gar nicht, dass ich auch ein eigenes Mailflag setzten kann. Ich vermute, das arbeitet ähnlich wie typische Spamsoftware, nur dass es statt des Spamflag ein anderer gesetzt wird. Wie geht das denn? Habe hierzu auch nichts gefunden - das wäre natürlich deutlich einfacher, als hinterher wieder im Header rumzuschreiben ☺

Nur zum Verständnis: Es geht mir darum, meinen Hauptmailaccount sozusagen in einen noreply-Account umzubiegen. Ich möchte also keine Mails mehr an beispielsweise foo@beispiel.de erhalten können, die muss generell über foo-friends@beispiel.de gehen und wird dann an foo@beispiel.de weitergeleitet. Eine direkte Mail wird abgewiesen.

Hoffe, mich halbwegs klar ausgedrückt zu haben. Wie gesagt: Das Thema mit dem Flag hört sich interessant an. Wie geht das bitte? Finde hierzu nichts im Netz.

Markus

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2178

Wohnort: dahoam

MTK schrieb:

Vielen Dank! Ich wusste gar nicht, dass ich auch ein eigenes Mailflag setzten kann. [...] Wie geht das denn? Habe hierzu auch nichts gefunden

In der Procmail Mini FAQ habe ich folgendes gefunden:

Code Q: I know how to forward a message using an ! action, but that doesn't let me modify the message I forward. Is there a way to do that?

A: Typically, you want to add or change a header. This sounds like formail. The only thing that remains then is to actually send it off. You can of course filter first and then send (see next question), but you might as well do both in one fell swoop (unless you also want the modified message in your normal mail stream; again, see the next question for more).

	:0c
	* ^TO_sales@pizzazz\.tm\>
	* ! ^X-Loop: sales@mundane\.domain\.net
	| formail -k -X "From:" -X "Subject:" \
		-I "To: sales@mundane.domain.net" -X "To:" \
		-I "X-Loop: sales@mundane.domain.net" -X "X-Loop:" \
	  | $SENDMAIL $SENDMAILFLAGS -t

This is almost like a real-world example. It will (a) trim down the headers considerably, sparing only the From: and Subject: of the original. Then (b) we add some headers of our own (remember to extract them with -X too!), and (c) the results are handed to Sendmail. The -t option means the To: (and Cc: etc) lines in the actual message contain the recipient's address. 

(Suche auf der Seite nach 'modify the message')

Siehe auch man (1) formail

Was fügt man in den Header ein? Genauso ein Eintrag wie From, To, Cc, nur werden nicht alle Header von den Mailprogrammen ausgewertet. Und um IETF-konform zu bleiben, fangen alle selbst-definierten Flags mit 'X-' an, bekanntestes Beispiel wie erwähnt 'X-Spam', aber meine Mails haben alle 'X-GMX-Antispam:' oder ein 'X-Kmail-MDN-Sent' und das ist garantiert nicht als Standard eingetragen. Ein 'X-MarkusOnly' sollte es tun 😉

Dirk

MTK

(Themenstarter)

Anmeldungsdatum:
28. Dezember 2005

Beiträge: 89

Ah, DAS ist eine hervorragende Idee - vielen Dank für die Links und die Erklärung. Das Thema ist hiermit erledigt! 👍

Antworten |