PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie setze ich für QMail die richtige Umgebungsvariable?



thabermann
03.12.01, 14:53
Hallo!
Ich habe einen E-Mail Server privat laufen, basiert auf QMail und Courier-IMAP. Mit dem QMAILQUEUE Patch werden externe Mails ans Internet mit meiner Internet Domain maskiert (funktioniert). Als Clients auf den Win Rechnern war bisher Outlook, aber nach den ganzen Sicherheitsproblemen ist mir dabei nicht mehr so wohl. Deswegen will ich gerne IMP als plattformübergreifenden Client einsetzen. IMP habe ich am Laufen, internes Mail funktioniert auch. Nur extern funktioniert eben nicht weil der QMAILQUEUE Patch eben nur für den SMTP Server die richtigen Umgebungsvariablen setzt. IMP speißt die Mails aber über den sendmail Wrapper ein.

Lange Rede, kurzer Sinn: Alles was ich also zu tun brauche ist irgendwie die Umgebungsvariable QMAILQUEUE zu setzen so dass Qmail sie auslesen kann. Wie kann ich das machen?

thabermann
03.12.01, 15:13
Tja, ich hätte da jetzt noch eine Idee. Und zwar benutzt IMP ja den sendmail Wrapper. Wenn ich nun statt dessen ein Shell Skript angebe dass die Mail ordnungsgemäß bearbeitet und dann seinerseits an den sendmail Wrapper weiterleitet müsste es ja auch funktionieren, oder?
Wie realisiere ich dann in so einem Programm folgendes:
Die Mail soll einfach durch einen Filter in Form eines Skriptes laufen (es geht um qmail-masq.pl). Das Skript nimmt die Mails über STDIN an und gibt die Zeilen über STDOUT aus. Das ganze müsste dann an den Sendmail Wrapper laufen. So fit bin ich leider mit Pipes nich :( Bin für jede Hilfe dankbar!

thabermann
03.12.01, 16:44
tja, jetzt hab ich mal folgendes probiert und als sendmail Programm "/usr/sbin/sendmail | /var/qmail/bin/qmail-masq.pl" gesetzt. Zumindest unter der Kommandozeile funktionier so das Skript, wenn ich also im Terminal das so starte kann ich wie gewohnt eine Mail angeben und diese wird dann auch an Qmail übergeben. Nur es wird nicht richtig behandelt, folgendes steht in den Logs:

Dec 3 15:53:28 server qmail: 1007391208.440366 new msg 129462
Dec 3 15:53:28 server qmail: 1007391208.440634 info msg 129462: bytes 264 from
<root@net.home> qp 2750 uid 0
Dec 3 15:53:28 server qmail: 1007391208.460109 starting delivery 9: msg 129462
to local msglog@server.net.home
Dec 3 15:53:28 server qmail: 1007391208.460301 status: local 1/10 remote 0/20
Dec 3 15:53:28 server qmail: 1007391208.589195 new msg 129463
Dec 3 15:53:28 server qmail: 1007391208.589415 info msg 129463: bytes 368 from
<root@net.home> qp 2753 uid 107
Dec 3 15:53:28 server qmail: 1007391208.631688 starting delivery 10: msg 129463
to local msglog@server.net.home
Dec 3 15:53:28 server qmail: 1007391208.632937 status: local 2/10 remote 0/20
Dec 3 15:53:28 server qmail: 1007391208.633642 delivery 9: success: did_0+1+0/q
p_2753/
Dec 3 15:53:28 server qmail: 1007391208.639381 status: local 1/10 remote 0/20
Dec 3 15:53:28 server qmail: 1007391208.640016 starting delivery 11: msg 129463
to local root@server.net.home
Dec 3 15:53:28 server qmail: 1007391208.640374 status: local 2/10 remote 0/20
Dec 3 15:53:28 server qmail: 1007391208.640758 end msg 129462
Dec 3 15:53:28 server qmail: 1007391208.689564 delivery 10: failure: This_messa
ge_is_looping:_it_already_has_my_Delivered-To_line._(#5.4.6)/
Dec 3 15:53:28 server qmail: 1007391208.693686 status: local 1/10 remote 0/20
Dec 3 15:53:28 server qmail: 1007391208.804427 new msg 129464
Dec 3 15:53:28 server qmail: 1007391208.804636 info msg 129464: bytes 470 from
:

Das sagt mir leider wenig, ausser dass es seitenweise so weiter geht und ich im Endeffekt in meinem Postmaster Postfach so ca. 25 Fehlernachrichten gefunden habe plus der Nachricht selbst. Eigentlich hätten die Einstellungen von Qmail die Mail ordnungsgemäß weiterleiten müssen. Was ist falsch?

thabermann
03.12.01, 18:33
Ich weiß nicht warum ich mir immer selber antworten muss, aber wie auch immer, wenn ich /usr/sbin/sendmail | /var/qmail/bin/qmail-masq.pl als sendmail Wrapper bei IMP angebe schickt er mir das qmail-masq Skript! Wie muss ich die Pipe basteln damit die Daten erst an das Skript gehen und dann der Output vom Skript an sendmail geht?

rbla
04.12.01, 20:30
nimm doch einfach qmail-inject (ich bin nicht sicher, ob der sendmail wrapper die variablen weiterreicht)
dabei kannst du auch gleich noch die parameter sendmail typisch verarbeiten (falls man das bei IMP nicht einstellen kann)

#!/bin/sh
QMAIL_QUEUE=/var...qmail-masq.pl
qmail-inject .....

alternativ kannst du natürlich auch IMP anpassen (je nach komplexität des IMP codes würde ich das vorziehen)

thabermann
04.12.01, 22:53
Ok, danke. Das ist eine Idee, weil es scheint mir langsam wirklich so als würde der sendmail Wrapper die Variablen ignorieren, vielleicht liegts aber auch an meiner blödheit... Wie auch immer, aber da wo du die Punkte gemacht hast, da hakelts noch bei mir. Wie bekomm ich die Mail über das Skript an qmail-inject? Kann sein dass das eine dumme Frage ist, aber mit diesen Sachen hab ich mich noch so gut wie gar nicht beschäftigt. Also wie muss die Pipe oder was auch immer Konstruktion da aussehen damit die E-Mail (ich nehm an die kommt dann praktisch über STDIN rein, oder?) an qmail-inject weitergegeben wird? Bzw. wie geht das allgemein, dann könnt ich mir ein Skript schreiben welches den Versand per SMTP abwickelt.

rbla
05.12.01, 16:00
das skript erält die mail ja auf STDIN,
jedes aus dem skript gestartete programm hat die gleichen STDIN,STDOUT,STDERR, wenn man nicht nicht explizit etwas anderes angibt, z.b. qmail-inject < file > /dev/null

das ist aber in deinem fall nicht nötig
du musst einzig und allein auf die richtigen parameter achten
(bei qmail-inject ist AFAIK auch die reihenfolge wichtig)

wenn du nicht weißt, welche parameter IMP übergibt, dann kannst du auch erstmal ein dummy skript machen, das alle parameter in eine datei speichert

thabermann
05.12.01, 17:12
Ok, danke so hab ich mir das natürlich auch erst gedacht und ausprobiert aber es funktionierte nicht und es funktioniert jetzt auch nicht. Also das Problem muss wohl darin liegen dass der QMAILQUEUE Patch so überhaupt nicht funktioniert. Das Skript sieht erstmal so aus:

#!/bin/sh
QMAILQUEUE=/var/qmail/bin/qfilter-masq
/var/qmail/bin/qmail-inject
Wenn ich das als sendmail angebe, dann sendet er die Mail aber die Variable lässt er kalt, die Mail läuft wieder nicht durch den Filter. Also, ich weiß nicht ob dir da noch was einfällt, ich fänds aber eigentlich einfacher das ganze über SMTP zu verschicken. Kann ich das auch mit qmail-inject machen, auf localhost SMTPen, oder muss ich da Perl rausholen und das SMTP Modul verwenden?

thabermann
06.12.01, 16:30
Ich hab das jetzt mal ausprobiert, ein Skript zu schreiben das die Mails per SMTP an den Server gibt. Aber das ist gar nicht so einfach, denn die SMTP Module von Perl wollen alle erstmal die Header Infos haben. Ich kann das Mail aber natürlich nur als ganzes geben. Das hieße dann das ich auch noch Sockets selber programmieren muss und und und, was sich halt daraus alles noch an Komplikationen ergibt. Soviel Arbeit ist es mir nicht wert. Da schreib ich mir ja eher einen eigenen Webmail Client.
Also muss es irgendwie mit Pipes etc gehen, nur scheint qmail da noch nicht so ganz mitzumachen.

Folgendes:
/var/qmail/bin/qmail-masq.pl < maildaten
gibt mir die Mail maskiert aus.
/usr/sbin/sendmail < /var/qmail/bin/qmail-masq.pl < maildaten
funktioniert nicht. Es passiert überhaupt nichts und in die Logs kommt auch nichts.

edit: Ich hab da eine Nachricht die die ganze Zeit hin und herläuft. Die müllt mir die ganzen Logs zu: Das ist warscheinlich passiert weil ich mal für kurze Zeit einen Alias falsch gesetzt hatte. Kann ich die irgendwie wieder aus dem Queue bekommen?

rbla
06.12.01, 19:40
auf qmail.org gibts tools zum bearbeiten der queue (aber das einfachste ist warten)

> #!/bin/sh
> QMAILQUEUE=/var/qmail/bin/qfilter-masq
> /var/qmail/bin/qmail-inject


und in qfilter-masq steht:
#!/bin/sh
/var/qmail/bin/qmail-qfilter /var/qmail/bin/qmail-masq.pl


kann natürlich auch sein, das qmail-inject sich gar nciht um QMAILQUEUE schert

dann probier mal das als IMP sendmail skript

#!/bin/sh
/var/qmail/bin/qmail-qfilter /var/qmail/bin/qmail-inject -n -- /var/qmail/bin/qmail-masq.pl

thabermann
07.12.01, 17:58
Danke für das Skript, aber leider funktioniert es nicht so recht :( . Aber das mit qmail-qfilter zu machen scheint grundsätzlich schonmal eine gute Idee zu sein. Da ist also noch ein wenig Tüfteln gefragt.

thabermann
07.12.01, 23:31
tja, das wird langsam immer wichtiger. diese bouncing mail wird immer schlimmer. alle 5 Minuten läuft die ca 20-30 Mal gegen die Wand, das wird immer schlimmer. Wie kann ich einfach die ganze Queue löschen? Ist ja egal, das Ding ist ja nicht in Betrieb.

thabermann
08.12.01, 16:57
Also irgendwas ist falsch mit dem System. Zwar hab ich für das Webmail Problem eine Interimslösung gefunden (SquirrelMail). Aber irgendwas funktioniert da ganz und gar nicht. Folgende Nachricht rattert x-Mal rein sobald ich irgendwas in die Queue gebe:



Hi. This is the qmail-send program at server.net.home.
I tried to deliver a bounce message to this address, but the bounce bounced!

<msglog@server.net.home>:
This message is looping: it already has my Delivered-To line. (#5.4.6)

--- Below this line is the original bounce.

Return-Path: <>
Received: (qmail 14324 invoked by alias); 8 Dec 2001 15:50:24 -0000
Delivered-To: msglog@server.net.home
Received: (qmail 14315 invoked for bounce); 8 Dec 2001 15:50:24 -0000
Date: 8 Dec 2001 15:50:24 -0000
From: MAILER-DAEMON@server.net.home
To: tobias@mydomain.com
Subject: failure notice

Hi. This is the qmail-send program at server.net.home.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<msglog@server.net.home>:
This message is looping: it already has my Delivered-To line. (#5.4.6)

--- Below this line is a copy of the message.

Return-Path: <tobias@mydomain.com>
Received: (qmail 14305 invoked by alias); 8 Dec 2001 15:50:23 -0000
Delivered-To: msglog@server.net.home
Received: (qmail 14300 invoked from network); 8 Dec 2001 15:50:23 -0000
Received: from localhost (HELO mydomain.com) (127.0.0.1)
by server.net.home with SMTP; 8 Dec 2001 15:50:22 -0000
Received: from 192.168.1.254 (proxying for 192.168.1.10)
(SquirrelMail authenticated user tobias)
by Mailserver with HTTP;
Sat, 8 Dec 2001 16:50:23 +0100 (CET)
Message-ID: <4902.192.168.1.254.1007826623.squirrel@Mailserver>
Date: Sat, 8 Dec 2001 16:50:23 +0100 (CET)
Subject: =?iso-8859-1?Q?Test_mit_dem_Eichh=F6rnchen?=
From: <tobias@mydomain.com>
To: tobias_habermann@hotmail.com
X-Mailer: SquirrelMail (version 1.0.6)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Testereraasd



Klar, mydomain.com ist schonmal falsch was zumindest erklärt warum es die Fehlermail überhaupt gibt. Da muss halt wohl bei Squirrelmail noch was eingestellt werden. Aber ich glaube da stimmt was nicht mit meinen Aliasen. Ich habe das mit Webmin eingestellt und msglog auf root gerichtet und root auf "mailadmin". Da kommen die ganzen Mails auch an. Ich hoffe die Webmin Einstellung konkurriert nicht irgendwie mit deiner (Ronnys) Relay Anleitung. Wo müsste ich denn sonst die Aliase eintragen?

rbla
08.12.01, 20:26
in /var/qmail/alias/.qmail-root
&mailadmin

in /var/qmail/alias/.qmail-msglog
&root

befürche aber, dass das schiefgeht, möglicherweise geht die mail dann nochmal an msglog, was zu einer endlosschleife führen würde (und damit zum bouncen)
(ist aber nur geraten)

warum bleibst du nciht erstmal bei imp und löst dort die probleme, von einer baustelle zur anderen rennen bringt meist auch nichts ;)

zum queue löschen: da kann ich nur auf qmail.org verweisen, habe das noch nie gemacht (ich hasse es wenn sachen wegkommen, könnte ich ja gleich sendmail benutzen)

thabermann
08.12.01, 21:38
danke, ich werd das mal versuchen.
das projekt imp läuft natürlich noch der ist schon ein besserer Client. Abgesehen davon war SquirrelMail überhaupt kein Problem weil es seine Mails über SMTP versendet und nicht über sendmail und da funktioniert das Masquerading.

thabermann
08.12.01, 22:24
Also irgendwas ist da faul: Jetzt bekomm ich sogar vom MAILERDAEMON Fehlermeldungen über Nachrichten die ordentlich versendet wurden
Das z.b. war ein Test von SquirrelMail und ist auch angekommen:

Hi. This is the qmail-send program at server.net.home.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<msglog@server.net.home>:
This message is looping: it already has my Delivered-To line. (#5.4.6)

--- Below this line is a copy of the message.

Return-Path: <tobias@net.home>
Received: (qmail 17777 invoked by alias); 8 Dec 2001 21:19:18 -0000
Delivered-To: msglog@server.net.home
Received: (qmail 16354 invoked from network); 8 Dec 2001 16:37:37 -0000
Received: from localhost (HELO mydomain.com) (127.0.0.1)
by server.net.home with SMTP; 8 Dec 2001 16:37:36 -0000
Received: from 192.168.1.254 (proxying for 192.168.1.10)
(SquirrelMail authenticated user tobias)
by Mailserver with HTTP;
Sat, 8 Dec 2001 17:37:36 +0100 (CET)
Message-ID: <1343.192.168.1.254.1007829456.squirrel@Mailserver>
Date: Sat, 8 Dec 2001 17:37:36 +0100 (CET)
Subject: =?iso-8859-1?Q?H=F6rnchen_Saga_Teil_2?=
From: "=?iso-8859-1?Q?Tobias_Habermann?=" <thabermann@thabermann.net>
To: tobias_habermann@hotmail.com
X-Mailer: SquirrelMail (version 1.0.6)
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Ich weiß gar nicht was ich schlimmes gemacht hab das jetzt alles Mögliche Loopings auf meinem Server dreht :confused: . Das muss irgendwas mit den Aliasen zu tun haben, sonst hab ich ja nix geändert. Das ist praktisch die RPM Basiskonfiguration plus haargenau den Änderungen die du in deinem Howto beschreibst. Und die funktionieren ja an für sich. Also muss der Teufel bei den Aliasen stecken. Kann ich nicht irgendwie die gesamte Queue löschen? Ich schon versucht Qmail anzuhalten und alle Dateien unter /var/qmail/queue/ in den Unterverzeichnissen gelöscht. Trotzdem bouncet es weiter.

rbla
09.12.01, 18:15
warum hast du msglog überhaupt an?
wie ich schon sagte ist wahrscheinlich der "&root" eintrag die ursache deiner probleme (/var/qmail/alias/.qmail-msglog)

thabermann
09.12.01, 20:11
wie an? wie mach ich es denn aus? muss ich nur die .qmail-msglog löschen?

rbla
10.12.01, 08:00
ne, die zeile "&root" entfernen (praktisch eine leere datei)
siehe dot-qmail(5)

thabermann
10.12.01, 15:31
das hab ich schonmal gemacht, dann waren aber haufenweise Fehlermeldungen im Log "Could not chroot to maildir". Aber warscheinlich lag das an den Mails die schon in der Queue waren. Ich probier es nochmal.