Treebeard wrote:
Wenn das bei dir nicht so wüst ist, dann kannst du das natürlich mit einer anderen Datenbank machen.
Ich bin da ganz offen und für jeden Tip dankbar.
Das hängt auch etwas davon ab, wie erweiterungsfähig deine Struktur sein soll. Erweiterungsfähig wäre gut, mein Vorschlag ist jedoch, ich fange erstmal einfach an, um das ganze System zu verstehen.
Können wir machen. Wenn du die Grundlagen verstanden hast, solltest du in der Lage sein, Veränderungen selbst vornehmen zu können. Wobei jedoch Änderungen an bestehenden Accounts bei Einführung von virtuellen Domains nicht ganz einfach sein.
Wenn Emailadressen als Usernamen eingesetzt werden sollen, dann bekommst du Probleme mit passwd und sasldb.
Ich würde sagen, da bin ich recht frei, da sich die user nicht auf der Konsole einloggen werden. Ich kann die usernamen vorgeben und werde mich versuchen an das genannte Schema zu halten.
Siehst du Bedarf für weitere Domains und Unterteilungen oder kannst du absehen, dass die Struktur, die du aufbaust, sich nicht irgendwann um Größenordnungen ändert?
Das kann durchaus sein, dass das System irgendwann mehrere hundert Konten verwalten muss.
Das ist nicht so kritisch. Entscheidender ist, ob dies User später in virtuellen Domains angelegt werden oder ob die User in einer gemeinsamen Umgebung existieren.
Okay, ich sehe hier, dass der realm nicht angegeben ist. Sind die User als user@domain.tld angelegt oder nur als nackte Usernamen?
Die User sind nur als nackte Usernamen angelegt, habe es aber auch mit user@domain.tld getestet, da war der realm ausgefüllt, hat aber dennoch nicht geklappt.
Wie sind sie denn in der MySQL-Tabelle angelegt?
Ohne domain.tld. Mein Vorschlag: Schrittweise sich dem Problem nähern (s.u.)
Können wir machen. Es ist besser als endlos zu diskutieren. Wenn du mit der Installation arbeitest, wirst du auch besser sehen, was für dich Sinn macht.
Jetzt geht es los: Postfix-Cyrus-Imap unter SUSE 10.1
Hier mein "Schlachtplan":
Vorarbeiten: Hostnamen und Rechnernamen prüfen
Den Hostnamen habe ich mit yast eingerichtet: Netzwerkdienste > DNS- und Hostname Hostname: tux Domainname: domain1.de Nameserver 1: IP-von-NS1 Nameserver 2: IP-von-NS2 Nameserver 3: IP-von-NS3
Mit dem Befehl hostname prüfen: # hostname tux
Das ist nur der host, aber nicht der FQDN. Der FQDN lautet tux.domain1.de
Prüfen mit ping: # ping tux PING tux.domain1.de (IP-von-domain1) 56(84) bytes of data. 64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=1 ttl=64 time=0.022 ms 64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=2 ttl=64 time=0.014 ms 64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=3 ttl=64 time=0.027 ms 64 bytes from tux.domain1.de (IP-von-domain1): icmp_seq=4 ttl=64 time=0.021 ms (Strg-C zum abbrechen)
Prüfen, ob alle benötigten Pakete installiert sind Installiert sind folgende Pakete (alle mit yast installiert): cyrus-imapd cyrus-imapd-devel cyrus-sasl cyrus-sasl-32bit cyrus-sasl-devel cyrus-sasl-devel32bit cyrus-sasl-gssapi cyrus-sasl-plain
Nimm auch cyrus-sasl-login dazu. Wer PLAIN sagt, muss auch LOGIN sagen. (^-^)
cyrus-sasl-saslauthd perl-Authen-SASL-Cyrus perl-Cyrus-IMAP perl-Cyrus-SIEVE-managesieve postfix postfix-mysql procmail mysql mysql-client mysql-devel mysql-shared pam_mysql
Der Rest ist OK.
Grundkonfiguration prüfen Da meine main.cf inzwischen schon so oft verändert wurde, habe ich mir von postfix.org die sourcen geholt (ftp://ftp.fu-berlin.de/unix/mail/postfix/official/postfix-2.3.5.tar.gz) und die Standard-main.cf eingespielt. Hier die main.cf mit geänderten Werten für mydestination, mydomain, myhostname, die auf die eigenen Werte angepasst wurden:
#postconf -n command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 2 html_directory = mail_owner = postfix mailq_path = manpage_directory = mydestination = $mydomain, localhost mydomain = tux.domain1.de myhostname = mail.domain1.de newaliases_path = queue_directory = /var/spool/postfix readme_directory = sample_directory = sendmail_path = setgid_group = unknown_local_recipient_reject_code = 550
Nach dem versuchten Neustart des Servers (postfix reload) gab es im mail.log Meldungen wie fatal: bad string length 0 < 1: setgid_group = Der Postfix-Server wurde nicht neu gestartet.
Hast du die Installation mit "make install" oder mit "make upgrade" vorgenommen. Im letzteren Fall übernimmt er die bestehende Konfiguration und ergänzt nur die fehlenden Einträge.
Jetzt habe ich gelesen, dass diese auskommentiert werden sollten. In meiner alten Konfiguration stand der Wert auf maildrop Das hat mich dazu veranlasst die beiden Konfigurationen mal miteinander zu vergleichen. Hier ein Vergleich meiner alten und der "Standard"(?) Konfiguarion (unerwähnte Parameter sind gleich): alt: daemon_directory = /usr/lib/postfix neu: daemon_directory = /usr/libexec/postfix
alt: debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 neu: nicht gesetzt
alt: sendmail_path = /usr/sbin/sendmail neu: sendmail_path =
alt: newaliases_path = /usr/bin/newaliases neu: newaliases_path =
alt: mailq_path = /usr/bin/mailq neu: mailq_path =
alt: setgid_group = maildrop neu: setgid_group =
alt: html_directory = /usr/share/doc/packages/postfix/html neu: html_directory =
alt: manpage_directory = /usr/share/man neu: manpage_directory =
alt: sample_directory = /usr/share/doc/packages/postfix/samples neu: sample_directory =
alt: readme_directory = /usr/share/doc/packages/postfix/README_FILES neu: readme_directory =
Ich vermute, dass diese Parameter bei der manuellen Installation gesetzt werden, beim installieren eines Paketes mit yast aber bereits vorkonfiguriert sind. Habe daher die Werte aus der alten Konfiguration geholt und in main.cf eingesetzt.
#postconf -n command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/lib/postfix debug_peer_level = 2 html_directory = /usr/share/doc/packages/postfix/html mail_owner = postfix mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man mydestination = $mydomain, localhost mydomain = tux.domain1.de myhostname = mail.domain1.de 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 sendmail_path = /usr/sbin/sendmail setgid_group = maildrop unknown_local_recipient_reject_code = 550
Jetzt startet auch der Server
OK.
hier meine master.cf: # # Postfix master process configuration file. For details on the format # of the file, see the Postfix master(5) manual page. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd -vv
Puh, nimm lieber die -vv weg. Erst, wenn wir ein Problem innerhalb von Postfix-Lookups untersuchen müssen, ist so ein tiefer Loglevel sinnvoll.
#submission inet n - n - - smtpd # -o smtpd_etrn_restrictions=reject # -o smtpd_client_restrictions=permit_sasl_authenticated,reject #smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes # -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes #submission inet n - n - - smtpd # -o smtpd_etrn_restrictions=reject # -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes #628 inet n - n - - qmqpd pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - n 300 1 oqmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap smtp unix - - n - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - n - - smtp -o fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - n - - showq error unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil #localhost:10025 inet n - n - - smtpd -o content_filter= scache unix - - n - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} cyrus unix - n n - - pipe user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -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 procmail unix - n n - 20 pipe flags=R user=cyrus argv=/usr/bin/procmail -o SENDER=${sender} -m USER=${user} EXTENSION=${extension} /etc/procmailrc
Der Rest ist soweit OK.
Hier meine /usr/lib64/sasl2/smtpd.conf: pwcheck_method: saslauthd mech_list: plain login
Du hast PLAIN noch nicht installiert, wenn ich das richtig sehe. Prüfe das besser!
Bei 32-Bit SUSE liegt die Datei wohl in /usr/lib/sasl2/smtpd.conf.
Hier meine /etc/imapd.conf: postmaster: postmaster configdirectory: /var/lib/imap partition-default: /var/spool/imap admins: cyrus allowanonymouslogin: no allowplaintext: yes sasl_mech_list: plain servername: domain1.de autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd auxprop sasl_auxprop_plugin: sasldb
sasl_pwcheck_method: saslauthd Lasse das sasl_auxprop_plugin weg, sonst gibt es am Ende noch User in der sasldb, und du wunderst dich über die Logins.
sievedir: /usr/sieve sendmail: /usr/sbin/sendmail sieve_maxscriptsize: 32 sieve_maxscripts: 5 unixhierarchysep: yes
Lasse die unixhierarchysep erst einmal weg (default). Versuche dann mal folgendes: passwd cyrus (passwort vergeben) su cyrus cyradm localhost Dann hier einen user anlegen (nur username ohne domain, da mydestination und keine virtuellen Domains). "cm user.username" (by unixhierarchysep: yes musst du natürlich "cm user/username" angeben. Fehlermeldung? Zeigt lm jetzt die Mailbox an? Wenn das klappt, lege den User auch in der passwd an. Achte aber darauf, dass du beim Anlegen in Yast ankreuzt, dass der User keine Loginshell hat. Prüfe, dass saslauthd läuft und mit "pam" gestartet ist: ps aux | grep saslauthd Teste, dass der user sich auf imap einloggen kann: testsaslauthd -u user -p password -s imap Prüfe, dass die SuseFirewall imap herauslässt und versuche, dich mit einem client im internen Netzwerk über Imap mit dem Server zu verbinden. Hat es bis hierhin geklappt, sollte Cyrus für den Anfang laufen. Ich habe in yast noch den User postfix der Gruppe mail hinzugefügt, da sonst der user postfix nicht auf den Socket zugreifen kann (Besitzer cyrus:mail). dann setze den Transport in Postfix: postconf -e "mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp" postfix reload Jetz schicke mal eine Mail an den user und schaue nach, ob sie in Cyrus eingetroffen ist. 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