[Postfixbuch-users] SASL/auxprop mag nicht mit /etc/postfix/sasl_passwd.db
Patrick Ben Koetter
p at state-of-mind.de
Mi Jun 18 00:02:47 CEST 2008
* Olaf Lautenschlaeger <postfixbuch-users at listi.jpberlin.de>:
>
> Postfix 2.4.5, Cyrus IMAP 2.3.8, Cyrus SASL 2.1.22
> auf openSuSE 10.3-x86_64
>
> Liebe Liste,
>
> ich bin hier langsam ratlos.
>
> Mein neuer Mailserver lief bisher im Testmodus
> mit leerer "local_recipient_maps"-Direktive (und
> einem "catchall"-Account).
>
> Dann habe ich einige Accounts in "/etc/sasldb2"
> nach diesem Schema eingepflegt:
>
> cyradmin at FQDN: userPassword
>
> Der cyradmin-User steht nicht in der "/etc/passwd",
> d.h. es ist Login per SASL-auxprop/sasldb in der
> "imapd.conf" eingestellt.
>
> Zugriff mit Thunderbird als remote-Client auf die
> Postfächer, sowie cyradm lokal - alles lief zur
> Zufriedenheit (aber nur mit dem FQDN als Realm,
> dazu am Ende noch eine Nebenfrage).
>
> Dann wollte ich Postfix und Cyrus IMAP so um-
> konfigurieren, dass "/etc/postfix/sasl_passwd.db"
> verwendet wird:
Die Datei /etc/postfix/sasl_passwd.db ist nicht für dem Postfix smtpd daemon,
der Clients authentifiziert, sondern für den Postfix smtp client, wenn er sich
bei anderen Servern anmelden muss. Du kannst Du /etc/postfix/sasl_passwd.db
also nicht benutzen, um die Anmeldedaten für User Deines Mailsystems - Postfix
und Cyrus IMAP - dort abzulegen. sasldb ist schon ein guter Start. Was fehlt
Dir noch?
> main.cf:
> ---
> alias_maps = hash:/etc/postfix/aliases
> # Symlinks in /etc zu "postfix/aliases" und
> # "postfix/aliases.db" sind auch vorhanden
> alias_database = $alias_maps
> local_recipient_maps = hash:/etc/postfix/sasl_passwd,
Bitte lies die Dokumentationen! Eine Authentifizierungsdatenbank hat wirklich
nichts in einer Direktive zu suchen, die auf Tabellen mit gültigen Lokalen
Usern verweist.
> $alias_maps
> ---
> (postconf -n sowie master.cf ganz am Ende)
>
>
> /etc/imapd.conf:
> ---
> sasl_pwcheck_method: auxprop
> sasl_auxprop_plugin: sasldb
> sasl_sasldb_path: /etc/postfix/sasl_passwd.db
Geht nicht.
> # hiermit geht wenigstens cyradm:
> # sasl_sasldb_path: /etc/sasldb2.SAV
>
> sasl_mech_list: plain login
> sasl_log_level: 7
>
> syslog_prefix: Cyrus
> admin: cyradmin
> reject8bit: no
> munge8bit: no
> username_tolower: yes
> ---
>
> (in "/etc/sasl2/smtpd.conf" analog:)
> ---
> pwcheck_method: auxprop
> auxprop_plugin: sasldb
> sasldb_path: /etc/postfix/sasl_passwd.db
Nein. Ist sowas irgendwo dokumentiert? Den sasldb_path musst/sollst Du nur
dann angeben, wenn die sasldb nicht in /etc/sasldb2 liegt. In der Regel also
einfach weglassen.
> mech_list: plain login
> log_level: 7
> ---
> (aber das ist IMHO hierfür noch irrelevant)
>
> Die Rechte von "/etc/postfix/sasl_passwd" sind
> auf root:mail/640 gesetzt. In der Gruppe mail
> sind die User postfix, cyrus sowie mail.
>
> Ohne diese Rechte hat sich der imapd beschwert,
> dass er nicht auf die "sasl_passwd.db" zugreifen kann.
> Ergo hat er begriffen, dass er nicht mehr mit
> der "/etc/sasldb2" rummachen soll.
>
> Und in "/etc/postfix/sasl_passwd" sind jeweils
> die Accounts als
>
> user user:passwd
> user at hostname user:passwd
> user at hostname.domain.tld user:passwd
> user at mail.domain.tld user:passwd
>
> usw. eingepflegt, d. h. alle möglicherweise in
> Frage kommenden Realms.
>
> Mit dieser Konfiguration hat Local Delivery noch
> prima hingehauen (SMTP per telnet von localhost).
>
> Nur klappt jetzt das Login vom IMAP-Client (Thun-
> derbird mit und ohne SSL) beim Cyrus nicht mehr.
>
> Im Log steht:
> ---
> Cyrus/imaps: starttls: TLSv1 with cipher .. no authentication
> Cyrus/imaps: badlogin: clienthost.domain.tld [IP] login
> [SASL(-13): user not found: checkpass failed]
> Cyrus/imaps: badlogin: clienthost.domain.tld [IP] plaintext
> <user> SASL(-13): user not found: checkpass failed
> ---
>
> Ausserdem fällt auf, dass ein Aufruf von
>
> $ sasldblistusers2 -f /etc/postfix/sasl_passwd.db
>
> folgenden Fehler ins Syslog schreibt:
> ---
> sasldblistusers2: Bad key in _sasldb_parse_key
> syslog-ng: last message repeated 159906 times
> ---
>
> Sobald ich in "/etc/imapd.conf" wieder auf
>
> sasl_sasldb_path: /etc/sasldb2.SAV
>
> zurückschalte, geht wenigstens das Login
> von cyradm, und mit einem passenden Usereintrag
> per saslpasswd2 auch das Remote-Login per SSL
> in die entsprechende Mailbox.
>
> Sieht so aus, als wenn saslauthd/auxprop nicht mit der
> von Postfix/postmap generierten .db zusammen mag.
> Eigentlich sollte die doch ein zur "/etc/sasldb2" äqui-
> valentes .db-File darstellen?!
>
> Muss ich diese Map irgendwie anders aufbauen?
>
> Wie man Postfix überredet, "/etc/sasldb2" zu verwenden,
> ist mir leider im Moment nicht klar (Symlink geht auch
> nicht) und zwei physisch getrennte Tabellen zu haben, ist
> ja wohl indiskutabel.
>
> Interessehalber habe ich noch mal
>
> $ file /etc/sasldb2.SAV
>
> und
>
> $ file /etc/postfix/sasl_passwd.db
>
> verglichen. Beides liefert
>
> Berkeley DB (Hash, version 8, native byte-order)
>
> und
>
> $/etc/postfix # postmap -s sasl_passwd
>
> liest auch brav alle Einträge aus.
>
> Nebenfrage: weil mir dabei nicht ganz klar ist,
> ob sich die Realms nur nach der Vorgabe in der
> .db oder auch nach dem tatsächlichen Hostnamen
> oder anderen Fakten (IMAP-Client) richten, oder ob
> und wie man ggf. auch einen leeren Realm verwenden
> könnte, und weil der Server bei Umstellung auf Pro-
> duktionsbetrieb einen anderen Namen bekommt, habe
> ich jeweils mehrere User/Realms nach diesem Schema
> eingepflegt:
>
> cyradmin at hostname
> cyradmin at hostname.domain.tld
> cyradmin at domain.tld
> cyradmin at mail.domain.tld
>
> usw. - was muss man tun, damit man ggf. nur einen
> Eintrag pro Account braucht, auch wenn der Hostname
> sich mal ändert? Gibt es eine Direktive für Postfix
> analog zu "loginrealm" in "imapd.conf"?
>
> Für jede Hilfe dankbar
>
> Olaf Lautenschläger
>
> Anhang:
>
> $ postconf -n:
> ---
> 2bounce_notice_recipient = postmaster
> alias_database = $alias_maps
> alias_maps = hash:/etc/postfix/aliases
> biff = no
> bounce_notice_recipient = mail-errors
> bounce_size_limit = 4095
> canonical_maps = hash:/etc/postfix/canonical
> command_directory = /usr/sbin
> config_directory = /etc/postfix
> daemon_directory = /usr/lib/postfix
> debug_peer_level = 2
> delay_notice_recipient = mail-errors
> delay_warning_time = 4h
> disable_dns_lookups = no
> disable_mime_output_conversion = no
> error_notice_recipient = mail-errors
> header_checks = regexp:/etc/postfix/header_checks
> html_directory = /usr/share/doc/packages/postfix/html
> in_flow_delay = 1s
> inet_interfaces = 192.168.xxx.yyy, 127.0.0.1
> inet_protocols = ipv4
> local_recipient_maps = hash:/etc/postfix/sasl_passwd, $alias_maps
> mail_owner = postfix
> mail_spool_directory = /var/spool/mail
> mailbox_size_limit = 0
> mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
> mailq_path = /usr/bin/mailq
> manpage_directory = /usr/share/man
> masquerade_classes = envelope_sender, envelope_recipient, header_recipient
> masquerade_domains = !somehost.domain.tld !anotherhost.domain.tld
> !newmail.intranet.domain.tld !mail.intranet.domain.tld domain.tld
> masquerade_exceptions = root, mailer-daemon, postmaster, mail-errors
> message_size_limit = 20480000
> mydestination = hash:/etc/postfix/mydestinations, $myhostname, $mydomain,
> localhost
> mydomain = intranet.domain.tld
> myhostname = newmail.intranet.domain.tld
> mynetworks = 127.0.0.0/8, 192.168.xxx.0/24, noch.ein.netz.werk/26
> mynetworks_style = subnet
> newaliases_path = /usr/bin/newaliases
> notify_classes = resource, software, 2bounce, delay
> propagate_unmatched_extensions = canonical, virtual, alias
> proxy_interfaces = mail.domain.tld
> queue_directory = /var/spool/postfix
> readme_directory = /usr/share/doc/packages/postfix/README_FILES
> recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
> recipient_delimiter = +
> relayhost = mail.intranet.domain.tld
> relocated_maps = hash:/etc/postfix/relocated
> sample_directory = /usr/share/doc/packages/postfix/samples
> sender_canonical_maps = hash:/etc/postfix/sender_canonical
> sendmail_path = /usr/sbin/sendmail
> setgid_group = maildrop
> show_user_unknown_table_name = yes
> smtp_sasl_auth_enable = no
> smtp_use_tls = no
> smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
>
> smtpd_client_restrictions = permit_mynetworks, check_client_access
> hash:/etc/postfix/access,
> reject_rbl_client ix.dnsbl.manitu.net,
> reject_rbl_client sbl-xbl.spamhaus.org,
> reject_unauth_pipelining
>
> smtpd_delay_reject = yes
> smtpd_etrn_restrictions = permit_mynetworks, reject
> smtpd_hard_error_limit = 3
> smtpd_helo_required = yes
>
> smtpd_helo_restrictions = permit_mynetworks,
> check_helo_access hash:/etc/postfix/helo_access,
> reject_invalid_helo_hostname,
> reject_unauth_pipelining
>
> smtpd_recipient_restrictions = permit_mynetworks,
> reject_unauth_destination,
> reject_non_fqdn_recipient,
> reject_unknown_recipient_domain,
> check_recipient_access hash:/etc/postfix/rcpt_access,
> reject_unauth_pipelining
>
> smtpd_sasl_auth_enable = no
> smtpd_sasl_local_domain =
> smtpd_sasl_path = smtpd
>
> smtpd_sender_restrictions = permit_mynetworks,
> check_sender_access hash:/etc/postfix/sender_access,
> reject_non_fqdn_sender,
> reject_unknown_sender_domain,
> reject_unauth_pipelining
>
> smtpd_tls_CAfile = .ssl/cacert.pem
> smtpd_tls_cert_file = .ssl/newmail.intranet.domain.tld.pem
> smtpd_use_tls = no
> soft_bounce = yes
> strict_8bitmime = no
> strict_rfc821_envelopes = yes
> transport_maps = hash:/etc/postfix/transport
> unknown_address_reject_code = 554
> unknown_client_reject_code = 450
> unknown_hostname_reject_code = 450
> unknown_local_recipient_reject_code = 550
> virtual_alias_maps = hash:/etc/postfix/virtual
> ---
>
> ###
> ###
>
>
> "/etc/postfix/master.cf":
> ---
> smtp inet n - n - - smtpd
> -o content_filter=amavisfeed:[127.0.0.1]:10024
>
> 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
> -o content_filter=amavisfeed:[127.0.0.1]:10024
> -o smtp_generic_maps=pcre:/etc/postfix/rewrite_outgoing.pcre
>
> # 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
> scache unix - - n - 1 scache
>
> # an smtp daemon for re-injection from amavisd:
> localhost:10025
> inet n - n - - smtpd
> -o content_filter=
> -o smtpd_delay_reject=no
> -o smtpd_client_restrictions=permit_mynetworks,reject
> -o smtpd_helo_restrictions=
> -o smtpd_sender_restrictions=
> -o smtpd_recipient_restrictions=permit_mynetworks,reject
> -o smtpd_data_restrictions=reject_unauth_pipelining
> -o smtpd_end_of_data_restrictions=
> -o smtpd_restriction_classes=
> -o mynetworks=127.0.0.0/8
> -o smtpd_error_sleep_time=0
> -o smtpd_soft_error_limit=1001
> -o smtpd_hard_error_limit=1000
> -o smtpd_client_connection_count_limit=0
> -o smtpd_client_connection_rate_limit=0
> -o receive_override_options=no_header_body_checks,
> no_unknown_recipient_checks, no_milters
> -o local_header_rewrite_cients=
>
> # Interfaces to non-Postfix software. Be sure to examine the manual
> #
> 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 - - pipe
> flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender}
> ${recipient}
> retry unix - - n - - error
>
> # for delivery to amavisd (content_filter)
> # (see <doc>/packages/amavisd-new/README_FILES/README.postfix.html):
> amavisfeed unix - - n - 2 lmtp
> -o lmtp_data_done_timeout=1200
> -o lmtp_send_xforward_command=yes
> -o disable_dns_lookups=no
> -o max_use=20
> ---
>
> (ggf. sorry für's zweimalige Senden dieser Mail an die Liste,
> aber beim ersten Mal hatte ich einen falschen Absender -
> aber der sollte ja eigentlich gar nicht zur Liste durchgelassen
> werden)
>
> --
> ANOVA Multimedia Studios GmbH
>
> fon: (+49) (0) 381 / 40 59 - 550
> fax: (+49) (0) 381 / 40 59 - 551
> web: www.anova.de
> corporate e-mail: info at anova.de
> _______________________________________
>
> ANOVA Multimedia Studios GmbH
>
> Geschaeftsfuehrer:
> Prof. Dr. Hansgeorg Meissner,
> Michael Kaeding,
> Dr. Volker Gries
>
> Firmensitz:
> Joachim-Jungius-Strasse 10,
> D-18059 Rostock / Germany
>
> Registergericht:
> Amtsgericht Rostock
>
> Handelsregisternummer:
> HRB 2788
>
> UST-IdNummer:
> DE 811577650
>
> (footer size due to legal demands applying under german law)
>
> --
> _______________________________________________
> Postfixbuch-users -- http://www.postfixbuch.de
> Heinlein Professional Linux Support GmbH
>
> Postfixbuch-users at listi.jpberlin.de
> https://listi.jpberlin.de/mailman/listinfo/postfixbuch-users
--
Postfix - Einrichtung, Betrieb und Wartung
<http://www.postfix-buch.com>
saslfinger (debugging SMTP AUTH):
<http://postfix.state-of-mind.de/patrick.koetter/saslfinger/>
Mehr Informationen über die Mailingliste Postfixbuch-users