Weiterleitung von E-Mails in Abhängigkeit von ihrer Größe
Hallo zusammen, ich muß folgendes Problem lösen: E-Mails sollen über die .forward an eine andere Adresse weitergeleitet werden. Nun soll es so sein, daß Mails bis zu einer bestimmten Größe vollständig weitergeleitet werden sollen. Überschreitet die Mail diese Größe, so sollen die Attachments abgeschnitten und nur noch der Textteil weitergeleitet werden. Die Attachments selbst können dabei verworfen werden. Weiß jemand, ob es für derlei Aufgaben fertige Code-Schnipsel gibt? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Andre Tann wrote:
E-Mails sollen über die .forward an eine andere Adresse weitergeleitet werden. Nun soll es so sein, daß Mails bis zu einer bestimmten Größe vollständig weitergeleitet werden sollen. Überschreitet die Mail diese Größe, so sollen die Attachments abgeschnitten und nur noch der Textteil weitergeleitet werden. Die Attachments selbst können dabei verworfen werden.
Ich würde das mit procmail machen. In der ~/.procmailrc so was: :0: * > 512000 | programm_das_die_mail_weiterverarbeitet Das würde Mails, die größer als 512 KB sind, dem Skript/Programm "programm_das_die_mail_weiterverarbeitet" übergeben. Kleinere Mails würden den normalen Weg gehen, zB an die in .forward stehende Adresse weitergeleitet werden. Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 06 Okt 2008, Joachim Marx schrieb:
Andre Tann wrote:
E-Mails sollen über die .forward an eine andere Adresse weitergeleitet werden. Nun soll es so sein, daß Mails bis zu einer bestimmten Größe vollständig weitergeleitet werden sollen. Überschreitet die Mail diese Größe, so sollen die Attachments abgeschnitten und nur noch der Textteil weitergeleitet werden. Die Attachments selbst können dabei verworfen werden.
Ich würde das mit procmail machen. In der ~/.procmailrc so was:
:0: * > 512000 | programm_das_die_mail_weiterverarbeitet
Äh, da würde sich eher ein Filter (:0 fw) anbieten, der die Mail ohne Attachments ausgibt. Dann kann man einfach anschließend die Weiterleitung haben (s.u.).
Das würde Mails, die größer als 512 KB sind, dem Skript/Programm "programm_das_die_mail_weiterverarbeitet" übergeben.
Kleinere Mails würden den normalen Weg gehen, zB an die in .forward stehende Adresse weitergeleitet werden.
Die Weiterleitung kann man auch direkt in procmail machen. ## ohne Bedingung weiterleiten: :0 ! E_MAIL_ADRESSEN HTH, -dnh -- Hab ich schon mal den Untertitel "Fachgeschäft für Erektionsbekleidung" an einem Kondomladen erwähnt, dessen Anblick mich augenblicklich in ein hilflos am Boden nach Luft japsendes Etwas verwandelte? -- vG -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller, Montag, 6. Oktober 2008 21:08:
Äh, da würde sich eher ein Filter (:0 fw) anbieten, der die Mail ohne Attachments ausgibt. Dann kann man einfach anschließend die Weiterleitung haben (s.u.).
Welcher Filter kann mir die Mail ohne Attachments ausgeben? Und vor allem: ich will ja nicht einfach überall die Attachments abschneiden, sondern nur, wenn die Mail insgesamt eine gewisse Größe überschreitet. Ansonsten soll die Mail inkl. Attachment weitergeleitet werden. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mon, 06 Okt 2008, Andre Tann schrieb:
David Haller, Montag, 6. Oktober 2008 21:08:
Äh, da würde sich eher ein Filter (:0 fw) anbieten, der die Mail ohne Attachments ausgibt. Dann kann man einfach anschließend die Weiterleitung haben (s.u.).
Welcher Filter kann mir die Mail ohne Attachments ausgeben?
Ich kenn nix fertiges, mit MIME::Parser kann man das aber rel. einfach, wobei man noch schauen sollte, welche Mime-Types man im Body behalten will.
Und vor allem: ich will ja nicht einfach überall die Attachments abschneiden, sondern nur, wenn die Mail insgesamt eine gewisse Größe überschreitet. Ansonsten soll die Mail inkl. Attachment weitergeleitet werden.
Du startest, wie schon vorgeschlagen, das abschnibbel-script einfach via procmail über eine Filterregel, die nur bei großen Dateien greift: :0 fw # filter, wait * > 524288 # wenn Mail > 512 kB | abschnibbel-script # Attachments entfernen, Ausgabe des Scripts # wird weiterverarbeitet :0 ! weiterleiten@an.irgendwo.tld Melde dich ggfs. wg. dem script. Einen Header daß Attachments entfernt wurden fügt man am einfachsten im abschnibbel-script mit ein, es ginge aber z.B. auch mit formail. HTH, -dnh -- Keep your fights clean and your sex dirty. -- Kevin Bacon on keeping a successful marriage -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
David Haller, Montag, 6. Oktober 2008 22:23:
Melde dich ggfs. wg. dem script.
Einen Header daß Attachments entfernt wurden fügt man am einfachsten im abschnibbel-script mit ein, es ginge aber z.B. auch mit formail.
Der Header muß nicht eingefügt werden. Die gekürzte Version landet auf einem Blackberry (daher der ganze Aufwand), die vollständige Version sowieso in der Mailbox des betreffenden Benutzers. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Andre Tann wrote:
David Haller, Montag, 6. Oktober 2008 22:23:
Melde dich ggfs. wg. dem script.
Hab jetzt ne ganze Weile herumgegoogelt. Aber mit MIME::Parser als Stichwörter komme ich nicht weiter. Habe von Perl leider zuwenig Ahnung. Wonach suche ich überhaupt?
Ich fand diesen Hinweis:
perl -MCPAN -e install MIME::Parser
was mir wohl das Modul aus dem CPAN installiert. Aber was stelle ich nun damit an, bzw. wie spreche ich es überhaupt an?
Erbitte einen Schubs in die Richtung, in der ich weitersuchen muß.
Grins! "man MIME::Parser" gibt eine nette kleine Einführung darin. Wenn du jedoch mit Perl-Scripten noch nicht viel am Hut hast, nützt dir das wahrscheinlich wenig.
Einen Header daß Attachments entfernt wurden fügt man am einfachsten im abschnibbel-script mit ein, es ginge aber z.B. auch mit formail.
Der Header muß nicht eingefügt werden. Die gekürzte Version landet auf einem Blackberry (daher der ganze Aufwand), die vollständige Version sowieso in der Mailbox des betreffenden Benutzers.
Wozu denn der Aufwand? Wenn der Blackberry das nicht anfordert, dann sollt das Attachment ohnehin nicht geladen werden. Blackberries laden die Mail IIRC in 2 oder 4 kB-Schritten, deshalb sollte das ohnehin nicht wichtig sein. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Sandy Drobic, Mittwoch, 8. Oktober 2008 12:03:
Grins! "man MIME::Parser" gibt eine nette kleine Einführung darin. Wenn du jedoch mit Perl-Scripten noch nicht viel am Hut hast, nützt dir das wahrscheinlich wenig.
Ich wüßte nicht mal, wo ich diese Einführung finde. Ist MIME::Parser eine Datei?
Wozu denn der Aufwand? Wenn der Blackberry das nicht anfordert, dann sollt das Attachment ohnehin nicht geladen werden. Blackberries laden die Mail IIRC in 2 oder 4 kB-Schritten, deshalb sollte das ohnehin nicht wichtig sein.
Im Prinzip hast Du recht. Aber T-Mobile verweigert die Annahme von Mails über 8,4 MB: remote SMTP server limits maximum mail size: host tmobilede.mx1.eu.blackberry.com[216.9.253.35]: maximum allowed size: 8.4M (8388608) actual size: 8.5M (8520020) Also muß ich sehen, daß Mails mit mehr als 8,4 MB vom Attachment befreit werden, damit sie überhaupt durchgehen. Bei Mails kleiner als 8,4 MB greift der von Dir genannte Mechanismus. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Andre Tann wrote:
Sandy Drobic, Mittwoch, 8. Oktober 2008 12:03:
Grins! "man MIME::Parser" gibt eine nette kleine Einführung darin. Wenn du jedoch mit Perl-Scripten noch nicht viel am Hut hast, nützt dir das wahrscheinlich wenig.
Ich wüßte nicht mal, wo ich diese Einführung finde. Ist MIME::Parser eine Datei?
Genau hinschauen: "man" wie manual steht davor.
Wozu denn der Aufwand? Wenn der Blackberry das nicht anfordert, dann sollt das Attachment ohnehin nicht geladen werden. Blackberries laden die Mail IIRC in 2 oder 4 kB-Schritten, deshalb sollte das ohnehin nicht wichtig sein.
Im Prinzip hast Du recht. Aber T-Mobile verweigert die Annahme von Mails über 8,4 MB:
remote SMTP server limits maximum mail size: host tmobilede.mx1.eu.blackberry.com[216.9.253.35]: maximum allowed size: 8.4M (8388608) actual size: 8.5M (8520020)
Also muß ich sehen, daß Mails mit mehr als 8,4 MB vom Attachment befreit werden, damit sie überhaupt durchgehen. Bei Mails kleiner als 8,4 MB greift der von Dir genannte Mechanismus.
Ah, ich bin davon ausgegangen, dass ihr einen Blackberry Enterprise Server bei euch stehen habt. Dann ist das alles kein Problem. -- Sandy Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Sandy Drobic, Mittwoch, 8. Oktober 2008 13:22:
Ich wüßte nicht mal, wo ich diese Einführung finde. Ist MIME::Parser eine Datei?
Genau hinschauen: "man" wie manual steht davor.
Hmpf... lesen hilft. Hab ich jetzt auch angesehen. Aber ich verstehe leider überhaupt nicht, wovon darin die Rede ist, bzw. worauf sich die Beispiele (und die in man MIME::Tools) überhaupt beziehen. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mit, 08 Okt 2008, Andre Tann schrieb:
David Haller, Montag, 6. Oktober 2008 22:23:
Melde dich ggfs. wg. dem script.
Hab jetzt ne ganze Weile herumgegoogelt. Aber mit MIME::Parser als Stichwörter komme ich nicht weiter. Habe von Perl leider zuwenig Ahnung. Wonach suche ich überhaupt?
Der Doku zu diesem Perl-Modul? ;)
Ich fand diesen Hinweis:
perl -MCPAN -e install MIME::Parser
was mir wohl das Modul aus dem CPAN installiert. Aber was stelle ich nun damit an, bzw. wie spreche ich es überhaupt an?
Es ist als RPM bei SuSE dabei, Paket "perl-MIME-tools". MIME::Parser taucht auch in den Provides des Paketes auf, ist also via yast2 etc. zu finden. Ein Versuch des Scriptes: ,----[ mail-remove-attachments.pl ] | #!/usr/bin/perl -w | use strict; | use MIME::Parser; | use constant MAX_ATT_SIZE => 510*1024; | my $parser = new MIME::Parser; | $parser->output_to_core(1); | $parser->ignore_errors(1); | my $msg = eval { $parser->parse(\*STDIN) }; | if($@) { $parser->filer->purge(); die $@; } | $msg->head->delete('Lines'); | my @keep = grep { $_->effective_type() =~ "^text/" | && length($_->as_string) < MAX_ATT_SIZE | } $msg->parts(); | $msg->parts(\@keep); | $msg->sync_headers(Length=>'COMPUTE'); | $msg->print(); | $parser->filer->purge(); `----[ etwas enger formatiert als ich's mag ] Die relevante Doku sind neben 'man MIME::Parser' noch 'man MIME::Entity' und evtl. auch 'man MIME::Body' und 'man MIME::Head' (alles Teil von perl-MIME-tools). Das Beispiel behält alle "text/..." Teile einer Mail, die kleiner als 510 KB sind. Binaries und Text-Teile >= 510 KB fliegen raus. Der "Body" ist ja bei Multipart-Mails ja auch nur ein "part", daher der Aufwand. Da du wohl kaum zu große "nur Text" Mails bekommst könnte obiges schon passen. Aber ich kenn deine genauen Anforderungen eben nicht... Die Fehlerbehandlung müßte man noch testen, AFAIK sollte es aber so wie oben tun. Einbindung in procmail wie vorgeschlagen mit: ,----[ ~/.procmailrc Fragment ] | ### eine Kopie der Mail erzeugen, ggfs. kürzen und weiterleiten | :0 c | # hier ggfs. noch eine Bedingung für die Mails, die weitergeleitet | # werden sollen einfügen, z.B. eine Empfängeradresse o.ä. | { | ### Mails > 512k kürzen | :0 fw | * > 524288 | | mail-remove-attachments.pl | | ### und die (evtl. gekürzte) Kopie weiterleiten | :0 | ! weiterleiten@an.irgendwo.tld | } | # original Mail weiterverarbeiten/ablegen etc. `----
Einen Header daß Attachments entfernt wurden fügt man am einfachsten im abschnibbel-script mit ein, es ginge aber z.B. auch mit formail.
Der Header muß nicht eingefügt werden. Die gekürzte Version landet auf einem Blackberry (daher der ganze Aufwand), die vollständige Version sowieso in der Mailbox des betreffenden Benutzers.
Naja, wäre halt nett, wenn man sehen kann, ob was entfernt wurde ;) Aber so bleibt das script einfacher. Fragen? HTH, -dnh -- "Where's the kaboom? There was supposed to be an Earth-shattering kaboom!" -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Andre Tann wrote:
Welcher Filter kann mir die Mail ohne Attachments ausgeben?
Ein kleines Perl-Skript, das die Mail auf stdin entgegennimmt, das Attachment entfernt und dann die Mail wieder auf stdout ausgibt? Wenn mich meine Erinnerung nicht täuscht, wurde das Thema sogar von Dir selbst vor einiger Zeit mal hier aufgebracht. Aber ich kann mich täuschen.
Und vor allem: ich will ja nicht einfach überall die Attachments abschneiden, sondern nur, wenn die Mail insgesamt eine gewisse Größe überschreitet. Ansonsten soll die Mail inkl. Attachment weitergeleitet werden.
Durch die Bedingung, die ich schon in meiner Mail nannte * > 512000 greift die folgende Regel ja nur, wenn die Mail größer als 512 KB ist (oder was Du eben brauchst.) Und wie David schon sagte, kannst Du das Programm, in das die Mail gepiped wird, auch als Filter konzipieren und dann entsprechend das Recipe einleiten mit :0 fw: man procmailrc: "f Consider the pipe as a filter" "w Wait for the filter or program to finish and check its exitcode (normally ignored); if the filter is unsuccessful, then the text will not have been filtered." Ich übergeb zB so die Mails an spamc als Filter. Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo zusammen,
ich mu=DF folgendes Problem l=F6sen:=20
E-Mails sollen =FCber die .forward an eine andere Adresse=20 weitergeleitet werden. Nun soll es so sein, da=DF Mails bis zu einer bestimmten Gr=F6=DFe=20 vollst=E4ndig weitergeleitet werden sollen. =DCberschreitet die Mail=20 diese Gr=F6=DFe, so sollen die Attachments abgeschnitten und nur noch=20 der Textteil weitergeleitet werden. Die Attachments selbst k=F6nnen=20 dabei verworfen werden.
Wei=DF jemand, ob es f=FCr derlei Aufgaben fertige Code-Schnipsel gibt?
Hallo Andre, mir fällt auch nichts fertiges ein, aber ich verwende gerne mal reformime, um Mails zu splitten. Wolfgang Hamann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
hamann.w@t-online.de, Dienstag, 7. Oktober 2008 05:37:
mir fällt auch nichts fertiges ein, aber ich verwende gerne mal reformime, um Mails zu splitten.
...aus dem Paket maildrop? Ich habe es bei rpmseek gefunden. Bei SuSE scheint es nicht dabei zu sein. Oder meintest Du was anderes? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (5)
-
Andre Tann
-
David Haller
-
hamann.w@t-online.de
-
Joachim Marx
-
Sandy Drobic