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. Die Umgebung sollte schon getrennt werden, nicht unbedingt bei allen virtuellen Domains, aber schon bei einigen. Es sollen Mailadressen mit generischen Adressen verwendet werden webmaster@, info@, service@, mail@, die in unterschiedlichen Boxen landen sollen mail@domain1.de => Mailbox von virtuser1 mail@domain2.de => Mailbox von virtuser2 mail@domain3.de => Mailbox von virtuser3 info@domain1.de => Mailbox von virtuser4 info@domain2.de => Mailbox von virtuser1 und 4 und Weiterleitung an blablabla@gmx.de info@domain3.de => Weiterleitung an blablabla2@gmx.de usw.
Es soll auf dem Serverrechner auch keine lokalen Mailclients geben, die die Mail abholen. Das Mailabholen passiert alles in anderen Netzwerken, in der Regel z.B. von mir zu Hause und auch anderen Menschen, die Zugriff auf das Imap-Konto bekommen sollen. Im Allgemeinen sind es Dialup-Verbindungen, die sich auf dem Server ins Mailfach einloggen, also dynamisch vergebene IP-Adressen.
Nimm auch cyrus-sasl-login dazu. Wer PLAIN sagt, muss auch LOGIN sagen. (^-^)
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
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.
Postfix habe ich gar nicht neu installiert. Wie gesagt, ich habe nur die main.cf aus den Sourcen extrahiert und über meine letzte Konfiguration gestülpt. Es war ein Versuch, meine main.cf zu bereinigen (inzwischen standen über 100 Zeilen zusätzlicher Code drin und ich vermute Webmin, das ich vor 2 Monaten mal benutzt hatte, hat hier auch schon einiges hineingeschrieben. Habe davon schnell die Finger gelassen.).
Puh, nimm lieber die -vv weg. Erst, wenn wir ein Problem innerhalb von Postfix-Lookups untersuchen müssen, ist so ein tiefer Loglevel sinnvoll.
Okay, laut Andreas bringt das sowieso erst etwas ab Postfix 2.3. Bei mir ist die 2.2.9 drauf.
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! cyrus-sasl-plain ist installiert. cyrus-sasl-login ist nicht installiert (s.o.)
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.
okay
unixhierarchysep: yes
Lasse die unixhierarchysep erst einmal weg (default).
okay
Versuche dann mal folgendes:
passwd cyrus (passwort vergeben) su cyrus cyradm localhost
Klappt nicht (zumindest vorerst): # passwd cyrus Changing password for cyrus. New Password: Reenter New Password: Password changed. tux:~/script # su cyrus cyrus@tux:/root/script> cyradm localhost IMAP Password: Login failed: authentication failure at /usr/lib/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/Cyrus/IMAP/Admin.pm line 118 cyradm: cannot authenticate to server with as cyrus Habe daraufhin in der /etc/pam.d/smtp nachgesehen: #%PAM-1.0 auth include common-auth <=war auskommentiert account include common-account <=war auskommentiert password include common-password <=war auskommentiert session include common-session <=war auskommentiert Das erklärt wohl auch, dass die acct-Einträge (PAM acct error) gefehlt haben, wie Andreas richtig vermutet hatte. Und hier standen noch die ganzen Einträge, die nach der mysql-Datenbank gesucht haben (waren einkommentiert): #auth sufficient pam_mysql.so user=mail passwd=meingeheimespasswort host=localhost # db=mail table=accountuser usercolumn=username # passwdcolumn=password crypt=1 logtable=log # logmsgcolumn=msg logusercolumn=user loghostcolumn=host # logpidcolumn=pid logtimecolumn=time #auth sufficient pam_unix_auth.so #account sufficient pam_mysql.so user=mail passwd=meingeheimespasswort host=localhost # db=mail table=accountuser usercolumn=username # passwdcolumn=password crypt=1 logtable=log # logmsgcolumn=msg logusercolumn=user loghostcolumn=host # logpidcolumn=pid logtimecolumn=time #account sufficient pam_unix_acct.so Jetzt sieht es schon besser aus (nach einem Serverneustart): # su cyrus cyrus@tux:/root/script> cyradm localhost IMAP Password: localhost> cm user.info_wdr_de localhost> lm INBOX (\HasNoChildren) user.test (\HasNoChildren) user.info_wdr_de (\HasNoChildren) user.wdr0001 (\HasNoChildren) user.root (\HasNoChildren) Es waren vorher schon ein paar Mailboxen angelegt. Auf jeden Fall scheint das jetzt geklappt zu haben.
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
cyrus@tux:/root/script> ps aux | grep saslauthd root 5386 0.0 0.0 20208 988 ? Ss 21:00 0:00 /usr/sbin/saslauthd -a pam root 5389 0.0 0.1 24724 1700 ? S 21:00 0:00 /usr/sbin/saslauthd -a pam root 5390 0.0 0.0 20208 628 ? S 21:00 0:00 /usr/sbin/saslauthd -a pam root 5391 0.0 0.0 20208 556 ? S 21:00 0:00 /usr/sbin/saslauthd -a pam root 5392 0.0 0.0 20208 556 ? S 21:00 0:00 /usr/sbin/saslauthd -a pam cyrus 5422 0.0 0.0 2996 704 pts/1 S+ 21:02 0:00 grep saslauthd
Teste, dass der user sich auf imap einloggen kann:
testsaslauthd -u user -p password -s imap
Klappt ;-) Es kommt eine Meldung 0: OK "Success."
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.
Hohoho...nicht nur im internen Netzwerk (wie gesagt habe ich auch gar nicht vor einen Imap-Client auf dieser Maschine zu installieren). Es ist sogar möglich, dass ich meinen Mail-Client zu Hause die Verbindung zur IMAP-Box beibringen konnte. Freu.
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).
Habe ich auch gemacht. Bei mir gehört der Socket aber irgendwie dem root: tux:/var/lib/imap/socket # ls -l total 0 srwxrwxrwx 1 cyrus mail 0 Dec 14 21:08 idle -rw------- 1 cyrus mail 0 Nov 12 23:38 imap-1.lock srwxrwxrwx 1 root root 0 Dec 14 21:08 lmtp -rw------- 1 cyrus mail 0 Nov 11 23:02 lmtpunix-0.lock -rw------- 1 cyrus mail 0 Nov 21 10:38 pop3-1.lock
dann setze den Transport in Postfix:
postconf -e "mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp"
okay
postfix reload okay
Jetz schicke mal eine Mail an den user und schaue nach, ob sie in Cyrus eingetroffen ist. Hier meine Telnet-Session, um eine Mail zu verschicken: # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.domain1.de ESMTP Postfix EHLO localhost 250-mail.domain1.de 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME MAIL FROM:root 250 Ok RCPT TO:info_wdr_de 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> mailtext . 250 Ok: queued as BD4DA192C2 quit
Und hier das Log dazu: Dec 14 21:54:47 domain1 postfix/smtpd[6400]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled Dec 14 21:54:47 domain1 postfix/smtpd[6400]: connect from localhost[127.0.0.1] Dec 14 21:55:22 domain1 postfix/smtpd[6400]: BD4DA192C2: client=localhost[127.0.0.1] Dec 14 21:55:29 domain1 postfix/cleanup[6403]: BD4DA192C2: message-id=<20061214205522.BD4DA192C2@mail.domain1.de> Dec 14 21:55:29 domain1 postfix/qmgr[6216]: BD4DA192C2: from=<root@mail.domain1.de>, size=375, nrcpt=1 (queue active) Dec 14 21:55:29 domain1 postfix/smtp[6404]: BD4DA192C2: to=<info_wdr_de@mail.domain1.de>, orig_to=<info_wdr_de>, relay=none, delay=17, status=bounced (mail for mail.domain1.de loops back to myself) Dec 14 21:55:29 domain1 postfix/cleanup[6403]: A46D119EC4: message-id=<20061214205529.A46D119EC4@mail.domain1.de> Dec 14 21:55:29 domain1 postfix/qmgr[6216]: A46D119EC4: from=<>, size=2335, nrcpt=1 (queue active) Dec 14 21:55:29 domain1 postfix/qmgr[6216]: BD4DA192C2: removed Dec 14 21:55:29 domain1 postfix/smtp[6404]: A46D119EC4: to=<root@mail.domain1.de>, relay=none, delay=0, status=bounced (mail for mail.domain1.de loops back to myself) Dec 14 21:55:29 domain1 postfix/qmgr[6216]: A46D119EC4: removed Dec 14 21:55:32 domain1 postfix/smtpd[6400]: disconnect from localhost[127.0.0.1] Es wird scheinbar etwas zurückgebounced. Ich vermute, dass ich Postfix jetzt beibringen muss, wohin info_wdr_de geschickt werden sollte. Wahrscheinlich eine Einstellung im mydestination-Parameter. # 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 mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp 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 Viele Grüße Ingbert -- 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