[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