Treebeard wrote:
Der Großteil von dieser Software ist dann nach Anleitung selbst kompiliert. Wenn das nicht so ist, hast du bereits die erste Abweichung und musst zuerst kontrollieren, ob auch wirklich die Voraussetzungen erfüllt sind. Hast du überprüft, ob das installierte cyrus_pam_mysql Plugin kompatibel ist mit dem in der Anleitung verwendeten Modul? Ehrlich gesagt nein. Yast gibt mir da auch nicht viel mehr Alternativen. Den Streß mit selbst kompilieren wollte ich mir nicht aufbürden. Wie Du schon sagtest, bei jedem Sicherheitspatch müsste ich selbst wieder Hand anlegen. Ich war ehrlich gesagt auch nicht darauf vorbereitet, dass es so schwierig werden sollte. Die HowTos lassen da einen auch etwas im Stich. Ich kann schon verstehen, dass diese weitestgehend Distributions unabhängig geschrieben werden, da jede andere Einstellungen und Pfade verwendet.
Die Anleitung stammt aus einer Zeit, in der nur wenige Pakete mit MySQL-Unterstützung ausgeliefert wurden. Deshalb musste man das Paket ohnehin selbst kompilieren oder zumindest aus dem Source-RPM neu erstellen. Inzwischen sind viele Pakete mit der Möglichkeit kompiliert worden, modular weitere Optionen einzubinden und können so MySQL-Unterstützung einfach hinzunehmen.
Dies war wahrscheinlich für meinen Fall auch nicht die richtige Herangehensweise. Aber ein nettes HowTo für Suse 10.1 habe ich leider nicht finden können. Nach dem Studium des Buches "Postfix" von Kyle Dent (O'Reilly) habe ich versucht den Postfix aufzusetzen. Bin jetzt bestimmt schon seit 4 Wochen an diesem Problem (und habe natürlich auch schon eine Menge dazu gelernt - das sehe ich als Pflicht).
Wahrscheinlich ist es die beste Methode, Postfix, Cyrus, MySQL und WebCyrAdm zu installieren und Schritt für Schritt einzubinden. Es muss jedoch sichergestellt werden, dass Postfix und Cyrus wirklich mit MySQL-Unterstützung kompiliert wurden. Wenn das nicht der Fall ist, muss über PAM gegangen werden und das MySQL-Modul für die Dienste konfiguriert werden. Prüfe doch mal, ob Postfix und Cyrus mit MySQL-Sasl-Unterstützung kompiliert wurden: # ldd /usr/lib/postfix/smtpd linux-gate.so.1 => (0xffffe000) libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40023000) libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40054000) => libmysqlclient.so.12 => /usr/lib/libmysqlclient.so.12 (0x40145000) libz.so.1 => /lib/libz.so.1 (0x4017c000) libm.so.6 => /lib/tls/libm.so.6 (0x4018d000) => libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x401b0000) libpcre.so.0 => /usr/lib/libpcre.so.0 (0x401c5000) libdb-4.2.so => /usr/lib/tls/libdb-4.2.so (0x401d2000) libldap-2.2.so.7 => /usr/lib/libldap-2.2.so.7 (0x402a7000) liblber-2.2.so.7 => /usr/lib/liblber-2.2.so.7 (0x402da000) libnsl.so.1 => /lib/libnsl.so.1 (0x402e7000) libresolv.so.2 => /lib/libresolv.so.2 (0x402fd000) libc.so.6 => /lib/tls/libc.so.6 (0x40310000) libdl.so.2 => /lib/libdl.so.2 (0x40427000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x4042b000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4045d000) # ldd /usr/lib/cyrus/bin/imapd linux-gate.so.1 => (0xffffe000) => libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x40023000) libresolv.so.2 => /lib/libresolv.so.2 (0x40039000) libdb-4.2.so => /usr/lib/tls/libdb-4.2.so (0x4004c000) libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40121000) libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40151000) libwrap.so.0 => /lib/libwrap.so.0 (0x40242000) libnsl.so.1 => /lib/libnsl.so.1 (0x4024a000) libc.so.6 => /lib/tls/libc.so.6 (0x40261000) libdl.so.2 => /lib/libdl.so.2 (0x40377000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4037b000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Bei mir ist Postfix also bereit für MySQL und Sasl, aber Cyrus nur für Sasl. Die MySQL-Unterstützung in Postfix existiert auch nur, weil ich sie einkompiliert habe, da unter meiner alten Suse 9.2 MySQL-Unterstützung noch rar ist. Bei Suse 10.x sieht das AFAIK besser aus. Da hat sich etwas getan. Ich werde ohnehin bald auf Suse 10.2 updaten, dann lasse ich mich überraschen, wo bereits MySQL-Unterstützung enthalten ist. (^-^)
Mit dem configure Kommando legst du die Eigenschaften doch selbst fest! Es ist übrigens immer eine gute Idee, die genaue Konfiguration zu dokumentieren, die man verwendet hat. Das ermöglichst später bei Updates/Neuinstallation die exakte Reproduktion.
Ist das bei den in Suse enthaltenen Paketen irgendwo dokumentiert? Ich bin durch den Dschungel auf opensuse.org noch nicht ganz durchgestiegen. Aber das steht doch bestimmt irgendwo.
Bei einem RPM-Paket sind diese Optionen im SPEC-File enthalten. Teilweise kann man es auch durch die eingebundenen Libraries sehen, wie oben bei Postfix und Cyrus. Ansonsten hilft nur Doku lesen.
Du kannst ruhig die Datenbank so verwenden, solange du präzise weisst, was wo für welchen Zweck verwendet wird.
Ich würde aber für den Augenblick die Passwörter nicht verschlüsseln.
Das bedeutet ich müsste in den Programmcode von web-cyradm eingreifen, richtig?
Könnte ich im Augenblick nicht sagen, ich habe bisher nicht mit WebCyrAdm gearbeitet. Ich glaube aber, dass es eine Konfig-Einstellung ist, ob das Passwort verschlüsselt ist oder nicht.
In main.cf steht: myhostname = mail.meinserver.de mydestination = $myhostname, mysql:/etc/postfix/mysql-mydestination.cf
Das ist ein einziger Schlamassel im Augenblick! Wenn du die Domains in mydestination deklarierst, dann werden gültige Empfänger für diese Domains in local_recipient_maps erwartet. Die Vorgabe dafür ist NICHT leer, damit werden Empfänger überprüft und alle nicht vorhandenen Empfänger abgewiesen. Ich kann Dir hier im Augenblick nicht folgen. Bedeutet dies, ich muss local_recipient_maps = alias_maps = in die main.cf eintragen? Und die virtuelle Domain wird über das Frontend von web-cyradm in die mysql-Tabelle eingetragen. Und, tut mir leid für diesen Schlamassel. Ich versuche mein Bestes.
Ist halt ein komplexes Thema. Hier der Überblick: Postfix kennt 4 Adressklassen für Domains: - lokale Domains, die auf dem Postfix-Server selbst gehostet werden. Domains werden in mydestination angegeben, user sind Systemuser. Gültige Adressen sind in local_recipient_maps (/etc/passwd, /etc/aliases) Delivery Agent ist "local" Beispiel: /etc/postfix/main.cf: alias_maps = hash:/etc/aliases local_recipient_maps = proxy:unix:passwd.byname, $alias_maps mailbox_transport = cyrus mydestination = example1.com, example2.com user1 in example1.com ist gleich user1 in example2.com, alle Domains werden also in einen Topf geworfen. Alle User in passwd sind unter allen Domains erreichbar. Mails werden über den Transport cyrus in master.cf an Cyrus weitergeleitet. - Relay_domains, werden von Postfix angenommen und an einen anderen Server geleitet. Gültige Adressen sind in relay_recipient_maps Die Adressen der Domains sind unabhängig. user1@example1.com != user1@example2.com. Beispiel: /etc/postfix/main.cf: relay_domains = example1.com, example2.com relay_recipient_maps = mysql:/etc/postfix/relay_recipients.cf transport_maps = hash:/etc/postfix/transport /etc/postfix/relay_recipients.cf: user=mysqluser password=mysqlpassword dbname=postfix hosts=localhost query = SELECT valid_users from relayrecipients where valid_users = '%s' /etc/postfix/transport: example1.com relay:[ip.of.remote.host] example2.com relay:[ip.of.local.exchange] - Virtual_alias_domains sind Domains, die von Postfix zwar angenommen, aber umgeschrieben werden müssen auf eine andere Domain. Dies ist interessant, wenn etwa eine weitere Domain zur Hauptdomain hinzukommt, aber nur wenige User der Hauptdomain hier anschreibbar sein sollen. Gültige Adressen sind in virtual_alias_maps, wobei sie hier umgeschrieben werden auf die Zieladresse. - virtual_mailbox_domains: User sind in einer Datenbank (nicht Systemuser), aber die Mails werden lokal gehostet. Gültige Adressen sind in virtual_mailbox_maps, Transport ist virtual. Beispiel: /etc/postfix/main.cf: virtual_mailbox_domains = example1.com, example2.com virtual_mailbox_maps = hash:/etc/postfix/virt_mailbox_maps virtual_transport = lmtp:unix/var/imap/lmtp /etc/postfix/virt_mailbox_maps: user1@example1.com ein_wert user2@example1.com noch_ein_wert # Wert ist egal hier.. user1@example2.com ist_auch_ok
Hier nochmal die Ausgabe von postconf -n:
broken_sasl_auth_clients = yes command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/lib/postfix debug_peer_level = 2 fallback_transport = cyrus html_directory = /usr/share/doc/packages/postfix/html mail_owner = postfix mailbox_transport = procmail mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man mydestination = $myhostname, mysql:/etc/postfix/mysql-mydestination.cf myhostname = mail.meinserver.de
Hier fehlt wie gesagt die Definition der gültigen Emailadressen für die Mysql-mydestination. local_recipient_maps = $alias_maps, proxy:unix:passwd.byname, mysql:/etc/postfix/validusers_mydestination.cf
newaliases_path = /usr/bin/newaliases queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/packages/postfix/README_FILES sample_directory = /usr/share/doc/packages/postfix/samples sender_canonical_maps = hash:/etc/postfix/canonical, mysql:/etc/postfix/mysql-canonical.cf
Wahrscheinlich brauchst du das canonical gar nicht. Das dient nur der Umschreibung von lokalen auf Internet-Domains.
sendmail_path = /usr/sbin/sendmail setgid_group = maildrop smtpd_delay_reject = no
Das kann zu Problemen führen mit manchen Clients, die erwarten, dass die Verbindung erst nach der Angabe des Empfängers beurteilt wird und nicht vorher abgelehnt wird.
smtpd_helo_required = yes smtpd_helo_restrictions = smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sender_restrictions = unknown_local_recipient_reject_code = 550 virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf
Das ist die alte Syntax für Postfix 2.1 und älter. Die neue ist besser zu verstehen und kann ab Postfix 2.2 verwendet werden.
Ich glaube langsam, dass ich selbst ein HowTo schreiben muss ;-)
Wenn du das alles schön formatiert zusammenschreibst, habe ich nichts dagegen. Dann kann es vielleicht auch in die FAQ gesetzt werden.(^-^)
Ich schlage vor, wir prüfen das Stück für Stück, sonst werden wir nie auf einen grünen Zweig kommen. :-(
- Test, ob Domains richtig in Postfix abgefragt werden
Welches Tool benutze ich hierfür? Unter man postconf konnte ich keine Funktion dafür erkennen.
Du kannst dafür postmap verwenden. Dafür muss die Konfiguration noch nicht einmal in Postfix aktiv sein. Du kannst vorher testen, ob die Konfiguration funktioniert und danach dann die Konfiguration einbinden. # postmap -q user1@example.com mysql:/etc/postfix/relayrecipients.cf # user1@example.com Wenn ein Ergebnis kommt, ist die Abfrage gültig. # postmap -q user2@example.com mysql:/etc/postfix/relayrecipients.cf # user2@example1.com existiert also nicht. /etc/postfix/relay_recipients.cf: user=mysqluser password=mysqlpasswort dbname=mysqldatenbank hosts=localhost query = SELECT valid_users from relayrecipients where valid_users = '%s' Hier braucht die Datenbank nur eine Spalte haben (valid_users).
- Test, ob bei Emailsadressen gültige von ungültigen unterschieden werden - Test ob Adressumschreibungen richtig funktionieren - Test ob die Authentifikation richtig funktioniert. Das würde ich in einer Telnet Session prüfen...oder?
Die Authentifikation ja, die anderen Tests kannst du mit postmap machen.
Das gleiche muss für Cyrus gemacht werden: - Test ob man sich als Admin anmelden kann - Test ob das Anlegen eines Users funktioniert - Test ob die Anmeldung eines Users funktioniert
Das würde ich mit cyradm testen...
Soll ich nochmal das Ursprungsimage auf den Server einspielen? Ist wahrscheinlich einfacher als alles umzukonfigurieren. Vielleicht langt es auch das Verzeichnis /etc/ zurückzukopieren. Ich gehe aber davon aus, dass während meines Testens auch einige Pakete über yast eingespielt wurden, die gar nicht benötigt wurden.
Lass uns mal etwas mit der vorhandenen Konfiguration spielen. Ich sehe bei Postfix eigentlich keine Probleme. Interessanter wird es nur bei Cyrus, da für die User der Mailaccount angelegt werden muss und dies ja aus der Weboberfläche geschehen soll.
Wie wird es hier in der Mailingliste eigentlich gepflegt, sollte ich bei diesem Thema einen neuen Thread anfangen oder belassen wir den Betreff, so wie er ist? Denn im Grunde sind wir von dem Logging von saslauthd schon etwas entfernt ;-) Das Problem sitzt halt etwas tiefer (ist fast wie beim Zahnarzt).
Ich benenne den Thread mal um, mit saslauthd Logging hat das wirklich nichts mehr zu tun. Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org