Hallo, wie kann ich das Logging von saslauthd einschalten? In meiner /usr/lib64/sasl2/smtpd.conf steht pwcheck_method: auxprop mech_list: plain login log_level: 7 Habe also das Loglevel hochgesetzt. Habe gelesen, dass die Logdateien per Hand angelegt werden müssen: touch /var/log/auth.log Hmmm....leider wird nichts gelogged Wo kann ich nachsehen, wie das Logging funktioniert? Und wie und wo wird das bei euch gelogged? Viele Grüße Ingbert B. -- 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
Treebeard wrote:
Hallo,
wie kann ich das Logging von saslauthd einschalten? In meiner /usr/lib64/sasl2/smtpd.conf steht pwcheck_method: auxprop mech_list: plain login log_level: 7
Wird AFAIK nicht ausgewertet, der Loglevel.
Habe also das Loglevel hochgesetzt. Habe gelesen, dass die Logdateien per Hand angelegt werden müssen: touch /var/log/auth.log
Das ist Aufgabe von Syslog bzw. logrotate.
Hmmm....leider wird nichts gelogged
Wo kann ich nachsehen, wie das Logging funktioniert? Und wie und wo wird das bei euch gelogged?
Normalerweise nach /var/log/messages. Es sei denn, dass du *.auth umlenkst nach /var/log/auth.log. Dies geschieht auch in /etc/sylog.conf bzw. in /etc/syslog-ng.conf. 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
Sandy Drobic schrieb am 6.12.2006 00:00:
Normalerweise nach /var/log/messages. Es sei denn, dass du *.auth umlenkst nach /var/log/auth.log. Dies geschieht auch in /etc/sylog.conf bzw. in /etc/syslog-ng.conf.
Habe bei mir weder die eine noch die andere Datei. Scheinbar liegt das bei mir (Suse 10.1) alles unter /etc/sysconfig/syslog, bzw. /etc/syslog-ng/syslog-ng.conf. Doch von Umleitung kann ich da nichts erkennen. In /var/log/messages wird bei mir auch nicht auth gelogged. Hat jemand das Logging von saslauthd unter Suse 10.1 schon erfolgreich eingestellt. Über jede Hilfe bin ich dankbar. -------- Inhalt der /etc/sysconfig/syslog -------- ## Path: System/Logging ## Description: System logging ## Type: list(0,1,2,3,4,5,6,7) ## Default: 1 ## Config: "" ## ServiceRestart: syslog # # Default loglevel for klogd # KERNEL_LOGLEVEL=1 ## Type: string ## Default: "" ## Config: "" ## ServiceRestart: syslog # # if not empty: parameters for syslogd # for example SYSLOGD_PARAMS="-r -s my.dom.ain" # SYSLOGD_PARAMS="" ## Type: string ## Default: -x ## Config: "" ## ServiceRestart: syslog # # if not empty: parameters for klogd # for example KLOGD_PARAMS="-x" to avoid (duplicate) symbol resolution # KLOGD_PARAMS="-x" ## Type: list(syslogd,syslog-ng) ## Default: syslogd ## Config: syslog-ng ## Command: /sbin/rcsyslog restart ## PreSaveCommand: /sbin/rcsyslog status && /sbin/rcsyslog stop # # The name of the syslog daemon used as # syslog service: "syslogd", "syslog-ng" # SYSLOG_DAEMON="syslog-ng" ## Type: yesno ## Default: yes ## Config: syslog-ng ## ServiceRestart: syslog # # If you don't want to let SuSEconfig generate your # syslog-ng configuration file, set this to "no". # # SuSEconfig is using a template configuration file # /etc/syslog-ng/syslog-ng.in # you can adopt it to your needs instead... # SYSLOG_NG_CREATE_CONFIG="yes" ## Type: string ## Default: "" ## Config: "" ## ServiceRestart: syslog # # Parameters for Syslog New-Generation - see syslog-ng(8) # SYSLOG_NG_PARAMS="" -------- Inhalt der /etc/syslog-ng/syslog-ng.conf: -------- # # /etc/syslog-ng/syslog-ng.conf # # Automatically generated by SuSEconfig on Di Jul 4 15:33:17 CEST 2006. # # PLEASE DO NOT EDIT THIS FILE! # # you can modify /etc/syslog-ng/syslog-ng.conf.in instead # # # # File format description can be found in syslog-ng.conf(5) # and /usr/share/doc/packages/syslog-ng/syslog-ng.txt. # # # Global options. # options { long_hostnames(off); sync(0); perm(0640); stats(3600); }; # # 'src' is our main source definition. you can add # more sources driver definitions to it, or define # your own sources, i.e.: # #source my_src { .... }; # source src { # # include internal syslog-ng messages # note: the internal() soure is required! # internal(); # # the following line will be replaced by the # socket list generated by SuSEconfig using # variables from /etc/sysconfig/syslog: # unix-dgram("/dev/log"); # # uncomment to process log messages from network: # #udp(ip("0.0.0.0") port(514)); }; # # Filter definitions # filter f_iptables { facility(kern) and match("IN=") and match("OUT="); }; filter f_console { level(warn) and facility(kern) and not filter(f_iptables) or level(err) and not facility(authpriv); }; filter f_newsnotice { level(notice) and facility(news); }; filter f_newscrit { level(crit) and facility(news); }; filter f_newserr { level(err) and facility(news); }; filter f_news { facility(news); }; filter f_mailinfo { level(info) and facility(mail); }; filter f_mailwarn { level(warn) and facility(mail); }; filter f_mailerr { level(err, crit) and facility(mail); }; filter f_mail { facility(mail); }; filter f_cron { facility(cron); }; filter f_local { facility(local0, local1, local2, local3, local4, local5, local6, local7); }; filter f_acpid { match('^\[acpid\]:'); }; filter f_netmgm { match('^NetworkManager:'); }; filter f_messages { not facility(news, mail) and not filter(f_iptables); }; filter f_warn { level(warn, err, crit) and not filter(f_iptables); }; filter f_alert { level(alert); }; # # Most warning and errors on tty10 and on the xconsole pipe: # destination console { file("/dev/tty10" group(tty) perm(0620)); }; log { source(src); filter(f_console); destination(console); }; destination xconsole { pipe("/dev/xconsole" group(tty) perm(0400)); }; log { source(src); filter(f_console); destination(xconsole); }; # Enable this, if you want that root is informed immediately, # e.g. of logins: # #destination root { usertty("root"); }; #log { source(src); filter(f_alert); destination(root); }; # # News-messages in separate files: # destination newscrit { file("/var/log/news/news.crit" owner(news) group(news)); }; log { source(src); filter(f_newscrit); destination(newscrit); }; destination newserr { file("/var/log/news/news.err" owner(news) group(news)); }; log { source(src); filter(f_newserr); destination(newserr); }; destination newsnotice { file("/var/log/news/news.notice" owner(news) group(news)); }; log { source(src); filter(f_newsnotice); destination(newsnotice); }; # # and optionally also all in one file: # (don't forget to provide logrotation config) # #destination news { file("/var/log/news.all"); }; #log { source(src); filter(f_news); destination(news); }; # # Mail-messages in separate files: # destination mailinfo { file("/var/log/mail.info"); }; log { source(src); filter(f_mailinfo); destination(mailinfo); }; destination mailwarn { file("/var/log/mail.warn"); }; log { source(src); filter(f_mailwarn); destination(mailwarn); }; destination mailerr { file("/var/log/mail.err" fsync(yes)); }; log { source(src); filter(f_mailerr); destination(mailerr); }; # # and also all in one file: # destination mail { file("/var/log/mail"); }; log { source(src); filter(f_mail); destination(mail); }; # # acpid messages in one file: # destination acpid { file("/var/log/acpid"); }; log { source(src); filter(f_acpid); destination(acpid); flags(final); }; # # NetworkManager messages in one file: # destination netmgm { file("/var/log/NetworkManager"); }; log { source(src); filter(f_netmgm); destination(netmgm); flags(final); }; # # Cron-messages in one file: # (don't forget to provide logrotation config) # #destination cron { file("/var/log/cron"); }; #log { source(src); filter(f_cron); destination(cron); }; # # Some boot scripts use/require local[1-7]: # destination localmessages { file("/var/log/localmessages"); }; log { source(src); filter(f_local); destination(localmessages); }; # # All messages except iptables and the facilities news and mail: # destination messages { file("/var/log/messages"); }; log { source(src); filter(f_messages); destination(messages); }; # # Firewall (iptables) messages in one file: # destination firewall { file("/var/log/firewall"); }; log { source(src); filter(f_iptables); destination(firewall); }; # # Warnings (except iptables) in one file: # destination warn { file("/var/log/warn" fsync(yes)); }; log { source(src); filter(f_warn); destination(warn); }; # # Enable this, if you want to keep all messages in one file: # (don't forget to provide logrotation config) # #destination allmessages { file("/var/log/allmessages"); }; #log { source(src); destination(allmessages); }; -- 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
Treebeard wrote:
Sandy Drobic schrieb am 6.12.2006 00:00:
Normalerweise nach /var/log/messages. Es sei denn, dass du *.auth umlenkst nach /var/log/auth.log. Dies geschieht auch in /etc/sylog.conf bzw. in /etc/syslog-ng.conf.
Habe bei mir weder die eine noch die andere Datei. Scheinbar liegt das bei mir (Suse 10.1) alles unter /etc/sysconfig/syslog, bzw. /etc/syslog-ng/syslog-ng.conf.
/etc/sysconfig/syslog: Konfigurationsdatei für SuSEconfig /etc/syslog-ng/syslog-ng.conf: von SuSEconfig erzeugte Konfiguration
Doch von Umleitung kann ich da nichts erkennen. In /var/log/messages wird bei mir auch nicht auth gelogged. Hat jemand das Logging von saslauthd unter Suse 10.1 schon erfolgreich eingestellt. Über jede Hilfe bin ich dankbar.
-------- Inhalt der /etc/sysconfig/syslog -------- # SuSEconfig is using a template configuration file # /etc/syslog-ng/syslog-ng.in # you can adopt it to your needs instead...
In /etc/syslog-ng/syslog-ng.in: destination authlog { file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; log { source(src); filter(f_auth); destination(authlog); }; Danach einmal SuSEconfig laufen lassen. 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
In /etc/syslog-ng/syslog-ng.in:
destination authlog { file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; log { source(src); filter(f_auth); destination(authlog); };
Danach einmal SuSEconfig laufen lassen. Nachdem ich SuSEconfig aufgerufen habe wurde das auch in die /etc/syslog-ng/syslog-ng eingetragen. Das scheint demnach geklappt zu haben. Es ist aber ein weiteres Problem (?), nämlich Fehlermeldungen aufgetreten. Und saslauthd schein immer noch nicht zu loggen.
# SuSEconfig Starting SuSEconfig, the SuSE Configuration Tool... Running in full featured mode. Reading /etc/sysconfig and updating the system... Executing /sbin/conf.d/SuSEconfig.groff... Executing /sbin/conf.d/SuSEconfig.libxml2... Executing /sbin/conf.d/SuSEconfig.news... Executing /sbin/conf.d/SuSEconfig.perl... Executing /sbin/conf.d/SuSEconfig.permissions... Executing /sbin/conf.d/SuSEconfig.postfix... *** WARNING *** Found /etc/postfix/master.cf.SuSEconfig, exiting... *** WARNING *** Executing /sbin/conf.d/SuSEconfig.scpm... Executing /sbin/conf.d/SuSEconfig.sortpasswd... Executing /sbin/conf.d/SuSEconfig.syslog-ng... Executing /sbin/conf.d/SuSEconfig.zmessages... Finished. ------- Ist das normal? -- Viele Grüße Chris -- 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
Treebeard wrote:
In /etc/syslog-ng/syslog-ng.in:
destination authlog { file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; log { source(src); filter(f_auth); destination(authlog); };
Danach einmal SuSEconfig laufen lassen. Nachdem ich SuSEconfig aufgerufen habe wurde das auch in die /etc/syslog-ng/syslog-ng eingetragen. Das scheint demnach geklappt zu haben. Es ist aber ein weiteres Problem (?), nämlich Fehlermeldungen aufgetreten. Und saslauthd schein immer noch nicht zu loggen.
Läuft saslauthd überhaupt?!? teste bitte mal mit: rcsaslauthd status chkconfig saslauthd Wenn es läuft: testsaslauthd -u user -p password -s smtp
# SuSEconfig
Starting SuSEconfig, the SuSE Configuration Tool... Running in full featured mode. Reading /etc/sysconfig and updating the system... Executing /sbin/conf.d/SuSEconfig.groff... Executing /sbin/conf.d/SuSEconfig.libxml2... Executing /sbin/conf.d/SuSEconfig.news... Executing /sbin/conf.d/SuSEconfig.perl... Executing /sbin/conf.d/SuSEconfig.permissions... Executing /sbin/conf.d/SuSEconfig.postfix... *** WARNING *** Found /etc/postfix/master.cf.SuSEconfig, exiting... *** WARNING ***
Du hast die master.cf manuell verändert und SuSEconfig lässt daraufhin von der Datei die Finger weg. Ist in Ordnung. (^-^)
Executing /sbin/conf.d/SuSEconfig.scpm... Executing /sbin/conf.d/SuSEconfig.sortpasswd... Executing /sbin/conf.d/SuSEconfig.syslog-ng... Executing /sbin/conf.d/SuSEconfig.zmessages... Finished. -------
Ist das normal?
Ja. Übrigens: logrotate weiss natürlich nichts von einer Datei /var/log/auth.log. Wenn diese Datei regelmäßig rotiert werden soll, musst du das logrotate beibringen. Ist aber kein großes Problem. 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
Läuft saslauthd überhaupt?!?
teste bitte mal mit: rcsaslauthd status chkconfig saslauthd
Wenn es läuft: testsaslauthd -u user -p password -s smtp # rcsaslauthd status Checking for service saslauthd: running # chkconfig saslauthd saslauthd off # /usr/bin/testsaslauthd -u usr0001 -p xyztest -s smtp 0: OK "Success."
"saslauthd off" scheint nicht korrekt zu sein, oder? Aber ich habe nun einen Logeintrag in /var/log/auth.log entdeckt, nachdem ich einen Benutzernamen angegeben habe (test), der nicht auf meinem System vorhanden ist. Prima, das ist im Grunde die Lösung des Problems. Wenn ich allerdings mich erfolgreich authentifizieren kann (s.o.) wird kein Eintrag in das Log geschrieben. Eine telnet-Session könnte bei mir so aussehen: # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.meinserver.de ESMTP Postfix EHLO localhost 250-mail.meinserver.de 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME AUTH PLAIN mein64bitKodiertesPW 535 Error: authentication failed Doch bei diesem Error wird in /var/log/auth.log nichts gelogged. Die Einträge in /var/log/mail sehen so aus:
localhost[127.0.0.1]: 220 mail.meinserver.de ESMTP Postfix Dec 6 14:38:54 meinserver postfix/smtpd[24771]: < localhost[127.0.0.1]: EHLO localhost Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-mail.meinserver.de Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-PIPELINING Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-SIZE 10240000 Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-VRFY Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-ETRN Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-AUTH LOGIN PLAIN Dec 6 14:38:54 meinserver postfix/smtpd[24771]: match_list_match: localhost: no match Dec 6 14:38:54 meinserver postfix/smtpd[24771]: match_list_match: 127.0.0.1: no match Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250-AUTH=LOGIN PLAIN Dec 6 14:38:54 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 250 8BITMIME Dec 6 14:39:01 meinserver postfix/smtpd[24771]: < localhost[127.0.0.1]: AUTH PLAIN mein64bitKodiertesPW Dec 6 14:39:01 meinserver postfix/smtpd[24771]: smtpd_sasl_authenticate: sasl_method PLAIN, init_response mein64bitKodiertesPW Dec 6 14:39:01 meinserver postfix/smtpd[24771]: smtpd_sasl_authenticate: decoded initial response usr0001 Dec 6 14:39:01 meinserver postfix/smtpd[24771]: warning: SASL authentication failure: Password verification failed Dec 6 14:39:01 meinserver postfix/smtpd[24771]: warning: localhost[127.0.0.1]: SASL PLAIN authentication failed Dec 6 14:39:01 meinserver postfix/smtpd[24771]: > localhost[127.0.0.1]: 535 Error: authentication failed
Hier ist das Perl-Script, wie ich mein mein64bitKodiertesPW-Passwort generiere: #!/usr/bin/perl use strict; use MIME::Base64; if ( $#ARGV != 1 ) { die "Verwendung: encode_sasl_plain.pl <benutzername> <passwort>\n"; } print encode_base64("$ARGV[0]\0$ARGV[0]\0$ARGV[1]"); exit 0; ----- Hmmmm...wie komm ich dem jetzt auf die Schliche? -- 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
Treebeard wrote:
Läuft saslauthd überhaupt?!?
teste bitte mal mit: rcsaslauthd status chkconfig saslauthd
Wenn es läuft: testsaslauthd -u user -p password -s smtp # rcsaslauthd status Checking for service saslauthd: running # chkconfig saslauthd saslauthd off # /usr/bin/testsaslauthd -u usr0001 -p xyztest -s smtp 0: OK "Success."
"saslauthd off" scheint nicht korrekt zu sein, oder?
Nein, damit wird saslauthd nicht beim Systemstart automatisch gestartet. chkconfig saslautd on
Aber ich habe nun einen Logeintrag in /var/log/auth.log entdeckt, nachdem ich einen Benutzernamen angegeben habe (test), der nicht auf meinem System vorhanden ist. Prima, das ist im Grunde die Lösung des Problems. Wenn ich allerdings mich erfolgreich authentifizieren kann (s.o.) wird kein Eintrag in das Log geschrieben.
Okay, dann muss wohl die Logstufe in syslog-ng.conf angepasst werden. Das müsste ich aber erst selbst austesten, wie das funktioniert.
Eine telnet-Session könnte bei mir so aussehen: # telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.meinserver.de ESMTP Postfix EHLO localhost 250-mail.meinserver.de 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME AUTH PLAIN mein64bitKodiertesPW 535 Error: authentication failed
Zeige doch mal die Ausgabe von "postconf -n" und den Inhalt von /usr/lib/sasl2/smtpd.conf. 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
Zeige doch mal die Ausgabe von "postconf -n" und den Inhalt von /usr/lib/sasl2/smtpd.conf.
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 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 sendmail_path = /usr/sbin/sendmail setgid_group = maildrop smtpd_delay_reject = no 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 __________________ saslfinger -s ##################### saslfinger - postfix Cyrus sasl configuration Wed Dec 6 15:07:43 CET 2006 version: 1.0 mode: server-side SMTP AUTH -- basics -- Postfix: 2.2.9 System: Welcome to SUSE LINUX 10.1 (X86-64) - Kernel \r (\l). -- smtpd is linked to -- libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002b5f99bae000) -- active SMTP AUTH and TLS parameters for smtpd -- broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = -- listing of /usr/lib/sasl2 -- total 169 drwxr-xr-x 2 root root 424 Dec 3 21:27 . drwxr-xr-x 31 root root 9640 Nov 24 23:34 .. -rwxr-xr-x 1 root root 13216 Oct 26 21:52 libanonymous.so -rwxr-xr-x 1 root root 13216 Oct 26 21:52 libanonymous.so.2 -rwxr-xr-x 1 root root 13216 Oct 26 21:52 libanonymous.so.2.0.21 -rwxr-xr-x 1 root root 13724 Oct 26 21:52 liblogin.so -rwxr-xr-x 1 root root 13724 Oct 26 21:52 liblogin.so.2 -rwxr-xr-x 1 root root 13724 Oct 26 21:52 liblogin.so.2.0.21 -rwxr-xr-x 1 root root 18316 Oct 26 21:52 libsasldb.so -rwxr-xr-x 1 root root 18316 Oct 26 21:52 libsasldb.so.2 -rwxr-xr-x 1 root root 18316 Oct 26 21:52 libsasldb.so.2.0.21 drwxr-xr-x 2 root root 48 Dec 1 22:17 sasl2 -rw-r--r-- 1 root root 91 Dec 1 22:01 smtpd.conf -- listing of /usr/local/lib/sasl2 -- total 0 drwxr-xr-x 2 root root 48 Dec 1 22:17 . drwxr-xr-x 3 root root 72 Nov 30 10:03 .. -- content of /usr/lib/sasl2/smtpd.conf -- # Global parameters log_level: 7 pwcheck_method: saslauthd #auxprop mech_list: PLAIN LOGIN -- active services in /etc/postfix/master.cf -- # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) smtp inet n - n - - smtpd -v pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr 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 relay unix - - n - - smtp -o fallback_relay= 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 scache unix - - n - 1 scache 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 -- mechanisms on localhost -- 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN -- end of saslfinger output -- -- 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
Treebeard wrote:
-- content of /usr/lib/sasl2/smtpd.conf -- # Global parameters log_level: 7 pwcheck_method: saslauthd #auxprop mech_list: PLAIN LOGIN
Versuche es mal mit: pwcheck_method: auxprop auxprop_plugin: sql 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
chkconfig saslautd steht jetzt auf on.
Versuche es mal mit: pwcheck_method: auxprop auxprop_plugin: sql
Hat leider nichts geändert. Ich habe übrigens gesehen, dass ich zwei smtpd.conf Dateien habe. Zum einen im Verzeichnis /usr/lib/sasl2/ und dann nochmal in /usr/lib64/sasl2/ Habe beide mal mit den vorgeschlagenen Parametern konfiguriert. Gibt es die doppelt aus Kompatibilitätsgründen? Der Server läuft auf einer 64-Bit Maschine. In /var/log/auth.log habe ich nach dem Neustart von saslauthd etwas merkwürdiges gesehen: Dec 6 17:37:20 meinserver saslauthd[25426]: server_exit : master exited: 25426 Dec 6 17:37:20 meinserver saslauthd[25780]: detach_tty : master pid is: 25780 Dec 6 17:37:20 meinserver saslauthd[25780]: ipc_init : listening on socket: /var/run/sasl2//mux Stimmt da was mit dem Pfad zum socket nicht? Sollte es nicht heißen : listening on socket: /var/run/sasl2/mux ??? Danke, Sandy, Du bist mir auf jeden Fall jetzt schon eine große Hilfe. 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
Treebeard wrote:
chkconfig saslautd steht jetzt auf on.
Versuche es mal mit: pwcheck_method: auxprop auxprop_plugin: sql
Hat leider nichts geändert. Ich habe übrigens gesehen, dass ich zwei smtpd.conf Dateien habe. Zum einen im Verzeichnis /usr/lib/sasl2/
Wenn ich mich recht erinnere benutzt deine Version von Postfix die 32-Bit Version in /usr/lib/sasl2. Upsi, falsch erinnert: Postfix: 2.2.9 System: Welcome to SUSE LINUX 10.1 (X86-64) - Kernel \r (\l). -- smtpd is linked to -- libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002b5f99bae000) Du verwendest also tatsächlich die 64-Bit Version. In dem Fall müssen wir auch die smtpd.conf in dem Verzeichnis /usr/lib64/sasl2 verwenden.
und dann nochmal in /usr/lib64/sasl2/
Habe beide mal mit den vorgeschlagenen Parametern konfiguriert. Gibt es die doppelt aus Kompatibilitätsgründen? Der Server läuft auf einer 64-Bit Maschine.
Du musst auch für alle anderen Programme, die das Cyrus Sasl Framework verwenden, feststellen, welches Library verwendet wird, die 32-Bit-Version oder die 64-Bit-Version. Schau doch mal nach, ob Cyrus auch auf die 64-Bit-Version gelinkt ist: ldd /usr/lib/cyrus/bin/imapd | grep libsasl2
In /var/log/auth.log habe ich nach dem Neustart von saslauthd etwas merkwürdiges gesehen: Dec 6 17:37:20 meinserver saslauthd[25426]: server_exit : master exited: 25426 Dec 6 17:37:20 meinserver saslauthd[25780]: detach_tty : master pid is: 25780 Dec 6 17:37:20 meinserver saslauthd[25780]: ipc_init : listening on socket: /var/run/sasl2//mux
Stimmt da was mit dem Pfad zum socket nicht? Sollte es nicht heißen : listening on socket: /var/run/sasl2/mux ???
Nö, das ist schon in Ordnung so. Obwohl die Authentifikation über SQL ohne saslauthd erfolgen wird. Der hängt also nur noch in der Gegend rum. Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll. Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet. Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s' %s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben. Passe bitte den Select-Befehl an auf deine Datenbank. 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
ldd /usr/lib/cyrus/bin/imapd | grep libsasl2
Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll. So hatte ich mir das vorgestellt. Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet. So sieht das bei mir aus. Ich hatte das auch schon über den saslauthd
libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002acd9cab1000) sieht ganz gut aus... probiert (und nicht über auxprop) cat /etc/pam.d/smtp auth sufficient pam_mysql.so user=mail passwd=MAILPASSWORD 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 required pam_mysql.so user=mail passwd=MAILPASSWAORD host=localhost \ db=mail table=accountuser usercolumn=username \ passwdcolumn=password crypt=1 logtable=log \ logmsgcolumn=msg logusercolumn=user loghostcolumn=host \ logpidcolumn=pid logtimecolumn=time Müssen hier eigentlich die Backslashes weg?
Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s'
%s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben.
Hier müssten wohl einge Tabellen miteinander verknüpft werden, da ich die Datenbankstruktur von web-cyradm benutzt habe: # phpMyAdmin MySQL-Dump # version 2.2.6 # http://phpwizard.net/phpMyAdmin/ # http://www.phpmyadmin.net/ (download page) # # Host: localhost # Generation Time: Nov 04, 2002 at 01:44 AM # Server version: 3.23.52 # PHP Version: 4.2.3 # Database : `mail` # -------------------------------------------------------- # # Table structure for table `accountuser` # CREATE TABLE accountuser ( username varchar(255) binary NOT NULL default '', password varchar(30) binary NOT NULL default '', prefix varchar(50) NOT NULL default '', domain_name varchar(255) NOT NULL default '', UNIQUE KEY username (username) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `adminuser` # CREATE TABLE adminuser ( username varchar(50) binary NOT NULL default '', password varchar(50) binary NOT NULL default '', type int(11) NOT NULL default '0', SID varchar(255) NOT NULL default '', home varchar(255) NOT NULL default '', PRIMARY KEY (username) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `alias` # CREATE TABLE alias ( alias varchar(255) NOT NULL default '', dest longtext, username varchar(50) NOT NULL default '', status int(11) NOT NULL default '1', PRIMARY KEY (alias) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `domain` # CREATE TABLE domain ( domain_name varchar(255) NOT NULL default '', prefix varchar(50) NOT NULL default '', maxaccounts int(11) NOT NULL default '20', quota int(10) NOT NULL default '20000', transport varchar(255) NOT NULL default 'cyrus', freenames enum('YES','NO') NOT NULL default 'NO', freeaddress enum('YES','NO') NOT NULL default 'NO', PRIMARY KEY (domain_name), UNIQUE KEY prefix (prefix) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `domainadmin` # CREATE TABLE domainadmin ( domain_name varchar(255) NOT NULL default '', adminuser varchar(255) NOT NULL default '' ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `search` # CREATE TABLE search ( search_id varchar(255) NOT NULL default '', search_sql text NOT NULL, perpage int(11) NOT NULL default '0', timestamp timestamp(14) NOT NULL, PRIMARY KEY (search_id), KEY search_id (search_id) ) TYPE=MyISAM; # -------------------------------------------------------- # # Table structure for table `virtual` # CREATE TABLE virtual ( alias varchar(255) NOT NULL default '', dest longtext, username varchar(50) NOT NULL default '', status int(11) NOT NULL default '1', KEY alias (alias) ) TYPE=MyISAM; CREATE TABLE log ( id int(11) NOT NULL auto_increment, msg text NOT NULL, user varchar(255) NOT NULL default '', host varchar(255) NOT NULL default '', time datetime NOT NULL default '2000-00-00 00:00:00', pid varchar(255) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM; INSERT INTO adminuser (username, password) VALUES ('admin', ENCRYPT('test')); INSERT INTO domainadmin (domain_name,adminuser) VALUES ('*','admin'); INSERT INTO accountuser (username, password) VALUES ('cyrus', ENCRYPT('secret')); ############ Die Passwörter liegen also in accountuser und sind mit ENCRYPT einwegverschlüsselt. Habe noch eine Verständnisfrage: Der %s Suchstring sollte doch nicht die Emailadresse sein oder? Mit "testsaslauthd -u user -p password -s smtp" habe ich doch auch den Benutzer gecheckt und nicht die damit verbundene Mailadresse. Die wird ja über die Tabelle virtual zugeordnet (alias -> username). 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
Treebeard wrote:
ldd /usr/lib/cyrus/bin/imapd | grep libsasl2 libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002acd9cab1000) sieht ganz gut aus... Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll. So hatte ich mir das vorgestellt. Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet. So sieht das bei mir aus. Ich hatte das auch schon über den saslauthd probiert (und nicht über auxprop) cat /etc/pam.d/smtp auth sufficient pam_mysql.so user=mail passwd=MAILPASSWORD 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 required pam_mysql.so user=mail passwd=MAILPASSWAORD host=localhost \ db=mail table=accountuser usercolumn=username \ passwdcolumn=password crypt=1 logtable=log \ logmsgcolumn=msg logusercolumn=user loghostcolumn=host \ logpidcolumn=pid logtimecolumn=time
Müssen hier eigentlich die Backslashes weg?
Wenn ich das richtig sehe, benutzt du einen Patch für Cyrus SASL, um die Passwörter verschlüsselt in der SQL-Datenbank abzulegen. Damit wird jedoch wieder die Möglichkeit versperrt, Shared-Secret-Mechanismen wie Digest-MD5 und Cram-MD5 zu verwenden, es bleiben also tatsächlich nur PLAIN und LOGIN als Mechanismen übrig. Jetzt hoffe ich mal, dass die Kompilation von Cyrus Sasl sauber funktioniert hat (inklusive des Patches). Nur zur Information: sollten Sicherheitslücken auftreten in Cyrus/Cyrus Sasl, wirst du aus den Quellen neu kompilieren müssen. (^-^) Ob die PAM-Konfiguration richtig ist, kann ich nicht sagen, ich habe das bisher nicht über PAM gemacht. Gibt es die entsprechenden User auch in passwd?
Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s'
%s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben.
Hier müssten wohl einge Tabellen miteinander verknüpft werden, da ich die Datenbankstruktur von web-cyradm benutzt habe: # Database : `mail` # -------------------------------------------------------- # Table structure for table `accountuser` #
CREATE TABLE accountuser ( username varchar(255) binary NOT NULL default '', password varchar(30) binary NOT NULL default '', prefix varchar(50) NOT NULL default '', domain_name varchar(255) NOT NULL default '', UNIQUE KEY username (username) ) TYPE=MyISAM;
# --------------------------------------------------------
Die Passwörter liegen also in accountuser und sind mit ENCRYPT einwegverschlüsselt.
Habe noch eine Verständnisfrage: Der %s Suchstring sollte doch nicht die Emailadresse sein oder?
%s ist die Eingabe, die in die Abfrage einfließt. Du kannst dies trennen mit %u (localpart) und %d (domain). sql_statement: select password from accountuser where username = '%u' and domain_name = '%d' Dann wird usera@example.com aufgeteilt in: select password from accountuser where username = usera and domain_name = example.com
Mit "testsaslauthd -u user -p password -s smtp" habe ich doch auch den Benutzer gecheckt und nicht die damit verbundene Mailadresse. Die wird ja über die Tabelle virtual zugeordnet (alias -> username).
Na ja, das ist wohl eher Zweckentfremdung. (^-^) virtual_alias_maps sind: - für Adresseumschreibungen bei allen Mails (ein- und ausgehenden) - gültige Empfänger in virtual_alias_domains Wenn die Domain in $mydestination ist, dann wird nur der localpart verwendet, und alle Domains in $mydestination werden in einen Topf geworfen. usera@example.com = usera@example.net Wenn du das nicht willst, musst du die Domain in virtual_alias_domains oder virtual_mailbox_domains einordnen, wobei Empfänger in virtual_alias_domains auf eine andere Domain umgeschrieben werden müssen. 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
Wenn ich das richtig sehe, benutzt du einen Patch für Cyrus SASL, um die Passwörter verschlüsselt in der SQL-Datenbank abzulegen.
Nein, benutze ich nicht. Aus Deiner Aussage entnehme ich, dass ich diesen bräuchte. Habe alle benötigten Pakete über yast eingespielt. Wenn das so nicht funktioniert muß ich es wohl anders machen. Bisher bin ich an allen HowTos an irgendeiner Stelle gescheitert. Anhand dieser Quelle habe ich versucht PAM zu konfigurieren: http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/pam-config.ht... Von Patch für Cyrus SASL konnte ich hier nichts lesen, daher bin ich davon ausgegangen, dass es auch mit den von yast eingespielten Paketen klappt. Wie kann man unter SUSE/yast (oder enerell unter Linux) erkennen welche Eigenschaften ein Paket mitbringt (die über das configure Kommando festgelegt wurden)?
Damit wird jedoch wieder die Möglichkeit versperrt, Shared-Secret-Mechanismen wie Digest-MD5 und Cram-MD5 zu verwenden, es bleiben also tatsächlich nur PLAIN und LOGIN als Mechanismen übrig. Ich wollte es nicht gleich zu kompliziert machen. In den Tutorials wird auch meist nur PLAIN oder LOGIN verwendet. Ich bin im Moment auch überfragt, ob Digest-MD5 und Cram-MD5 von den im Augenblick verfügbaren Mail-Clients unterstützt werden. Im Grunde möchte ich nur eine Authentifizierung der Mailclients an meinem Server, um kein offenes Relay zu betreiben. Die Mailuser sollen auch gar nicht user des Systems sein, also keinen Eintrag in der passwd haben. Daher habe ich mich für den web-cyradm entschieden, da man damit ganz nett Mailbenutzer einrichten kann. Ich habe allerdings auch kein Problem damit, meine Strategie zu ändern und die Benutzer in einer anderen Datenbank abzuspeichern. Je einfacher und sicherer umso besser.
Mit "testsaslauthd -u user -p password -s smtp" habe ich doch auch den Benutzer gecheckt und nicht die damit verbundene Mailadresse. Die wird ja über die Tabelle virtual zugeordnet (alias -> username).
Na ja, das ist wohl eher Zweckentfremdung. (^-^) Wahrscheinlich hätte ich die Datenbankstruktur auch anders aufgebaut, aber es scheint ja bei anderen zu funktionieren. Sowohl in dem oben genannten Tutorial von Luc de Louw, als auch dem von David Lais alias snope (www.postfix-howto.de) wird als Verwaltungstool Web-Cyradm erwähnt.
Wenn die Domain in $mydestination ist, dann wird nur der localpart verwendet, und alle Domains in $mydestination werden in einen Topf geworfen.
In main.cf steht: myhostname = mail.meinserver.de mydestination = $myhostname, mysql:/etc/postfix/mysql-mydestination.cf mysql-mydestination.cf: # mysql config file for local domain (like sendmail's sendmail.cw) lookups on postfix # comments are ok. # # the user name and password to log into the mysql server hosts = localhost user = mail password = my2006mailcyradmin # the database name on the servers dbname = mail # the table name table = domain select_field = domain_name where_field = domain_name In der mysql-Tabelle steht im Feld domain_name der Wert meinserver.de Hier der sql-dump: INSERT INTO `domain` (`domain_name`, `prefix`, `maxaccounts`, `quota`, `transport`, `freenames`, `freeaddress`) VALUES ('meinserver.de', 'wdr', 5, 20000, 'cyrus', 'NO', 'NO'); Da steht also noch nicht viel drin ;-) -- 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
Treebeard wrote:
Wenn ich das richtig sehe, benutzt du einen Patch für Cyrus SASL, um die Passwörter verschlüsselt in der SQL-Datenbank abzulegen.
Nein, benutze ich nicht. Aus Deiner Aussage entnehme ich, dass ich diesen bräuchte. Habe alle benötigten Pakete über yast eingespielt. Wenn das so nicht funktioniert muß ich es wohl anders machen. Bisher bin ich an allen HowTos an irgendeiner Stelle gescheitert. Anhand dieser Quelle
Das ist das Problem mit Anleitungen, insbesondere, wenn man aus fünf verschiedenen Anleitungen die saftigesten Stücke kombiniert. :-/
habe ich versucht PAM zu konfigurieren: http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/pam-config.ht...
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?
Von Patch für Cyrus SASL konnte ich hier nichts lesen, daher bin ich davon ausgegangen, dass es auch mit den von yast eingespielten Paketen klappt.
Trau schau wem. (^-^)
Wie kann man unter SUSE/yast (oder enerell unter Linux) erkennen welche Eigenschaften ein Paket mitbringt (die über das configure Kommando festgelegt wurden)?
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.
Damit wird jedoch wieder die Möglichkeit versperrt, Shared-Secret-Mechanismen wie Digest-MD5 und Cram-MD5 zu verwenden, es bleiben also tatsächlich nur PLAIN und LOGIN als Mechanismen übrig. Ich wollte es nicht gleich zu kompliziert machen. In den Tutorials wird auch meist nur PLAIN oder LOGIN verwendet. Ich bin im Moment auch überfragt, ob Digest-MD5 und Cram-MD5 von den im Augenblick verfügbaren Mail-Clients unterstützt werden. Im Grunde möchte ich nur eine Authentifizierung der Mailclients an meinem Server, um kein offenes Relay zu betreiben. Die Mailuser sollen auch gar nicht user des Systems sein, also keinen Eintrag in der passwd haben. Daher habe ich mich für den web-cyradm entschieden, da man damit ganz nett Mailbenutzer einrichten kann. Ich habe allerdings auch kein Problem damit, meine Strategie zu ändern und die Benutzer in einer anderen Datenbank abzuspeichern. Je einfacher und sicherer umso besser.
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.
Na ja, das ist wohl eher Zweckentfremdung. (^-^) Wahrscheinlich hätte ich die Datenbankstruktur auch anders aufgebaut, aber es scheint ja bei anderen zu funktionieren. Sowohl in dem oben genannten Tutorial von Luc de Louw, als auch dem von David Lais alias snope (www.postfix-howto.de) wird als Verwaltungstool Web-Cyradm erwähnt.
Wenn die Domain in $mydestination ist, dann wird nur der localpart verwendet, und alle Domains in $mydestination werden in einen Topf geworfen.
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.
mysql-mydestination.cf: # mysql config file for local domain (like sendmail's sendmail.cw) lookups on postfix # comments are ok. # # the user name and password to log into the mysql server hosts = localhost user = mail password = my2006mailcyradmin # the database name on the servers dbname = mail # the table name table = domain select_field = domain_name where_field = domain_name
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.
In der mysql-Tabelle steht im Feld domain_name der Wert meinserver.de
Hier der sql-dump:
INSERT INTO `domain` (`domain_name`, `prefix`, `maxaccounts`, `quota`, `transport`, `freenames`, `freeaddress`) VALUES ('meinserver.de', 'wdr', 5, 20000, 'cyrus', 'NO', 'NO');
Da steht also noch nicht viel drin ;-)
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 - Test, ob bei Emailsadressen gültige von ungültigen unterschieden werden - Test ob Adressumschreibungen richtig funktionieren - Test ob die Authentifikation richtig funktioniert. 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 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
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. 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).
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.
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?
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.
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 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 sendmail_path = /usr/sbin/sendmail setgid_group = maildrop smtpd_delay_reject = no 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 ;-)
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.
- 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?
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. 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). 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
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
Am Thursday 07 December 2006 19:33 schrieb Sandy Drobic:
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)
Dort siehst Du nur, ob Postfix mit oder ohne MySQL-Unterstützung gebaut wurde. Mit Cyrus-SASL bzw. Authentifizierung hat das gar nichts zu tun. Cyrus-SASL ist für die Applikation, die es benutzt nur die libsasl2.so. Mehr nicht. Alles andere ist entweder in der libsasl2.so oder in den Plugins enthalten. bdb, ldap, mysql, pgsql....
# 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.
Es gibt keine MySQL-Unterstützung für Cyrus-Imapd. Ob jetzt die Authentifizierung über MySQL gemacht werden kann oder soll, ist in der libsasl2.so bzw. eigentlich erst im libsql.so Auxprop Plugin enthalten.
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.
Hmm, ob "besser" finde ich relativ. Aber suse geht jetzt den Debian-Way. Dass bedeutet die einzelnen Maps sind nachladbar. Dort wirst Du dann mit ldd nix mehr von mysql sehen.
Ich werde ohnehin bald auf Suse 10.2 updaten, dann lasse ich mich überraschen, wo bereits MySQL-Unterstützung enthalten ist. (^-^)
-- Andreas -- 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
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) Das sind meine Ausgaben: # ldd /usr/lib/postfix/smtpd libpostfix-master.so.1 => /usr/lib64/libpostfix-master.so.1 (0x00002b397c581000) libpostfix-tls.so.1 => /usr/lib64/libpostfix-tls.so.1 (0x00002b397c688000) libpostfix-dns.so.1 => /usr/lib64/libpostfix-dns.so.1 (0x00002b397c794000) libpostfix-global.so.1 => /usr/lib64/libpostfix-global.so.1 (0x00002b397c899000) libpostfix-util.so.1 => /usr/lib64/libpostfix-util.so.1 (0x00002b397c9c7000) libldap-2.3.so.0 => /usr/lib64/libldap-2.3.so.0 (0x00002b397caf4000) liblber-2.3.so.0 => /usr/lib64/liblber-2.3.so.0 (0x00002b397cc2f000) libpcre.so.0 => /usr/lib64/libpcre.so.0 (0x00002b397cd3c000) libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002b397ce67000) libssl.so.0.9.8 => /usr/lib64/libssl.so.0.9.8 (0x00002b397cf80000) libcrypto.so.0.9.8 => /usr/lib64/libcrypto.so.0.9.8 (0x00002b397d0c6000) libdb-4.3.so => /usr/lib64/libdb-4.3.so (0x00002b397d329000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b397d51e000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b397d634000) libc.so.6 => /lib64/libc.so.6 (0x00002b397d748000) libdl.so.2 => /lib64/libdl.so.2 (0x00002b397d979000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b397da7d000) /lib64/ld-linux-x86-64.so.2 (0x00002b397c464000)
Demnach sieht es so aus, als ob die mysql-Unterstützung nicht dabei ist.
# 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)
# ldd /usr/lib/cyrus/bin/imapd libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002b6d5e5d5000) libssl.so.0.9.8 => /usr/lib64/libssl.so.0.9.8 (0x00002b6d5e6ed000) libcrypto.so.0.9.8 => /usr/lib64/libcrypto.so.0.9.8 (0x00002b6d5e833000) libdb-4.3.so => /usr/lib64/libdb-4.3.so (0x00002b6d5ea97000) libwrap.so.0 => /lib64/libwrap.so.0 (0x00002b6d5ec8b000) libnsl.so.1 => /lib64/libnsl.so.1 (0x00002b6d5ed94000) libc.so.6 => /lib64/libc.so.6 (0x00002b6d5eeab000) libdl.so.2 => /lib64/libdl.so.2 (0x00002b6d5f0db000) libresolv.so.2 => /lib64/libresolv.so.2 (0x00002b6d5f1df000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00002b6d5f2f4000) /lib64/ld-linux-x86-64.so.2 (0x00002b6d5e4b8000)
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.
Ein postconf -m besagt mir aber, dass mysql als Datenbank unterstützt wird: postconf -m btree cidr environ hash ldap mysql nis pcre proxy regexp sdbm static tcp unix
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. Habe eben mal nachgesehen: ja, dies ist eine Einstellungssasche in der conf.php von web-cyradm
# Defines if passwords are encrypted or not. # Valid Values: # - plain 0 No encription is used # - crypt 1 (shadow compatible encription) # - mysql 2 (MySQL PASSWORD function) # - md5 3 (MD5 digest) $CRYPT = "crypt"; Ich würde ganz gerne allerdings die Passwörter in der Datenbank verschlüsselt stehen lassen. Die SQL-Abfragen sollte man entsprechend umschreiben können.
Ist halt ein komplexes Thema. Hier der Überblick:
Postfix kennt ...
Mein Ziel ist es etwa 10 Domains auf den Server zu transferieren. domain1 sollte 1 Postfach haben, etwa 10 Mailadressen sollen auf dieses Postfach zeigen, 3 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain2 sollte 1 Postfach haben, 2 Mailadressen als Verweis darauf domain3, 1 Postfach, 1 Mailadresse zeigt darauf domain4, 3 Postfächer, ca. 40 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain5-10 nur Weiterleitungen auf Postfach von domain1 Die Mailclients sind i.d.R. Windows-Clients (bis auf 2 Ausnahmen), Thunderbird, MS Outlook u.ä. Vorerst wird der Server nur unter einer IP-Adresse erreichbar sein.
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. Das habe ich nur zu Debugging-Zwecken eingeschaltet, um zu sehen, wo Fehler auftreten
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). Habe nun die /etc/postfix/relay_recipients.cf angelegt und auch die Tabelle in der Datenbank mit 2 Testusern (test1, test2) angelegt. Das scheint zu klappen:
# postmap -q test1 mysql:/etc/postfix/relay_recipients.cf test1 # postmap -q test3 mysql:/etc/postfix/relay_recipients.cf #
Ich benenne den Thread mal um, mit saslauthd Logging hat das wirklich nichts mehr zu tun.
Prima, danke. 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
Treebeard wrote:
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:
Demnach sieht es so aus, als ob die mysql-Unterstützung nicht dabei ist.
Dann bleibt es bei saslauthd als auth_mech und dem MySQL-Modul für PAM.
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. Ein postconf -m besagt mir aber, dass mysql als Datenbank unterstützt wird:
postconf -m btree cidr environ hash ldap mysql nis pcre proxy regexp sdbm static tcp unix
Ah, interessant. Andreas hatte sich dazu ja auch schon geäußert. Inzwischen scheint die Unterstützung per Modul nachladbar eingebunden zu werden. Eigentlich eine gute Sache, die das Kompilieren auf dem Produktivsystem überflüssig macht.
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. Habe eben mal nachgesehen: ja, dies ist eine Einstellungssasche in der conf.php von web-cyradm
Gut, diese Bestätigung zu haben.
Ich würde ganz gerne allerdings die Passwörter in der Datenbank verschlüsselt stehen lassen. Die SQL-Abfragen sollte man entsprechend umschreiben können.
Dann würde ich doch lieber über saslauthd und PAM gehen. Dann kannst du die Passwörter auch verschlüsselt lassen.
Mein Ziel ist es etwa 10 Domains auf den Server zu transferieren. domain1 sollte 1 Postfach haben, etwa 10 Mailadressen sollen auf dieses Postfach zeigen, 3 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain2 sollte 1 Postfach haben, 2 Mailadressen als Verweis darauf domain3, 1 Postfach, 1 Mailadresse zeigt darauf domain4, 3 Postfächer, ca. 40 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain5-10 nur Weiterleitungen auf Postfach von domain1
Insgesamt hast du also für alle Domains eigentlich nur eine gemeinsame User-Basis, wobei nicht alle User in jeder Domain vorkommen. Die Weiterleitungen an externe Adressen rechne ich hier nicht, diese können mit virtual_alias_maps schnell eingerichtet werden. Am besten würdest du dann wohl mit einer Hauptdomain in $mydestination und vielen virtual_alias_domains einrichten. Oder sollen die Domains 2-4 eigenständige Domains sein mit unabhängigen Accounts?
Die Mailclients sind i.d.R. Windows-Clients (bis auf 2 Ausnahmen), Thunderbird, MS Outlook u.ä.
Kein Problem.
Vorerst wird der Server nur unter einer IP-Adresse erreichbar sein.
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. Das habe ich nur zu Debugging-Zwecken eingeschaltet, um zu sehen, wo Fehler auftreten
Grins, der Fehler steht auch so im Log. (^-^) [Test mit postmap]
/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). Habe nun die /etc/postfix/relay_recipients.cf angelegt und auch die Tabelle in der Datenbank mit 2 Testusern (test1, test2) angelegt. Das scheint zu klappen:
# postmap -q test1 mysql:/etc/postfix/relay_recipients.cf test1 # postmap -q test3 mysql:/etc/postfix/relay_recipients.cf
Sehr schön. Beachte bitte, dass in relay_recipient_maps vollständige Adressen stehen sollten und nur für lokale Domains in $mydestination reine Usernamen verwendet werden sollten. Teste es mal mit folgenden Einstellungen für den Anfang: /etc/postfix/main.cf: alias_maps = hash:/etc/aliases # Vielleicht kannst du auch passwd und $alias_maps rauslassen. # Meistens sind die Adressen nur als Absender interessant für # lokale Dienste wie Backup, Cron, Spamassassin etc. local_recipient_maps = $alias_maps, proxy:unix:passwd.byname, mysql:/etc/postfix/local_recipients.cf # Mails für domain1.example.com gehen an Cyrus: mailbox_transport = cyrus mydestination = $mydomain, localhost mydomain = domain1.example.com #FQDN! myhostname = mail.example.com # FQDN externer Servername virtual_alias_maps = hash:/etc/postfix/virtual mysql:/etc/postfix/virtual_rewrite.cf virtual_alias_domains = mysql:/etc/postfix/virt_domains.cf smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_option = noanonymous /usr/lib/sasl2/smtpd.conf: pwcheck_method: saslauthd mech_list: plain, login /etc/postfix/local_recipients.cf: Gültige Empfänger für Domain1 müssen hier stehen (nur username) /etc/postfix/virt_domains.cf: Hier sind die zusätzlichen Domains enthalten /etc/postfix/virtual_rewrite.cf: Hier stehen die gültigen Empfänger für die virt_domains und die Umleitungen an externe Adressen. Es dürfen nur vollständige Adressen hier verwendet werden! Die MySQL-Abfragen musst du natürlich nach dem Muster von relay_recipient_maps, wie ich es gezeigt hatte, anlegen und auf die richtigen Tabellen zeigen lassen. Dies sind nur die wichtigsten Einstellungen, es werden bestimmt noch einige dazukommen oder wegfallen. Du kannst die Mysql-Abfragen erst mit postmap testen und dann in die Postfix-Konfiguration einbauen. Bitte beachte aber auch, dass MySQL unbedingt zuverlässig laufen muss, sonst bricht Postfix mit einem Fatal Error ab. Bei so wenig Adressen würde ich, ehrlich gesagt, auf MySQL verzichten und dies mit normalen Hash-Dateien machen. Je nachdem, welchen Anspruch an Zuverlässigkeit du an das System hast, solltest du es entsprechend überwachen. 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
Dann würde ich doch lieber über saslauthd und PAM gehen. Dann kannst du die Passwörter auch verschlüsselt lassen.
Mein Ziel ist es etwa 10 Domains auf den Server zu transferieren. domain1 sollte 1 Postfach haben, etwa 10 Mailadressen sollen auf dieses Postfach zeigen, 3 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain2 sollte 1 Postfach haben, 2 Mailadressen als Verweis darauf domain3, 1 Postfach, 1 Mailadresse zeigt darauf domain4, 3 Postfächer, ca. 40 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain5-10 nur Weiterleitungen auf Postfach von domain1
Insgesamt hast du also für alle Domains eigentlich nur eine gemeinsame User-Basis, wobei nicht alle User in jeder Domain vorkommen. Ja, das ist richtig. Die user sollten sich allerdings nicht lokal einloggen können, da dies wie gesagt aus der Ferne mit irgendwelchen Mailclients passieren soll. user1 soll sich bei postfach1 in domain1 einloggen können und die mails senden (postfix) und abholen (cyrus-imapd) können.
Die Weiterleitungen an externe Adressen rechne ich hier nicht, diese können mit virtual_alias_maps schnell eingerichtet werden.
Am besten würdest du dann wohl mit einer Hauptdomain in $mydestination und vielen virtual_alias_domains einrichten. Oder sollen die Domains 2-4 eigenständige Domains sein mit unabhängigen Accounts? ja, user2-4 sollen unabhängige Accounts sein, die sich aber auch nicht am system einloggen sollen. Das bedeutet aber doch auch, dass das Passwort in irgendeiner Weise in einer mysql-Datenbank gespeichert werden sollte.
Teste es mal mit folgenden Einstellungen für den Anfang:
/etc/postfix/main.cf: alias_maps = hash:/etc/aliases
# Vielleicht kannst du auch passwd und $alias_maps rauslassen. # Meistens sind die Adressen nur als Absender interessant für # lokale Dienste wie Backup, Cron, Spamassassin etc. local_recipient_maps = $alias_maps, proxy:unix:passwd.byname, mysql:/etc/postfix/local_recipients.cf
# Mails für domain1.example.com gehen an Cyrus: mailbox_transport = cyrus
mydestination = $mydomain, localhost mydomain = domain1.example.com #FQDN! myhostname = mail.example.com # FQDN externer Servername
virtual_alias_maps = hash:/etc/postfix/virtual mysql:/etc/postfix/virtual_rewrite.cf virtual_alias_domains = mysql:/etc/postfix/virt_domains.cf
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_option = noanonymous
/usr/lib/sasl2/smtpd.conf: pwcheck_method: saslauthd mech_list: plain, login
/etc/postfix/local_recipients.cf: Gültige Empfänger für Domain1 müssen hier stehen (nur username)
/etc/postfix/virt_domains.cf: Hier sind die zusätzlichen Domains enthalten
/etc/postfix/virtual_rewrite.cf: Hier stehen die gültigen Empfänger für die virt_domains und die Umleitungen an externe Adressen. Es dürfen nur vollständige Adressen hier verwendet werden!
Die MySQL-Abfragen musst du natürlich nach dem Muster von relay_recipient_maps, wie ich es gezeigt hatte, anlegen und auf die richtigen Tabellen zeigen lassen.
Dies sind nur die wichtigsten Einstellungen, es werden bestimmt noch einige dazukommen oder wegfallen. Du kannst die Mysql-Abfragen erst mit postmap testen und dann in die Postfix-Konfiguration einbauen. Bevor ich jetzt die Tabellen erstelle, habe ich noch zwei Verständnisfragen: Zum einen sieht die Struktur dieser Tabellen anders aus, als die Datenbankstruktur, die von web-cyradm mitgeliefert wird. Das würde bedeuten, webcyradm kommt als Administrationstool nicht in Frage, oder? Wie oben schon angedeutet verstehe ich nicht, wo denn jetzt die Passwörter gespeichert werden?
Bitte beachte aber auch, dass MySQL unbedingt zuverlässig laufen muss, sonst bricht Postfix mit einem Fatal Error ab. Bei so wenig Adressen würde ich, ehrlich gesagt, auf MySQL verzichten und dies mit normalen Hash-Dateien machen. Wenn ich auf webcyradm verzichte, sieht das für mich auch am einfachsten aus.
Je nachdem, welchen Anspruch an Zuverlässigkeit du an das System hast, solltest du es entsprechend überwachen. Gut, das ist der übernächste Schritt. Wäre schon glücklich, wenn Heiligabend der Mailserver erst mal läuft ;-)))
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
Treebeard wrote:
Dann würde ich doch lieber über saslauthd und PAM gehen. Dann kannst du die Passwörter auch verschlüsselt lassen.
Mein Ziel ist es etwa 10 Domains auf den Server zu transferieren. domain1 sollte 1 Postfach haben, etwa 10 Mailadressen sollen auf dieses Postfach zeigen, 3 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain2 sollte 1 Postfach haben, 2 Mailadressen als Verweis darauf domain3, 1 Postfach, 1 Mailadresse zeigt darauf domain4, 3 Postfächer, ca. 40 Weiterleitungen der Mailadressen an externe Mailadressen (z.B. bei T-Online, Gmx, etc.) domain5-10 nur Weiterleitungen auf Postfach von domain1
Insgesamt hast du also für alle Domains eigentlich nur eine gemeinsame User-Basis, wobei nicht alle User in jeder Domain vorkommen.
Ja, das ist richtig. Die user sollten sich allerdings nicht lokal einloggen können, da dies wie gesagt aus der Ferne mit irgendwelchen Mailclients passieren soll. user1 soll sich bei postfach1 in domain1 einloggen können und die mails senden (postfix) und abholen (cyrus-imapd) können.
Das kann auch bei Usern, die in passwd angelegt sind, konfiguriert werden. Sie haben halt keine Login-Shell und kein Home-Verzeichnis. Wenn du planst, eventuell weitere Dienste wie FTP für User zur Verfügung zu stellen, dann ist passwd für eine kleine Benutzergruppe durchaus verwendbar. MySQL würde ich nehmen, wenn ich häufiger umkonfiguriere oder weitere Bedingungen auswerten will (Quota, bezahlt etc.)
Die Weiterleitungen an externe Adressen rechne ich hier nicht, diese können mit virtual_alias_maps schnell eingerichtet werden.
Am besten würdest du dann wohl mit einer Hauptdomain in $mydestination und vielen virtual_alias_domains einrichten. Oder sollen die Domains 2-4 eigenständige Domains sein mit unabhängigen Accounts?
ja, user2-4 sollen unabhängige Accounts sein, die sich aber auch nicht am system einloggen sollen. Das bedeutet aber doch auch, dass das Passwort in irgendeiner Weise in einer mysql-Datenbank gespeichert werden sollte.
Unabhängig im Sinne von user1@domain2.com != user1@domain3.com? Oder nur, dass user1 != user2 ist?
Dies sind nur die wichtigsten Einstellungen, es werden bestimmt noch einige dazukommen oder wegfallen. Du kannst die Mysql-Abfragen erst mit postmap testen und dann in die Postfix-Konfiguration einbauen.
Bevor ich jetzt die Tabellen erstelle, habe ich noch zwei Verständnisfragen: Zum einen sieht die Struktur dieser Tabellen anders aus, als die Datenbankstruktur, die von web-cyradm mitgeliefert wird. Das würde bedeuten, webcyradm kommt als Administrationstool nicht in Frage, oder? Wie oben schon angedeutet verstehe ich nicht, wo denn jetzt die Passwörter gespeichert werden?
Wie authentifiziert wird, steht in /usr/lib64/sasl2/smtpd.conf, und da habe ich saslauthd angegeben, der wiederum über PAM geht. Dort kannst du entweder über passwd gehen oder eben über Mysql. Du kannst durchaus die Tabellen im WebCyrAdm verwenden, nur musst du eben die Abfragen entsprechend anpassen. Wichtig ist vor allem, dass die Domainklasse und die dazugehörige Abfrage der gültigen user funktioniert. Wenn das nicht klappt mit WebCyrAdm, dann kannst du das vergessen. Funktioniert das Anlegen und Verwalten der User/passwörter für Cyrus in WebCyrAdm? Konntest du dich mit einem Imap-Mailclient einloggen mit den Usern, die dort angelegt hast?
Bitte beachte aber auch, dass MySQL unbedingt zuverlässig laufen muss, sonst bricht Postfix mit einem Fatal Error ab. Bei so wenig Adressen würde ich, ehrlich gesagt, auf MySQL verzichten und dies mit normalen Hash-Dateien machen.
Wenn ich auf webcyradm verzichte, sieht das für mich auch am einfachsten aus.
Wenn du WebCyrAdm nicht unbedingt brauchst und kein Problem damit hast, auf der Kommandozeile die Einstellungen vorzunehmen, dann kannst du dein System Stück für Stück zusammensetzen ohne großen Aufwand.
Je nachdem, welchen Anspruch an Zuverlässigkeit du an das System hast, solltest du es entsprechend überwachen.
Gut, das ist der übernächste Schritt. Wäre schon glücklich, wenn Heiligabend der Mailserver erst mal läuft ;-)))
Davon gehe ich aber fest aus, dass der Server bis dahin komplett läuft. (^-^) 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
Wenn du planst, eventuell weitere Dienste wie FTP für User zur Verfügung zu stellen, dann ist passwd für eine kleine Benutzergruppe durchaus verwendbar. MySQL würde ich nehmen, wenn ich häufiger umkonfiguriere oder weitere Bedingungen auswerten will (Quota, bezahlt etc.) ftp-Zugriff sollte niemand ausser einem ftp-Benutzer haben. Evtl. zusätzliche FTP-Benutzer sollten komplett unabhängig von den Mailzugängen laufen. ftp-Benutzer würde ich dann über die passwd an (useradd).
ja, user2-4 sollen unabhängige Accounts sein, die sich aber auch nicht am system einloggen sollen. Das bedeutet aber doch auch, dass das Passwort in irgendeiner Weise in einer mysql-Datenbank gespeichert werden sollte.
Unabhängig im Sinne von user1@domain2.com != user1@domain3.com? Oder nur, dass user1 != user2 ist? user1@domain1.com != user1@domain2.com ist richtig. Die user auf domain1 sollen grundlegend unabhängig von den usern auf domain2 konfigurierbar sein. Die "realen Menschen" hinter den Benutzeraccounts kennen sich auch nicht (könnten aber evtl gleiche benutzernamen haben) - auch wenn es (noch) nicht so viele sind.
Wie authentifiziert wird, steht in /usr/lib64/sasl2/smtpd.conf, und da habe ich saslauthd angegeben, der wiederum über PAM geht. Dort kannst du entweder über passwd gehen oder eben über Mysql.
Du kannst durchaus die Tabellen im WebCyrAdm verwenden, nur musst du eben die Abfragen entsprechend anpassen. Wichtig ist vor allem, dass die Domainklasse und die dazugehörige Abfrage der gültigen user funktioniert.
Wenn das nicht klappt mit WebCyrAdm, dann kannst du das vergessen.
Funktioniert das Anlegen und Verwalten der User/passwörter für Cyrus in WebCyrAdm? Ich würde sagen ja. Die Weboberfläche läuft und die Verbindung mit der Datenbank klappt auch. Auch das Anlegen der Benutzer klappt, den test mit testsaslauthd hatten wir ja schon (die getesteten Accounts waren alles Benutzer, die mit web-cyradm angelegt wurden). Konntest du dich mit einem Imap-Mailclient einloggen mit den Usern, die dort angelegt hast? Da bin ich mir jetzt gar nicht mehr so sicher. Aber ich denke, ich konnte schonmal die Imap-Ordner eines Users synchronisieren (war natürlich noch keine Mail drin). Es klappt jetzt aber nicht mehr...Diese Fehlermeldung wird z.B. bei OutlookExpreß ausgegeben: Das "Posteingang"-Verzeichnis wurde nicht auf ungelesene Nachrichten überprüft. Der Vorgang wurde abgebrochen. Konto: 'mail.meinserver.de', Server: 'mail.meinserver.de', Protokoll: IMAP, Serverantwort: 'Login failed: generic failure', Port: 143, Secure (SSL): Nein, Fehlernummer: 0x800C006F
In Thunderbird kommt eine ähnliche Meldung In /var/log/auth.log steht dann ein Eintrag wie Dec 11 23:15:25 meinserver saslauthd[17863]: do_auth : auth failure: [user=wdr0001] [service=imap] [realm=] [mech=pam] [reason=PAM acct error] (Klasse, dass das Logging in auth.log jetzt klappt)
Wenn du WebCyrAdm nicht unbedingt brauchst und kein Problem damit hast, auf der Kommandozeile die Einstellungen vorzunehmen, dann kannst du dein System Stück für Stück zusammensetzen ohne großen Aufwand.
Okay, ich werde es nochmal angehen - ohne web-cyradm und ohne mysql. Das ist hoffentlich nicht so schwer und komplex. Wenn ich dann immer noch nicht genug habe, kann ich ja später noch einen draufsetzen ;-)
Davon gehe ich aber fest aus, dass der Server bis dahin komplett läuft. (^-^)
Ja, man sollte immer positiv denken. Dein Optimismus gibt mir wieder Auftrieb ;-) 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
Am Monday 11 December 2006 23:31 schrieb Treebeard:
Da bin ich mir jetzt gar nicht mehr so sicher. Aber ich denke, ich konnte schonmal die Imap-Ordner eines Users synchronisieren (war natürlich noch keine Mail drin). Es klappt jetzt aber nicht mehr...Diese Fehlermeldung wird z.B. bei OutlookExpreß ausgegeben: Das "Posteingang"-Verzeichnis wurde nicht auf ungelesene Nachrichten überprüft. Der Vorgang wurde abgebrochen. Konto: 'mail.meinserver.de', Server: 'mail.meinserver.de', Protokoll: IMAP, Serverantwort: 'Login failed: generic failure', Port: 143, Secure (SSL): Nein, Fehlernummer: 0x800C006F
In Thunderbird kommt eine ähnliche Meldung
In /var/log/auth.log steht dann ein Eintrag wie Dec 11 23:15:25 meinserver saslauthd[17863]: do_auth : auth failure: [user=wdr0001] [service=imap] [realm=] [mech=pam] [reason=PAM acct error]
saslauthd benötigt von PAM zwei Stacks "auth" und "acct". Der erste "auth" bedeutet z.B. Password überprüfung, der nächste "acct" irgendwelche Überprüfungen z.B. ob der bestimmte User sich gerade anmelden darf. "PAM acct error" bedeutet es gibt einen Fehler im acct-Stack, prüf das. Evtl. ist er gar nicht da. Dann leg ihn an. -- Andreas -- 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
Treebeard wrote:
Wenn du planst, eventuell weitere Dienste wie FTP für User zur Verfügung zu stellen, dann ist passwd für eine kleine Benutzergruppe durchaus verwendbar. MySQL würde ich nehmen, wenn ich häufiger umkonfiguriere oder weitere Bedingungen auswerten will (Quota, bezahlt etc.) ftp-Zugriff sollte niemand ausser einem ftp-Benutzer haben. Evtl. zusätzliche FTP-Benutzer sollten komplett unabhängig von den Mailzugängen laufen. ftp-Benutzer würde ich dann über die passwd an (useradd).
Je mehr Dienste man verwaltet, desto froher sind die Anwender, wenn für alle Dienste das gleiche Benutzer/Passwort-Paar gilt, damit sie nicht sich am HTTP-Proxy mit einem Passwort, am Mailserver mit dem zweiten und am FTP-Server mit dem dritten Passwort anmelden müssen. Wenn das bei dir nicht so wüst ist, dann kannst du das natürlich mit einer anderen Datenbank machen.
ja, user2-4 sollen unabhängige Accounts sein, die sich aber auch nicht am system einloggen sollen. Das bedeutet aber doch auch, dass das Passwort in irgendeiner Weise in einer mysql-Datenbank gespeichert werden sollte.
Unabhängig im Sinne von user1@domain2.com != user1@domain3.com? Oder nur, dass user1 != user2 ist? user1@domain1.com != user1@domain2.com ist richtig. Die user auf domain1 sollen grundlegend unabhängig von den usern auf domain2 konfigurierbar sein. Die "realen Menschen" hinter den Benutzeraccounts kennen sich auch nicht (könnten aber evtl gleiche benutzernamen haben) - auch wenn es (noch) nicht so viele sind.
Okay, das wird dann wohl doch in einer Datenbank enden. Dann wirst du wohl die Domains 1-4 als virtual_mailbox_domains anlegen und die übrigen ohne Accounts (nur Umleitungen auf bestehende Accounts und Forwardings) als virtual_alias_domains. Ob eine Datenbank eingesetzt wird, hängt u.a. davon ab, ob du etwas hakelige Usernamen verwenden willst oder die Emailadressen als Usernamen verwendest. Ich tendiere da zu den Emailadressen als Usernamen. Beispiel hakelige Namen: user1@domain1.com domain1_com_user1 Diese Usernamen kann man auch über passwd oder sasldb problemlos verwenden. Wenn Emailadressen als Usernamen eingesetzt werden sollen, dann bekommst du Probleme mit passwd und sasldb.
Funktioniert das Anlegen und Verwalten der User/passwörter für Cyrus in WebCyrAdm? Ich würde sagen ja. Die Weboberfläche läuft und die Verbindung mit der Datenbank klappt auch. Auch das Anlegen der Benutzer klappt, den test mit testsaslauthd hatten wir ja schon (die getesteten Accounts waren alles Benutzer, die mit web-cyradm angelegt wurden).
Das ist viel Wert. Damit ist das Anlegen der User für Cyrus und Postfix schon möglich und die Erzeugung der Mailboxen direkt einbegriffen. Kannst du verschiedene Domains angeben?
Konntest du dich mit einem Imap-Mailclient einloggen mit den Usern, die dort angelegt hast?
Da bin ich mir jetzt gar nicht mehr so sicher. Aber ich denke, ich konnte schonmal die Imap-Ordner eines Users synchronisieren (war natürlich noch keine Mail drin). Es klappt jetzt aber nicht mehr...Diese Fehlermeldung wird z.B. bei OutlookExpreß ausgegeben: Das "Posteingang"-Verzeichnis wurde nicht auf ungelesene Nachrichten überprüft. Der Vorgang wurde abgebrochen. Konto: 'mail.meinserver.de', Server: 'mail.meinserver.de', Protokoll: IMAP, Serverantwort: 'Login failed: generic failure', Port: 143, Secure (SSL): Nein, Fehlernummer: 0x800C006F
Dieser generic failure kommt dann gerne, wenn saslauthd nicht richtig eingerichtet ist.
In Thunderbird kommt eine ähnliche Meldung
In /var/log/auth.log steht dann ein Eintrag wie Dec 11 23:15:25 meinserver saslauthd[17863]: do_auth : auth failure: [user=wdr0001] [service=imap] [realm=] [mech=pam] [reason=PAM acct error]
Okay, ich sehe hier, dass der realm nicht angegeben ist. Sind die User als user@domain.tld angelegt oder nur als nackte Usernamen?
(Klasse, dass das Logging in auth.log jetzt klappt)
Wenn du WebCyrAdm nicht unbedingt brauchst und kein Problem damit hast, auf der Kommandozeile die Einstellungen vorzunehmen, dann kannst du dein System Stück für Stück zusammensetzen ohne großen Aufwand.
Okay, ich werde es nochmal angehen - ohne web-cyradm und ohne mysql. Das ist hoffentlich nicht so schwer und komplex. Wenn ich dann immer noch nicht genug habe, kann ich ja später noch einen draufsetzen ;-)
Hm, ich habe hier eine Testinstallation von Suse 10.2 in einer VMWare, da werde ich mal Cyrus für mehrere Domains und WebCyrAdm installieren. Die Einrichtung von Postfix und Cyrus sollte keine großen Probleme bereiten, höchstens die Konfiguration des PAM-Moduls. Ich sehe mir morgen die Doku dazu an.
Davon gehe ich aber fest aus, dass der Server bis dahin komplett läuft. (^-^)
Ja, man sollte immer positiv denken. Dein Optimismus gibt mir wieder Auftrieb ;-)
Wenn zu schon geklärt hast, was exakt du einrichten willst, dann ist ein guter Teil der Arbeit schon geschafft. 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
Je mehr Dienste man verwaltet, desto froher sind die Anwender, wenn für alle Dienste das gleiche Benutzer/Passwort-Paar gilt, damit sie nicht sich am HTTP-Proxy mit einem Passwort, am Mailserver mit dem zweiten und am FTP-Server mit dem dritten Passwort anmelden müssen.
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.
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.
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.
Wenn zu schon geklärt hast, was exakt du einrichten willst, dann ist ein guter Teil der Arbeit schon geschafft.
Ich bin jetzt irgendwie ganz aus dem Tritt geraten. Sehe vor lauter Bäumen den Wald nicht mehr... Daher möchte ich das ganze nochmal Schritt-für-Schritt aufsetzen und auch die Zwischenschritte testen. Das war auch eines meiner Hauptprobleme bei den Howtos, da wird etwas von vorne bis hinten durchkonfiguriert und an einer einzelnen Einstellung scheitert das ganze System. Hier mein "Schlachtplan": Vorarbeiten: Hostnamen und Rechnernamen prüfen Prüfen, ob alle benötigten Pakete installiert sind Grundkonfiguration prüfen Logging für alles ein-/hochstellen (imap, auth, mail) Zwischenschritte: Konfigurationen (nach jedem Schritt) sichern Dienste nach jeder Änderung neu starten 1) Postfix für eine Domain domain1.de aufsetzen Zwei Benutzer sind in passwd angelegt (test1, test2) Mail lokal verschicken 2) Postfix mail nach Cyrus weiterleiten Mit cyradm 2 Mailboxen einrichten test1 schickt mail zu test2 (lokal) test1 schickt mail zu test2@domain1.de 3) Mail von Mailclient bei Cyrus abholen (entfernter Rechner) Bin mir nicht sicher, ob hier schon ein Passwort benötigt wird. Benutzerkonto test2 wird auf Client, z.B. Thunderbird, eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat 4) Authentifizierung einrichten sasl-Passwörter werden in Datenbank gespeichert (z.B. sasldb) Der Mechanismus ist vorerst "plain" User werden in sasldb angelegt Test mit sasldblistusers2 und testsaslauthd 5) Authentifizierung im Mailclient einrichten test1 schickt mail an test2 (lokal) Benutzerkonto test2 wird auf Client für Auth-Mechanismus eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat 6) Postfix wird jetzt für das Relaying vorbereitet und die Authentifizierung implementiert Um Mail von entfernten Rechnern an Postfix zu verschicken wird das Relaying eingerichtet, um aber kein offenes Relay zu erhalten wird eine Authentifizierung gegen sasl implementiert. setzen der Werte smtpd_sasl_auth_enable = yes, ... etc. 7) Im Mailclient muss jetzt auch zum verschicken eine Authentifikation eingerichtet werden Testmail von test2 an test1@domain1.de 8) Eine zweite Domain für Postfix und Cyrus einrichten virtual_mailbox_domains = domain1.de, domain2.de (wird hier domain1 nochmal aufgelistet?) virtual_mailbox_maps = hash:/etc/postfix/virtual <= hier kommen die Mailadressen hinein, an die geliefert werden soll virtual_transport = lmtp:unix:/var/imap/socket/lmtp Hier fehlt mir noch etwas der Überblick, ob das so richtig ist und ob die Konten entsprechend so einrichtbar sind. Danach Test 9) Das ganze sicherer machen smtpd_recipient_restrictions etc. Wieder ein Test 10) TLS unter Postfix einrichten Generieren von Zertifikaten Clients dafür einrichten Test 11) Umstieg auf mysql-Tabellen/ web-cyradm ??? Ist wohl nach der letzten Diskussionsrunde für meine Bedürfnisse nicht nötig, wäre aber natürlich die Kür für die Einrichtung ;-) Ich wäre froh, wenn Du die Liste korrigierst, vielleicht wird mir dann auch etwas klarer vor Augen. 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
Treebeard wrote:
Je mehr Dienste man verwaltet, desto froher sind die Anwender, wenn für alle Dienste das gleiche Benutzer/Passwort-Paar gilt, damit sie nicht sich am HTTP-Proxy mit einem Passwort, am Mailserver mit dem zweiten und am FTP-Server mit dem dritten Passwort anmelden müssen.
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.
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?
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?
Wenn zu schon geklärt hast, was exakt du einrichten willst, dann ist ein guter Teil der Arbeit schon geschafft.
Ich bin jetzt irgendwie ganz aus dem Tritt geraten. Sehe vor lauter Bäumen den Wald nicht mehr... Daher möchte ich das ganze nochmal Schritt-für-Schritt aufsetzen und auch die Zwischenschritte testen.
Ein sehr guter Vorschlag.
Das war auch eines meiner Hauptprobleme bei den Howtos, da wird etwas von vorne bis hinten durchkonfiguriert und an einer einzelnen Einstellung scheitert das ganze System.
Hier mein "Schlachtplan":
Vorarbeiten: Hostnamen und Rechnernamen prüfen Prüfen, ob alle benötigten Pakete installiert sind Grundkonfiguration prüfen Logging für alles ein-/hochstellen (imap, auth, mail)
Okay.
Zwischenschritte: Konfigurationen (nach jedem Schritt) sichern Dienste nach jeder Änderung neu starten
Dokumentiere deine Schritte! Dies ist ganz wichtig, wenn du Jahre später plötzlich das System neu aufbauen musst, weil das Dateisystem von einem kaputten Treiber geschreddert wurde.
1) Postfix für eine Domain domain1.de aufsetzen Zwei Benutzer sind in passwd angelegt (test1, test2) Mail lokal verschicken
Für Postfix brauchst du erst einmal keine user anlegen.
2) Postfix mail nach Cyrus weiterleiten Mit cyradm 2 Mailboxen einrichten test1 schickt mail zu test2 (lokal) test1 schickt mail zu test2@domain1.de
Fange mit Cyrus an: Ich würde dafür direkt die Unterstützung für virtuelle Domains aktivieren, denn die brauchst du später ohnehin. - Melde dich als User cyrus an und teste, ob du dich mit "cyradm localhost" anmelden kannst. - Wenn ja, dann teste, ob Webcyradm einen User anlegen kann (in cyradm nachsehen, ob die Mailbox angelegt wurde) - Schau nach, ob die User tatsächlich als domain/user angelegt wurden.
3) Mail von Mailclient bei Cyrus abholen (entfernter Rechner) Bin mir nicht sicher, ob hier schon ein Passwort benötigt wird. Benutzerkonto test2 wird auf Client, z.B. Thunderbird, eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat
4) Authentifizierung einrichten sasl-Passwörter werden in Datenbank gespeichert (z.B. sasldb) Der Mechanismus ist vorerst "plain" User werden in sasldb angelegt Test mit sasldblistusers2 und testsaslauthd
Diese beiden Punkte müssen umgekehrt werden. Du kannst erst dann deine Mails abholen/dich bei Cyrus anmelden, wenn die Authentifikation für den Dienst IMAP eingerichtet ist. Der User cyrus ist systemuser und ein Spezialfall (er hat aber keine Mailbox). Lass uns das wirklich in MySQL machen. Dann stellen wir einmal die notwendige Doku zusammen und geben es als komplette Anleitung für Suse für die FAQ weiter.
5) Authentifizierung im Mailclient einrichten
Erst einmal ohne Auth nur von internem Netzwerk.
test1 schickt mail an test2 (lokal) Benutzerkonto test2 wird auf Client für Auth-Mechanismus eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat
Senden braucht die Authentifikation bei Postfix, Abholen bei Cyrus.
6) Postfix wird jetzt für das Relaying vorbereitet und die Authentifizierung implementiert Um Mail von entfernten Rechnern an Postfix zu verschicken wird das Relaying eingerichtet, um aber kein offenes Relay zu erhalten wird eine Authentifizierung gegen sasl implementiert. setzen der Werte smtpd_sasl_auth_enable = yes, ... etc.
Das muss vor Punkt 5 geschehen.
7) Im Mailclient muss jetzt auch zum verschicken eine Authentifikation eingerichtet werden Testmail von test2 an test1@domain1.de
8) Eine zweite Domain für Postfix und Cyrus einrichten virtual_mailbox_domains = domain1.de, domain2.de (wird hier domain1 nochmal aufgelistet?)
Nimm nur virtuelle Domains und lasse mydestination leer! Mydestination kannst du dann später für Mailinglisten verwenden.
virtual_mailbox_maps = hash:/etc/postfix/virtual <= hier kommen die Mailadressen hinein, an die geliefert werden soll
Nein, /etc/postfix/virtual ist schon als Standard belegt für normale virtuelle Umschreibungen. Nimm besser eine eigene Datei dafür: virtual_mailbox_maps = hash:/etc/postfix/virt_mailboxes
virtual_transport = lmtp:unix:/var/imap/socket/lmtp Hier fehlt mir noch etwas der Überblick, ob das so richtig ist und ob die Konten entsprechend so einrichtbar sind.
Das ist in Ordnung.
Danach Test
9) Das ganze sicherer machen smtpd_recipient_restrictions etc. Wieder ein Test
OK.
10) TLS unter Postfix einrichten Generieren von Zertifikaten Clients dafür einrichten Test
OK, aber auch für Cyrus.
11) Umstieg auf mysql-Tabellen/ web-cyradm ??? Ist wohl nach der letzten Diskussionsrunde für meine Bedürfnisse nicht nötig, wäre aber natürlich die Kür für die Einrichtung ;-)
Lass uns versuchen, WebCyrAdm direkt einzubinden.
Ich wäre froh, wenn Du die Liste korrigierst, vielleicht wird mir dann auch etwas klarer vor Augen.
Jedenfalls werden wird jeden einzelnen Schritt erst testen, bevor wir weitergehen. Wenn du nur ein paar Dutzend user hast, kannst du das später noch per Hand nachpflegen, aber bei hunderten oder gar tausenden von usern ist das eine Qual. Deshalb am besten direkt in MySQL. 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
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.
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.
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.)
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
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 cyrus-sasl-saslauthd
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) perl-Authen-SASL-Cyrus perl-Cyrus-IMAP perl-Cyrus-SIEVE-managesieve postfix postfix-mysql procmail mysql mysql-client mysql-devel mysql-shared pam_mysql
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. 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 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 #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 Hier meine /usr/lib64/sasl2/smtpd.conf: pwcheck_method: saslauthd mech_list: plain login 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 sievedir: /usr/sieve sendmail: /usr/sbin/sendmail sieve_maxscriptsize: 32 sieve_maxscripts: 5 unixhierarchysep: yes Das ist meine aktuelle Einstellung, die Originaleinstellung kann u.U. abweichen. Ich habe auch nicht gesagt, dass diese Einstellung funktioniert. Wenn der Server läuft werde ich alle Einstellungen nochmal aufführen. Ich meine, dass dies hier die Original-Einstellung ist: configdirectory: /var/lib/imap partition-default: /var/spool/imap sievedir: /var/lib/sieve admins: cyrus allowanonymouslogin: no autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd lmtp_overquota_perm_failure: no lmtp_downcase_rcpt: yes # # if you want TLS, you have to generate certificates and keys # #tls_cert_file: /usr/ssl/certs/cert.pem #tls_key_file: /usr/ssl/certs/skey.pem #tls_ca_file: /usr/ssl/CA/CAcert.pem #tls_ca_path: /usr/ssl/CA
Logging für alles ein-/hochstellen (imap, auth, mail) Logging für auth haben wir bereits eingerichtet (saslauthd):
/etc/syslog-ng/syslog-ng.in: destination authlog { file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; log { source(src); filter(f_auth); destination(authlog); }; In /var/log/mail werden standardmässig schon Fehler hineingeschreiben, ich denke imap hat seine eigene Logdatei, diese ist aber bei mir nicht angelegt (?). Ob man das Maillogging noch erhöhen kann/sollte, weiß ich nicht. Ich vermute aber, dass die Einstellungen okay sind. Andreas sagte mal etwas, dass man das Logging in der master.cf hochsetzen kann: Parameter "-v" am smtpd bzw. smtp/lmtp. (ohne) = Error, Warning, Fail -v = Info, Note -vv = Debug, Trace, Pass Ich vermute, er meint damit die Angaben in der master.cf hinter der Zeile, die die entsprechenden transports darstellen. So, hier halte ich jetzt mal an und würde mich freuen, wenn Ihr meine Schritte kommentiert und falsche Aussagen/Begriffe austauscht. Dann hätten wir schon mal einen Anfang für die Doku/Anleitung - und natürlich einen Beginn für einen funktionierenden Mailserver unter suse 10.1 ;-) (Es ist ein Ros entsprungen...) -------- Viele Grüße Ingbert
Okay.
Zwischenschritte: Konfigurationen (nach jedem Schritt) sichern Dienste nach jeder Änderung neu starten
Dokumentiere deine Schritte! Dies ist ganz wichtig, wenn du Jahre später plötzlich das System neu aufbauen musst, weil das Dateisystem von einem kaputten Treiber geschreddert wurde.
1) Postfix für eine Domain domain1.de aufsetzen Zwei Benutzer sind in passwd angelegt (test1, test2) Mail lokal verschicken
Für Postfix brauchst du erst einmal keine user anlegen.
2) Postfix mail nach Cyrus weiterleiten Mit cyradm 2 Mailboxen einrichten test1 schickt mail zu test2 (lokal) test1 schickt mail zu test2@domain1.de
Fange mit Cyrus an:
Ich würde dafür direkt die Unterstützung für virtuelle Domains aktivieren, denn die brauchst du später ohnehin.
- Melde dich als User cyrus an und teste, ob du dich mit "cyradm localhost" anmelden kannst. - Wenn ja, dann teste, ob Webcyradm einen User anlegen kann (in cyradm nachsehen, ob die Mailbox angelegt wurde) - Schau nach, ob die User tatsächlich als domain/user angelegt wurden.
3) Mail von Mailclient bei Cyrus abholen (entfernter Rechner) Bin mir nicht sicher, ob hier schon ein Passwort benötigt wird. Benutzerkonto test2 wird auf Client, z.B. Thunderbird, eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat
4) Authentifizierung einrichten sasl-Passwörter werden in Datenbank gespeichert (z.B. sasldb) Der Mechanismus ist vorerst "plain" User werden in sasldb angelegt Test mit sasldblistusers2 und testsaslauthd
Diese beiden Punkte müssen umgekehrt werden. Du kannst erst dann deine Mails abholen/dich bei Cyrus anmelden, wenn die Authentifikation für den Dienst IMAP eingerichtet ist. Der User cyrus ist systemuser und ein Spezialfall (er hat aber keine Mailbox).
Lass uns das wirklich in MySQL machen. Dann stellen wir einmal die notwendige Doku zusammen und geben es als komplette Anleitung für Suse für die FAQ weiter.
5) Authentifizierung im Mailclient einrichten
Erst einmal ohne Auth nur von internem Netzwerk.
test1 schickt mail an test2 (lokal) Benutzerkonto test2 wird auf Client für Auth-Mechanismus eingerichtet und soll Mail abholen, die zuvor test1 verschickt hat
Senden braucht die Authentifikation bei Postfix, Abholen bei Cyrus.
6) Postfix wird jetzt für das Relaying vorbereitet und die Authentifizierung implementiert Um Mail von entfernten Rechnern an Postfix zu verschicken wird das Relaying eingerichtet, um aber kein offenes Relay zu erhalten wird eine Authentifizierung gegen sasl implementiert. setzen der Werte smtpd_sasl_auth_enable = yes, ... etc.
Das muss vor Punkt 5 geschehen.
7) Im Mailclient muss jetzt auch zum verschicken eine Authentifikation eingerichtet werden Testmail von test2 an test1@domain1.de
8) Eine zweite Domain für Postfix und Cyrus einrichten virtual_mailbox_domains = domain1.de, domain2.de (wird hier domain1 nochmal aufgelistet?)
Nimm nur virtuelle Domains und lasse mydestination leer! Mydestination kannst du dann später für Mailinglisten verwenden.
virtual_mailbox_maps = hash:/etc/postfix/virtual <= hier kommen die Mailadressen hinein, an die geliefert werden soll
Nein, /etc/postfix/virtual ist schon als Standard belegt für normale virtuelle Umschreibungen.
Nimm besser eine eigene Datei dafür: virtual_mailbox_maps = hash:/etc/postfix/virt_mailboxes
virtual_transport = lmtp:unix:/var/imap/socket/lmtp Hier fehlt mir noch etwas der Überblick, ob das so richtig ist und ob die Konten entsprechend so einrichtbar sind.
Das ist in Ordnung.
Danach Test
9) Das ganze sicherer machen smtpd_recipient_restrictions etc. Wieder ein Test
OK.
10) TLS unter Postfix einrichten Generieren von Zertifikaten Clients dafür einrichten Test
OK, aber auch für Cyrus.
11) Umstieg auf mysql-Tabellen/ web-cyradm ??? Ist wohl nach der letzten Diskussionsrunde für meine Bedürfnisse nicht nötig, wäre aber natürlich die Kür für die Einrichtung ;-)
Lass uns versuchen, WebCyrAdm direkt einzubinden.
Ich wäre froh, wenn Du die Liste korrigierst, vielleicht wird mir dann auch etwas klarer vor Augen.
Jedenfalls werden wird jeden einzelnen Schritt erst testen, bevor wir weitergehen. Wenn du nur ein paar Dutzend user hast, kannst du das später noch per Hand nachpflegen, aber bei hunderten oder gar tausenden von usern ist das eine Qual. Deshalb am besten direkt in MySQL.
Sandy
-- 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
Am Thursday 14 December 2006 10:36 schrieb Treebeard:
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
$ hostname -f oder $ hostname --fqdn
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.
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.
Ja, das sind aufgrund der Pfade o.ä. natürlich auch suse-spezifische Angaben, die werden nicht mit nem Vanilla-Postfix korrekt gesetzt.
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
Stimmt das? Ist das eine Domain?
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
Was ich so spontan vermisse ist der Weg zu Cyrus-Imapd. Postfix muss ja wissen, wie es mails dorthin zu transportieren hat. Weiterhin die Cyrus-SASL Konfiguration. Ausserdem eine Konfiguration des Relaying. Per default dürfen alle Clients aus den Netzen des Servers relayen. Ausserdem solltest Du sicherstellen, dass Yast/SuSEconfig deine Konfiguration in Ruhe lässt.
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 #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
Hier meine /usr/lib64/sasl2/smtpd.conf: pwcheck_method: saslauthd mech_list: plain login
Bei 32-Bit SUSE liegt die Datei wohl in /usr/lib/sasl2/smtpd.conf.
Ja, nur ist Cyrus-SASL bei Dir nicht eingeschaltet.
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
Solltest Du um "login" erweitern, wie in der smtpd.conf.
servername: domain1.de
Server oder Domain-Name?
autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd auxprop
Wieso auxprop?
sasl_auxprop_plugin: sasldb sievedir: /usr/sieve sendmail: /usr/sbin/sendmail sieve_maxscriptsize: 32 sieve_maxscripts: 5 unixhierarchysep: yes
Das ist meine aktuelle Einstellung, die Originaleinstellung kann u.U. abweichen. Ich habe auch nicht gesagt, dass diese Einstellung funktioniert. Wenn der Server läuft werde ich alle Einstellungen nochmal aufführen.
Ich meine, dass dies hier die Original-Einstellung ist:
configdirectory: /var/lib/imap partition-default: /var/spool/imap sievedir: /var/lib/sieve admins: cyrus allowanonymouslogin: no autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd lmtp_overquota_perm_failure: no
lmtp_downcase_rcpt: yes
Das könntest Du vermissen.
# # if you want TLS, you have to generate certificates and keys # #tls_cert_file: /usr/ssl/certs/cert.pem #tls_key_file: /usr/ssl/certs/skey.pem #tls_ca_file: /usr/ssl/CA/CAcert.pem #tls_ca_path: /usr/ssl/CA
Logging für alles ein-/hochstellen (imap, auth, mail)
Logging für auth haben wir bereits eingerichtet (saslauthd):
/etc/syslog-ng/syslog-ng.in:
destination authlog { file("/var/log/auth.log"); }; filter f_auth { facility(auth); }; log { source(src); filter(f_auth); destination(authlog); };
In /var/log/mail werden standardmässig schon Fehler hineingeschreiben, ich denke imap hat seine eigene Logdatei, diese ist aber bei mir nicht angelegt (?).
Per Default logt Cyrus-Imapd mit der facility local6, bei Suse mit daemon. Kontrollier am besten wo das hingeht.
Ob man das Maillogging noch erhöhen kann/sollte, weiß ich nicht. Ich vermute aber, dass die Einstellungen okay sind. Andreas sagte mal etwas, dass man das Logging in der master.cf hochsetzen kann:
Parameter "-v" am smtpd bzw. smtp/lmtp. (ohne) = Error, Warning, Fail -v = Info, Note -vv = Debug, Trace, Pass
Ich vermute, er meint damit die Angaben in der master.cf hinter der Zeile, die die entsprechenden transports darstellen.
Ja, alle Loglevel werden aber erst ab Postfix 2.3 weitergegeben.
So, hier halte ich jetzt mal an und würde mich freuen, wenn Ihr meine Schritte kommentiert und falsche Aussagen/Begriffe austauscht. Dann hätten wir schon mal einen Anfang für die Doku/Anleitung - und natürlich einen Beginn für einen funktionierenden Mailserver unter suse 10.1 ;-) (Es ist ein Ros entsprungen...)
-- Andreas -- 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
mydomain = tux.domain1.de
Stimmt das? Ist das eine Domain?
Was ich so spontan vermisse ist der Weg zu Cyrus-Imapd. Postfix muss ja wissen, wie es mails dorthin zu transportieren hat. Ja, das stimmt, das habe ich noch nicht drin. Ich möchte das ja auch Schritt-für-Schritt aufsetzen. Das kommt noch, nur langsam. Ich denke, das ist das Problem, dass viele versuchen alles auf einmal aufzusetzen, zum Schluß wird nichts mehr getestet und BAMMM... beim Ottonormal-Admin klappt gar nix mehr. Dann ist alles kaputtkonfiguriert. Scheinbar ist das ganze so empfindlich, dass ein Wert faslch ist und nichts geht mehr. Und jede Distribution scheint auch andere Parameter zu haben und und und. Wie gesagt, das kommt im nächsten Schritt, aber die Hinweise sind natürlich schon sehr dienlich. Weiterhin die Cyrus-SASL Konfiguration.
Ausserdem eine Konfiguration des Relaying.
Nein, die Domain lautet domain1.de, tux.domain1.de ist mein FQDN (= der Wert von hostname -f) Die Werte sind natürlich Dummy-Werte und werden in meiner Konfiguration durch die echten ersetzt. Soll ja nicht gleich jeder sehen, wo mein Mailserver steht, der noch nicht richtig konfiguriert ist ;-) Ich werde den Wert auf den Domainnamen domain1.de ändern. So wie ich das verstanden habe ist host = Rechnername (bei mir "tux", meines Wissens nach frei wählbar, aber eindeutig im Netzwerksegment) hostname = tux.domain1.de (=FQDN = FQHN) mit host=tux, Domain = domain1.de (tld = de, sld = domain1) Bitte korrigieren, falls ich falsch liege. Deswegen habe ich auch aufgeführt, wie ich das mit yast eingerichtet habe, um diesen Schritt nachzuvollziehen. dto. dto.
Per default dürfen alle Clients aus den Netzen des Servers relayen.
Ja, kommt auch noch eine Änderung.
Ausserdem solltest Du sicherstellen, dass Yast/SuSEconfig deine Konfiguration in Ruhe lässt.
Wie und wo darf ich yast das verbieten? Oder gibt es Wege über yast, die das System besser konfigurieren?
Ja, nur ist Cyrus-SASL bei Dir nicht eingeschaltet.
Woran siehst Du das? Muss da ein Eintrag in die master.cf? Soweit ich weiß macht man das in der /usr/lib64/sasl2/smtpd.conf. (Okay ich gebe zu, die Konfigurationsdateien zu sasl und imapd hätten auch in einen späteren Abschnitt gehört, waren hier also noch zu früh, habe nur mal meine derzeitige Grundkonfiguration hier hingeschrieben)
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
Solltest Du um "login" erweitern, wie in der smtpd.conf.
Das macht Sinn, sonst würde sich nur plain nutzen lassen, richtig?
servername: domain1.de
Server oder Domain-Name?
Das ist der Domainname. Demnach ist der Eintrag falsch. Ich werde ihn ändern in den FQDN servername: tux.domain1.de
autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd auxprop
Wieso auxprop?
Hmmm, ist ein Relikt aus alten Konfigurationen. Schadet das oder geht das nicht, dass man dort beide angibt? Wenn es nicht korrekt ist, schmeiß ich das raus. Habe diese Konfiguration hier gesehen: http://wiki.hetzner.de/index.php/DebianMailserver3
lmtp_downcase_rcpt: yes
Das könntest Du vermissen.
Ja, den lmtp_downcase_rcpt-Parameter, werde ich mit aufnehmen. Danke.
Per Default logt Cyrus-Imapd mit der facility local6, bei Suse mit daemon. Kontrollier am besten wo das hingeht.
Steht das wieder in der /etc/syslog-ng/syslog-ng.conf.in ? Habe dort keinen Eintrag gefunden. In der /etc/cyrus.conf steht auch nichts. Wo soll das stehen oder wie kann ich das prüfen?
Ja, alle Loglevel werden aber erst ab Postfix 2.3 weitergegeben.
Bei mir ist die Version 2.2.9 installiert (Suse 10.1, geprüft mit yast > Software installieren...) 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
Am Thursday 14 December 2006 14:29 schrieb Treebeard:
Was ich so spontan vermisse ist der Weg zu Cyrus-Imapd. Postfix muss ja wissen, wie es mails dorthin zu transportieren hat.
Ja, das stimmt, das habe ich noch nicht drin. Ich möchte das ja auch Schritt-für-Schritt aufsetzen. Das kommt noch, nur langsam. Ich denke, das ist das Problem, dass viele versuchen alles auf einmal aufzusetzen, zum Schluß wird nichts mehr getestet und BAMMM... beim Ottonormal-Admin klappt gar nix mehr. Dann ist alles kaputtkonfiguriert. Scheinbar ist das ganze so empfindlich, dass ein Wert faslch ist und nichts geht mehr. Und jede Distribution scheint auch andere Parameter zu haben und und und. Wie gesagt, das kommt im nächsten Schritt, aber die Hinweise sind natürlich schon sehr dienlich.
Dann würde ich eher auf smtp-auth, virenscanner, spamfilter u.ä. im ersten Anlauf verzichten und Cyrus-Imapd einbinden.
Weiterhin die Cyrus-SASL Konfiguration.
dto.
Ausserdem eine Konfiguration des Relaying.
dto.
Per default dürfen alle Clients aus den Netzen des Servers relayen.
Ja, kommt auch noch eine Änderung.
Ausserdem solltest Du sicherstellen, dass Yast/SuSEconfig deine Konfiguration in Ruhe lässt.
Wie und wo darf ich yast das verbieten? Oder gibt es Wege über yast, die das System besser konfigurieren?
/etc/sysconfig/mail /etc/sysconfig/postfix Das abschalten, was Du nicht willst. Ob jetzt Yast oder /etc/postfix/* musst Du selber entscheiden. "Besser" oder "Schlechter" würde ich es nicht nennen. Es ist halt was anderes. Für normale Systeme ist Yast wohl auch einfacher zu bedienen. Wenn es Sonderwünsche sein sollen, dann wird es mit Yast komplizierter wie ohne. Hmm, auch wenn es zur Fehlersuche kommt, stelle ich es mir mit Yast schwieriger bis unmöglich vor.
Ja, nur ist Cyrus-SASL bei Dir nicht eingeschaltet.
Woran siehst Du das? Muss da ein Eintrag in die master.cf?
Das wird normalerweise in der main.cf eingeschaltet.
Soweit ich weiß macht man das in der /usr/lib64/sasl2/smtpd.conf. (Okay ich gebe zu, die Konfigurationsdateien zu sasl und imapd hätten auch in einen späteren Abschnitt gehört, waren hier also noch zu früh, habe nur mal meine derzeitige Grundkonfiguration hier hingeschrieben)
Die smtpd.conf wird erst gelesen, wenn sasl-auth in Postfix eingeschaltet ist.
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
Solltest Du um "login" erweitern, wie in der smtpd.conf.
Das macht Sinn, sonst würde sich nur plain nutzen lassen, richtig?
servername: domain1.de
Server oder Domain-Name?
Das ist der Domainname. Demnach ist der Eintrag falsch. Ich werde ihn ändern in den FQDN servername: tux.domain1.de
autocreatequota: 10000 reject8bit: no quotawarn: 90 timeout: 30 poptimeout: 10 dracinterval: 0 drachost: localhost sasl_pwcheck_method: saslauthd auxprop
Wieso auxprop?
Hmmm, ist ein Relikt aus alten Konfigurationen. Schadet das oder geht das nicht, dass man dort beide angibt?
Wenn es dort nicht absichtlich drinsteht würde ich es rausnehmen. Sowas kompliziert nur die Fehlersuche.
Wenn es nicht korrekt ist, schmeiß ich das raus. Habe diese Konfiguration hier gesehen: http://wiki.hetzner.de/index.php/DebianMailserver3
Hmm, also ich wäre sehr vorsichtig mit Debian-Anleitungen auf Nicht-Debian Systemen. Debian patcht sehr viel an den Paketen rum, da ist es eher Zufall, wenn Du mal was 1:1 übernehmen kannst.
Per Default logt Cyrus-Imapd mit der facility local6, bei Suse mit daemon. Kontrollier am besten wo das hingeht.
Steht das wieder in der /etc/syslog-ng/syslog-ng.conf.in ? Habe dort keinen Eintrag gefunden. In der /etc/cyrus.conf steht auch nichts. Wo soll das stehen oder wie kann ich das prüfen?
Du musst prüfen wo Logs mit der Facility Daemon hingehen. Vermutlich nach /var/log/messages.
Ja, alle Loglevel werden aber erst ab Postfix 2.3 weitergegeben.
Bei mir ist die Version 2.2.9 installiert (Suse 10.1, geprüft mit yast > Software installieren...)
Mit Postfix 2.2.9 siehst Du nur Error, Warning, Note und Fail. Alle anderen wie z.B. Debug werden ignoriert. -- Andreas -- 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
Dann würde ich eher auf smtp-auth, virenscanner, spamfilter u.ä. im ersten Anlauf verzichten und Cyrus-Imapd einbinden.
Okay, ist bereits getan, wie eben in der Mail beschrieben.
Wie und wo darf ich yast das verbieten? Oder gibt es Wege über yast, die das System besser konfigurieren?
/etc/sysconfig/mail /etc/sysconfig/postfix
Das abschalten, was Du nicht willst.
Ob jetzt Yast oder /etc/postfix/* musst Du selber entscheiden. "Besser" oder "Schlechter" würde ich es nicht nennen. Es ist halt was anderes. Für normale Systeme ist Yast wohl auch einfacher zu bedienen. Wenn es Sonderwünsche sein sollen, dann wird es mit Yast komplizierter wie ohne.
Hmm, auch wenn es zur Fehlersuche kommt, stelle ich es mir mit Yast schwieriger bis unmöglich vor.
Aus dem Bauch heraus würde ich salopp sagen "Okay, lassen wir das alles yast erledigen". Aber nein, natürlich darf hier yast nicht eingreifen. Das gibt wohl noch mehr Bauchschmerzen. Aber danke für den Tipp. IN /etc/sysconfig/mail habe ich den Wert MAIL_CREATE_CONFIG="no" gesetzt. SMTPD_LISTEN_REMOTE steht auf "no" Wird dieser Wert dann überhaupt noch ausgelesen? /etc/sysconfig/postfix habe ich daraufhin nicht angerührt, da ich die Einstellungen selbst in /etc/postfix/main.cf vornhemen/kontrollieren möchte.
Ja, nur ist Cyrus-SASL bei Dir nicht eingeschaltet.
Woran siehst Du das? Muss da ein Eintrag in die master.cf?
Das wird normalerweise in der main.cf eingeschaltet.
Kommt noch ;-)
Soweit ich weiß macht man das in der /usr/lib64/sasl2/smtpd.conf. (Okay ich gebe zu, die Konfigurationsdateien zu sasl und imapd hätten auch in einen späteren Abschnitt gehört, waren hier also noch zu früh, habe nur mal meine derzeitige Grundkonfiguration hier hingeschrieben)
Die smtpd.conf wird erst gelesen, wenn sasl-auth in Postfix eingeschaltet ist.
OK, kommt noch ;-)
sasl_pwcheck_method: saslauthd auxprop
Wieso auxprop?
Hmmm, ist ein Relikt aus alten Konfigurationen. Schadet das oder geht das nicht, dass man dort beide angibt?
Wenn es dort nicht absichtlich drinsteht würde ich es rausnehmen. Sowas kompliziert nur die Fehlersuche.
Okay, in imapd.conf steht jetzt der Eintrag sasl_pwcheck_method: saslauthd
Wenn es nicht korrekt ist, schmeiß ich das raus. Habe diese Konfiguration hier gesehen: http://wiki.hetzner.de/index.php/DebianMailserver3
Hmm, also ich wäre sehr vorsichtig mit Debian-Anleitungen auf Nicht-Debian Systemen. Debian patcht sehr viel an den Paketen rum, da ist es eher Zufall, wenn Du mal was 1:1 übernehmen kannst.
Meine Blauäugigkeit ...SUSE-Doku entsteht im Moment ;-)
Per Default logt Cyrus-Imapd mit der facility local6, bei Suse mit daemon. Kontrollier am besten wo das hingeht.
Steht das wieder in der /etc/syslog-ng/syslog-ng.conf.in ? Habe dort keinen Eintrag gefunden. In der /etc/cyrus.conf steht auch nichts. Wo soll das stehen oder wie kann ich das prüfen?
Du musst prüfen wo Logs mit der Facility Daemon hingehen. Vermutlich nach /var/log/messages.
# # All messages except iptables and the facilities news and mail: # destination messages { file("/var/log/messages"); }; log { source(src); filter(f_messages); destination(messages); }; Eine eigene facility imapd oder cyrus habe ich nicht. Daher wird das wohl in /var/log/messages gelogged. Was ist denn der facility Daemon? Ist das so was wie die Logging-Maschine? Ich dachte das ist syslogd. Oder ist das eine Art Hilfsprogramm, das die Daemonen trennt? 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
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
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
Treebeard wrote:
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.
Das meine ich nicht, sondern die logische Verwaltung der User auf dem System. Du kannst, wie ich bereits geschrieben habe, über eine Nomenklatur mehrere Domains in Cyrus unterbringen. Logisch werden sie aber als eine Domain angesehen, nur die Wahl des Usernamens deutet an, welche Domain ursprünglich dahinterstand: user1@domain1.com -> user.domain1_com_user1 user1@domain2.net -> user.domain2_net_user1 in CyrAdm: cm user.domain1_com_user1 im Verzeichnis: /var/spool/imap/user/d/domain1_com_user1 Damit kann man zwar die gleiche User in mehreren Domains anlegen, aber die Cyrusverwaltung der User sieht sie als eine Domain mit vielen Usern, nicht als mehrere Domains mit internen Usern. Bei virtuellen Domains in Cyrus wird dies auch sauberer angelegt: user1@domain1.com -> user1@domain1.com in CyrAdm: cm user1@domain1.com im Verzeichnis: /var/spool/imap/domain/domain1.com/user1
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.
Das ist das normale Verfahren. Wenn Cyrus läuft, solltest jedenfalls bald ein TLS-Zertifikat erstellen, um die Verbindung verschlüsseln zu können. Dies ist sinnvoll, da mit den Authentifikationsmechanismen PLAIN und LOGIN die Login-Daten im Klartext übertragen werden.
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?
Nein, das sollte wirklich bei der Distro dabei sein.
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.).
Uh... Na gut, machen wir einfach das beste daraus.
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.)
Grmpf, ich meinte ja LOGIN. Nimm das LOGIN solange aus der Liste der Mechanismen heraus, wie du Login nicht installiert hast.
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.
Sehr schön.
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
Macht aber nichts, dann die Zugriffsrechte sind für alle gegeben, da ist der Besitzer egal. Bei mir sind die Rechte nur für user:group gesetzt, deshalb hatte ich Postfix mit in die Gruppe Mail aufgenommen.
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.
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
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
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.
Jein, du hast die Mail nur an den usernamen geschickt. Verwende mal die vollständige Emailadresse info_wdr_de@tux.domain1.de. Postfix verwendet den Wert von $myorigin, um FQDN Adressen zu machen. Setze mal postconf -e "myorigin = $mydomain" postfix reload Dann werden unvollständig Adressen mit "tux.domain1.de" vervollständigt. Dann schicke noch einmal eine Mail los.
# 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
Wenn das funktioniert, können wir Postfix beibringen, smtp auth zu verwenden. Dann kannst du mit einem remote Client Mail senden und lesen. Danach kommen dann Antispam-Maßnahmen, Amavisd-new, TLS, PFLogSumm. Wenn du dann noch Energie hast, können wir die virtuellen Domains einbauen und die Lookups/Auth über MySQL machen. 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
Damit kann man zwar die gleiche User in mehreren Domains anlegen, aber die Cyrusverwaltung der User sieht sie als eine Domain mit vielen Usern, nicht als mehrere Domains mit internen Usern.
So wie ich das verstanden habe, wird ein System mit einer Domain als "lokale Domain" verstanden. Wenn das System für mehr als eine Domain zuständig sein sollte, werden zusätzlich zu der einen lokalen auch virtuelle Domains eingerichtet. Könnten nicht alle Domains (also auch die erste) als virtuelle Domains eingerichtet werden? Oder hängt das mit der Zustellung zusammen? Alle Domains sollten gleichwertig behandelt werden. Oder muß eine Domain als "Hauptdomain" angegeben werden? Ich denke, ich benötige für die user auch keine gemeinsame Umgebung, d.h. alle könnten in virtuelle Domains abgelegt werden. Ergeben sich daraus irgendwelche Nachteile (z.B. bei der Administration, Anlegen der Benutzer o.ä./Mehraufwand)?
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
Nein, das sollte wirklich bei der Distro dabei sein. Ist es aber nicht. Habe in yast mit der Suche alles abgesucht. Ich werde wohl darauf veruciten müssen.
Grmpf, ich meinte ja LOGIN. Nimm das LOGIN solange aus der Liste der Mechanismen heraus, wie du Login nicht installiert hast. Okay, Login ist herausgenommen.
# cat /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain Habe es auch aus der /etc/imapd.conf herausgenommen.
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
Die /etc/nsswitch.conf sieht bei mir so aus: # passwd: files nis # shadow: files nis # group: files nis passwd: compat group: compat hosts: files dns networks: files dns services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files nis publickey: files bootparams: files automount: files nis aliases: files Habe die NIS-Einträge bei netgroup und automount mal entfernt, hat aber keine Änderungen gebracht. Oder muss ein Dienst danach neu gestartet werden? Ist diese Einstellung wichtig? BTW, wenn ich versuche die Manpage zu nsswitch.conf zu öffnen, erhalte ich eine "No manual entry for nsswitch.conf"-Meldung. Ist scheinbar nicht installiert, obwohl in der nsswitch.conf steht # For more information, please read the nsswitch.conf.5 manual page.
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.
Jein, du hast die Mail nur an den usernamen geschickt. Verwende mal die vollständige Emailadresse info_wdr_de@tux.domain1.de.
Postfix verwendet den Wert von $myorigin, um FQDN Adressen zu machen. Setze mal
postconf -e "myorigin = $mydomain" postfix reload
Dann werden unvollständig Adressen mit "tux.domain1.de" vervollständigt.
Dann schicke noch einmal eine Mail los. Prima, klappt jetzt. Mail lässt sich nun auch vom remote Client aus abrufen.
Wenn das funktioniert, können wir Postfix beibringen, smtp auth zu verwenden. Dann kannst du mit einem remote Client Mail senden und lesen. Habe jetzt dies Einstellungen in die main.cf eingefügt:
#Authentifikation smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous Jetzt kann ich auch die Credentials an Postfix/SASL schicken: ... 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN 250 8BITMIME AUTH PLAIN meine64BitKodiertenLogindaten 235 Authentication successful <= Boaaa, jetzt staune ich - wer hätte das gedacht ;-) MAIL FROM: root 250 Ok RCPT TO: info_wdr_de 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> testauth . 250 Ok: queued as 641E01A4AC quit Die Nachricht kommt auch beim Mailclient an. Das Antworten auf die Sender-Adresse klappt ebenfalls. Beim Versenden an eine gmx-Adresse kommt allerdings ein relay-Fehler (Hier die Ausgabe von MS Outlook Express/ Thunderbird klappt auch nicht): Die Nachricht konnte nicht gesendet werden, da einer der Empfänger vom Server nicht akzeptiert wurde. Die nicht akzeptierte E-Mail-Adresse ist "blablabla@gmx.de". Betreff 'Testclient', Konto: 'info@domain1.de', Server: 'mail.domain1.de', Protokoll: SMTP, Serverantwort: '554 <blablabla@gmx.de>: Relay access denied', Port: 25, Secure (SSL): Nein, Serverfehler: 554, Fehlernummer: 0x800CCC79 Folgende Ausgabe im Maillog (/var/log/mail): Dec 17 00:09:20 domain1 postfix/smtpd[14240]: 4BFCA1A4B0: reject: RCPT from p54A8DC1D.dip.t-dialin.net[84.168.xxx.xx]: 554 <blablabla@gmx.de>: Relay access denied; from=<info@domain1.de> to=<blablabla@gmx.de> proto=ESMTP helo=<treebeard> Dec 17 00:09:20 domain1 postfix/smtpd[14240]: disconnect from p54A8DC1D.dip.t-dialin.net[84.168.xxx.xx] Das lokale versenden (s. Telnet-Session oben) habe ich nur teilweise erfolgreich an eine externe Adresse testen können. Bei GMX kam bisher nichts an, evtl. laufen dort andere Filter, als auf anderen Mailservern (Im Spamverdacht war die Mail allerdings auch nicht, evtl. ist diese aber auch noch unterwegs).
Danach kommen dann Antispam-Maßnahmen, Amavisd-new, TLS, PFLogSumm.
Oh ja, da "freue" ich mich schon drauf. Bei ca. 500 Spammails pro Tag bin ich geplagter User. Zum Glück gibt es Filter. Aber wenn man das meiste mit einem reject lösen könnte wäre das schon gut.
Wenn du dann noch Energie hast, können wir die virtuellen Domains einbauen und die Lookups/Auth über MySQL machen. So schnell geb ich nicht auf. Aber ob das alles noch bis Weihnachten klappt? ;-)
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
Treebeard wrote:
Damit kann man zwar die gleiche User in mehreren Domains anlegen, aber die Cyrusverwaltung der User sieht sie als eine Domain mit vielen Usern, nicht als mehrere Domains mit internen Usern.
So wie ich das verstanden habe, wird ein System mit einer Domain als "lokale Domain" verstanden. Wenn das System für mehr als eine Domain zuständig sein sollte, werden zusätzlich zu der einen lokalen auch virtuelle Domains eingerichtet.
Nein, eine lokale Domain ist eine Domain in mydestination. diese sucht gültige Useradressen in /etc/passwd und /etc/aliases (sucht also lokale Systemuser) und verwendet den Delivery Agent "local" zur Auslieferung von Mails. Default ist dabei die Ablage in /var/spool/mail/username. Es hat nichts mit der Anzahl der Domains zu tun, sondern mit der Behandlung, wo sie ausgeliefert wird (lokal auf dem Server) und wo die User abgelegt sind.
Könnten nicht alle Domains (also auch die erste) als virtuelle Domains eingerichtet werden? Oder hängt das mit der Zustellung zusammen? Alle Domains sollten gleichwertig behandelt werden. Oder muß eine Domain als "Hauptdomain" angegeben werden?
Ja, du kannst alle Domains als virtuelle Domains anlegen.
Ich denke, ich benötige für die user auch keine gemeinsame Umgebung, d.h. alle könnten in virtuelle Domains abgelegt werden. Ergeben sich daraus irgendwelche Nachteile (z.B. bei der Administration, Anlegen der Benutzer o.ä./Mehraufwand)?
Nein, die Struktur ist nicht unbedingt aufwendiger. Man muss jedoch wissen, dass einige Sachen bei virtuellen Domains nur mit Klimmzügen bzw. gar nicht möglich sind. Dies gilt zum Beispiel für Include-Dateien von Aliases oder der Übergabe der Mail an einen Pipe-Befehlsalias. Dies ist z.B. für Mailinglisten häufig nötig. Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei einer virtuellen Mailbox-Domain folgendes angeben: - die Email-Adresse in virtual_mailbox_maps und als Wert die Mailboxadresse - Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, kannst du direkt den virtual_transport auf Cyrus setzen.
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
Nein, das sollte wirklich bei der Distro dabei sein. Ist es aber nicht. Habe in yast mit der Suche alles abgesucht. Ich werde wohl darauf veruciten müssen.
Grmpf, ich meinte ja LOGIN. Nimm das LOGIN solange aus der Liste der Mechanismen heraus, wie du Login nicht installiert hast. Okay, Login ist herausgenommen.
# cat /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain
Habe es auch aus der /etc/imapd.conf herausgenommen.
OK.
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
Die /etc/nsswitch.conf sieht bei mir so aus:
# passwd: files nis # shadow: files nis # group: files nis
passwd: compat group: compat
hosts: files dns networks: files dns
services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files nis publickey: files
bootparams: files automount: files nis aliases: files
Habe die NIS-Einträge bei netgroup und automount mal entfernt, hat aber keine Änderungen gebracht. Oder muss ein Dienst danach neu gestartet werden?
Wahrscheinlich der nscd (name server caching daemon).
Ist diese Einstellung wichtig?
Nein, es ist nur eine Warnmeldung.
BTW, wenn ich versuche die Manpage zu nsswitch.conf zu öffnen, erhalte ich eine "No manual entry for nsswitch.conf"-Meldung. Ist scheinbar nicht installiert, obwohl in der nsswitch.conf steht # For more information, please read the nsswitch.conf.5 manual page.
Kein Kommentar. (^-^) Über solche Sachen stolpert man manchmal. Teils, weil die Hilfedateien in einem getrennten Paket zur Verfügung gestellt werden, teils weil einfach ein Bug in der Dokumentation ist.
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.
Jein, du hast die Mail nur an den usernamen geschickt. Verwende mal die vollständige Emailadresse info_wdr_de@tux.domain1.de.
Postfix verwendet den Wert von $myorigin, um FQDN Adressen zu machen. Setze mal
postconf -e "myorigin = $mydomain" postfix reload
Dann werden unvollständig Adressen mit "tux.domain1.de" vervollständigt.
Dann schicke noch einmal eine Mail los. Prima, klappt jetzt. Mail lässt sich nun auch vom remote Client aus abrufen.
Sehr schön. Dann hast du schon ein Basis-System, das funktioniert.
Wenn das funktioniert, können wir Postfix beibringen, smtp auth zu verwenden. Dann kannst du mit einem remote Client Mail senden und lesen.
Habe jetzt dies Einstellungen in die main.cf eingefügt:
#Authentifikation smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous
OK!
... 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN 250 8BITMIME AUTH PLAIN meine64BitKodiertenLogindaten 235 Authentication successful <= Boaaa, jetzt staune ich - wer hätte das gedacht ;-) MAIL FROM: root 250 Ok RCPT TO: info_wdr_de 250 Ok
Diese beiden Befehle funktionieren nur, weil der Default auf "strict_rfc821_envelopes = no" steht. Sonst würden die Eingaben nicht akzeptiert: mail from:<root> rcpt to:<info_wdr_de> Also kein Leerzeichen zwischen dem SMTP-Befehl und dem Wert. Die Adresse wird in eckige Klammern gesetzt. Wenn du noch etwas strikter sein willst, setzt du "reject_non_fqdn_recipient" und "reject_non_fqdn_sender".
DATA 354 End data with <CR><LF>.<CR><LF> testauth . 250 Ok: queued as 641E01A4AC quit
Die Nachricht kommt auch beim Mailclient an. Das Antworten auf die Sender-Adresse klappt ebenfalls.
Sehr gut.
Beim Versenden an eine gmx-Adresse kommt allerdings ein relay-Fehler (Hier die Ausgabe von MS Outlook Express/ Thunderbird klappt auch nicht):
Folgende Ausgabe im Maillog (/var/log/mail): Dec 17 00:09:20 domain1 postfix/smtpd[14240]: 4BFCA1A4B0: reject: RCPT from p54A8DC1D.dip.t-dialin.net[84.168.xxx.xx]: 554 <blablabla@gmx.de>: Relay access denied; from=<info@domain1.de> to=<blablabla@gmx.de> proto=ESMTP helo=<treebeard>
Hier sieht die Sache aber weniger gut aus: - Dynamische Client-IP - NON-FQDN-HELO Ich sehe auch nichts von einer Authentifikation. Damit weist der Server die Mail korrekt ab, da die Empfängeradresse nicht auf dem System ist.
Das lokale versenden (s. Telnet-Session oben) habe ich nur teilweise erfolgreich an eine externe Adresse testen können. Bei GMX kam bisher nichts an, evtl. laufen dort andere Filter, als auf anderen Mailservern (Im Spamverdacht war die Mail allerdings auch nicht, evtl. ist diese aber auch noch unterwegs).
Der Befehl "mailq" zeigt dir an, welche Mails noch in der Queue sind.
Danach kommen dann Antispam-Maßnahmen, Amavisd-new, TLS, PFLogSumm.
Oh ja, da "freue" ich mich schon drauf. Bei ca. 500 Spammails pro Tag bin ich geplagter User. Zum Glück gibt es Filter. Aber wenn man das meiste mit einem reject lösen könnte wäre das schon gut.
Du kannst ca. 80-90 Prozent der Spams direkt in Postfix abblocken. Danach muss man zu Mitteln wie Greylisting, policyd-weight, sender address verification etc. greifen. Damit kommt man auf etwa 95% Rejects. Der Aufwand, die Erkennungsrate bzw. Rejectrate dann weiter zu steigern geht entweder auf Kosten von falsch abgewiesenen Mails oder der Aufwand steigt exponentiell mit jedem weiteren Prozent. Sind die 500 Spams auf das Gesamtsystem bezogen oder allein auf deinen eigenen Account? Voraussetzung für Antispam-Maßnahmen innerhalb von Postfix ist, dass die Clients sich authentifizieren und die Server, die einliefern, sauber eingerichtet sind. Wenn das nicht der Fall ist, sieht Postfix die Server in dem gleichen Licht wie die Spammer.
Wenn du dann noch Energie hast, können wir die virtuellen Domains einbauen und die Lookups/Auth über MySQL machen.
So schnell geb ich nicht auf. Aber ob das alles noch bis Weihnachten klappt? ;-)
Kann sein, dass nicht bis dahin nur das Grundsystem steht, aber das sollte seinen Dienst sauber verrichten. 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
Sandy Drobic schrieb am 17.12.2006 02:00: Schläfst Du auch manchmal? Ich dachte ich wäre gestern schon spät dran. Alle Achtung, dass Du um die Uhrzeit noch antwortest. Danke.
Ja, du kannst alle Domains als virtuelle Domains anlegen.
Hört sich gut an.
Ich denke, ich benötige für die user auch keine gemeinsame Umgebung, d.h. alle könnten in virtuelle Domains abgelegt werden. Ergeben sich daraus irgendwelche Nachteile (z.B. bei der Administration, Anlegen der Benutzer o.ä./Mehraufwand)?
Nein, die Struktur ist nicht unbedingt aufwendiger. Man muss jedoch wissen, dass einige Sachen bei virtuellen Domains nur mit Klimmzügen bzw. gar nicht möglich sind. Dies gilt zum Beispiel für Include-Dateien von Aliases oder der Übergabe der Mail an einen Pipe-Befehlsalias. Dies ist z.B. für Mailinglisten häufig nötig.
Ich denke, so kompliziert wird das ganze System nicht. Mailinglisten werden nicht benötigt. Und die eingehenden Mails sollten alle zum cyrus wandern.
Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei einer virtuellen Mailbox-Domain folgendes angeben: - die Email-Adresse in virtual_mailbox_maps und als Wert die Mailboxadresse - Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, kannst du direkt den virtual_transport auf Cyrus setzen.
Gut, das mache ich im nächsten Schritt. Vorerst haben sich aber noch ein paar Probleme bezüglich des Relayens aufgemacht (s.u.).
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
Die /etc/nsswitch.conf sieht bei mir so aus:
# passwd: files nis # shadow: files nis # group: files nis
passwd: compat group: compat
hosts: files dns networks: files dns
services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files nis publickey: files
bootparams: files automount: files nis aliases: files
Habe die NIS-Einträge bei netgroup und automount mal entfernt, hat aber keine Änderungen gebracht. Oder muss ein Dienst danach neu gestartet werden?
Wahrscheinlich der nscd (name server caching daemon). Ergab leider keine Linderung. Habe etwas recherchiert und gesehen, dass in der main.cf der alias_maps Parameter nicht gesetzt war. Dieser hat aber die Default-Einstellung alias_maps = hash:/etc/aliases, nis:mail.aliases
Habe den jetzt auf alias_maps = hash:/etc/aliases gesetzt. Die Warnmeldung scheint jetzt nicht mehr zu kommen.
Über solche Sachen stolpert man manchmal. Teils, weil die Hilfedateien in einem getrennten Paket zur Verfügung gestellt werden, teils weil einfach ein Bug in der Dokumentation ist. Ja, ist mir schon oft vorgekommen. Wenn ich die Manpage nicht auf meinem Server finde such ich im Internet danach. Da werde ich meistens sofort fündig. Ist halt mal wieder so eine Newbie-Hürde.
Diese beiden Befehle funktionieren nur, weil der Default auf "strict_rfc821_envelopes = no" steht. Sonst würden die Eingaben nicht akzeptiert: mail from:<root> rcpt to:<info_wdr_de>
Also kein Leerzeichen zwischen dem SMTP-Befehl und dem Wert. Die Adresse wird in eckige Klammern gesetzt. Danke für den Hinweis. Es ist gut, beim Standard zu bleiben.
Wenn du noch etwas strikter sein willst, setzt du "reject_non_fqdn_recipient" und "reject_non_fqdn_sender". Das habe ich für später notiert (solange ich noch am Testen bin, lass ich das weg).
Beim Versenden an eine gmx-Adresse kommt allerdings ein relay-Fehler (Hier die Ausgabe von MS Outlook Express/ Thunderbird klappt auch nicht):
Folgende Ausgabe im Maillog (/var/log/mail): Dec 17 00:09:20 domain1 postfix/smtpd[14240]: 4BFCA1A4B0: reject: RCPT from p54A8DC1D.dip.t-dialin.net[84.168.xxx.xx]: 554 <blablabla@gmx.de>: Relay access denied; from=<info@domain1.de> to=<blablabla@gmx.de> proto=ESMTP helo=<treebeard>
Hier sieht die Sache aber weniger gut aus: - Dynamische Client-IP - NON-FQDN-HELO
Ich sehe auch nichts von einer Authentifikation. Damit weist der Server die Mail korrekt ab, da die Empfängeradresse nicht auf dem System ist. Hmmm...ich glaube das liegt am MS-Mailclient. Habe das ganze auch mal mit Thunderbird probiert und es hat funktioniert. Hier der Auszug aus dem Maillog:
Mail versenden mit Thunderbird: Dec 17 09:59:03 domain1 postfix/smtpd[15561]: connect from p54A8E33B.dip.t-dialin.net[84.168.xxx.xx] Dec 17 09:59:04 domain1 postfix/smtpd[15561]: 230831A4B9: client=p54A8E33B.dip.t-dialin.net[84.168.xxx.xx], sasl_method=PLAIN, sasl_username=info_wdr_de Dec 17 09:59:04 domain1 postfix/cleanup[15564]: 230831A4B9: message-id=<458506A7.2050701@domain1.de> Dec 17 09:59:04 domain1 postfix/qmgr[15393]: 230831A4B9: from=<info@domain1.de>, size=566, nrcpt=1 (queue active) Dec 17 09:59:04 domain1 postfix/smtpd[15561]: disconnect from p54A8E33B.dip.t-dialin.net[84.168.xxx.xx] Dec 17 09:59:04 domain1 postfix/smtp[15565]: 230831A4B9: to=<info@domain2.de>, relay=mail.domain2.de[62.75.209.159], delay=0, status=sent (250 2.0.0 kBH8w06t032449 Message accepted for delivery) Dec 17 09:59:04 domain1 postfix/qmgr[15393]: 230831A4B9: removed Das hat geklappt! Gleiche Einstellungen im Mailclient MS OE, Mail versenden: Dec 17 10:00:09 domain1 postfix/smtpd[15561]: connect from p54A8E33B.dip.t-dialin.net[84.168.xxx.xx] Dec 17 10:00:09 domain1 postfix/smtpd[15561]: NOQUEUE: reject: RCPT from p54A8E33B.dip.t-dialin.net[84.168.xxx.xx]: 554 <info@domain2.de>: Relay access denied; from=<info@domain1.de> to=<info@domain2.de> proto=ESMTP helo=<treebeard> Dec 17 10:00:09 domain1 postfix/smtpd[15561]: disconnect from p54A8E33B.dip.t-dialin.net[84.168.xxx.xx] Das ging schief! Obwohl in den Konteneinstellungen Server > Postausgangsserver > "Server erfordert Authentifizierung" angehakt ist. Gut, ich könnte damit leben, aber ich kann niemanden dazu zwingen auf Thunderbird umzusteigen. Dass klappt ja auch woanders. An der dynamischen Client-IP sollte es nicht liegen, denn die hat ja fast jeder, der sich ins Internet einwählt, um die Mails vom Server abzuholen. Am NON-FQDN-HELO könnte es liegen, aber ich tippe auch auf die fehlende Authentifikation. Hat OE da ein Problem mit der Authentifizierung? Habe das Häkchen dort mal entfernt und versucht die Mail zu senden, gleiches Ergebnis. Häkchen wieder drin, genauso. In den Einstellungen zur Authentifizierung habe ich beides getestet: Sowohl "Gleiche Einstellungen wie für den Posteingangsserver verwenden", als auch "Ameldung mit Kontoname und Kennwort". Wie kann ich herausfinden, an welchem Parameter es hier hakt. Jetzt wäre es prima, noch ein paar Debug-Informationen zu bekommen.
Das lokale versenden (s. Telnet-Session oben) habe ich nur teilweise erfolgreich an eine externe Adresse testen können. Bei GMX kam bisher nichts an, evtl. laufen dort andere Filter, als auf anderen Mailservern (Im Spamverdacht war die Mail allerdings auch nicht, evtl. ist diese aber auch noch unterwegs).
Der Befehl "mailq" zeigt dir an, welche Mails noch in der Queue sind.
Mailq zeigt eine leere Queue an. In GMX ist diese auch nie angekommen. Wahrscheinlich schwirrt die Mail im Datennirvana herum. Evtl. lag es an den Brackets oder sonstwas. Inzwischen konnte ich den GMX-Test erfolgreich durchlaufen, sowohl lokales versenden (telnet-Session), als auch remoteseitig mit Mailclient Thunderbird.
Sind die 500 Spams auf das Gesamtsystem bezogen oder allein auf deinen eigenen Account?
Das sind die Mails, die täglich in meinen Mailclient trudeln (12 Accounts). Teils bedingt durch gewisse catchall-Einstellungen. Aber das Problem werde ich erst angehen, wenn alles soweit serverseitig läuft. Thunderbird hat einen Klasse Junk-Filter und hilft hier schon zu 98% den Mist herauszufiltern. 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
Nein, eine lokale Domain ist eine Domain in mydestination. diese sucht gültige Useradressen in /etc/passwd und /etc/aliases (sucht also lokale Systemuser) und verwendet den Delivery Agent "local" zur Auslieferung von Mails. Default ist dabei die Ablage in /var/spool/mail/username. Kann ich mydestination leer lassen, wenn ich die Domain in den virtual_mailbox_domains Parameter setze? Kann localhost auch in den virtual_mailbox_domains Parameter? Bleibt mydomain so bestehen (wie unten bei meiner Konfiguration angegeben)? Was ist mit dem Rechnernamen "tux", könnte man den weglassen? Die Mailadressen sollten alle das Format "ohne" dem Rechnernamen vor dem Domainnamen haben (in der Form user1@domain1.de, nicht user1@tux.domain1.de). Oder erübrigt sich das mit der Konfiguration der vitual Mailboxen?
Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei einer virtuellen Mailbox-Domain folgendes angeben: - die Email-Adresse in virtual_mailbox_maps und als Wert die Mailboxadresse Hier meine /etc/postfix/virt_mailbox_maps: user1@domain1.de dom001_box001 user2@domain1.de dom001_box002 user3@domain1.de dom001_box003
Wo werden die Passwörter zur Authentifizierung gespeichert? Legt cyrus die Mailboxen automatisch an, wenn über den Socket eine Mail hereinkommt? Wenn nein, kann man cyrus dazu bringen oder ist dazu immer Handarbeit gefragt? (Automatisieren von "cm user1@domain1.de") Die Pfade zu den Usermailboxen müssten dann doch so aussehen: /var/spool/imap/domain/domain1.de/user1 /var/spool/imap/domain/domain1.de/user2 /var/spool/imap/domain/domain1.de/user3
- Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, kannst du direkt den virtual_transport auf Cyrus setzen. Das habe ich nun gesetzt: virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp
Wie kann ich den Transport für jede eigene Domain separat bestimmen? Ich schicke mal die Ausgabe vom aktuellen Stand meiner /etc/postfix/main.cf mit: alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes 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 mydomain = tux.domain1.de myhostname = mail.domain1.de myorigin = $mydomain 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 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous unknown_local_recipient_reject_code = 550 virtual_mailbox_domains = domain1.de virtual_mailbox_maps = hash:/etc/postfix/virt_mailbox_maps virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp 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
Treebeard wrote:
Nein, eine lokale Domain ist eine Domain in mydestination. diese sucht gültige Useradressen in /etc/passwd und /etc/aliases (sucht also lokale Systemuser) und verwendet den Delivery Agent "local" zur Auslieferung von Mails. Default ist dabei die Ablage in /var/spool/mail/username.
Kann ich mydestination leer lassen, wenn ich die Domain in den virtual_mailbox_domains Parameter setze?
Das solltest du sogar. Eine Domain darf nur in einer einzigen Adressklasse stehen, sonst meldet Postfix eine entsprechende Warnung im Log.
Kann localhost auch in den virtual_mailbox_domains Parameter? Bleibt mydomain so bestehen (wie unten bei meiner Konfiguration angegeben)? Was ist mit dem Rechnernamen "tux", könnte man den weglassen? Die Mailadressen sollten alle das Format "ohne" dem Rechnernamen vor dem Domainnamen haben (in der Form user1@domain1.de, nicht user1@tux.domain1.de). Oder erübrigt sich das mit der Konfiguration der vitual Mailboxen?
Du sprichst eine Menge Sachen auf einmal an. Der Hostname ist der Name, mit dem sich der Server meldet, wenn er eine Mail an einen anderen Server schickt. Dieser Name sollte im DNS existieren und auf deinen Server zeigen. Ansonsten kannst du natürlich folgendes setzen: myorigin = $mydomain mydomain = domain1.de hostname = tux.domain1.de
Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei einer virtuellen Mailbox-Domain folgendes angeben: - die Email-Adresse in virtual_mailbox_maps und als Wert die Mailboxadresse
Hier meine /etc/postfix/virt_mailbox_maps: user1@domain1.de dom001_box001 user2@domain1.de dom001_box002 user3@domain1.de dom001_box003
Das ist jetzt noch der Stand OHNE virtuelle domains in Cyrus, oder?
Wo werden die Passwörter zur Authentifizierung gespeichert?
Ohne weitere Angabe, wenn über PAM, in der passwd.
Legt cyrus die Mailboxen automatisch an, wenn über den Socket eine Mail hereinkommt?
Nicht per Default.
Wenn nein, kann man cyrus dazu bringen oder ist dazu immer Handarbeit gefragt?
Es gibt einen Autocreate Patch. Ohne diesen muss die Mailbox erst angelegt werden.
(Automatisieren von "cm user1@domain1.de")
Das kann mit einem Perl Script gemacht werden. Cyradm ist eigentlich nur eine Perlscript.
Die Pfade zu den Usermailboxen müssten dann doch so aussehen: /var/spool/imap/domain/domain1.de/user1 /var/spool/imap/domain/domain1.de/user2 /var/spool/imap/domain/domain1.de/user3
ist denn virtdomain: yes in der imapd.conf aktiviert?
- Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, kannst du direkt den virtual_transport auf Cyrus setzen. Das habe ich nun gesetzt: virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp
Wie kann ich den Transport für jede eigene Domain separat bestimmen?
Du kannst in /etc/postfix/transport für jede Domain oder sogar Emailadresse den Transport festlegen. /etc/postfix/transport: domain1.example.com smtp:[ip.of.remote.host] user@domain1.example.com: lmtp:unix:/var/lib/imap/socket/lmtp
Ich schicke mal die Ausgabe vom aktuellen Stand meiner /etc/postfix/main.cf mit: alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes 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
mydestination = local_recipient_maps =
mydomain = tux.domain1.de mydomain = domain1.de
myhostname = mail.domain1.de myorigin = $mydomain
OK.
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 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous unknown_local_recipient_reject_code = 550 virtual_mailbox_domains = domain1.de virtual_mailbox_maps = hash:/etc/postfix/virt_mailbox_maps virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp
OK. 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
>>> >>> Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei >>> einer virtuellen Mailbox-Domain folgendes angeben: >>> - die Email-Adresse in virtual_mailbox_maps und als Wert die >>> Mailboxadresse >> Hier meine /etc/postfix/virt_mailbox_maps: >> user1@domain1.de dom001_box001 >> user2@domain1.de dom001_box002 >> user3@domain1.de dom001_box003 > > Das ist jetzt noch der Stand OHNE virtuelle domains in Cyrus, oder? Ja, das stimmt. Wenn ich dich richtig verstehe, muss für cyrus der Parameter "virtdomain: yes" gesetzt werden, damit Cyrus die von Postfix im Parameter virtual_mailbox_maps festgelegten Zuordungen Mailadresse zum Mailboxnamen im richtigen Pfad einordnen kann (so ähnlich steht das auch in der "man imapd.conf", Auftrennung beim @). Das bedeutet ohne diesem Parameter gibt es eine andere - für meine Konfiguration nicht sinnvolle - Ordnerstruktur, oder? > >> Wo werden die Passwörter zur Authentifizierung gespeichert? > > Ohne weitere Angabe, wenn über PAM, in der passwd. Das bedeutet, Einträge zum Einrichten einer Mailadresse müssten in der 1) /etc/postfix/virt_mailbox_maps (manuell editieren) 2) /etc/passwd (Befehl useradd) 3) in der Cyrus-Datenbank (mit cyradm) angelegt und auch abgestimmt werden. Ganz schon umständlich. Geht das nicht einfacher? >> >> Die Pfade zu den Usermailboxen müssten dann doch so aussehen: >> /var/spool/imap/domain/domain1.de/user1 >> /var/spool/imap/domain/domain1.de/user2 >> /var/spool/imap/domain/domain1.de/user3 > > ist denn virtdomain: yes in der imapd.conf aktiviert? Ja, ist jetzt gesetzt (vorher noch nicht). > >>> - Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für >>> die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, >>> kannst du direkt den virtual_transport auf Cyrus setzen. >> Das habe ich nun gesetzt: >> virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp >> >> Wie kann ich den Transport für jede eigene Domain separat bestimmen? > > Du kannst in /etc/postfix/transport für jede Domain oder sogar > Emailadresse den Transport festlegen. > > /etc/postfix/transport: > domain1.example.com smtp:[ip.of.remote.host] > user@domain1.example.com: lmtp:unix:/var/lib/imap/socket/lmtp Greift das vor oder nach dem mailbox_transport-Parameter in der main.cf? > > mydestination = > local_recipient_maps = OK. > > mydomain = domain1.de OK. 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
Treebeard wrote: > >>>> >>>> Ansonsten ist die Verwaltung nicht viel aufwendiger. Du musst bei >>>> einer virtuellen Mailbox-Domain folgendes angeben: >>>> - die Email-Adresse in virtual_mailbox_maps und als Wert die >>>> Mailboxadresse >>> Hier meine /etc/postfix/virt_mailbox_maps: >>> user1@domain1.de dom001_box001 >>> user2@domain1.de dom001_box002 >>> user3@domain1.de dom001_box003 >> >> Das ist jetzt noch der Stand OHNE virtuelle domains in Cyrus, oder? > Ja, das stimmt. > Wenn ich dich richtig verstehe, muss für cyrus der Parameter > "virtdomain: yes" gesetzt werden, damit Cyrus die von Postfix im > Parameter virtual_mailbox_maps festgelegten Zuordungen Mailadresse zum > Mailboxnamen im richtigen Pfad einordnen kann (so ähnlich steht das auch > in der "man imapd.conf", Auftrennung beim @). Das bedeutet ohne diesem > Parameter gibt es eine andere - für meine Konfiguration nicht sinnvolle > - Ordnerstruktur, oder? Es muss alles zusammen passen: #1: /etc/imapd.conf: virtdomain: yes #2: cyradm: cm user1@domain1.de #3: /etc/postfix/virt_mailbox_maps: user1@domain1.de user1@domain1.de #4: /etc/postfix/main.cf: virtual_transport = lmtp:/unix/var/lib/imap/socket/lmtp >>> Wo werden die Passwörter zur Authentifizierung gespeichert? >> >> Ohne weitere Angabe, wenn über PAM, in der passwd. > Das bedeutet, Einträge zum Einrichten einer Mailadresse müssten in der > 1) /etc/postfix/virt_mailbox_maps (manuell editieren) > 2) /etc/passwd (Befehl useradd) > 3) in der Cyrus-Datenbank (mit cyradm) > angelegt und auch abgestimmt werden. Das ist korrekt. > Ganz schon umständlich. Geht das nicht einfacher? Das war der Grund für WebCyrAdm. (^-^) >>> Die Pfade zu den Usermailboxen müssten dann doch so aussehen: >>> /var/spool/imap/domain/domain1.de/user1 >>> /var/spool/imap/domain/domain1.de/user2 >>> /var/spool/imap/domain/domain1.de/user3 >> >> ist denn virtdomain: yes in der imapd.conf aktiviert? > Ja, ist jetzt gesetzt (vorher noch nicht). Dann werden die vorher angelegten user auch nicht automatisch plötzlich in den virtuellen domains erscheinen. Siehe oben. >> >>>> - Wenn die Mail an Cyrus weitergegeben soll, muss der Transport für >>>> die Domain gesetzt werden. Sind alle virtuellen Domains in Cyrus, >>>> kannst du direkt den virtual_transport auf Cyrus setzen. >>> Das habe ich nun gesetzt: >>> virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp >>> >>> Wie kann ich den Transport für jede eigene Domain separat bestimmen? >> >> Du kannst in /etc/postfix/transport für jede Domain oder sogar >> Emailadresse den Transport festlegen. >> >> /etc/postfix/transport: >> domain1.example.com smtp:[ip.of.remote.host] >> user@domain1.example.com: lmtp:unix:/var/lib/imap/socket/lmtp > Greift das vor oder nach dem mailbox_transport-Parameter in der main.cf? mailbox_transport greift NUR für domains in $mydestination. Bei dir also nicht mehr relevant. Für Virtuelle Domains ist der Delivery-Agent "virtual" zuständig mit dem Default-Transport "virtual_transport = virtual" Die Einstellungen in /etc/postfix/transport übersteuern diese Default-Einstellungen. 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
Es muss alles zusammen passen:
#1: /etc/imapd.conf: virtdomain: yes #2: cyradm: cm user1@domain1.de #3: /etc/postfix/virt_mailbox_maps: user1@domain1.de user1@domain1.de Ich bekomme dadurch wie erwartet Probleme, wenn ich den Benutzer in einen Unix-Account speichern möchte:
# useradd -s /bin/false user1@domain1.de useradd: Invalid account name `user1@domain1.de' user1 als Benutzername kann ich nicht nehmen, da es u.U. auch einen user1@domain2.de geben kann, der unabhängig von user1@domain1.de existieren sollte. Ich frage mich daher, ob die obige Einstellung so richtig ist, wenn hier die Zuordnung Unixbenutzer zur Mailadresse gesetzt werden soll. Warum also nicht in der /etc/postfix/virt_mailbox_maps: user1@domain1.de dom001_box001
#4: /etc/postfix/main.cf: virtual_transport = lmtp:/unix/var/lib/imap/socket/lmtp
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
On Saturday 23 December 2006 23:06, Treebeard wrote:
Es muss alles zusammen passen:
#1: /etc/imapd.conf: virtdomain: yes #2: cyradm: cm user1@domain1.de #3: /etc/postfix/virt_mailbox_maps: user1@domain1.de user1@domain1.de
Ich bekomme dadurch wie erwartet Probleme, wenn ich den Benutzer in einen Unix-Account speichern möchte:
# useradd -s /bin/false user1@domain1.de useradd: Invalid account name `user1@domain1.de'
UNIX-Accounts können kein @-Zeichen enthalten. Man benutzt auch für gewöhnlich keine Systembenutzer im Zusammenhang mit Virtual-Domains. Da bieten sich sasldb, ldap, mysql, pgsql oder sqllite eher an.
user1 als Benutzername kann ich nicht nehmen, da es u.U. auch einen user1@domain2.de geben kann, der unabhängig von user1@domain1.de existieren sollte.
Ich frage mich daher, ob die obige Einstellung so richtig ist, wenn hier die Zuordnung Unixbenutzer zur Mailadresse gesetzt werden soll. Warum also nicht in der /etc/postfix/virt_mailbox_maps: user1@domain1.de dom001_box001
Eine Zuordnung von Benutzern zu E-Mail Adressen in der virtual_mailbox_maps? Da passt was nicht. Die virtual_mailbox_maps wird im Zusammenhang mit Cyrus nur Links-Seitig ausgewertet. Dort wird nur geprüft, ob eine E-Mail Adresse existiert. Ist sie drin, geht die Mail unverändert an $virtual_transport. Umschreiben könntest Du mit der virtual_alias_maps.
#4: /etc/postfix/main.cf: virtual_transport = lmtp:/unix/var/lib/imap/socket/lmtp
Viele Grüße Ingbert
-- Andreas -- 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
Treebeard wrote:
Es muss alles zusammen passen:
#1: /etc/imapd.conf: virtdomain: yes #2: cyradm: cm user1@domain1.de #3: /etc/postfix/virt_mailbox_maps: user1@domain1.de user1@domain1.de Ich bekomme dadurch wie erwartet Probleme, wenn ich den Benutzer in einen Unix-Account speichern möchte:
# useradd -s /bin/false user1@domain1.de useradd: Invalid account name `user1@domain1.de'
Diese Probleme bleiben auch. Wenn du Domains mit einbinden willst, dann brauchst du sasldb oder pam-mysql. Die Auth-Optionen in /usr/lib64/sasl2/smtpd.conf für sasldb müssen dann heissen: pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: plain login Die mech_list kannst du später erweitern, wenn du sasldb nehmen willst. Mit sasldb ist auch cram-md5 und digest-md5 möglich.
user1 als Benutzername kann ich nicht nehmen, da es u.U. auch einen user1@domain2.de geben kann, der unabhängig von user1@domain1.de existieren sollte.
Wenn du bei passwd bleiben willst, musst du usernamen wählen wie "domain1_user1", was auf Dauer doch etwas unbeholfen ist.
Ich frage mich daher, ob die obige Einstellung so richtig ist, wenn hier die Zuordnung Unixbenutzer zur Mailadresse gesetzt werden soll. Warum also nicht in der /etc/postfix/virt_mailbox_maps: user1@domain1.de dom001_box001
Damit bleibst du bei einer logischen Domain in Cyrus. Jetzt musst du dich langsam entscheiden, in welche Richtung der Zug denn abfahren soll. 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
> Diese Probleme bleiben auch. Wenn du Domains mit einbinden willst, > dann brauchst du sasldb oder pam-mysql. Die Auth-Optionen in > /usr/lib64/sasl2/smtpd.conf für sasldb müssen dann heissen: > > pwcheck_method: auxprop > auxprop_plugin: sasldb > mech_list: plain login > > Die mech_list kannst du später erweitern, wenn du sasldb nehmen > willst. Mit sasldb ist auch cram-md5 und digest-md5 möglich. Habe jetzt nochmal versucht den webcyradm zu benutzen. Bin davon aber aus folgenden Gründen wieder abgekommen: - komplizierte verschachtelte Datenbankstruktur - verwendete Version 0.5.4 ist bereits 2 Jahre alt (Latest Release) - schlecht dokumentiert (HowTo veraltet, nicht auf Suse bezogen - obwohl bei mir bereits lauffähig, empfand ich die Installation schwierig (teilweise fehlerhaft, Eingriff in Quellcode) Habe mich daher für sasldb und die obige Konfiguration entschieden. Mir gefällt die "Einfachheit" um Accounts per Konsole anzulegen. Hier kann man sicherlich doch auch ein Web-Frontend für basteln (oder exitiert bereits da etwas?). Jetzt habe ich einen Account so angelegt: saslpasswd2 -c -u domain1.de wdr_sasl1 Das Passwort wurde daraufhin zweimal abgefragt und der Account in die Datenbank geschrieben. in CyrAdm nun einen Benutzer anlegen: cm wdr_sasl1@domain1.de Es wird allerdings kein Verzeichnis der Form /var/spool/imap/domain/domain1.de/wdr_sasl1 erzeugt, sondern /var/spool/imap/wdr_sasl1@domain1/de In der /etc/imapd.conf ist der Eintrag virtdomain: yes gesetzt. Was ist hier faul? 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
Hallo, Am Mittwoch, 27. Dezember 2006 23:23 schrieb Treebeard:
in CyrAdm nun einen Benutzer anlegen: cm wdr_sasl1@domain1.de
Ich lege die Mailboxen mit cm "user.Benutzernamen" an, also das user. vor dem Benutzernamen.
Es wird allerdings kein Verzeichnis der Form /var/spool/imap/domain/domain1.de/wdr_sasl1 erzeugt, sondern /var/spool/imap/wdr_sasl1@domain1/de
In der /etc/imapd.conf ist der Eintrag virtdomain: yes gesetzt. Was ist hier faul?
Viele Grüße Ingbert
-- Mit freundlichem Gruss Martin Zambo -- 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
On Thursday 28 December 2006 11:23, Martin Zambo wrote:
in CyrAdm nun einen Benutzer anlegen: cm wdr_sasl1@domain1.de
Ich lege die Mailboxen mit cm "user.Benutzernamen" an, also das user. vor dem Benutzernamen.
Ja genau, habe ich vergessen gehabt. Mit unixhierarchysep dann "cm user/user@domain.tld". -- Andreas -- 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
On Wednesday 27 December 2006 23:23, Treebeard wrote:
Habe mich daher für sasldb und die obige Konfiguration entschieden. Mir gefällt die "Einfachheit" um Accounts per Konsole anzulegen. Hier kann man sicherlich doch auch ein Web-Frontend für basteln (oder exitiert bereits da etwas?).
Jetzt habe ich einen Account so angelegt: saslpasswd2 -c -u domain1.de wdr_sasl1
Das Passwort wurde daraufhin zweimal abgefragt und der Account in die Datenbank geschrieben.
in CyrAdm nun einen Benutzer anlegen: cm wdr_sasl1@domain1.de
Es wird allerdings kein Verzeichnis der Form /var/spool/imap/domain/domain1.de/wdr_sasl1 erzeugt, sondern /var/spool/imap/wdr_sasl1@domain1/de
Der Default bei Cyrus-Imapd ist es den Netnews Separator zu verwenden, sprich den ".". Also legst Du mit user@domain.tld zwei Ebenen gleichzeitig an. "user@domain" und darunter "tld". Wenn Du das nicht willst, musst Du den "/" als Trenner verwenden. unixhierarchysep: 1 unixhierarchysep: 0 Use the UNIX separator character '/' for delimiting levels of mailbox hierarchy. The default is to use the netnews separator character '.'.
In der /etc/imapd.conf ist der Eintrag virtdomain: yes gesetzt. Was ist hier faul?
Wenn das wirklich so da steht, ist es falsch. Erstens ist es Plural und zweitens wäre es "on" bzw. "userid". virtdomains: off Enable virtual domain support. If enabled, the user's domain will be determined by splitting a fully qualified userid at the last '@' or '%' symbol. If the userid is unqualified, and the virtdomains option is set to "on", then the domain will be determined by doing a reverse lookup on the IP address of the incoming network interface, otherwise the user is assumed to be in the default domain (if set). Allowed values: off, userid, on Abgesehen davon würde ich mir überlegen ob Du virtdomains überhaupt willst. -- Andreas -- 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
Der Default bei Cyrus-Imapd ist es den Netnews Separator zu verwenden, sprich den ".". Also legst Du mit user@domain.tld zwei Ebenen gleichzeitig an. "user@domain" und darunter "tld". Wenn Du das nicht willst, musst Du den "/" als Trenner verwenden.
unixhierarchysep: 1
unixhierarchysep: 0 Use the UNIX separator character '/' for delimiting levels of mailbox hierarchy. The default is to use the netnews separator character '.'.
unixhierarchysep ist bei mir nicht gesetzt, demnach hat der default-Wert gegriffen.
In der /etc/imapd.conf ist der Eintrag virtdomain: yes gesetzt. Was ist hier faul?
Wenn das wirklich so da steht, ist es falsch. Erstens ist es Plural und zweitens wäre es "on" bzw. "userid".
virtdomains: off Enable virtual domain support. If enabled, the user's domain will be determined by splitting a fully qualified userid at the last '@' or '%' symbol. If the userid is unqualified, and the virtdomains option is set to "on", then the domain will be determined by doing a reverse lookup on the IP address of the incoming network interface, otherwise the user is assumed to be in the default domain (if set).
Allowed values: off, userid, on
Vielen Dank, genau das war der Fehler - nachlesen hilft, zumindest an der richtigen Stelle. Hatte den Wert aus einem der vorherigen Postings geholt, da hat sich ein Fehler eingeschlichen. Jetzt klappt es genau so wie gewollt: cm abc@domain1.de Jetzt wird die Benutzermailbox in /var/spool/imap/domain/domain1.de/abc/ abgelegt. Darin befinden sich jetzt drei Dateien: ls -l total 12 -rw------- 1 cyrus mail 4 Dec 28 12:53 cyrus.cache -rw------- 1 cyrus mail 146 Dec 28 12:53 cyrus.header -rw------- 1 cyrus mail 76 Dec 28 12:53 cyrus.index Dann wird aber auch noch ein Ordner /var/spool/imap/domain/domain1.de/user/abc/ angelegt? Auch darin sind diese Dateien und eine Mail, die ich an diese Mailbox geschickt habe: ls -l total 16 -rw------- 1 cyrus mail 1151 Dec 28 13:00 1. -rw------- 1 cyrus mail 788 Dec 28 13:00 cyrus.cache -rw------- 1 cyrus mail 203 Dec 28 12:57 cyrus.header -rw------- 1 cyrus mail 136 Dec 28 13:01 cyrus.index Ist das normal? Das zweite Verzeichnis ist beim Anlegen der Mailbox mit cyradm noch nicht vorhanden. Habe das an einem Beispiel wiederholt erkennen können: In cyradm mit "cm def@domain1.de" eine neue Box angelegt. Nun existiert das Verzeichnis "/var/spool/imap/domain/domain1.de/". def@webdesign-reference.de wurde in virt_mailbox_maps mit aufgenommen, postmap wurde darauf ausgeführt und das Passwort mit saslpasswd2 angelegt. Danach Server Neustart. Wenn ich nun von einem Mailclient versuche vom Konto abc@domain1.de eine Mail an def@domain1.de zu verschicken, kommt folgende Fehlermeldung: Undelivered Mail Returned To Sender ... The Postfix program <def@domain1.de <mailto:ghi@webdesign-reference.de>>: host /var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp] said: 550-Mailbox unknown. Either there is no mailbox associated with this 550-name or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command) Wie gesagt das Verzeichnis /var/spool/imap/domain/domain1.de/user/def/ existiert noch nicht. Im nächsten Schritt habe ich im Mailclient das Konto für def angelegt. Nach der Einrichtung werde ich gefragt "Möchten Sie die Ordner vom hinzugefügten Mailserver downloaden" Ich bestätige mit "Ja". Danach erfolgt eine Art Synchronisation. Bei diesem Schritt wird auch der Ordner /var/spool/imap/domain/domain1.de/user/def/ angelegt. Quasi vom Mailclient angestossen. Bin neu im IMAP-System, aber ich denke, da ist noch was falsch.
Abgesehen davon würde ich mir überlegen ob Du virtdomains überhaupt willst.
Was spricht dagegen? Ich denke mit virtdomains schaffe ich besseren Überblick bei den Domainzuordnungen. 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
On Thursday 28 December 2006 22:46, Treebeard wrote:
Allowed values: off, userid, on
Vielen Dank, genau das war der Fehler - nachlesen hilft, zumindest an der richtigen Stelle. Hatte den Wert aus einem der vorherigen Postings geholt, da hat sich ein Fehler eingeschlichen. Jetzt klappt es genau so wie gewollt:
cm abc@domain1.de
Wie Martin bereits dazu geschrieben hat, werden Benutzer-Mailboxen mit einem Prefix "user" angelegt. In Deinem Fall (unixhierarchysep: 1): cm user/abc@domain1.de Ansosnten: cm user.username
Im nächsten Schritt habe ich im Mailclient das Konto für def angelegt. Nach der Einrichtung werde ich gefragt "Möchten Sie die Ordner vom hinzugefügten Mailserver downloaden" Ich bestätige mit "Ja". Danach erfolgt eine Art Synchronisation. Bei diesem Schritt wird auch der Ordner /var/spool/imap/domain/domain1.de/user/def/ angelegt. Quasi vom Mailclient angestossen.
Bin neu im IMAP-System, aber ich denke, da ist noch was falsch.
Abgesehen davon würde ich mir überlegen ob Du virtdomains überhaupt willst.
Was spricht dagegen? Ich denke mit virtdomains schaffe ich besseren Überblick bei den Domainzuordnungen.
virtdomains sind eigentlich dazu da den Cyrus-Imapd in getrennte Bereiche aufzuteilen. Da kann man in jeder Domain zugehörige Admins vergeben und was bei "virtdomains: on" mitspielt ist die IP-Adresse auf die sich ein Benutzer connected. Bei "virtdomains: userid" zählt der Domain-Part am Anmeldenamen um ihn der virtdomain zuzuteilen. Die ganze Geschichte ist halt manchmal etwas knifflig, und da ist halt die Frage ob man sowas wirklich braucht. -- Andreas -- 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
Wie Martin bereits dazu geschrieben hat, werden Benutzer-Mailboxen mit einem Prefix "user" angelegt. In Deinem Fall (unixhierarchysep: 1):
cm user/abc@domain1.de
Ansosnten:
cm user.username
Gut das habe ich jetzt verstanden und scheint auch zu funktionieren. virtdomains: on unixhierarchysep: 1 ist nun meine Einstellung in der imapd.conf. Wenn "virtdomains: off" gesetzt ist und man eine neue Mailbox anlegt mit cm user/abc@domain1.de wird ein Verzeichnis in /var/spool/imap/user/abc@domain1^de angelegt (also mit "^" statt "."). Wenn ich die Mailboxen aufliste, kommt allerdings wieder der Punkt: lm INBOX (\HasNoChildren) user/abc@domain1.de (\HasNoChildren) Wenn "virtdomains: on" gesetzt ist und man eine neue Mailbox anlegt mit cm user/abc@domain1.de wird ein Verzeichnis in /var/spool/imap/domain/domain1.de/user/abc angelegt. Das ist genau die Hierarchie, die ich gerne hätte. Super. Jetzt nur noch zum Verständnis:
Was spricht dagegen? Ich denke mit virtdomains schaffe ich besseren Überblick bei den Domainzuordnungen.
virtdomains sind eigentlich dazu da den Cyrus-Imapd in getrennte Bereiche aufzuteilen.
Das ist doch das praktische an virtdomains. Die Domains, die auf meinem Server laufen, werden nicht alle mir gehören.
Da kann man in jeder Domain zugehörige Admins vergeben sehe ich als Vorteil und was bei "virtdomains: on" mitspielt ist die IP-Adresse auf die sich ein Benutzer connected. Bei "virtdomains: userid" zählt der Domain-Part am Anmeldenamen um ihn der virtdomain zuzuteilen. Das habe ich nicht ganz verstanden. Sehe ich das richtig, dass das Auswirkungen hat, wenn die verscheidenen Domains auf unterschiedlichen IP-Adressen laufen? In der Manpage steht das irgendwie komisch. Kannst Du ein Beispiel nennen, wann welche Einstellung praktikabler ist ("on" oder "userid")? Die ganze Geschichte ist halt manchmal etwas knifflig, und da ist halt die Frage ob man sowas wirklich braucht.
Was spricht denn gegen virtdomains? Das ist doch nur ein Schalter, der die Anordnung der Verzeichnisse etwas umstrukturiert, oder? So viel kniffliger fand ich das nicht. Es muss nur richtig verstanden werden, welche Auswirkungen das hat. Und da versuche ich im Augenblick den Lernprozess durchzumachen. -- 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
On Friday 29 December 2006 22:44, Treebeard wrote:
Jetzt nur noch zum Verständnis:
Was spricht dagegen? Ich denke mit virtdomains schaffe ich besseren Überblick bei den Domainzuordnungen.
virtdomains sind eigentlich dazu da den Cyrus-Imapd in getrennte Bereiche aufzuteilen.
Das ist doch das praktische an virtdomains. Die Domains, die auf meinem Server laufen, werden nicht alle mir gehören.
Da kann man in jeder Domain zugehörige Admins vergeben
sehe ich als Vorteil
und was bei "virtdomains: on" mitspielt ist die IP-Adresse auf die sich ein Benutzer connected. Bei "virtdomains: userid" zählt der Domain-Part am Anmeldenamen um ihn der virtdomain zuzuteilen.
Das habe ich nicht ganz verstanden. Sehe ich das richtig, dass das Auswirkungen hat, wenn die verscheidenen Domains auf unterschiedlichen IP-Adressen laufen? In der Manpage steht das irgendwie komisch. Kannst Du ein Beispiel nennen, wann welche Einstellung praktikabler ist ("on" oder "userid")?
Wenn Dein Cyrus-Imapd bzw. der Server mehrere IP-Adressen mit dem entsprechenden Reverse-FQDN der Domains (virtdomains) hat, benutze "on". Wenn der Server nur eine IP-Adresse hat und die Domain halt nach der userid zugeordnet werden soll, verwende "userid".
Die ganze Geschichte ist halt manchmal etwas knifflig, und da ist halt die Frage ob man sowas wirklich braucht.
Was spricht denn gegen virtdomains? Das ist doch nur ein Schalter, der die Anordnung der Verzeichnisse etwas umstrukturiert, oder? So viel kniffliger fand ich das nicht. Es muss nur richtig verstanden werden, welche Auswirkungen das hat. Und da versuche ich im Augenblick den Lernprozess durchzumachen.
/usr/share/doc/packages/cyrus-imapd/doc/install-virtdomains.html -- Andreas -- 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
Treebeard wrote: > >> Diese Probleme bleiben auch. Wenn du Domains mit einbinden willst, >> dann brauchst du sasldb oder pam-mysql. Die Auth-Optionen in >> /usr/lib64/sasl2/smtpd.conf für sasldb müssen dann heissen: >> >> pwcheck_method: auxprop >> auxprop_plugin: sasldb >> mech_list: plain login >> >> Die mech_list kannst du später erweitern, wenn du sasldb nehmen >> willst. Mit sasldb ist auch cram-md5 und digest-md5 möglich. > Habe jetzt nochmal versucht den webcyradm zu benutzen. Bin davon aber > aus folgenden Gründen wieder abgekommen: > - komplizierte verschachtelte Datenbankstruktur > - verwendete Version 0.5.4 ist bereits 2 Jahre alt (Latest Release) > - schlecht dokumentiert (HowTo veraltet, nicht auf Suse bezogen > - obwohl bei mir bereits lauffähig, empfand ich die Installation > schwierig (teilweise fehlerhaft, Eingriff in Quellcode) > > Habe mich daher für sasldb und die obige Konfiguration entschieden. Mir > gefällt die "Einfachheit" um Accounts per Konsole anzulegen. Hier kann > man sicherlich doch auch ein Web-Frontend für basteln (oder exitiert > bereits da etwas?). > > Jetzt habe ich einen Account so angelegt: > saslpasswd2 -c -u domain1.de wdr_sasl1 > > Das Passwort wurde daraufhin zweimal abgefragt und der Account in die > Datenbank geschrieben. > > in CyrAdm nun einen Benutzer anlegen: > cm wdr_sasl1@domain1.de > > Es wird allerdings kein Verzeichnis der Form > /var/spool/imap/domain/domain1.de/wdr_sasl1 > erzeugt, sondern > /var/spool/imap/wdr_sasl1@domain1/de > > In der /etc/imapd.conf ist der Eintrag > virtdomain: yes > gesetzt. Was ist hier faul? Wie Andreas schon geschrieben hatte: /etc/imapd.conf: virtdomains: on Ich habe aber den "unixhierarchysep: yes" weggelassen. Du scheinst ihn gesetzt zu haben. rccyrus restart su - cyrus cyradm localhost localhost>cm user@domain1.de localhost>lm user@domain1.de user@domain1.de (\HasNoChildren) Angelegt wird er dann in /var/spool/imap/domain/domain1.de/user1/ Gerade noch einmal getestet mit Suse 10.2. 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
rccyrus restart su - cyrus cyradm localhost localhost>cm user@domain1.de localhost>lm user@domain1.de user@domain1.de (\HasNoChildren) Ja, das hat geklappt.
Angelegt wird er dann in /var/spool/imap/domain/domain1.de/user1/
Gerade noch einmal getestet mit Suse 10.2. Ja, unter Suse 10.1 ist es der gleiche Pfad.
Nach Anlegen mehrerer Mailboxen und Weiterleitungen klappt das auch schon ganz gut. Hier ist jetzt der aktuelle Stand der main.cf: #postconf -n alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes 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 local_recipient_maps = mail_owner = postfix mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man mydestination = mydomain =domain1.de myhostname = mail.domain1.de myorigin = $mydomain 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 smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, permit_tls_clientcerts, reject_unauth_destination, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, smtpd_tls_CAfile = /etc/postfix/cacert.pem smtpd_tls_ask_ccert = yes smtpd_tls_cert_file = /etc/postfix/mail_signed_cert.pem smtpd_tls_key_file = /etc/postfix/mailkey.pem smtpd_use_tls = yes unknown_local_recipient_reject_code = 550 virtual_alias_maps = hash:/etc/postfix/virtual virtual_mailbox_domains = domain1.de, domain2.de, domain3.de, domain4.de, domain5.de virtual_mailbox_maps = hash:/etc/postfix/virt_mailbox_maps virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp Die TLS-Zertifikate scheinen noch nicht zu funktionieren, hier bin ich aber noch dabei herauszufinden, was da nicht klappt. Melde mich diesbezüglich nochmal, wenn ich nicht weiterkomme. Jetzt möchte ich gerne eine Mailweiterleitung neben dem Empfang in einer Mailbox einrichten. In /etc/postfix/virt_mailbox_maps habe ich den Eintrag für die Mailbox angelegt kontakt@domain3.de kontakt@domain3.de In /etc/postfix/virtual habe ich den Eintrag für die Weiterleitung angelegt kontakt@domain3.de info@domain27.de, kontakt@domain3.de Das scheint aber nicht zu funktionieren, da hier nur weitergeleitet wird. Die Weiterleitung hat Priorität. Wie erreiche ich, dass auch die lokale Mailbox mit der Mail gefüllt wird? 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
Treebeard wrote:
rccyrus restart su - cyrus cyradm localhost localhost>cm user@domain1.de localhost>lm user@domain1.de user@domain1.de (\HasNoChildren) Ja, das hat geklappt.
Angelegt wird er dann in /var/spool/imap/domain/domain1.de/user1/
Gerade noch einmal getestet mit Suse 10.2. Ja, unter Suse 10.1 ist es der gleiche Pfad.
Nach Anlegen mehrerer Mailboxen und Weiterleitungen klappt das auch schon ganz gut.
Hier ist jetzt der aktuelle Stand der main.cf:
#postconf -n alias_maps = hash:/etc/aliases broken_sasl_auth_clients = yes 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 local_recipient_maps = mail_owner = postfix mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp mailq_path = /usr/bin/mailq manpage_directory = /usr/share/man mydestination = mydomain =domain1.de myhostname = mail.domain1.de myorigin = $mydomain 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 smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient,
Die HELO-Restrictions kannst du komplett leer lassen, die Checks hier sind bereits in smtpd_recipient_restrictions eingesetzt.
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, permit_tls_clientcerts, reject_unauth_destination, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination,
Hier genauso, lasse sie lieber leer, sie bringen absolut keinen Vorteil und vergrößern nur Konfiguration und Aufwand bei Postfix.
smtpd_tls_CAfile = /etc/postfix/cacert.pem smtpd_tls_ask_ccert = yes smtpd_tls_cert_file = /etc/postfix/mail_signed_cert.pem smtpd_tls_key_file = /etc/postfix/mailkey.pem smtpd_use_tls = yes unknown_local_recipient_reject_code = 550 virtual_alias_maps = hash:/etc/postfix/virtual virtual_mailbox_domains = domain1.de, domain2.de, domain3.de, domain4.de, domain5.de virtual_mailbox_maps = hash:/etc/postfix/virt_mailbox_maps virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp
Die TLS-Zertifikate scheinen noch nicht zu funktionieren, hier bin ich aber noch dabei herauszufinden, was da nicht klappt. Melde mich diesbezüglich nochmal, wenn ich nicht weiterkomme.
Jetzt möchte ich gerne eine Mailweiterleitung neben dem Empfang in einer Mailbox einrichten.
In /etc/postfix/virt_mailbox_maps habe ich den Eintrag für die Mailbox angelegt kontakt@domain3.de kontakt@domain3.de
In /etc/postfix/virtual habe ich den Eintrag für die Weiterleitung angelegt kontakt@domain3.de info@domain27.de, kontakt@domain3.de
Das scheint aber nicht zu funktionieren, da hier nur weitergeleitet wird. Die Weiterleitung hat Priorität. Wie erreiche ich, dass auch die lokale Mailbox mit der Mail gefüllt wird?
Das sollte eigentlich funktionieren. Bitte zeige mal die Logzeilen, wo die Mail hereinkommt bis zum Ausliefern. 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
Die HELO-Restrictions kannst du komplett leer lassen, die Checks hier sind bereits in smtpd_recipient_restrictions eingesetzt.
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination,
Hier genauso, lasse sie lieber leer, sie bringen absolut keinen Vorteil und vergrößern nur Konfiguration und Aufwand bei Postfix. Leer lassen oder ganz weglassen?
Das sollte eigentlich funktionieren. Tut es auch, sorry, habe den Eintrag zur falschen Domain zugeordnet. Es klappt so wie ich im letzten Posting geschrieben hatte:
/etc/postfix/virtual: kontakt@domain2.de info@domain27.de kontakt@domain3.de info@domain27.de, kontakt@domain3.de <--richtig Das war meine Fehlkonfiguration in /etc/postfix/virtual: kontakt@domain2.de info@domain27.de, kontakt@domain3.de <--falsch!!! kontakt@domain3.de info@domain27.de <--natürlich keine Ablage in Mailbox von kontakt@domain3.de
Bitte zeige mal die Logzeilen, wo die Mail hereinkommt bis zum Ausliefern.
Hat sich damit erledigt. Der Vollständigkeit halber: Jan 17 20:51:35 tux postfix/smtpd[31905]: connect from ug-out-1314.google.com[66.249.92.175] Jan 17 20:51:36 tux postfix/smtpd[31905]: 1633121DD6: client=ug-out-1314.google.com[66.249.92.175] Jan 17 20:51:36 tux postfix/cleanup[31908]: 1633121DD6: message-id=<fd243c50701171149r700903a3r266637b138454a4a@mail.gmail.com> Jan 17 20:51:36 tux postfix/qmgr[30790]: 1633121DD6: from=<myaccount@googlemail.com>, size=1575, nrcpt=2 (queue active) Jan 17 20:51:36 tux postfix/smtp[31910]: 1633121DD6: to=<info@domain27.de>, orig_to=<kontakt@domain3.de>, relay=mail.domain27.de[XX.XX.XXX.XXX], delay=0, status=sent (250 2.0.0 l0HJnVLI016380 Message accepted for delivery) Jan 17 20:51:36 tux postfix/lmtp[31909]: 1633121DD6: to=<kontakt@domain3.de>, relay=/var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp], delay=0, status=sent (250 2.1.5 Ok) Jan 17 20:51:36 tux postfix/qmgr[30790]: 1633121DD6: removed Demnach alles okay. Danke und 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
Treebeard wrote:
Die HELO-Restrictions kannst du komplett leer lassen, die Checks hier sind bereits in smtpd_recipient_restrictions eingesetzt.
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination,
Hier genauso, lasse sie lieber leer, sie bringen absolut keinen Vorteil und vergrößern nur Konfiguration und Aufwand bei Postfix. Leer lassen oder ganz weglassen?
Beides hat den gleichen Effekt, da der Default leer ist. katgar:~ # postconf -d smtpd_helo_restrictions smtpd_helo_restrictions = katgar:~ # postconf -d smtpd_sender_restrictions smtpd_sender_restrictions = Am besten lasse sie einfach weg, dann tauchen sie auch nicht verwirrend in "postconf -n" auf.
Das sollte eigentlich funktionieren.
Tut es auch, sorry, habe den Eintrag zur falschen Domain zugeordnet. Es klappt so wie ich im letzten Posting geschrieben hatte:
/etc/postfix/virtual: kontakt@domain2.de info@domain27.de kontakt@domain3.de info@domain27.de, kontakt@domain3.de <--richtig
Sehr schön! 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
Am Sunday 17 December 2006 00:42 schrieb Treebeard:
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
Nein, das sollte wirklich bei der Distro dabei sein.
Ich kenne das, dass das Login-Modul sich mit im Cyrus-SASL Paket selber befindet. Alle anderen haben ein eigenes Paket. Prüf mal im /usr/lib(64)/sasl2/ ob sich dort liblogin.* Dateien befinden.
Ist es aber nicht. Habe in yast mit der Suche alles abgesucht. Ich werde wohl darauf veruciten müssen.
Grmpf, ich meinte ja LOGIN. Nimm das LOGIN solange aus der Liste der Mechanismen heraus, wie du Login nicht installiert hast.
Okay, Login ist herausgenommen.
# cat /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain
Habe es auch aus der /etc/imapd.conf herausgenommen.
-- Andreas -- 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
Andreas Winkelmann schrieb am 17.12.2006 10:44:
Am Sunday 17 December 2006 00:42 schrieb Treebeard:
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
Nein, das sollte wirklich bei der Distro dabei sein.
Ich kenne das, dass das Login-Modul sich mit im Cyrus-SASL Paket selber befindet. Alle anderen haben ein eigenes Paket.
Das ist doch inkonsequent, oder?
Prüf mal im /usr/lib(64)/sasl2/ ob sich dort liblogin.* Dateien befinden.
Ja, liblogin.* Dateien sind im Verzeichnis # ls -l liblogin.* lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so -> liblogin.so.2.0.21 lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so.2 -> liblogin.so.2.0.21 -rwxr-xr-x 1 root root 16856 Oct 26 21:52 liblogin.so.2.0.21 Demnach sollte es möglich sein, auch LOGIN verwenden zu können.
Ist es aber nicht. Habe in yast mit der Suche alles abgesucht. Ich werde wohl darauf veruciten müssen.
Grmpf, ich meinte ja LOGIN. Nimm das LOGIN solange aus der Liste der Mechanismen heraus, wie du Login nicht installiert hast.
Okay, Login ist herausgenommen.
# cat /usr/lib64/sasl2/smtpd.conf pwcheck_method: saslauthd mech_list: plain
Habe es auch aus der /etc/imapd.conf herausgenommen.
-- 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
Treebeard wrote:
Andreas Winkelmann schrieb am 17.12.2006 10:44:
Am Sunday 17 December 2006 00:42 schrieb Treebeard:
cyrus-sasl-login wird mir per yast nicht angeboten. Steckt das in einem anderen Paket drin? Oder muss das per Hand installiert werden?
Nein, das sollte wirklich bei der Distro dabei sein.
Ich kenne das, dass das Login-Modul sich mit im Cyrus-SASL Paket selber befindet. Alle anderen haben ein eigenes Paket.
Das ist doch inkonsequent, oder?
Prüf mal im /usr/lib(64)/sasl2/ ob sich dort liblogin.* Dateien befinden.
Ja, liblogin.* Dateien sind im Verzeichnis
# ls -l liblogin.* lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so -> liblogin.so.2.0.21 lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so.2 -> liblogin.so.2.0.21 -rwxr-xr-x 1 root root 16856 Oct 26 21:52 liblogin.so.2.0.21
Demnach sollte es möglich sein, auch LOGIN verwenden zu können.
Dann setze LOGIN wieder dazu in /usr/lib64/sasl2/smtpd.conf und in /etc/imapd.conf. LOGIN wird von Microsoft-Clients verwendet. Wenn das bei dir notwendig ist, solltest du villeicht auch noch "broken_sasl_auth_clients = yes" in main.cf setzen. Nach einem "postfix reload" sollte dann in der AUTH-Zeile auch LOGIN angezeigt werden und die Authentifikation auch mit dem Microsoft-Client funktionieren. 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
Prüf mal im /usr/lib(64)/sasl2/ ob sich dort liblogin.* Dateien befinden.
Ja, liblogin.* Dateien sind im Verzeichnis
# ls -l liblogin.* lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so -> liblogin.so.2.0.21 lrwxrwxrwx 1 root root 18 Oct 26 21:52 liblogin.so.2 -> liblogin.so.2.0.21 -rwxr-xr-x 1 root root 16856 Oct 26 21:52 liblogin.so.2.0.21
Demnach sollte es möglich sein, auch LOGIN verwenden zu können.
Dann setze LOGIN wieder dazu in /usr/lib64/sasl2/smtpd.conf und in /etc/imapd.conf. LOGIN wird von Microsoft-Clients verwendet. Wenn das bei dir notwendig ist, solltest du villeicht auch noch "broken_sasl_auth_clients = yes" in main.cf setzen.
Nach einem "postfix reload" sollte dann in der AUTH-Zeile auch LOGIN angezeigt werden und die Authentifikation auch mit dem Microsoft-Client funktionieren. Ja, es klappt jetzt auch mit einem MS-Client. Wenn Microsoft Outlook oder Outlook Express als Mailclient benutzt wird muss neben PLAIN auch die LOGIN-Methode gesetzt sein (sowohl in /etc/imapd.conf als auch in /usr/lib64/sasl2/smtpd.conf).
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
Am Thursday 14 December 2006 23:36 schrieb Sandy Drobic:
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
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
Wietse hat als Default für die alias_maps einen nis: Eintrag. # postconf -d alias_maps alias_maps = hash:/etc/aliases, nis:mail.aliases Dieser muss entfernt werden. Also alias_maps = hash:/etc/aliases in main.cf. Dann verschwindet auch der NIS-Fehler. -- Andreas -- 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
Andreas Winkelmann schrieb am 17.12.2006 10:46:
Am Thursday 14 December 2006 23:36 schrieb Sandy Drobic:
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
Du hast in /etc/nsswitch.conf nis in passwd/user/group gesetzt. Nimm das mal raus.
Wietse hat als Default für die alias_maps einen nis: Eintrag.
# postconf -d alias_maps alias_maps = hash:/etc/aliases, nis:mail.aliases
Dieser muss entfernt werden. Also
alias_maps = hash:/etc/aliases
in main.cf. Dann verschwindet auch der NIS-Fehler.
Danke, das bestätigt meine Vermutung. -- 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
Am Thursday 07 December 2006 09:34 schrieb Sandy Drobic:
ldd /usr/lib/cyrus/bin/imapd | grep libsasl2
libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00002acd9cab1000) sieht ganz gut aus...
Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll.
So hatte ich mir das vorgestellt.
Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet.
So sieht das bei mir aus. Ich hatte das auch schon über den saslauthd probiert (und nicht über auxprop) cat /etc/pam.d/smtp auth sufficient pam_mysql.so user=mail passwd=MAILPASSWORD 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 required pam_mysql.so user=mail passwd=MAILPASSWAORD host=localhost \ db=mail table=accountuser usercolumn=username \ passwdcolumn=password crypt=1 logtable=log \ logmsgcolumn=msg logusercolumn=user loghostcolumn=host \ logpidcolumn=pid logtimecolumn=time
Müssen hier eigentlich die Backslashes weg?
Wenn ich das richtig sehe, benutzt du einen Patch für Cyrus SASL, um die Passwörter verschlüsselt in der SQL-Datenbank abzulegen.
Woran siehst Du das? Dieser Patch wird für das sql-Auxprop Plugin benötigt, nicht für saslauthd/pam/pam_mysql.
Damit wird jedoch wieder die Möglichkeit versperrt, Shared-Secret-Mechanismen wie Digest-MD5 und Cram-MD5 zu verwenden, es bleiben also tatsächlich nur PLAIN und LOGIN als Mechanismen übrig.
Jetzt hoffe ich mal, dass die Kompilation von Cyrus Sasl sauber funktioniert hat (inklusive des Patches).
Nur zur Information: sollten Sicherheitslücken auftreten in Cyrus/Cyrus Sasl, wirst du aus den Quellen neu kompilieren müssen. (^-^)
Ob die PAM-Konfiguration richtig ist, kann ich nicht sagen, ich habe das bisher nicht über PAM gemacht.
Gibt es die entsprechenden User auch in passwd?
Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s'
%s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben.
Hier müssten wohl einge Tabellen miteinander verknüpft werden, da ich die Datenbankstruktur von web-cyradm benutzt habe: # Database : `mail` # -------------------------------------------------------- # Table structure for table `accountuser` #
CREATE TABLE accountuser ( username varchar(255) binary NOT NULL default '', password varchar(30) binary NOT NULL default '', prefix varchar(50) NOT NULL default '', domain_name varchar(255) NOT NULL default '', UNIQUE KEY username (username) ) TYPE=MyISAM;
# --------------------------------------------------------
Die Passwörter liegen also in accountuser und sind mit ENCRYPT einwegverschlüsselt.
Habe noch eine Verständnisfrage: Der %s Suchstring sollte doch nicht die Emailadresse sein oder?
%s ist die Eingabe, die in die Abfrage einfließt. Du kannst dies trennen mit %u (localpart) und %d (domain).
sql_statement: select password from accountuser where username = '%u' and domain_name = '%d'
Dann wird usera@example.com aufgeteilt in:
select password from accountuser where username = usera and domain_name = example.com
Hmm, es gibt im sql Auxprop Plugin von Cyrus-SASL lediglich 4 Variablen. %u Username %r Realm %v Meist "userPassword" %p Password Die letzten beiden werden nur zum Ändern von Passwörtern gebraucht. Es gibt kein %s oder %d. -- Andreas -- 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
Am Wednesday 06 December 2006 18:23 schrieb Sandy Drobic:
Nö, das ist schon in Ordnung so. Obwohl die Authentifikation über SQL ohne saslauthd erfolgen wird. Der hängt also nur noch in der Gegend rum. Nur, wenn saslauthd auf PAM zugreift und unter PAM das SQL-Plugin konfiguriert wird, kann man in Postfix/Cyrus sagen, dass über Saslauthd authentifiziert werden soll. Dann greift saslauthd auf PAM zu und das SQL-Modul muss entsprechend konfiguriert werden, damit es auf die richtige Benutzerdatenbank zugreift und dafür auch den erlaubten User verwendet.
Setze mal deine Daten ein in /usr/lib64/sasl2/smtpd.conf: pwcheck_method: auxprop auxprop_plugin: sql mech_list: plain login cram-md5 digest-md5 sql_engine: mysql sql_hostnames: localhost sql_user: mysql-user sql_passwd: mysql-password sql_database: mysql-database sql_statement: select Password from userdatabase where EmailAddress='%s'
%s ist der eingegebene Suchstring. Einzelheiten kannst du nachlesen unter "man 5 mysql_table". Dort stehen die verschiedenen Suchstrings beschrieben.
Hmm, man 5 mysql_table ist Postix. Das sql-Auxprop Plugin ist von Cyrus-SASL. Das sind zwei unterschiedliche Dinge.
Passe bitte den Select-Befehl an auf deine Datenbank.
Und wieso auf einmal das sql-Auxprop Plugin, wenn er saslauthd benuzen will? -- Andreas -- 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
Am Wednesday 06 December 2006 00:00 schrieb Sandy Drobic:
wie kann ich das Logging von saslauthd einschalten? In meiner /usr/lib64/sasl2/smtpd.conf steht pwcheck_method: auxprop mech_list: plain login log_level: 7
Wird AFAIK nicht ausgewertet, der Loglevel.
Richtig. Cyrus-SASL hat eine interne Funktion, die das Logging regelt. Diese Funktion wertet die Option "log_level" aus und schickt selbstständig je nach Loglevel die Meldungen an Syslog. Postfix überschreibt bzw. ersetzt diese Funktion. Dadurch werden alle Logmeldungen von Cyrus-SASL an Postfix geschickt und dieses sendet sie dann an syslog weiter. Das aussortieren bzw. herabsetzen/heraufsetzen des Log-Levels gschieht dann über die Postfixeigene Konfiguration und zwar als Parameter "-v" am smtpd bzw. smtp/lmtp. (ohne) = Error, Warning, Fail -v = Info, Note -vv = Debug, Trace, Pass "log_level" wird von Postfix nicht gelesen/ausgewertet.Daher ist es im Zusammenhang mt Postfix sinnlos. Zu beachten hierbei ist, dass Postfix noch bis einschliesslich Version 2.2 nur Error, Warning, Fail und Note geloggt hat. Erst ab 2.3 werden auch die restlichen Info, Debug, Trace und Pass an syslog weitegeleitet. Diese sind vorher ignoriert worden.
Habe also das Loglevel hochgesetzt.
-- Andreas -- 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
Am Tuesday 05 December 2006 23:16 schrieb Treebeard:
wie kann ich das Logging von saslauthd einschalten? In meiner /usr/lib64/sasl2/smtpd.conf steht pwcheck_method: auxprop
Wenn Du saslauthd benutzen willst, muss es hier "pwcheck_method: saslauthd" heissen. Sonst bringt ein hochsetzen eines Loglevels von saslauthd eher weniger.
mech_list: plain login log_level: 7
Habe also das Loglevel hochgesetzt. Habe gelesen, dass die Logdateien per Hand angelegt werden müssen: touch /var/log/auth.log
Hmmm....leider wird nichts gelogged
Wo kann ich nachsehen, wie das Logging funktioniert? Und wie und wo wird das bei euch gelogged?
Beende saslauthd und starte ihn mit gleichen Parametern aus der Console mit einem zusätzlchen "-d" für Deug. Dann gibt er meist hilfreiche Informationen in der Console aus. # salauthd -da ... ... -- Andreas -- 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
participants (4)
-
Andreas Winkelmann
-
Martin Zambo
-
Sandy Drobic
-
Treebeard