Mailübergabe an Script

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
Anonymous

Mailübergabe an Script

Post by Anonymous » 2003-06-16 22:32

Hallo,

ich möchte gern das Abbestellen eines Newsletters automatisieren, indem der Abonnent einfach eine eMail an eine definierte Adresse sendet. Diese Mail möchte ich mit einem Script abfangen und dann den Absender herausfiltern. Nun habe ich folgendes Problem:

in der /etc/aliases habe ich folgenden Eintrag gemacht
web20p1: "|/home/www/web17/test.pl"
(wobei test.pl erst mal son übungsscript ist)

Wenn ich das Script per Hand aufrufe läuft es.
Wenn ich nun jedoch eine eMail an den Account web20p1 sende, klappt das nicht, dann habe ich plötzlich einen sendmail-Prozess mit maximaler Prozessorauslastung, der auch nicht von allein beendet wird. Das Script selbst scheint dann auch nicht zu funzen, die Testdatei, die es beim manuellen Start korrekt anlegt, ist nach dem eMail-Versand jedenfalls nicht da.

Hat irgendjemand Erfahrung mit dieser Sache?
Muß man hier noch irgendwas Spezielles beachten?

Gruß
André

olaf.dietsche
RSAC
Posts: 409
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Mailübergabe an Script

Post by olaf.dietsche » 2003-06-16 23:20

aly2000 wrote:ich möchte gern das Abbestellen eines Newsletters automatisieren, indem der Abonnent einfach eine eMail an eine definierte Adresse sendet. Diese Mail möchte ich mit einem Script abfangen und dann den Absender herausfiltern. Nun habe ich folgendes Problem:

in der /etc/aliases habe ich folgenden Eintrag gemacht
web20p1: "|/home/www/web17/test.pl"
(wobei test.pl erst mal son übungsscript ist)

Wenn ich das Script per Hand aufrufe läuft es.
Wenn ich nun jedoch eine eMail an den Account web20p1 sende, klappt das nicht, dann habe ich plötzlich einen sendmail-Prozess mit maximaler Prozessorauslastung, der auch nicht von allein beendet wird. Das Script selbst scheint dann auch nicht zu funzen, die Testdatei, die es beim manuellen Start korrekt anlegt, ist nach dem eMail-Versand jedenfalls nicht da.

Hat irgendjemand Erfahrung mit dieser Sache?
Muß man hier noch irgendwas Spezielles beachten?
Es kommt darauf an wie dein sendmail konfiguriert ist. Unter Umständen muß dein Skript in einem bestimmten Verzeichnis sein, damit es ausgeführt wird. Bei mir ist das z.B. /etc/mail/smrsh. Schau mal in man smrsh nach.

Aber eventuell bist du mit procmail besser bedient. Wenn du procmail bereits als lokalen delivery agent installiert und konfiguriert hast, dann genügt eine Datei .procmailrc im Homeverzeichnis von web20p1:

Code: Select all

:0
|/home/www/web17/test.pl
Die Variante mit dem alias hat dagegen den Vorteil, daß du keinen Benutzer anlegen mußt.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Mailübergabe an Script

Post by alexander newald » 2003-06-18 00:05

Wie sieht das Skript aus?

Alexander Newald

Anonymous

Re: Mailübergabe an Script

Post by Anonymous » 2003-06-18 00:11

Also, das war erst mal nur so eine Art Testscript, mit dem ich erst mal abchecken wollte, ob und wie ich den Inhalt der Mail dann übergeben bekomme. Dazu habe ich einfach mal die %ENV in eine Textdatei ausgeben lassen:

Code: Select all

#!/usr/bin/perl
###############################################
$data="daten.txt";
open (OUTFH, ">>$data");
    seek(OUTFH, 0, 0);
    truncate(OUTFH, 0);
    foreach $key (keys %ENV) {
    print OUTFH "- $key = $ENV{$key} -n";
    }
   close(OUTFH);
exit;
aber es hat je nicht geklappt. Ich habe zu diesem Thema auch weiter nichts gefunden ...

André

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Mailübergabe an Script

Post by alexander newald » 2003-06-18 15:24

Ne, so geht das auch nicht

Probier mal:

Code: Select all

#!/usr/bin/perl -w

my $line = "";

open(FILE,">/tmp/mailmessage");

while(<STDIN>) {
  chomp($line = $_);
  print FILE "$linen";
  }

close(FILE);
Alexander Newald

cgiresource
Posts: 73
Joined: 2002-11-14 22:25
Location: Hamburg

Re: Mailübergabe an Script

Post by cgiresource » 2003-06-18 15:40

Hi,

ich hatte mal das selbe Problem, dass ich für ein Supportsystem die Mail an ein Script weiterleiten lassen wollte.
Ich habe das dann im Endeffekt so gemacht, dass ich via aliases die Mail an das Script "übergeben" habe und zusätzlich in ein Postfach geleitet habe.

Die Zeile aus aliases (Aufruf genau wie bei dir) schubst das Perlscript an und das Script connectet dann mittels use Net::POP3 mit dem Mailpostfach. Und so bearbeite ich dann die Daten weiter.
Also wird durch den Alias nichts an das Script bei mir übergeben sondern nur angeschubst.
Ist ja vielleicht eine Alternative für dich.

Gruß,

CGIResource

Anonymous

Re: Mailübergabe an Script

Post by Anonymous » 2003-06-18 22:10

@cgiresource
danke erst mal für den Tipp.
Jedoch hatte ich ja schon beim "Anschubsen" des Scripts das Problem mit dem hängenden sendmail-Prozeß, also muß ich das erst mal klären:
hast Du beim Speicherort des Scriptes irgend etwas beachtet (s. oben bei Olaf.D.)? Bzw. welche Rechte muß das Script haben? Ich hatte ja nach meinen erfolglosen Tests arge Probleme mit sendmail, mußte dann sendmail neu installieren. Nach der Neuinstallation habe ich dann plötzlich die Fehlermeldungen meiner Tests bekommen:
----- The following addresses had permanent fatal errors -----
"|/home/www/web17/test.pl"
(reason: 126)
(expanded from: web20p1)

----- Transcript of session follows -----
sh: /home/www/web17/test.pl: Permission denied
554 5.3.0 "|/home/www/web17/test.pl"... unknown mailer error 126
Offenbar war die Nichtausführung ein Rechteproblem, warum dann sendmail nicht mehr korrekt lief, weiß ich auch nicht. Ich hatte das test.pl mit chmod x+a ausgestattet es gehörte web17.
Vielleicht kannst Du mir ja mal n paar Details zu meinen Fragen zukommen lassen?

Danke
Gruß
André

olaf.dietsche
RSAC
Posts: 409
Joined: 2002-12-19 02:06
Location: Siegburg

Re: Mailübergabe an Script

Post by olaf.dietsche » 2003-06-19 00:12

aly2000 wrote:@cgiresource
danke erst mal für den Tipp.
Jedoch hatte ich ja schon beim "Anschubsen" des Scripts das Problem mit dem hängenden sendmail-Prozeß, also muß ich das erst mal klären:
hast Du beim Speicherort des Scriptes irgend etwas beachtet (s. oben bei Olaf.D.)? Bzw. welche Rechte muß das Script haben? Ich hatte ja nach meinen erfolglosen Tests arge Probleme mit sendmail, mußte dann sendmail neu installieren. Nach der Neuinstallation habe ich dann plötzlich die Fehlermeldungen meiner Tests bekommen:
----- The following addresses had permanent fatal errors -----
"|/home/www/web17/test.pl"
(reason: 126)
(expanded from: web20p1)

----- Transcript of session follows -----
sh: /home/www/web17/test.pl: Permission denied
554 5.3.0 "|/home/www/web17/test.pl"... unknown mailer error 126
Offenbar war die Nichtausführung ein Rechteproblem, warum dann sendmail nicht mehr korrekt lief, weiß ich auch nicht. Ich hatte das test.pl mit chmod x+a ausgestattet es gehörte web17.
Vielleicht kannst Du mir ja mal n paar Details zu meinen Fragen zukommen lassen?
Ein Skript muß normalerweise Lese- (r) und Ausführrechte (x) haben. Funktioniert das Skript denn jetzt?

Anonymous

Re: Mailübergabe an Script

Post by Anonymous » 2003-06-19 00:16

... ich habe mich nachdem ich nun gestern mein sendmail neu installieren mußte, erst mal gar nicht mehr an die Sache rangewagt. Jetzt werde ich mal schnell paar Stunden schlafen gehen, aber morgen (oder besser heute) früh werde ich das ganze noch mal testen und dann hier berichten ...

Gruß
André

cgiresource
Posts: 73
Joined: 2002-11-14 22:25
Location: Hamburg

Re: Mailübergabe an Script

Post by cgiresource » 2003-06-19 09:00

aly2000 wrote:hast Du beim Speicherort des Scriptes irgend etwas beachtet (s. oben bei Olaf.D.)? Bzw. welche Rechte muß das Script haben?
Nein, das Script gehört dem User "verwaltung" und das ist ein normaler FTP-User. Das Script hat die Rechte 755 ohne x+a.

Ich kann dir aber gerne nochmal die Zeile in der aliases nennen:

Code: Select all

mail2script:    "|/home/www/verwaltung/html/pop3client2.cgi", mail2script
Kurze Erläuterung: Es gibt den POP3-User "mail2script". Dieser ist nicht in irgeneiner Form in der virtusertable (ich verwende Sendmail mit qpopper) hinterlegt. Aliases fängt das ab, schubst das Script an und leitet die Mail in das Postfach von mail2script.

Das hat bei mir sofort funktioniert.
Allerdings hat das direkte Ã?bergeben an das Script, also ohne Weiterleitung an das Postfach nicht funktioniert. Das war aber mehr ein Programmierfehler :D

Gruß,

CGIResource

Anonymous

Re: Mailübergabe an Script

Post by Anonymous » 2003-06-19 10:22

Hi,

erst mal danke für die Hilfe.
Habe gerade einen Link gefunden, der einen recht brauchbaren Ansatz zum Thema eMail-Ã?bergabe an Script bietet:
http://www.tei-lin-net.de/tip_mail2msg_01.html
Da ist gleich n Script vorhanden, das dann die eMail in ihre Bestandteile zerlegt. Damit werde ich nun gleich mal bißchen experimentieren.

Gruß
André