PDA

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

stefaan
02.01.04, 20:08
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)

Jasper
02.01.04, 22:23
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

Jasper
03.01.04, 13:07
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

Jasper
03.01.04, 21:38
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

Jasper
04.01.04, 13:22
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

Jasper
04.01.04, 20:33
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