Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix mit Cyrus Fehler lmtpd
Ghostmaster
02.01.04, 19:59
Hallo Forum,
ich habe folgendes Problemm wenn ich ein E-Mail an meinen Server schicke ein Postfix version 1.1.12 bekomme ich folgende Fehlermeldung:
Jan 2 20:01:01 linuxsrv01 postfix/pipe[2785]: 791A91F80: to=<xxx@xxx.xxxxx.org>, relay=cyrus, delay=0, status=deferred (temporary failure. Command output: couldn't connect to lmtpd: Invalid argument_ 421 4.3.0 deliver: couldn't connect to lmtpd_ )
main.cf schaut wie folgt aus:
mailbox_transport = cyrus
fallback_transport = cyrus
folgende rechte sind für lmtp vergeben
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
Rechte kann ich leider nicht ändern
bitte um eure Hilfe
Danke
steve-bracket
02.01.04, 20:05
Poste mal die /etc/postfix/master.cf
Steve
Servus!
Hast du die Cyrus-Verzeichnisse umkopiert?
Dann musst du die cyrus.conf und die imapd.conf anpassen.
Grüße, Stefan
Ghostmaster
02.01.04, 20:15
anbei meine master.cf
# ================================================== ========================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ================================================== ========================
smtp inet n - n - - smtpd
#628 inet n - n - - qmqpd
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr fifo n - n 300 1 nqmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
flush unix n - n 1000? 0 flush
smtp unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
#localhost:10025 inet n - n - - smtpd -o content_filter=
#smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
tlsmgr fifo - - n 300 1 tlsmgr
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
# The Cyrus deliver program has changed incompatibly.
#
cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
vscan unix - n n - 10 pipe
flags=q user=vscan argv=/usr/sbin/amavis ${sender} ${recipient}
procmail unix - n n - - pipe
flags=R user=cyrus argv=/usr/bin/procmail -t -m USER=${user} EXT=${extension} /etc/procmailrc
nein, ich habe nichts umkopiert! habe postfix und cyrus über yast installiert
danach nichts auser den cf und conf files geändert(angepasst)
Original geschrieben von Ghostmaster
Hallo Forum,
ich habe folgendes Problemm wenn ich ein E-Mail an meinen Server schicke ein Postfix version 1.1.12 bekomme ich folgende Fehlermeldung:
Jan 2 20:01:01 linuxsrv01 postfix/pipe[2785]: 791A91F80: to=<xxx@xxx.xxxxx.org>, relay=cyrus, delay=0, status=deferred (temporary failure. Command output: couldn't connect to lmtpd: Invalid argument_ 421 4.3.0 deliver: couldn't connect to lmtpd_ )
main.cf schaut wie folgt aus:
mailbox_transport = cyrus
fallback_transport = cyrus
folgende rechte sind für lmtp vergeben
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
Rechte kann ich leider nicht ändern
dein problem ist kein postfix problem. deliver (läuft als user cyrus!) kann auf den socket von imap nicht zugreifen. oftmals sind die pfade und/oder berechtigungen falsch. bei den berechtigungen auch auf die übergeordneten verzeichnisse achten.
die mails per deliver in den mailstore reinzuschieben ist old style. besser ist das ganze direkt per LMTP zu übertragen. postfix und cyrus können beide lmtp (deliver ist im grunde auch nur ein lmtp-client).
in postfix (main.cf):
mailbox_transport = lmtp:unix:/pfad/zu/imap/socket
in cyrus (cyrus.conf):
lmtpunix cmd="lmtpd -a" listen="/pfad/zu/imap/socket" prefork=0
der parameter '-a' schaltet die authentifizierung ab, deshalb auf die filepermissions für den socket achten. prefork muss evtl. auch angepasst werden.
-j
steve-bracket
03.01.04, 09:05
Morning
Hallo Jasper
folgende rechte sind für lmtp vergeben
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
Rechte kann ich leider nicht ändern
Das die Berechtigung nicht stimmt liegt wohl auf der Hand.
Nur wie beeinflusst man die Socket Rechte, ich glaub das ist Ghostmaster's Problem.
Also mal angenommen man will die Berechtigung
srw-rw-rw- 1 cyrus postfix 0 Jan 2 20:52 lmtp
Werden die "Startup"- Rechte/Owner/Group im Startscript als Argument mitangegeben oder woher bekommt der Socket diese Info???
Gruß
Steve
Original geschrieben von steve-bracket
Das die Berechtigung nicht stimmt liegt wohl auf der Hand.
wieso liegt das auf der hand?
die rechte (ugo+rw) des socket selbst lassen einen connect zu (sollten aber eingeschränkt werden, sind zu unsicher). wie siehts mit den darüberliegenden verzeichnissen aus? stimmen die pfade, d.h. verwendet cryus-imap und deliver das gleiche configfile, wo evtl. der parameter 'lmtpsocket' gesetzt wird.
Nur wie beeinflusst man die Socket Rechte, ich glaub das ist Ghostmaster's Problem.
Also mal angenommen man will die Berechtigung
srw-rw-rw- 1 cyrus postfix 0 Jan 2 20:52 lmtp
Werden die "Startup"- Rechte/Owner/Group im Startscript als Argument mitangegeben oder woher bekommt der Socket diese Info???
einfach die rechte ändern. cyrus-imapd löscht den socket nicht, die rechte bleiben also erhalten. zur sicherheit kann man sich die entsprechenden chown/chmod-kommandos auch in das startskript schreiben.
-j
steve-bracket
03.01.04, 18:29
Original geschrieben von Jasper
wieso liegt das auf der hand?
-j
Ahja, hab dir vorenthalten dass ich hier genau die gleiche Installation bzw. Config laufen habe und der einzige Unterschied in den Rechten bzw. Owner/Group folgender Zeile liegt.
Alles andere ist 100% identisch. (gleiche Distrie, gleiche Programmversionen, gleiche Konfigfiles..........)
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
unter /var/lib/imap/socket
Nur wie oben schon erwähnt lassen sich die Rechte offensichtlich nicht ändern bzw. bleiben die Änderungen nicht wirksam nach einem Neustart des Dienstes.
Darum auch die Frage wo man dieses am besten manipulieren kann.
Irgendwo muss es ja festgelegt sein wo der Socket die Rechte bekommt.
(über eine Configvariable, ein Programmstartargument, oder statisch einkompiliert?!?!?!)
Warten wir auf den Status von Ghostmaster.
lg
Steve
Original geschrieben von steve-bracket
Irgendwo muss es ja festgelegt sein wo der Socket die Rechte bekommt.
(über eine Configvariable, ein Programmstartargument, oder statisch einkompiliert?!?!?!)
hab mal im code nachgesehen. ich hab bei mir eine gepatchte version im einsatz (das löschen und neusetzen des sockets habe ich deaktiviert, bestehende sockets werden wiederverwendet). du hast recht, der socket wird im originalcode jedesmal gelöscht und dann als 'root' mit den rechten 0777 wieder angelegt. siehe dazu master/master.c:service_create().
im originalcode (version 2.1.16) gibt es keine möglichkeit den benutzer und/oder die berechtigungen per option zu ändern.
ich weiss schon, warum ich das rausgenommen habe :)
-j
steve-bracket
03.01.04, 22:31
Hi
Ja, genau, schaut auf einer funktionierenden Kiste folgendermassen aus
/var/lib/imap/socket
srwxrwxrwx 1 root root 0 Jan 3 15:01 lmtp
Cyrus Version 2.0.16.xxx
Woher kommt dann
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
*grübel, grübel*
ich weiss schon, warum ich das rausgenommen habe
Warum einen Socket nicht neu erzeugen?
Sollte der nicht dynamisch erzeugt werden?
Hast du das im produktiven Einsatz.
Veränderst du sonst noch Sourcen. :-)
Naja du hast sicher deine Gründe. (zB Rechteänderungen sind permanent)
:D
Das ist echt mysteriös, eine völlig identische Software auf gleichem Kernel (gleiche Distri, gleiche Softwarebinaris usw.) erzeugt einen Socket mit anderer Berechtigung.
Vielleicht liegt's an der Startreihenfolge, wenn Postfix keinen Socket findet erzeugt er selbst einen mit genau den obigen Berechtigungen - nur so eine Idee, ich kenn die Postfix Sourcen nicht.
lg
Steve
Original geschrieben von steve-bracket
Ja, genau, schaut auf einer funktionierenden Kiste folgendermassen aus
/var/lib/imap/socket
srwxrwxrwx 1 root root 0 Jan 3 15:01 lmtp
Cyrus Version 2.0.16.xxx
Woher kommt dann
srw-rw-rw- 1 postfix postfix 0 Jan 2 20:52 lmtp
vielleicht wird cyrus-imap zuerst gestartet. der legt den socket mit root:root:0777 an. danach startet postfix und in dem startskript werden die berechtigungen geändert. cyrus selbst wird kaum postfix:postfix:0666 vergeben.
Warum einen Socket nicht neu erzeugen?
die derzeitige lösung ist ein workaround. einen bestehenden socket zu verwenden birgt ein gewisses sicherheitsrisiko.
derzeit schreibe ich den kram dahingehend um, dass man in der imapd.conf den owner:group und die permissions für den socket angeben kann. das ist dann die sauberste und sicherste lösung.
Hast du das im produktiven Einsatz.
Veränderst du sonst noch Sourcen. :-)
sicher doch. was nicht passt, wird passend gemacht.
Das ist echt mysteriös, eine völlig identische Software auf gleichem Kernel (gleiche Distri, gleiche Softwarebinaris usw.) erzeugt einen Socket mit anderer Berechtigung.
Vielleicht liegt's an der Startreihenfolge, wenn Postfix keinen Socket findet erzeugt er selbst einen mit genau den obigen Berechtigungen - nur so eine Idee, ich kenn die Postfix Sourcen nicht.
das kann gut sein, aber ist in der beschriebenen konfiguration (verwenden von deliver statt direkt lmtp) unwahrscheinlich. postfix weiss nicht von lmtp oder sockets, die mail wird einfach per pipe an deliver übergeben, der macht dann den lmtp-kram. wenn man aber bei postfix lmtp direkt verwendet, ist es möglich, dass postfix den socket prüft und ggf. anlegt.
hab hier aber kein postfix mehr im einsatz, kann das daher nicht nachprüfen.
-j
Ghostmaster
04.01.04, 18:23
Herausforderung gelöst es war die Reihenfolge wie ich die beiden Dienste gestartet habe
es wurde nämlich zuerst Cyrus und dann Postfix gestartet!
jetzt starte ich als erstes Postfix und dann Cyrus seitdem habe ich keine Probleme mehr.
Danke
für eure Hilfe
lg
Martin
steve-bracket
04.01.04, 18:43
Und wie schaut jetzt die Socketberechtigung aus??
*Wunder*
Auf dieser Kiste ist es genau umgekehrt.
lrwxrwxrwx 1 root root 8 Dez 27 09:11 S08cyrus -> ../cyrus
lrwxrwxrwx 1 root root 10 Dez 27 09:11 S10postfix -> ../postfix
Gruß
Steve
Original geschrieben von steve-bracket
Auf dieser Kiste ist es genau umgekehrt.
lrwxrwxrwx 1 root root 8 Dez 27 09:11 S08cyrus -> ../cyrus
lrwxrwxrwx 1 root root 10 Dez 27 09:11 S10postfix -> ../postfix
so sollte es auch sein. erst cyrus, dann postfix, weil postfix von cyrus abhängt, cyrus aber nicht von postfix.
-j
steve-bracket
04.01.04, 20:49
Hi
Laut Fachliteratur ist es so, genau.
Naja, ich weiß nicht wo genau sich Postfix bei Cyrus einhängt, aber habs versuchsweise mal vertauscht und probiert mit dem Resultat, dass Postfix den Geist aufgibt. (Status dead).
Naja, wenn's bei Ghostmaster läuft.
lg
Steve
Ghostmaster
04.01.04, 23:36
jetzt hab ich es noch einmal umgekehrt probiert dann geht es aber wieder nicht!!
also starte ich jetzt als erster Postfix und dann Cyrus
meine lmtp Berechtigung schaut dann wie folgt aus:
0 srwxrwxrwx 1 root root 0 Jan 4 19:40 lmtp
lg
Martin
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.