PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Qmail Konfiguration



Seiten : [1] 2

thabermann
15.05.01, 15:14
Jetzt habe ich Qmail endlich erfolgreich installiert, mit vmailmgr und Courier IMAP und auch dem Qmail POP3. Der E-Mail Versand und Abruf funktioniert ohne Fehlermeldungen, aber wenn ich eine Nachricht an user@localhost schicke bekommt user@localhost nur keine Mail. Wäre schön wenn man dass noch ändern könnte :).

Ausserdem bräuchte ich noch etwas Hilfestellung bei folgenden Aufgaben:

- Relaying ins Internet, mit Masquerading
- Queueing von Nachrichten die die Wählverbundung nutzen, also ins Internet gehen. Die Queue sollte dann mit einem Crontab oder mit ip-up versandt werden können.
- Sofortiger Versand an lokale Benutzer.

Übrigens, für alle die es interessiert gibt es auf http://pofo.de ein sehr hilfreiches Howto zur Qmail Installation mit vmailmgr, ezmlmn, Courier IMAP, usw.

rbla
15.05.01, 18:37
ich habe ein kleines qmail howto angefangen, mit schwerpunkt nutzung mehrere relayserver und dial-up verbindung
http://vlug.sourceforge.net/howto/qmail.html

thabermann
15.05.01, 20:51
Danke Ronny, sieht aus als hättest du mich mal wieder gerettet! Das Howto ist zwar nicht ganz komplett aber jetzt habe ich wenigstens mal einen leichten Überblick wie das ganze funktioniert.

rbla
16.05.01, 08:22
sag mir dann bitte die fehler /unstimmigkeiten die drin sind, bzw was noch rein soll

thabermann
16.05.01, 14:42
Zuerst hätte ich noch ein Problem: Mails an lokale User kommen nur an wenn ich sie mit user@server.network.domain adressiere, network.domain reicht nicht, die Mails kommen dann nicht an, weil sie warscheinlich irgendwohin weiterversendet werden. Ich habe schon die Einträge in die locals und rcpthosts Datei gemacht aber das hat nichts genützt. Ich weiß aber nicht: Muss ich den Server neu starten damit die Änderungen übernommen werden? Ich weiß aber nicht genau wie ich das überhaupt anstellen soll: Ich habe nach der Anleitung auf pofo.de einige Startskripte mit qmail-conf angelegt, in Form von diversen Verzeichnissen unter /service. Da gibt es in jedem verzeichnis ein "run" Skript, aber ich das nimmt keine Parameter an.

Dann hätte ich noch eine kleine Zusatzfrage:
Bisher hab ich mit sendmail die Mails an einen "SMART HOST" im Internet relayt und mit fetchmail von einem POP Provider geholt. Wie kann ich fetchmail mit Maildir verwenden, oder brauch ich ein anderes Programm?

@Ronny: zu deinem Howto kann ich sagen dass es mir sehr geholfen hat und die Anleitung zum Relayen auch ganz hilfreich aussieht, das muss ich heute mal probieren. Ich hatte bloß irgendwie den Eindruck dass das noch nicht alle Konfigurationsmöglichkeiten von qmail sind, oder doch? Naja, was sich noch ganz nett machen würde wären ein paar Hilfen zu Aufgabenstellungen, z.b für Heimnetzwerk mit DOD Link, Firmennetz mit Standleitung. Das ist für die meisten Leute die noch nichts mit E-Mail Servern gemacht haben ziemlich hilfreich. Aber ich weiß jetzt schon ungefähr was ich zu tun habe ;) Aber wie gesagt, soll keine große Kritik sein, wenn das schon alle Dateien sind ist das Howto für meine Zwecke wunderbar!

rbla
16.05.01, 18:05
zum neustarten:
svc -t /service/xxxx

fetchmail liefert ja an einen lokalen smtp server oder an ein programm aus, ich bevorzuge letzteres, dann muss in die fetchmailrc:
mda "qmail-inject -a -f%F %T"
geht aber leider nicht global (vielleicht gehts mit 5.8), also für jeden poll eintragen

die auslieferung ins maildir macht dann qmail oder procmail, je nachdem was du einstellst (aliasempty bzw .qmail)
bei maildirs ist immer zulezt ein slash anzugeben also z.b. Maildir/
siehe dot-qmail(5) und procmailrc(5)

firmennetzwerk mit standleitung läuft ja praktisch out-of-the-box

heimnetzwerk, ok werd mal sehen, das ich noch was zum smtpserver mit relay kontrolle mach (wer darf senden)

thabermann
16.05.01, 21:09
Ok, jetzt läuft bei mir alles :) ausser dem Relaying, da hab ich noch ein paar Verständnisprobleme:
Was muss ich statt emaildomain1 eintragen? Die Domain z.b. eines Freemailproviders? Die Mails mit Absenderadressen mit dieser Domain werden also in das jeweilige Maildir verschoben, richtig? Heißt das ich muss dann im E-Mail Programm eine andere Absenderadresse angeben, die mit der Domain des Freemailers? Wie funktioniert dieser Procmail-Code?

Sonst läuft alles wunderbar, danke Ronny!

rbla
17.05.01, 08:05
du musst im email progamm (mua) die absenderadresse eintragen, die du haben willst

für jede domain gibt es dann ein maildir, richtig erkannt :)

procmail scannt die email nach den angegeben regulären ausdrücken und führt dann das aus, was darunter steht, also auslieferung in ein maildir

du kannst es natürlich auch noch so anpassen, dass es z.b. gmx.de,gmx.net etc alles auf einmal erkennt und nur ein maildir dafür benutzt (siehe procmailrc(5))

ich werde zum besseren verständnis wohl emaildomain1 durch emailprovider1 ersetzen

> ich hatte bloß irgendwie den Eindruck dass das noch nicht alle Konfigurationsmöglichkeiten von qmail sind, oder doch?

ich behaupte mal, alles was man will geht, aber was man will muss man schon noch selber rausfinden ;)

thabermann
17.05.01, 17:01
Ok kapiert. Aber kann man das nicht irgendwie so machen dass ich, wenn ich eine Nachricht an einen lokalen User sende die Absenderadresse ich@mylocalserver habe und wenn ich an einen anderen User sende den Absender ich@mywebprovider.de habe? So ähnlich wie man das bei Sendmail mit der genericstable machen kann.

rbla
17.05.01, 18:43
das kannst du auch mit procmail machen oder sieh dir mal maildrop an, das ist eine alternative zu procmail (und die syntax ist einer programmiersprache ähnlich)
oder ein sonstiger filter, auch eigenbau wäre denkbar, ist ja kein problem, einfach vor procmail schalten

eigentlich ist das ja nicht sache des mta sondern des mua ;) aber ich glaube ich weiß was dein ansinnen ist

also ich würde ein perlskript schreiben, das die tabelle in einer db ablegt, vorrausgessetzt, die user haben verschiedene z.b. anton@local = berta@provider

wenn alle anton@local = anton@provider sind, dann bist du mit procmail schneller

oh, ich sehe grad, auf qmail.org gibts wieder was neues, ich glaube, das ist das was du suchst http://www.folug.linux.it/qmail-masq.html
und falls das nicht reicht, bitte mit autor kurzschließen und nicht das rad neu erfinden ;)

[ 17. Mai 2001: Beitrag editiert von: Ronny Buchmann ]

[ 17. Mai 2001: Beitrag editiert von: Ronny Buchmann ]

thabermann
17.05.01, 19:23
Danke für die schnelle Antwort!
Das ist genau das was ich brauche! Allerdings versteh ich eins nicht: Da steht man soll qmail-queue unter /var/qmail/bin bearbeiten 'as shown above'. Unter dem Satz steht nur ein kleines Shell Skript:
#!/bin/sh
exec /usr/bin/qmail-qfilter /var/qmail/bin/qmail-masq.pl
Vielleicht weiß ja jemand was gemeint ist ich hab auch schon den Autor gefragt aber sowas kann ja manchmal dauern. Ich habe probiert das qmail-queue Programm durch ein Skript zu ersetzen aber das bringt nur Fehler.

[ 17. Mai 2001: Beitrag editiert von: T-H ]

thabermann
17.05.01, 20:09
Habs raus: Man muss die Umgebungsvariable QMAILQUEUE auf dieses Shell Skript setzen.

Tut mir leid wenn ich nerve, aber dafür hab ich ein neues Problem: Was ist cd \~{}? Bei mir funktioniert es jedenfalls nicht, er sagt bloß nicht gefunden.

Und dann ist mir nicht ganz klar ob der | vor preline gehört oder ob das der Prompt sein soll. Vielleicht gibst du einfach mal die Zeile an und in welche Datei sie kommen soll. Mich würde bloß noch interessieren ob ich das qmail-masq Programm mit der Relay Anleitung benutzen kann. Eigentlich schon oder? Die Mail wird gesendet, kommt in den Queue und jetzt kommt sie ja schon durch das qmail-masq Skript. Sollte also gehen.

[ 17. Mai 2001: Beitrag editiert von: T-H ]

rbla
18.05.01, 08:35
funktioniert ganz klar mit der relay anleitung

wass das cd \~{} sein soll ist mir nicht ganz klar, ist jedenfalls das gleiche wie cd '~{}'

|preline

'|' ist ein normales pipe symbol
siehe auch dot-qmail(5)

wenn du die konfiguration von qmail-masq raus hast, bitte mal die schritte posten, dann kann ich das mit in das howto einbauen

thabermann
18.05.01, 17:40
Also, in deinem Howto steht das mit cd \~{}. Aber leider funktioniert es mit cd '~{}' auch nicht. Die Qmail-Masq Schritte schreib ich mal schnell zusammen.

rbla
19.05.01, 09:22
oh, das habe ich nicht bemerkt, im original (lyx) ist das ein "cd ~"
aber ich werds in "cd ~alias" umändern
da weiß man eher was der sinn ist, natürlich reicht auch "cd"

möglicherweise ein bug in lyx, latex oder sgml zeugs

thabermann
19.05.01, 10:14
Ok, das Relaying klappt jetzt ganz gut.
Im Howto ist mir aber aufgefallen das da für den Eintrag in .qmail-ppp-default ein paar Absätze drin sind die wohl nicht alle da hingehören. Sonst passt alles, bloß das Maskieren geht noch nicht. Dazu sollte ich vielleicht folgendes sagen: qmail-masq wird von qmail-qfilter aufgerufen und qmail-qfilter wird von qmail-queue aufgerufen. Ich nehme mal an dass das Relaying in dieser Form den Queue ja gar nicht benutzt, weil die Mails ja nicht im Queue sondern in Maildirs auf die Auslieferung warten. Die einfachste Möglichkeit wäre warscheinlich einfach auf das Relaying zu verzichten und direkt auszustellen. Dazu müsste ich es bloß hinkriegen dass alle Mails die nicht für localhost sind in den Queue kommen und per Shell Skript versendet werden. Wie kann ich das mit qmail machen oder brauche ich gar nichts weiter machen? In dem Fall bräuchte ich halt einen passenden Qmail Aufruf zum Versenden der Queue. Dann hätte ich alle möglichen Probleme mit qmail abgedeckt, denke ich.
Dank an Ronny für die professionelle Hilfestellung!

rbla
19.05.01, 16:16
die mails gehen immer durch qmail-queue, beim relaying über serialmail gehen sie aber nicht über qmail-remote sondern über qmail-local

leider sind noch ein paar fehler in der html version des howtos, ich habe die erstmal manuell korrigiert, aber ich hoffe das lyx-1.1.6fix2 die fehler nicht mehr macht

vergleiche also bitte nochmal deine konfiguration, sorry, dass ich das so spät bemerkt habe

thabermann
21.05.01, 13:46
So langsam kapier ich es. Ich verwende aber kein serialmail und ich möchte die Mails für Internet User gar nicht über andere Hosts abwickeln sondern direkt versenden. Nur sollen die nicht lokalen Mails eben solange gequeuet werden bis ich sie ausrücklich versenden lasse. Darauf hab ich in den Manpages leider keinen Hinweis gefunden. So wie ich das sehe müsste muss ich die Einstellung dann bei qmail-rspawn oder qmail-remote machen, so dass er eben nicht gleich sendet sondern erst auf Abruf. In der Manpage von qmail-rspawn steht zwar was von "Schedule" aber leider sind keine Configfiles angegeben wo man das steuern kann.

[ 21. Mai 2001: Beitrag editiert von: T-H ]

rbla
21.05.01, 17:17
nur fast richtig
qmail-send schickt die mail an qmail-rspawn und das dann an qmail-remote
aber nur qmail-send greift auf die queue zu (der rest liest nur von STDIN)
-> die einstellungen sind also in der man page von qmail-send zu finden
und zwar concurrencyremote auf 0 setzen, um nicht remote auszuliefern und zum ausliefern wieder auf 20 (oder was dir gefällt), qmail-send neustarten (svc -t /service/qmail)

als kleines skript
#!/bin/sh
# deliverremote
echo 20 > /var/qmail/control/concurrencyremote
svc -t /service/qmail
echo 0 > /var/qmail/control/concurrencyremote
while >>queue voll<<; do sleep 1; done
svc -t /service/qmail

mit qmail-qstat kannst du die queue prüfen, musst dann halt noch etwas shell-magic dazubasteln

rbla
22.05.01, 20:00
genau, dann brauchst du auch nicht prüfen ob noch was in der queue ist

warum machst du kein dial on demand?

thabermann
22.05.01, 23:57
Wunderbar!!
Im Prinzip brauch ich ja bloß in meinem ip-up hochstellen und im ip-down wieder auf 0.

thabermann
23.05.01, 17:46
Wieso? Mach ich doch! Das ist ja der Clou bei der Sache. Mails werden dann halt kostensparend versandt wenn eh grad jemand surfen geht. Und dann noch über eine Crontab damit auch sonst mal was verschickt wird.

thabermann
23.05.01, 18:45
Tja, jetzt habe ich grade mal versucht Qmail schließlich und endlich fertig zu machen. Aber leider funktioniert das Masquerading nicht. Die Mails kommen zwar an, aber eben nicht maskiert. Ich habe qmail-masq nach Anleitung konfiguriert. Ausserdem habe ich den passenden Skriptaufruf für qmail-masq in die Umgebungsvariable "QMAILQUEUE" eingetragen. Qmail-Qfilter ist natürlich auch installiert. Aber ich bin irgendwie nicht sicher ob das mit der Umgebungsvariable so passt: Die sollte ich nach Anleitung unter /var/qmail/service/smtpd/ in tcp eingetragen, so sehen die Zeilen aus: 192.168.1.10:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/qfilter-masq"
Dann mache ich ein make und starte das neu. Ich verstehe nur nicht dass die Mails ankommen, wo sie doch eigentlich stecken bleiben müssten weil da ja was nicht funktioniert.

rbla
25.05.01, 14:54
was passiert denn, wenn du in einem terminal
QMAILQUEUE setzt und eine mail mit qmail-inject verschickst?

du hast schon die rpms von untroubled.org benutzt?

wenn ja, dann musst du das in /etc/tcpcontrol/smtp.rules schreiben und dann "tcprules smtp.cdb smtp.tmp < smtp.rules" ausführen

[ 25. Mai 2001: Beitrag editiert von: Ronny Buchmann ]

thabermann
25.05.01, 21:53
Das scheint zumindest etwas bewirkt zu haben, denn jetzt sagt er mir "qq temporary problem" wenn ich eine Mail verschicken will. Ich habe QMAILQUEUE auf /var/qmail/masq gesetzt. Das ist ein Shell-Skript in dem folgendes steht:

#!/bin/sh
exec /usr/bin/qmail-qfilter /var/qmail/bin/qmail-masq.pl

qmail-qfilter ist auch dort installiert und qmail-masq.pl ist das Skript aus dem qmail-masq Paket. Hab ich da jetzt irgendwas falsch gemacht?

thabermann
25.05.01, 22:28
Ich hab noch ein bisschen getestet, es funktioniert alles mit dem qmail-qfilter System, die Beispiele aus der README Datei funktionieren alle, bloß das qmail-masq.pl Skript nicht. Was muss ich denn wissen um mir selbst so was zu schreiben? Perl kann ich ganz gut. Müsste also bloß das Mail als Input bekommen, dann nach userxyz@home suchen und aus einer Tabelle userabc@gmx.de einsetzen oder? Wie komm ich an das Mail, und wie geb ich es aus, weíß das jemand?

rbla
26.05.01, 00:46
also ich denke mal es gibt ein paar mögliche ursachen, dass qmail-masq nicht funktioniert
1. die datei /etc/qmail-masq.conf kann nicht gelesen werden
2. /var/qmail/bin/qmail-masq.pl kann nicht ausgeführt werden
3. ein bug (glaube ich nicht)


also überprüf mal die berechtigungen

thabermann
26.05.01, 08:59
Die Berechtigungen stimmen alle. Ich gehe eher davon aus das qmail-masq wohl eine andere Konfiguration erwartet. Das Skript ist ziemlich lang deswegen hab ich es noch nicht durchgeschaut, aber vielleicht braucht es einfach irgendwelche Dateien die ich mit RedHat nicht habe. Keine Ahnung :(

Aber so schwer ist es nicht ein eigenes Skript zu schreiben: Man muß nur zwischen ein while(<>) { } alle RegExps reinschreiben die man braucht, so einfach ist das. Nur die RegExps könnten wiedermal ein bisschen schwierig sein. Ich schreibe mal ein Skript zusammen das Absenderadressen mit @localdomain, durch die passende Web-Adresse ersetzt. Das poste ich dann hier.

rbla
26.05.01, 09:13
die einzige datei die qmail-maq.pl einliest ist diese qmail-masq.conf

nimm doch einfach mal eine mail und lass sie manuell durch qmail-masq.pl laufen

cat mail | /var/qmail/bin/qmail-masq.pl && echo OK

mail


From: test123 <userxxx@lokal>
To: test123 <test@nichtlokal>
Subject: test 1

test


du wirst doch nicht ernsthaft das gleiche skript nochmal schreiben wollen?!

was steht denn eigentlich in der maillog?

thabermann
26.05.01, 13:15
Haste wohl mal wieder recht. Im Moment hab ich eh keine Zeit um mich mit solchem RegExp Hardcore auseinanderzusetzen (Im Detail ist so ein Skript doch ein bisschen komplizierter als normale Perls, deswegen weil man ja für komplexere if-Schleifen erstmal die ganze Mail bräuchte, qmail-qfilter die Zeilen aber schon wiederhaben möchte bevor es die nächste übergibt. So sieht das jedenfalls für mich aus.)

Ich habe mal so eine testmail durch qmail-masq laufen lassen, da geht es. Ist es also bloß die Frage wieso es nicht über qmail-qfilter geht.
Dazu geh ich mal ins Detail: Das ist z.B. die INSTALL von qmail-masq:

<BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Steps for running qmail-masq:

1) install and configure qmail (if you're italian read my "Italian qmail HOWTO")

2) install qmail-qfilter and modify /var/qmail/bin/qmail-queue as shown above

#!/bin/sh
exec /var/qmail/bin/qmail-qfilter /usr/bin/qmail-masq.pl

4) copy the qmail-masq.pl to /var/qmail/bin and modify the permission

# cp qmail-masq.pl /var/qmail/bin/
# chown root:root /var/qmail/bin/qmail-masq.pl
# chmod 755 /var/qmail/bin/qmail-masq.pl

3) copy qmail-masq.conf.example to /etc/qmail-masq.conf and modify it for your
needs (follow the instructions in the file)

# cp qmail-masq.conf.example /etc/qmail-masq.conf
# chmod 644 /etc/qmail-masq.conf
# vi /etc/qmail-masq.conf

4) all is done, you don't have to restart qmail, try it sending some email and
enjoy it!
[/quote]

Da ist auch ein Fehler drin, und zwar sind die Pfade für qmail-masq.pl und qmail-qfilter vertauscht. Das hab ich aber gemerkt und die Vorlage von qmail-qfilter verwendet:


exec /usr/bin/qmail-qfilter /var/qmail/bin/qmail-masq.pl

Sollte richtig sein, oder?
Dann wäre warscheinlich noch interessant unter welchem User das Skript eigentlich ausgeführt wird. Das hab ich nicht rausgefunden, aber es steht ja eigentlich genau in der Anleitung dass das Skript 755 chmod sein soll und root gehören soll (Wenn ich es qmailq und qmail gebe nützt es auch nichts). Jetzt versteh ich überhaupt nicht mehr wieso es nicht geht!

[ 26. Mai 2001: Beitrag editiert von: T-H ]