Postfix / SASL2 / MySQL - Access Denied

Postfix, QMail, Sendmail, Dovecot, Cyrus, Courier, Anti-Spam
janc
Posts: 52
Joined: 2003-10-14 14:11

Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-08 12:28

Hallo,

ich habe hier eine Postfix / SASL2 / MySQL / Courier - Kombination laufen. Couriers Authentifizierung funktioniert über MySQL wunderbar. Postfixs Mailverteilung ebenfalls. Aber die SMTP-AUTH - Abfrage von Postfix scheitert. Laut MySQL:

Code: Select all

Access denied for user: 'postfix@localhost' (Using Password: yes)
Also stimmt etwas mit der Username/Password-Kombi nicht. Die Einstellungen in /etc/pam.d/smtp sind aber korrekt und der saslauthd ist auf pam eingestellt. Was mich aber wirklich wundert, wenn ich den Username von postfix auf etwas anderes in /etc/pam.d/smtp umstelle, gibt es trotzdem weiterhin die gleiche Fehlermeldung. Also muss Postfix seine Login-Daten woanders her holen, aber von wo? Mir ist da keine andere Position bekannt. Kann mir da jemand einen Tip geben?

Chroot an/aus und restart/reload selbstverständlich ausprobiert.

Gruss
Jan

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-08 14:55

Hat sich (zumindest für mich) erledigt. Ich habe auf auxprop gewechselt und bisher läuft es wunderbar und vor allem bedeutend einfacher als der Umweg über pam.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

Re: Postfix / SASL2 / MySQL - Access Denied

Post by roi » 2004-01-15 12:15

Hallole,

das gleiche Problem habe ich auch. Die Installation sieht auf den ersten Blick identisch aus. Postfix 2, Courier, MySQL. Alles wunderbar bis auf SMTP-Auth ueber MySQL. Das laesst sich einfach nicht zum laufen bekommen. Deswegen laeuft das momentan ueber SASL2, was natuerlich mega-umstaendlich ist. Eine Ueberpruefung der SMTP-User in der gleichen MySQL-Tabelle, in der auch die Mailbox- und somit POP3/IMAP-User abgelegt sind, waere die Optimalloesung.

Bei mir laeuft das wie bei Jan. MySQL-Fehlermeldung, egal was eigentlich in den entsprechenden Dateien eingetragen ist. Komischerweise macht Postfix dann weiter und ueberprueft den User ueber SASL2, obwohl ich ja auf MySQL-Ueberpruefung umgestellt habe. Das versteh mal einer...

Hat jemand einen Tip oder ein passendes HowTo? :-)

Viele Gruesse,
Roi

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-15 14:08

Hallo Roi,

ich verstehe dein Problem nicht ganz. Warum läßt du es nicht über auxprop (SASL2) laufen? Postfix MySQL-Zugriff ist nicht primär für die SMTP-Authentifzierung gedacht. Dafür besitzt Postfix gar nicht die entsprechenden Authentifzierungsmethoden und nutzt daher SASL. Das der Weg über PAM grausam ist sehe ich auch so. Aber genau deswegen gibt es ja seit SASL2 auxprop und die entsprechenden Module.

Natürlich wäre es schöner, wenn Postfix einen authdaemon wie Courier mitliefern würde, aber das widerspricht wohl Wietses Stil in Postfix nur Dinge zu integrieren für die auch wirklich ein MTA zuständig ist. Alle Authentifzierungen sollten im Idealfall über einen! Daemon laufen. Evtl. läßt sich Couriers ja irgendwann mal anpassen, das er auch mit Postfix zusammen arbeitet. Ich hatte da mal Gerüchte gehört.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-15 14:15

Servus!
JanC wrote:Warum läßt du es nicht über auxprop (SASL2) laufen? Postfix MySQL-Zugriff ist nicht primär für die SMTP-Authentifzierung gedacht. Dafür besitzt Postfix gar nicht die entsprechenden Authentifzierungsmethoden und nutzt daher SASL. Das der Weg über PAM grausam ist sehe ich auch so. Aber genau deswegen gibt es ja seit SASL2 auxprop und die entsprechenden Module.
Also ich hab irgendwie grad nicht so den Durchblick... Deswegen erklaer ich einfach, was ich gerne haette: Moechte, dass SMTP und POP3/IMAP ueber die gleiche Methode bzw gleiche Datenbank ueberprueft werden. In dem Fall waere das MySQL. Der Grund ist einfach, dass so alles schoen wartungsfrei laeuft. Die Leute koennen sich ueber PostfixAdmin ihre POP3/IMAP-User anlegen und genau mit diesen koennen sie auch Auth-SMTP machen. Mache ich das ueber ne SASL2-Datenbank, dann muss ich da immer taetig werden und User anlegen. Find ich laestig.

Und nachdem Postfix ueber Umwege Auth-SMTP ueber ne MySQL-Datenbank machen kann, waere das die Optimalloesung fuer mich. Nur klappt das irgendwie nicht.

Viele Gruesse,
Roi

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-15 15:04

SASL2-Datenbank
Da liegt der Hund begraben. :)
SASL2 ist keine Datenbank, sondern ein Programm, das Authentifizierungsmethoden für andere Programme zur Verfügung stellt. Solange ein Programm mit SASL kommunizieren kann, kann es dadurch mit allen Methoden arbeiten, die SASL unterstützt. Das wiederrum sind z.B. MySQL, LDAP, sasldb ( <-- das ist deine DB ) und andere. Die sasldb ist dabei nur eine (meiner Meinung nach ziemlich unflexible) Möglichkeit. Ich habe genau das am Laufen, was du haben willst. Postfixadmin und alle Auths über ein Mailbox-Table. Früher brauchtest du für SASL noch extra PAM (eine andere Authentifizierung-Bibliothek) was das Ganze ziemlich umständlich machte. Seit SASL 2.0.1~ (ich glaube .14) gibt es aber auxprop. In den kannst du beliebig SASL2 eigene Module einklinken und so ohne PAM arbeiten.

Aber um zu dem zu kommen, was du haben willst. 8)
Deine virtuals laufen mit Postfix direkt über MySQL. Für SMTP-Auth installierst du SASL2. Für den Tabellenaufbau von Postfixadmin2 kommt in die smtpd.conf:

Code: Select all

pwcheck_method: auxprop
auxprop_plugin: mysql
mysql_user: Hier ist wohl
mysql_passwd: klar was hier
mysql_database: rein soll, oder?
mysql_statement: SELECT password FROM mailbox WHERE username='%u@%r'
mysql_verboose: yes
In der main.cf den üblichen smtp_sasl - Kram, aber keine Zugangsdaten zur Datenbank. Das sucht sich Postfix jetzt alles selbst aus der smtpd.conf.
Die liegt übrigens je nach OS an verschiedenen Stellen. Sag einfach Bescheid wenns noch Probleme gibt.

Gruss
Jan
Last edited by janc on 2004-01-17 00:16, edited 1 time in total.

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-16 14:45

Hi!

Jetzt ist der Groschen gefallen und ich hab das auch gleich mal umgesetzt. Leider mit maessigem bzw keinem Erfolg.

Postfix heult sich in der mail.info aus:

Code: Select all

Jan 16 11:51:46 morpheus postfix/smtpd[21903]: fatal: SASL per-process initialization failed
Jan 16 11:51:47 morpheus postfix/master[21509]: warning: process /usr/lib/postfix/smtpd pid 21903 exit status 1
Jan 16 11:51:47 morpheus postfix/master[21509]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Hab alles probiert, hab sogar mal ne Zeile mit

Code: Select all

mysql_hostnames: localhost
in die von Dir vorgeschlagene smtpd.conf eingefuegt, keine Chance.

BTW: Das ganze laeuft bei mir unter Debian 3, folgende Pakete sind installiert:

Code: Select all

ii  libpam-modules 0.76-15        Pluggable Authentication Modules for PAM
ii  libpam-mysql   0.5.0-3        PAM module allowing authentication from a My
ii  libpam-runtime 0.76-15        Runtime support for the PAM library
ii  libpam0g       0.76-15        Pluggable Authentication Modules library
hi  libsasl-digest 1.5.24-11      DIGEST-MD5 Authentication Module for SASL
hi  libsasl-gssapi 1.5.24-15      Pluggable Authentication Modules for SASL -
hi  libsasl-module 1.5.27-3       Basic Pluggable Authentication Modules for S
ii  libsasl2       2.1.15-6       Authentication abstraction library
ii  libsasl2-module 2.1.15-6       Pluggable Authentication Modules for SASL
ii  libsasl2-module-mysql 2.1.15-6       Pluggable Authentication Modules for SASL
hi  libsasl7       1.5.27-3       Authentication abstraction library.
ii  mysql-client   4.0.16-2       mysql database client binaries
ii  mysql-common   4.0.16-2       mysql database common files (e.g. /etc/mysql
ii  mysql-doc      3.23.49-8.5    mysql database documentation
ii  mysql-server   4.0.16-2       mysql database server binaries
ii  postfix        2.0.16-4       A high-performance mail transport agent
ii  postfix-ldap   2.0.16-4       LDAP map support for Postfix
ii  postfix-mysql  2.0.16-4       MYSQL map support for Postfix
ii  postfix-pcre   2.0.16-4       PCRE map support for Postfix
ii  postfix-tls    2.0.16-4       TLS and SASL support for Postfix
Ausserdem faellt mir auf, dass das smtpd.conf dreimal existiert.

/etc/postfix/sasl/smtpd.conf
/usr/lib/sasl/smtpd.conf
/usr/lib/sasl2/smtpd.conf

Habe alle drei Files ersetzt. Kein Erfolg.

Ausserdem faellt mir auf, dass folgende Fehlermeldungen in der mysql.log auftauchen sobald ein Client per SMTP-Auth (das ja momentan noch per sasldb laeuft) ankommt:

Code: Select all

Access denied for user: 'postfix@localhost' (Using password: NO)
Access denied for user: 'postfix@localhost' (Using password: NO)
SMTP-Auth fkt aber trotzdem.

Da blicke mal einer durch. Ich nicht.

Irgendwelche Ideen, ich waere seeehr dankbar, versuche seit Monaten, das in den Griff zu bekommen... :-(

Viele Gruesse,
Roi

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-16 17:31

Das kriegen wir schon hin:
Debian ist schon mal gut, dann ist /etc/postfix/sasl/smtpd.conf die richtige Datei. Sasl 2.1.15 ist auch gut. Nächster Schritt ist die master.cf. Dort setzt du dem smtp - Aufruf in Zeile 74 unter command + args "-v" hinter smtpd. Dann Postfix neustarten. Jetzt wird er deutlich gesprächiger. Guck mal, was du jetzt aus der auth.log und mail.info rauskriegen kannst und poste das.
Access denied for user: 'postfix@localhost' (Using password: NO)
Access denied for user: 'postfix@localhost' (Using password: NO)
Das ist insofern schon mal gut, weil Postfix dann auf jeden Fall Kontakt zu MySQL bekommt.
SMTP-Auth fkt aber trotzdem.
Dann ist etwas falsch in der main.cf eingestellt. Poste doch mal deine sasl betreffende Konfiguration. Aber zur Sicherheit, von wo aus testet du SMTP-Auth? Der gleiche Rechner auf dem Postfix läuft hat quasi immer SMTP-Rechte.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-16 18:35

Servus!
JanC wrote:Das kriegen wir schon hin:
:-)
Debian ist schon mal gut, dann ist /etc/postfix/sasl/smtpd.conf die richtige Datei.
D.h., die anderen beiden Dateien werden einfach ignoriert oder nur fuer andere Dinge gebraucht?
Sasl 2.1.15 ist auch gut. Nächster Schritt ist die master.cf. Dort setzt du dem smtp - Aufruf in Zeile 74 unter command + args "-v" hinter smtpd. Dann Postfix neustarten. Jetzt wird er deutlich gesprächiger. Guck mal, was du jetzt aus der auth.log und mail.info rauskriegen kannst und poste das.
Hab ich getan, Postfix neu gestartet und gleich mal SMTP-Auth getestet (Ich teste mit meinem Client von zuhause, dort ist SMTP-Auth mit MD5-Verschluesselung aktiviert, die Settings sind momentan die, die ich normalerweise fuer SMTP-Auth via SASL2DB verwende, die sollte er aber in einem Erfolgsfall als falsch abweisen, da sie nicht mit den Daten des POP-Users uebereinstimmen). Das hier kam dabei raus (da stehen wahrscheinlich alles Sachen zigmal drinnen, aber egal):

Code: Select all

Jan 16 18:17:36 yyy postfix/postfix-script: starting the Postfix mail system
Jan 16 18:17:36 yyy postfix/master[4779]: daemon started -- version 2.0.16
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: mynetworks ~? debug_peer_list
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: mynetworks ~? fast_flush_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: mynetworks ~? mynetworks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? debug_peer_list
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? fast_flush_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? mynetworks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? permit_mx_backup_networks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? qmqpd_authorized_clients
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: relay_domains ~? relay_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: permit_mx_backup_networks ~? debug_peer_list
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: permit_mx_backup_networks ~? fast_flush_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: permit_mx_backup_networks ~? mynetworks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: permit_mx_backup_networks ~? permit_mx_backup_networks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: maps_append: proxy:unix:passwd.byname
Jan 16 18:17:40 yyy postfix/smtpd[4783]: connect to subsystem private/proxymap
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr request = open
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr table = unix:passwd.byname
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr flags = 64
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: status
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: status
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute value: 0
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: flags
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: flags
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute value: 80
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: (end)
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_proxy_open: connect to map=unix:passwd.byname status=0 server_flags=0120
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_open: proxy:unix:passwd.byname
Jan 16 18:17:40 yyy postfix/smtpd[4783]: maps_append: hash:/etc/aliases
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_open: hash:/etc/aliases
Jan 16 18:17:40 yyy postfix/smtpd[4783]: maps_append: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr request = open
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr table = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:17:40 yyy postfix/smtpd[4783]: send attr flags = 64
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: status
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: status
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute value: 0
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: flags
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: flags
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute value: 80
Jan 16 18:17:40 yyy postfix/smtpd[4783]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:17:40 yyy postfix/smtpd[4783]: input attribute name: (end)
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_proxy_open: connect to map=mysql:/etc/postfix/mysql_virtual_alias_maps.cf status=0 server_flags=0120
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_open: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:17:40 yyy postfix/smtpd[4783]: maps_append: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set username to 'postfix'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set password to 'postfix'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set database name to 'postfix'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set table name to 'mailbox'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set select_field to 'maildir'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set where_field to 'username'
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set additional_conditions to ''
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): adding host 'localhost' to list of mysql server hosts
Jan 16 18:17:40 yyy postfix/smtpd[4783]: dict_open: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? debug_peer_list
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? fast_flush_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? mynetworks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? permit_mx_backup_networks
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? qmqpd_authorized_clients
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? relay_domains
Jan 16 18:17:40 yyy postfix/smtpd[4783]: match_string: smtpd_access_maps ~? smtpd_access_maps
Jan 16 18:17:40 yyy postfix/smtpd[4783]: fatal: SASL per-process initialization failed
Jan 16 18:17:41 yyy postfix/master[4779]: warning: process /usr/lib/postfix/smtpd pid 4783 exit status 1
Jan 16 18:17:41 yyy postfix/master[4779]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: mynetworks ~? debug_peer_list
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: mynetworks ~? fast_flush_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: mynetworks ~? mynetworks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? debug_peer_list
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? fast_flush_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? mynetworks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? permit_mx_backup_networks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? qmqpd_authorized_clients
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: relay_domains ~? relay_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: permit_mx_backup_networks ~? debug_peer_list
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: permit_mx_backup_networks ~? fast_flush_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: permit_mx_backup_networks ~? mynetworks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: permit_mx_backup_networks ~? permit_mx_backup_networks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: maps_append: proxy:unix:passwd.byname
Jan 16 18:18:41 yyy postfix/smtpd[4802]: connect to subsystem private/proxymap
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr request = open
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr table = unix:passwd.byname
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr flags = 64
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: status
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: status
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute value: 0
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: flags
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: flags
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute value: 80
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: (end)
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_proxy_open: connect to map=unix:passwd.byname status=0 server_flags=0120
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_open: proxy:unix:passwd.byname
Jan 16 18:18:41 yyy postfix/smtpd[4802]: maps_append: hash:/etc/aliases
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_open: hash:/etc/aliases
Jan 16 18:18:41 yyy postfix/smtpd[4802]: maps_append: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr request = open
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr table = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:18:41 yyy postfix/smtpd[4802]: send attr flags = 64
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: status
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: status
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute value: 0
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: flags
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: flags
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute value: 80
Jan 16 18:18:41 yyy postfix/smtpd[4802]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:18:41 yyy postfix/smtpd[4802]: input attribute name: (end)
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_proxy_open: connect to map=mysql:/etc/postfix/mysql_virtual_alias_maps.cf status=0 server_flags=0120
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_open: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:18:41 yyy postfix/smtpd[4802]: maps_append: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set username to 'postfix'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set password to 'postfix'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set database name to 'postfix'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set table name to 'mailbox'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set select_field to 'maildir'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set where_field to 'username'
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): set additional_conditions to ''
Jan 16 18:18:41 yyy postfix/smtpd[4802]: mysqlname_parse(): adding host 'localhost' to list of mysql server hosts
Jan 16 18:18:41 yyy postfix/smtpd[4802]: dict_open: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? debug_peer_list
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? fast_flush_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? mynetworks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? permit_mx_backup_networks
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? qmqpd_authorized_clients
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? relay_domains
Jan 16 18:18:41 yyy postfix/smtpd[4802]: match_string: smtpd_access_maps ~? smtpd_access_maps
Jan 16 18:18:41 yyy postfix/smtpd[4802]: fatal: SASL per-process initialization failed
Jan 16 18:18:42 yyy postfix/master[4779]: warning: process /usr/lib/postfix/smtpd pid 4802 exit status 1
Jan 16 18:18:42 yyy postfix/master[4779]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: mynetworks ~? debug_peer_list
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: mynetworks ~? fast_flush_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: mynetworks ~? mynetworks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? debug_peer_list
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? fast_flush_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? mynetworks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? permit_mx_backup_networks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? qmqpd_authorized_clients
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: relay_domains ~? relay_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: permit_mx_backup_networks ~? debug_peer_list
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: permit_mx_backup_networks ~? fast_flush_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: permit_mx_backup_networks ~? mynetworks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: permit_mx_backup_networks ~? permit_mx_backup_networks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: maps_append: proxy:unix:passwd.byname
Jan 16 18:19:42 yyy postfix/smtpd[4814]: connect to subsystem private/proxymap
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr request = open
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr table = unix:passwd.byname
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr flags = 64
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: status
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: status
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute value: 0
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: flags
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: flags
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute value: 80
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: (end)
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_proxy_open: connect to map=unix:passwd.byname status=0 server_flags=0120
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_open: proxy:unix:passwd.byname
Jan 16 18:19:42 yyy postfix/smtpd[4814]: maps_append: hash:/etc/aliases
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_open: hash:/etc/aliases
Jan 16 18:19:42 yyy postfix/smtpd[4814]: maps_append: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr request = open
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr table = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:19:42 yyy postfix/smtpd[4814]: send attr flags = 64
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: status
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: status
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute value: 0
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: flags
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: flags
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute value: 80
Jan 16 18:19:42 yyy postfix/smtpd[4814]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:19:42 yyy postfix/smtpd[4814]: input attribute name: (end)
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_proxy_open: connect to map=mysql:/etc/postfix/mysql_virtual_alias_maps.cf status=0 server_flags=0120
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_open: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:19:42 yyy postfix/smtpd[4814]: maps_append: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set username to 'postfix'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set password to 'postfix'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set database name to 'postfix'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set table name to 'mailbox'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set select_field to 'maildir'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set where_field to 'username'
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): set additional_conditions to ''
Jan 16 18:19:42 yyy postfix/smtpd[4814]: mysqlname_parse(): adding host 'localhost' to list of mysql server hosts
Jan 16 18:19:42 yyy postfix/smtpd[4814]: dict_open: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? debug_peer_list
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? fast_flush_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? mynetworks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? permit_mx_backup_networks
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? qmqpd_authorized_clients
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? relay_domains
Jan 16 18:19:42 yyy postfix/smtpd[4814]: match_string: smtpd_access_maps ~? smtpd_access_maps
Jan 16 18:19:42 yyy postfix/smtpd[4814]: fatal: SASL per-process initialization failed
Jan 16 18:19:43 yyy postfix/master[4779]: warning: process /usr/lib/postfix/smtpd pid 4814 exit status 1
Jan 16 18:19:43 yyy postfix/master[4779]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: mynetworks ~? debug_peer_list
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: mynetworks ~? fast_flush_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: mynetworks ~? mynetworks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? debug_peer_list
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? fast_flush_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? mynetworks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? permit_mx_backup_networks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? qmqpd_authorized_clients
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: relay_domains ~? relay_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: permit_mx_backup_networks ~? debug_peer_list
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: permit_mx_backup_networks ~? fast_flush_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: permit_mx_backup_networks ~? mynetworks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: permit_mx_backup_networks ~? permit_mx_backup_networks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: maps_append: proxy:unix:passwd.byname
Jan 16 18:20:43 yyy postfix/smtpd[4846]: connect to subsystem private/proxymap
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr request = open
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr table = unix:passwd.byname
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr flags = 64
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: status
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: status
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute value: 0
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: flags
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: flags
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute value: 80
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: (end)
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_proxy_open: connect to map=unix:passwd.byname status=0 server_flags=0120
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_open: proxy:unix:passwd.byname
Jan 16 18:20:43 yyy postfix/smtpd[4846]: maps_append: hash:/etc/aliases
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_open: hash:/etc/aliases
Jan 16 18:20:43 yyy postfix/smtpd[4846]: maps_append: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr request = open
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr table = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:20:43 yyy postfix/smtpd[4846]: send attr flags = 64
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: status
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: status
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute value: 0
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: flags
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: flags
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute value: 80
Jan 16 18:20:43 yyy postfix/smtpd[4846]: private/proxymap socket: wanted attribute: (list terminator)
Jan 16 18:20:43 yyy postfix/smtpd[4846]: input attribute name: (end)
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_proxy_open: connect to map=mysql:/etc/postfix/mysql_virtual_alias_maps.cf status=0 server_flags=0120
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_open: proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
Jan 16 18:20:43 yyy postfix/smtpd[4846]: maps_append: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set username to 'postfix'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set password to 'postfix'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set database name to 'postfix'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set table name to 'mailbox'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set select_field to 'maildir'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set where_field to 'username'
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): set additional_conditions to ''
Jan 16 18:20:43 yyy postfix/smtpd[4846]: mysqlname_parse(): adding host 'localhost' to list of mysql server hosts
Jan 16 18:20:43 yyy postfix/smtpd[4846]: dict_open: mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? debug_peer_list
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? fast_flush_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? mynetworks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? permit_mx_backup_networks
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? qmqpd_authorized_clients
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? relay_domains
Jan 16 18:20:43 yyy postfix/smtpd[4846]: match_string: smtpd_access_maps ~? smtpd_access_maps
Jan 16 18:20:43 yyy postfix/smtpd[4846]: fatal: SASL per-process initialization failed
Jan 16 18:20:44 yyy postfix/master[4779]: warning: process /usr/lib/postfix/smtpd pid 4846 exit status 1
Jan 16 18:20:44 yyy postfix/master[4779]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Da sehe ich schonmal sehr wenig, nichtmal die IP-Adresse meines Clients, der sich connectet. Hm...

Code: Select all

Access denied for user: 'postfix@localhost' (Using password: NO)
Access denied for user: 'postfix@localhost' (Using password: NO)
Das ist insofern schon mal gut, weil Postfix dann auf jeden Fall Kontakt zu MySQL bekommt.
Dann hast Du mich falsch verstanden. Diese Fehlermeldung kommt immer, auch wenn ich wie seit Monaten nur SMTP-Auth ueber die SASL2DB am laufen habe (in der smtpd.conf steht dann schlicht und ergreifend: pwcheck_method: sasldb, sonst nichts). Ich weiss also nicht, was Postfix von MySQL will. Klar, bei eingehenden Mails ueberprueft er ja, ob die Domains in seiner Liste drinnen sind und so weiter, aber das klappt ja perfekt. Der Mailserver laeuft seit Monaten im Produktivbetrieb fuer ueber 20 Domains.
Wie gesagt, die Fehlermeldung von oben kommt (zweimal die gleiche), dann kommt die Meldung, dass der SASL-User ok ist und dann nimmt er die Mail an. Die Fehlermeldung kommt ausschliesslich bei SMTP-Auth, bei "normalem" SMTP fuer die eigenen Domains des Mailservers nicht.
Dann ist etwas falsch in der main.cf eingestellt. Poste doch mal deine sasl betreffende Konfiguration.
Poste einfach mal die komplette Config, die Namen und die IP habe ich ge-x't... :-)

main.cf:

Code: Select all

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP
setgid_group = postdrop
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no
mydomain = xxx.net
myhostname = mail.xxx.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, yyy, yyy.$mydomain, localhost, localhost.$mydomain
relayhost =
mynetworks = 127.0.0.0/8, xxx.xxx.xxx.xxx/32
inet_interfaces = 127.0.0.1, xxx.xxx.xxx.xxx
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
virtual_maps = hash:/etc/postfix/virtual
mail_owner = postfix

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:104
virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit = 51200000
virtual_transport = virtual
virtual_uid_maps = static:104

#SMTPD Auth
#SMTPD mit SASL-Authentification verwenden
smtpd_sasl_auth_enable = yes
#smtpd_sasl_auth_enable = no

#Der Wert von realm (meist der lokale Servername)
smtpd_sasl_local_domain = morpheus

#Zusatz-Optionen: Keine anonyme-Anmeldung verwenden
smtpd_sasl_security_options = noanonymous, noplaintext

#Wieder ein Workaround für ältere Clients und Outlook
broken_sasl_auth_clients = yes

#nur SASL Zugänge erlauben
#smtpd_recipient_restrictions = permit_sasl_authenticated, reject

# ODER meine Netze und SASL erlauben
smtpd_recipient_restrictions =
        permit_sasl_authenticated,
        permit_mynetworks,
        reject_unauth_destination
Und hier die master.cf:

Code: Select all

smtp      inet  n       -       n       -       -       smtpd
#628      inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       -       300     1       qmgr
#qmgr     fifo  n       -       -       300     1       nqmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp

#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# maildrop. See the Postfix MAILDROP_README file for details.
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
cyrus     unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m "${extension}" ${user}
# Cyrus 2.1.5 (Amos Gouaux)
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/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=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}

# only used by postfix-tls
#tlsmgr   fifo  -       -       n       300     1       tlsmgr
#smtps    inet  n       -       n       -       -       smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#587      inet  n       -       n       -       -       smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
Aber zur Sicherheit, von wo aus testet du SMTP-Auth? Der gleiche Rechner auf dem Postfix läuft hat quasi immer SMTP-Rechte.
Siehe oben. Ist mein Client von zuhause, die Testmails gehen an eine Domain, die keine Domain meines Rootservers ist.

Vielen Dank schonmal fuer Deine Hilfe! :-)

Roi

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-16 19:23

JanC wrote:mysql_statement: SELECT password FROM mailbox WHERE username='%u@%r''
Was mir eben auffaellt: Ist das richtig, dass hier zwei ' am Ende der Zeile stehen?

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-16 20:11

Was mir eben auffaellt: Ist das richtig, dass hier zwei ' am Ende der Zeile stehen?
Nein, das mysql_statement natürlich nur mit einem '. :)
D.h., die anderen beiden Dateien werden einfach ignoriert oder nur fuer andere Dinge gebraucht?
Werden nicht gebraucht, bei Debian ist /etc/postfix/sasl/smtpd.conf in den debs konfiguriert.

Die main.cf sieht schonmal gut aus, allerdings solltest du

Code: Select all

smtpd_sasl_local_domain = morpheus

durch

Code: Select all

smtpd_sasl_local_domain = $myhostname
ersetzen.

Du hast Postfix nicht im chroot laufen, das ist jetzt zur Fehlerfindung wunderbar, später aber nicht ungefährlich.
Wenn du den Mysql-User postfix richtig konfiguriert hast, kann man mit dem Account eh nur lesen, aber nur damit du das weisst, hier:
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set password to 'postfix'
steht dein Passwort zur DB. Wenn du skip-networking in der my.cnf nicht geändert hast, ist das jetzt nicht weiter schlimm, aber später solltest du das Passwort ändern.
Da sehe ich schonmal sehr wenig, nichtmal die IP-Adresse meines Clients, der sich connectet. Hm...
Das liegt daran, dass Postfix aufgrund der fehlenden SASL-Unterstützung gar nicht erst richtig loslegt.

Gib mir bitte nochmal einen Ausschnitt aus auth.log zum Zeitpunkt von Postfixs Neustart.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-16 21:07

JanC wrote:Die main.cf sieht schonmal gut aus, allerdings solltest du

Code: Select all

smtpd_sasl_local_domain = morpheus

durch

Code: Select all

smtpd_sasl_local_domain = $myhostname
ersetzen.
done. auch die aenderung zwecks dem doppelten ' in der smtpd.conf.
Du hast Postfix nicht im chroot laufen, das ist jetzt zur Fehlerfindung wunderbar, später aber nicht ungefährlich.
stimmt, da war noch was. ok, das steht mir noch bevor. danke fuer den tip! :-)
Wenn du den Mysql-User postfix richtig konfiguriert hast, kann man mit dem Account eh nur lesen,
richtig, so ist der user konfiguriert.
aber nur damit du das weisst, hier:
Jan 16 18:17:40 yyy postfix/smtpd[4783]: mysqlname_parse(): set password to 'postfix'
steht dein Passwort zur DB. Wenn du skip-networking in der my.cnf nicht geändert hast, ist das jetzt nicht weiter schlimm, aber später solltest du das Passwort ändern.
klar, das habe ich eben im zuge der versuche auch gleich noch geaendert, auch lesen ist ne sicherheitsluecke. skip-networking ist nach wie vor in den settings des mysql-servers drin. die bewirkt, dass der server nur ueber die sockets, nicht ueber ports erreichbar ist, richtig?

mit dieser ominoesen mysql-fehlermeldung, die immer bei smtp-auth im log steht, hat dies wohl aber nichts zu tun?!?
Da sehe ich schonmal sehr wenig, nichtmal die IP-Adresse meines Clients, der sich connectet. Hm...
Das liegt daran, dass Postfix aufgrund der fehlenden SASL-Unterstützung gar nicht erst richtig loslegt.
Gib mir bitte nochmal einen Ausschnitt aus auth.log zum Zeitpunkt von Postfixs Neustart.
in der auth.log ist rein gar nichts passiert, kein einziger eintrag, nach einem postfix restart, auch nichts nach einem versuch, per smtp-auth ne mail zu verschicken. nur die ueblichen fehlermeldungen in den mail.* dateien.

hm...

Viele Gruesse,
Martin

(hoffentlich verlierst Du nicht die Geduld mit mir! :-)

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-16 21:29

(hoffentlich verlierst Du nicht die Geduld mit mir! :-)
Keine Sorge. Wir gehen einfach Schritt für Schritt vor. :)
die bewirkt, dass der server nur ueber die sockets, nicht ueber ports erreichbar ist, richtig?
Genau und damit natürlich auch nur über localhost, nicht über 127.0.0.1. Kannst du natürlich auch über 'nmap localhost' testen.

Geh bitte nochmal genau die smtpd.conf durch. Das klingt blöd, aber bei einem Tippfehler verhält sich Postfix genauso wie bei dir. Hab ich selbst öfters erlebt.

Ausserdem guck dir nach einem Neustart von Postfix mal alle Logs an, die zu diesem Zeitpunkt bearbeitet wurden. Vielleicht findest du dort noch etwas Informatives.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-16 22:05

Servus!
JanC wrote:
(hoffentlich verlierst Du nicht die Geduld mit mir! :-)
Keine Sorge. Wir gehen einfach Schritt für Schritt vor. :)
:-)
die bewirkt, dass der server nur ueber die sockets, nicht ueber ports erreichbar ist, richtig?
Genau und damit natürlich auch nur über localhost, nicht über 127.0.0.1. Kannst du natürlich auch über 'nmap localhost' testen.
ok. dann hab ich das richtig verstanden.
Geh bitte nochmal genau die smtpd.conf durch. Das klingt blöd, aber bei einem Tippfehler verhält sich Postfix genauso wie bei dir. Hab ich selbst öfters erlebt.
hab die dann eben nochmal gecheckt und bearbeitet. die datei sah noch so aus wie die, die du hier reingepostet hast, siehe oben. hab ich einfach per cut-n-paste uebernommen ohne sie grossartig anzuschauen. natuerlich die userdaten geaendert, sonst aber nicht geguckt.

ein schreibfehler und zwei '=' anstatt ':', und siehe da, jetzt tut es.

ne, das ist uebertrieben, mein mailer (TheBat) meinte nur, dass keine auth modis gefunden wurden. habe deswegen noch die zeile mech_list eingearbeitet.

Code: Select all

pwcheck_method: auxprop
auxprop_plugin: mysql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
mysql_user: xxxx
mysql_passwd: xxxxx
mysql_database: xxxxx
mysql_statement: SELECT password FROM mailbox WHERE username='%u@%r'
mysql_verbose: yes
leider tut's immer noch nicht.

das erzaehlt mir postfix:

Code: Select all

Jan 16 21:56:21 yyy postfix/smtpd[2625]: warning: SASL authentication failure: incorrect digest response
Jan 16 21:56:21 yyy postfix/smtpd[2625]: warning: dsl-xxx-xxx-xxx-xxx.arcor-ip.net[xxx.xxx.xxx.xxx]: SASL CRAM-MD5 authentication failed
das hier erzaehlt TheBat:

Code: Select all

16.01.2004, 21:56:32: SEND  - connected to SMTP server
16.01.2004, 21:56:32: SEND  - authenticating (software CRAM-MD5)...
16.01.2004, 21:56:33: SEND  - Server reports error. The response is: Error: authentication failed
16.01.2004, 21:56:33: SEND  - WARNING: there were no compatible authentication mechanisms detected
komisch. ist die mech-list zeile ueberhaupt korrekt?

Viele Gruesse,
Martin

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-17 00:14

ein schreibfehler und zwei '=' anstatt ':', und siehe da, jetzt tut es.
Ok, einer von dir, einer von mir. :) Tippfehler in der smtpd.conf kommen so oft vor, dass Postfix da mal gesprächiger werden sollte. Ich hab das Ausgangsposting dahingehend geändert, falls jemand mal die Datei braucht.

Jetzt nimm erstmal "noplaintext" aus der main.cf und teste dann in Ruhe ob alles über PLAIN läuft. Von einer funktionierenden Installation aus kriegt man fast alles hin. Kannst die Passwörter ja hinterher ändern, falls du paranoid bist. :wink:

Dann weiter, mech_list brauchst du nur, wenn du die Methoden einschränken willst. Falls du PLAIN und LOGIN verbieten willst, ist es eh sauberer sie hier gar nicht erst aufzuführen.

Hast du noch ein anderes Programm ausser TheBat zum testen? Du kannst mir auch per PM die IP deines Servers schicken und ich teste von hier aus mit ein paar verschiedenen Programmen. Ein Test-Account reicht.

Hast du daran gedacht, dass für MD5 die Passwörter entweder in Klartext oder als MD5-Verschlüsselung vorliegen müssen? Letzteres erfordert evtl. noch einen Patch. Benutzt du PostfixAdmin2 und hast dort dementsprechend die Passwörter eingestellt?

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-17 01:34

ein schreibfehler und zwei '=' anstatt ':', und siehe da, jetzt tut es.
JanC wrote:Ok, einer von dir, einer von mir. :) Tippfehler in der smtpd.conf kommen so oft vor, dass Postfix da mal gesprächiger werden sollte. Ich hab das Ausgangsposting dahingehend geändert, falls jemand mal die Datei braucht.
:-)
Jetzt nimm erstmal "noplaintext" aus der main.cf und teste dann in Ruhe ob alles über PLAIN läuft. Von einer funktionierenden Installation aus kriegt man fast alles hin. Kannst die Passwörter ja hinterher ändern, falls du paranoid bist. :wink:
jo tut nun auch alles. mit einer gravierenden einschraenkung, gleich mehr.
Dann weiter, mech_list brauchst du nur, wenn du die Methoden einschränken willst. Falls du PLAIN und LOGIN verbieten willst, ist es eh sauberer sie hier gar nicht erst aufzuführen.
will eigentlich nur CRAM-MD5 und DIGEST-MD5, wobei ich nicht der einzige bin, der hier mails abladen will. wie schaut es denn mit "normalen" mailern wie outlook express aus, koennen die CRAM/DIGEST MD5? und was ist eigentlich genau PLAIN und LOGIN? PLAIN ist wohl das passwort unverschluesselt ueber die leitung, richtig? bleibt LOGIN, was ist denn das?
Hast du noch ein anderes Programm ausser TheBat zum testen? Du kannst mir auch per PM die IP deines Servers schicken und ich teste von hier aus mit ein paar verschiedenen Programmen. Ein Test-Account reicht.

Hast du daran gedacht, dass für MD5 die Passwörter entweder in Klartext oder als MD5-Verschlüsselung vorliegen müssen? Letzteres erfordert evtl. noch einen Patch. Benutzt du PostfixAdmin2 und hast dort dementsprechend die Passwörter eingestellt?
ja, benutze postfixadmin2 und hab festgestellt, dass die passwoerter von postfixadmin2 md5-verschluesselt abgelegt werden. und so gibt das dieses mysql-statement auch zurueck und deswegen kann ich mich nicht anmelden, weder plain noch cram-md5. schreibe ich das passwort direkt (oh graus) plain in die datenbank, dann klappt es (sowohl plain als auch cram-md5). heisst also, dass dieser authentifizierungsmechanismus irgendwie das passwort plain erwartet.

das ist ein problem, da ich zig mailboxen (auch von kunden) auf dem server habe, wo ich ja nun schlecht die passwoerter alle loeschen kann.

du hast von nem patch gesprochen? :-)

Viele Gruesse und erstmal gute Nacht,
Martin

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-17 02:36

Hi Martin,

also können wir zusammenfassen, Problem gelöst, jetzt kommen die Features. 8)

Es sieht so aus:

PLAIN und LOGIN: Beide übermitteln das Passwort unverschlüsselt (Base64-kodiert), nur schickt LOGIN Username und Passwort einzelnd, während PLAIN beides auf einmal schickt. Eigentlich kein Unterschied.

CRAM-MD5 und DIGEST-MD5: Bei beiden wird das Passwort selbst gar nicht übertragen, sondern auf Basis eines Zeitstempels und des Passworts eine Sequenz berechnet, die übertragen wird. Daher sehr sicher für das Passwort, aber keine Verschlüsselung der Emails selbst! Der Unterschied ist, dass CRAM immer das Klartext-Passwort braucht, DIGEST hingegen theoretisch auch mit dem bereits in MD5 gebildetem Hash auskommt. Mehr dazu unten.

SSL: In Verbindung mit PLAIN oder LOGIN wunderbar, da der gesamte Verkehr inklusive Passwort verschlüsselt wird.

Jetzt kommen die Probleme. Outlook und Outlook Express können beide nur PLAIN / LOGIN mit oder ohne SSL. Also alles oder nichts. Die meisten anderen Mailer können MD5, was die Passwörter sicher macht. Noch schlimmer wirds bei POP. Da gibt es entweder nur POP3(unverschlüsselt) , APOP (MD5) oder POP3-SSL. Das Problem ist, das viele Mailer und vor allem der Courier-Server APOP nicht unterstützen.

Am schönsten wäre es also SSL-PLAIN und MD5 anzubieten. Damit kann quasi jeder Mailer arbeiten. Problem dabei, das klappt nur mit Klartext-Passwörtern. Ob die nun wirklich ein so grosses Sicherheitsrisiko sind ist Ansichtssache. Klar, Vorteil ist, du kannst die Passwörter einsehen, falls ein Kunde sie mal vergisst. Nachteil, falls jemand deinen Server hackt, hat er alle Passwörter. Die kannst du dann natürlich neu vergeben, aber dazu musst du erstmal wissen, dass der GAU passiert ist. Ich persönlich halte Klartext-Passwörter zwar nicht für toll, aber in vielen Fällen für praktisch, wenn der Rest des Servers gut abgesichert ist.

Die Traum-Lösung wäre natürlich die eben besprochene Lösung mit SSL, DIGEST-MD5 und MD5-verschlüsselten Passwörten. Dass Problem ist, das SASL das nicht unterstützt. Es unterstützt zwar CRAM und DIGEST, aber nicht die Berechnung nur auf Basis des Hashs. Ich hoffe das war verständlich. :)
Nun gibt es einen Patch der SASL das ermöglicht. Ich habe ihn allerdings nie benutzt und kann dir auch nicht sagen woher du ihn bekommst und wie gut er funktioniert. Auf jeden Fall musst du dafür SASL neu kompilieren. Falls du dich näher damit beschäftigst und Erfolg hast, würde ich mich freuen, wenn du mich dann mal informierst.

Aber erzähl mir auf jeden Fall wie du dich entscheidest.

Gruss und Viel Spaß
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-17 11:26

Guten Morgen Jan,

richtig. Das Problem scheint geloest zu sein, jetzt kommt die Feinarbeit.
JanC wrote:PLAIN und LOGIN: Beide übermitteln das Passwort unverschlüsselt (Base64-kodiert), nur schickt LOGIN Username und Passwort einzelnd, während PLAIN beides auf einmal schickt. Eigentlich kein Unterschied.
Ok, wenn ich also SMTP-Auth ohne Verschluesselung zulassen moechte, lasse ich beide Optionen drinnen, bzw hab eh noch nicht gesehen, wie ich das trennen koennte. Unverschluesselt zulassen/verbieten funktioniert ja ueber die Option

Code: Select all

smtpd_sasl_security_options = noplaintext
in der main.cf, gell?
CRAM-MD5 und DIGEST-MD5: Bei beiden wird das Passwort selbst gar nicht übertragen, sondern auf Basis eines Zeitstempels und des Passworts eine Sequenz berechnet, die übertragen wird. Daher sehr sicher für das Passwort, aber keine Verschlüsselung der Emails selbst! Der Unterschied ist, dass CRAM immer das Klartext-Passwort braucht, DIGEST hingegen theoretisch auch mit dem bereits in MD5 gebildetem Hash auskommt. Mehr dazu unten.
Aha. Ok, so tief habe ich mich bisher noch nicht mit der Materie beschaeftigt, deswegen freut es mich umso mehr, dass ich das hier so einfach erklaert bekomme. :-)
SSL: In Verbindung mit PLAIN oder LOGIN wunderbar, da der gesamte Verkehr inklusive Passwort verschlüsselt wird.
Mit SSL in Verbindung mit SMTP habe ich mich noch ueberhaupt nicht beschaeftigt. Aber klar, wenn die Verbindung verschluesselt laeuft, dann koennen auch die Passwoerter sozusagen PLAIN uebertragen werden, da sie innerhalb des restlichen Verkehrs ja eh verschluesselt uebertragen werden.
Jetzt kommen die Probleme. Outlook und Outlook Express können beide nur PLAIN / LOGIN mit oder ohne SSL. Also alles oder nichts. Die meisten anderen Mailer können MD5, was die Passwörter sicher macht. Noch schlimmer wirds bei POP. Da gibt es entweder nur POP3(unverschlüsselt) , APOP (MD5) oder POP3-SSL. Das Problem ist, das viele Mailer und vor allem der Courier-Server APOP nicht unterstützen.
Sprichst Du jetzt nur von POP oder auch von SMTP? SMTP-maessig kann ich bei TheBat ausser einer "Regular Port 25" Connection noch "Secure Port 25" bzw "Secure Port 465" auswaehlen. Wobei ich die Ports natuerlich aendern kann. Aehnliche Optionen gibt es auch fuer POP3, naemlich "Regular", "Secure Port 110" und "Secure Port 995". Habe jetzt mal Outlook Express (das erste und hoffentlich letzte Mal, oh Graus!) gestartet. Da erzaehlt er sowohl bei POP3 als auch SMTP etwas von "Secure Password Authentification" (sorry, hab alles auf englisch installiert), die ich optional einschalten kann. Laut Deiner Aussage von oben waere das dann PLAIN oder eben PLAIN ueber SSL, richtig?
Am schönsten wäre es also SSL-PLAIN und MD5 anzubieten. Damit kann quasi jeder Mailer arbeiten. Problem dabei, das klappt nur mit Klartext-Passwörtern. Ob die nun wirklich ein so grosses Sicherheitsrisiko sind ist Ansichtssache. Klar, Vorteil ist, du kannst die Passwörter einsehen, falls ein Kunde sie mal vergisst. Nachteil, falls jemand deinen Server hackt, hat er alle Passwörter. Die kannst du dann natürlich neu vergeben, aber dazu musst du erstmal wissen, dass der GAU passiert ist. Ich persönlich halte Klartext-Passwörter zwar nicht für toll, aber in vielen Fällen für praktisch, wenn der Rest des Servers gut abgesichert ist.
Genau, das mit der Sicherheit ist alles Ansichtssache. Die Frage ist naemlich, ob jemand, der meine Kiste knackt, sich dann als allererstes, wenn ueberhaupt irgendwann, fuer Mailpasswoerter interessiert. Wichtig waere in dem Zusammenhang natuerlich, den Lesen-User fuer Postfix von postfix / postfix auf was anderes zu aendern. Denn auch mit skip-networking kann einer meiner Kunden ja per PHP auf diese Datenbank zugreifen und alles auslesen.
Die Traum-Lösung wäre natürlich die eben besprochene Lösung mit SSL, DIGEST-MD5 und MD5-verschlüsselten Passwörten. Dass Problem ist, das SASL das nicht unterstützt. Es unterstützt zwar CRAM und DIGEST, aber nicht die Berechnung nur auf Basis des Hashs. Ich hoffe das war verständlich. :)
Nun gibt es einen Patch der SASL das ermöglicht. Ich habe ihn allerdings nie benutzt und kann dir auch nicht sagen woher du ihn bekommst und wie gut er funktioniert. Auf jeden Fall musst du dafür SASL neu kompilieren. Falls du dich näher damit beschäftigst und Erfolg hast, würde ich mich freuen, wenn du mich dann mal informierst.
Fassen wir mal meine Konfiguration zusammen:

Courier-POP3/IMAP
Postfix
Postfix Admin 2
SMTP-Auth ueber SASL2
(und alles per MySQL)

Nun legt Postfix Admin 2 alle Passwoerter in "md5crypt", wobei man seit Version 2 das auch auf plain aendern kann. Courier kommt damit zurecht, da habe ich in der Datei authmysqlrc einen Eintrag

Code: Select all

MYSQL_CRYPT_PWFIELD
fuer die Tabellenspalte, in der das verschluesselte Passwort abgelegt ist. Wenn ich mich richtig erinnere, gibt es optional auch ein Feld

Code: Select all

MYSQL_PLAIN_PWFIELD
oder so aehnlich, richtig? Koennte so also dem Courier auch Passwoerter in plain vorsetzen.

Der Verkehr per POP3/IMAP laeuft bei mir unverschluesselt, wobei die Passwoerter unverschluesselt uebertragen, im System aber verschluesselt geprueft werden.

Anders der Auth-SMTP-Verkehr. Hier laeuft der Verkehr oft per CRAM-MD5 verschluesselt, leider koennen die Passwoerter im System unverschluesselt geprueft werden, da SASL2 keine verschluesselten Passwoerter kann ohne diesen ominoesen Patch.

Zu diesem Patch: Bin irgendwie als verwoehnter Debian-Juenger aus Bequemlichkeitsgruenden ein Fan dieser apt-get Geschichte, die mir fertige Pakete installiert und sogar grundkonfiguriert. Gibt es was nicht als Debian-Paket, dann ist das was anderes. Wenn ich jetzt SASL2 patche, dann hab ich spaetestens wenn ich ein Upgrade machen moechte, wieder das gleiche Problem. apt-get ueberbuegelt mir wahrscheinlich die gepatchte Version weil ich inzwischen vergessen habe, dass da ja mal was war. Oder noch besser, das Upgrade wird wegen ner anderen Installation vorgenommen und ich krieg das nicht mit, weil ich in Eile war.

Auf den ersten Blick sieht es fuer mich dann so aus: Wohl oder uebel die Mailpasswoerter auf plain aendern (dazu muss ich wohl nur den einen Eintrag in der Postfix Admin Config aendern, den Kunden einen Zeitpunkt nennen, zu dem sie alle ihre Passwoerter aendern muessen, Postfix Admin legt dann die geaenderten Passwoerter plain ab) und Courier zeitgleich beibringen, dass die Passwoerter nun plain vorliegen. Gibt es diese MYSQL_PLAIN_PWFIELD Option tatsaechlich, sollte das kein Problem sein.

Allgemein dazusagen muss ich noch, dass meine Konfiguration end(l)userfreundlich sein muss, sprich Outlook (Express) User duerfen nicht im Regen stehen bei mir. :-)
Aber erzähl mir auf jeden Fall wie du dich entscheidest.
Siehe oben. Gute Entscheidung, schlechte Entscheidung? :-)

Wie laeuft das bei Dir? Ich nehme an, genau so, oder?

Viele Gruesse,
Martin
Last edited by roi on 2004-01-17 11:34, edited 1 time in total.

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-17 11:30

Hi nochmal!
JanC wrote:Jetzt kommen die Probleme. Outlook und Outlook Express können beide nur PLAIN / LOGIN mit oder ohne SSL. Also alles oder nichts. Die meisten anderen Mailer können MD5, was die Passwörter sicher macht. Noch schlimmer wirds bei POP. Da gibt es entweder nur POP3(unverschlüsselt) , APOP (MD5) oder POP3-SSL. Das Problem ist, das viele Mailer und vor allem der Courier-Server APOP nicht unterstützen.
Hierzu noch kurz was: Klar, ueber POP3 laeuft das unverschluesselt, deswegen habe ich an sich bisher mit der Auth-SMTP sasldb-Geschichte auch kein Problem gehabt, dass der Verkehr plain oder verschluesselt laeuft, habe alles zugelassen. Finde es halt schoen, dass man den Kunden auch Sicherheit anbieten kann.

Deswegen meine Frage: Du sagst, dass der Courier APOP nicht unterstuetzt. Wie sieht es mit POP3-SSL aus? Wohl auch nicht, oder? Hast Du bei Dir etwas am Start, das sicheren POP bietet?

Gruss,
Martin

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-17 12:41

Guten Morgen,
Deswegen meine Frage: Du sagst, dass der Courier APOP nicht unterstuetzt. Wie sieht es mit POP3-SSL aus? Wohl auch nicht, oder? Hast Du bei Dir etwas am Start, das sicheren POP bietet?
Doch, Courier unterstützt SSL. Das ist auch der Grund warum der Autor des Courier nicht vor hat APOP zu integrieren. Er sagt SSL reicht, mehr braucht man nicht. Prinzipiell hat er damit auch Recht, mehr zu den Nachteilen unten. Der Cyrus unterstützt APOP, aber leider kein Maildir-Format, sondern sein eigenes proprietäres Format in dem er Mails ablegt und ich will Standards, falls ich mal wechseln will.
Ok, wenn ich also SMTP-Auth ohne Verschluesselung zulassen moechte, lasse ich beide Optionen drinnen, bzw hab eh noch nicht gesehen, wie ich das trennen koennte. Unverschluesselt zulassen/verbieten funktioniert ja ueber die Option smtpd_sasl_security_options = noplaintext in der main.cf, gell?
Genau, oder über die mech_list und dann die beiden weglassen. Ist egal, macht nur einen Unterschied wenn mehrere Programme auf SASL zugreifen.
Mit SSL in Verbindung mit SMTP habe ich mich noch ueberhaupt nicht beschaeftigt. Aber klar, wenn die Verbindung verschluesselt laeuft, dann koennen auch die Passwoerter sozusagen PLAIN uebertragen werden, da sie innerhalb des restlichen Verkehrs ja eh verschluesselt uebertragen werden.
Exakt. :) Viele Mailer unterstützen deshalb gar kein MD5 in SSL, weil es Unsinn ist.
Wenn ich mich richtig erinnere, gibt es optional auch ein Feld MYSQL_PLAIN_PWFIELD oder so aehnlich, richtig? Koennte so also dem Courier auch Passwoerter in plain vorsetzen.
Genau, einfach das eine de-, das andere aktivieren. Courier ist wunderbar zu konfigurieren.
Zu diesem Patch: Bin irgendwie als verwoehnter Debian-Juenger aus Bequemlichkeitsgruenden ein Fan dieser apt-get Geschichte, die mir fertige Pakete installiert und sogar grundkonfiguriert. Gibt es was nicht als Debian-Paket, dann ist das was anderes. Wenn ich jetzt SASL2 patche, dann hab ich spaetestens wenn ich ein Upgrade machen moechte, wieder das gleiche Problem. apt-get ueberbuegelt mir wahrscheinlich die gepatchte Version weil ich inzwischen vergessen habe, dass da ja mal was war. Oder noch besser, das Upgrade wird wegen ner anderen Installation vorgenommen und ich krieg das nicht mit, weil ich in Eile war.
Das geht mir ähnlich, es gibt da allerdings eine Lösung, die aber etwas Zeit erfordert. Ich wollte Postfix unbedingt mit Virtual Quota haben. Also hab ich mir die Quellen vom Debian-Projekt besorgt, gepatcht und dann als Debian-Paket kompiliert. Läuft traumhaft! Du musst dafür natürlich dann dein eigenes Repository einrichten. Apt-Get hält nun meine Pakete immer für wichtiger als alles was auf dem Debian-Server liegt. Wenn was neues kommt, kann ich also in Ruhe überlegen ob ich selbst update oder nicht.

Nun aber zur Konfiguration. Theoretisch gesehen ist bei Verwendung des Couriers MD5 ohnehin unnötig. Denn wenn die Passwörter über POP im Klartext übertragen werden, dann ist es sinnlos sie über SMTP zu verschlüsseln. Für eine sichere Lösung muss alles über SSL. Dafür wiederrum musst du entweder deine eigene CA aufmachen und deinen Kunden beibringen einen entsprechenden Download zu machen oder du zahlst im Jahr zwischen 100 und 300 â?¬ für dein Zertifikat. Nur auf diese Art kriegst du mit Postfix und Courier Passwortsicherheit und kannst auch Outlook und OE zufrieden stellen. Letztere würde ich auch nie im Leben nutzen, :) aber man muss sie halt unterstützen, da stimme ich dir absolut zu. Im Endeffekt also das was du dir selbst schon gedacht hast. Alle Passwörter auf PLAIN ändern, skip-networking auf jeden Fall deaktivieren und möglichst PLAIN/LOGIN mit SSL und wenn du Lust hast auch MD5 anbieten. Dann werden alle glücklich. So mache ich das auch.

Gruss
Jan

P.S.: Wenn du Interesse an dem gepatchten Postfix-Paket hast, kannst du das (ohne Garantie natürlich) gerne bekommen.

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-17 13:49

So, für die beiden hatte ich grad keine Zeit. 8)
Sprichst Du jetzt nur von POP oder auch von SMTP? SMTP-maessig kann ich bei TheBat ausser einer "Regular Port 25" Connection noch "Secure Port 25" bzw "Secure Port 465" auswaehlen. Wobei ich die Ports natuerlich aendern kann. Aehnliche Optionen gibt es auch fuer POP3, naemlich "Regular", "Secure Port 110" und "Secure Port 995". Habe jetzt mal Outlook Express (das erste und hoffentlich letzte Mal, oh Graus!) gestartet. Da erzaehlt er sowohl bei POP3 als auch SMTP etwas von "Secure Password Authentification" (sorry, hab alles auf englisch installiert), die ich optional einschalten kann. Laut Deiner Aussage von oben waere das dann PLAIN oder eben PLAIN ueber SSL, richtig?
Du kannst natürlich theoretisch POP3/POP3-SSL und SMTP/SMTP-SSL über jeden beliebigen Port laufen lassen, aber es gibt Standards. Dementsprechend auch die Einstellungen von TheBat.
SMTP
Regular Port 25: PLAIN/LOGIN
Secure Port 25: MD5
Secure Port 465: SSL
POP
Regular Port 110: PLAIN/LOGIN
Secure Port 110: MD5
Secure Port 995: SSL
Leider steht bei den wenigsten Mailern, was wirklich hinter den Einstellungen steckt. Da kann man bei TheBat an den Ports noch das Meiste erraten. Bei Outlook ist normal PLAIN/LOGIN konfiguriert und mit der Aktivierung von "Secure Connection" stellt er auf SSL um. "Secure Password Authentification" (SPA) hat wieder gar nichts damit zu tun, sondern ist eine Microsoft eigene Lösung für verschlüsselte Passwörter. Kannst du nach meinem letzten Kenntnisstand getrost in die Tonne treten.
Genau, das mit der Sicherheit ist alles Ansichtssache. Die Frage ist naemlich, ob jemand, der meine Kiste knackt, sich dann als allererstes, wenn ueberhaupt irgendwann, fuer Mailpasswoerter interessiert. Wichtig waere in dem Zusammenhang natuerlich, den Lesen-User fuer Postfix von postfix / postfix auf was anderes zu aendern. Denn auch mit skip-networking kann einer meiner Kunden ja per PHP auf diese Datenbank zugreifen und alles auslesen.
Genau. Wichtig ist halt, niemals die gleichen Usernamen und erst recht nicht Passwörter wie aus Tutorials zu nehmen, damit erreichst du schon mal einiges. Problematisch ist es immer wenn du User auf dem gleichen Rechner frei benutzbaren Webspace gibst, auf dem auch ein Mailserver mit MySQL liegt. Dann könnte jemand theoretisch über PHP darauf zugreifen, richtig. Dazu muss er aber auch das Passwort und den Usernamen rausfinden. Wenn er also nicht aus seinem Webspace raus kann (PHP richtig konfigurieren) kann er nur raten. Und dagegen schützt schon recht gut ein ellenlanges Passwort und regelmäßige Kontrollen von mysql.log, ob jemand hunderte von Connections versucht, die abgelehnt werden.

Gruss
Jan

roi
Posts: 145
Joined: 2003-04-07 09:05
Location: Esslingen am Neckar

...

Post by roi » 2004-01-18 19:15

Guten Abend!

Nach Deinen Infos habe ich mich zu folgender Vorgehensweise entschlossen: Die Mailpasswoerter werden auf plain geaendert, damit SASL2 damit etwas anfangen kann. Und weil das bei Courier so einfach geht, wird das zu nem Stichtag umgestellt und meine Kunden muessen die Passwoerter per Postfix Admin neu einpflegen. Mail ist schon raus. Auch postfix / postfix existiert nicht mehr, ist nun nicht mehr zu erraten.

Also vorab schonmal viiielen Dank, ohne Dich haette ich das nicht so schnell auf meine (fast, wegen den plain-Passwortern in der MySQL-Maildaten-Datenbank) Wunschkonfiguration umstellen koennen!!!
JanC wrote:Doch, Courier unterstützt SSL. Das ist auch der Grund warum der Autor des Courier nicht vor hat APOP zu integrieren. Er sagt SSL reicht, mehr braucht man nicht. Prinzipiell hat er damit auch Recht, mehr zu den Nachteilen unten. Der Cyrus unterstützt APOP, aber leider kein Maildir-Format, sondern sein eigenes proprietäres Format in dem er Mails ablegt und ich will Standards, falls ich mal wechseln will.
Ok, dann faellt Cyrus fuer mich schonmal aus. Sehe das genau so wie Du, will auch alles standardmaessig haben falls es Probleme gibt oder ich aus anderen Gruenden wechselgeil werde.
Nun aber zur Konfiguration. Theoretisch gesehen ist bei Verwendung des Couriers MD5 ohnehin unnötig. Denn wenn die Passwörter über POP im Klartext übertragen werden, dann ist es sinnlos sie über SMTP zu verschlüsseln. Für eine sichere Lösung muss alles über SSL. Dafür wiederrum musst du entweder deine eigene CA aufmachen und deinen Kunden beibringen einen entsprechenden Download zu machen oder du zahlst im Jahr zwischen 100 und 300 â?¬ für dein Zertifikat. Nur auf diese Art kriegst du mit Postfix und Courier Passwortsicherheit und kannst auch Outlook und OE zufrieden stellen. Letztere würde ich auch nie im Leben nutzen, :) aber man muss sie halt unterstützen, da stimme ich dir absolut zu. Im Endeffekt also das was du dir selbst schon gedacht hast. Alle Passwörter auf PLAIN ändern, skip-networking auf jeden Fall deaktivieren und möglichst PLAIN/LOGIN mit SSL und wenn du Lust hast auch MD5 anbieten. Dann werden alle glücklich. So mache ich das auch.
Genau so werde ich das auch machen. Ich glaube, den Stress mit SSL spare ich mir auch, muss echt nicht sein. Hatte schon genuegend Stress mit dem Apache-SSL und nem halbwegs tollen (moeglichst viele gruene, moeglichst wenig gelbe Symbole beim IE und das ganze kostenlos) Zertifikat. Sehe das ein bissel anders als Du: Nur SMTP verschluesselt ist immerhin besser als alles unverschluesselt. Dann gibts nur halb so viele Verbindungen, die unverschluesselt ablaufen. Ok, klingt nach Paranoia, aber egal. Ne aber an sich ist es unnoetig, da hast Du schon Recht. Aber zusaetzlich anbieten hat doch was, macht nicht jeder. Zur plain-Speicherung der Passwoerter: Wer weiss schon, wie die Passwoerter bei web.de oder aehnlichen Anbietern gespeichert werden...
P.S.: Wenn du Interesse an dem gepatchten Postfix-Paket hast, kannst du das (ohne Garantie natürlich) gerne bekommen.
Momentan hab ich da keinen Bedarf, vielen Dank trotzdem, werde das auf jeden Fall im Hinterkopf behalten.
JanC wrote:Du kannst natürlich theoretisch POP3/POP3-SSL und SMTP/SMTP-SSL über jeden beliebigen Port laufen lassen, aber es gibt Standards. Dementsprechend auch die Einstellungen von TheBat.
SMTP
Regular Port 25: PLAIN/LOGIN
Secure Port 25: MD5
Secure Port 465: SSL
POP
Regular Port 110: PLAIN/LOGIN
Secure Port 110: MD5
Secure Port 995: SSL
Leider steht bei den wenigsten Mailern, was wirklich hinter den Einstellungen steckt. Da kann man bei TheBat an den Ports noch das Meiste erraten. Bei Outlook ist normal PLAIN/LOGIN konfiguriert und mit der Aktivierung von "Secure Connection" stellt er auf SSL um. "Secure Password Authentification" (SPA) hat wieder gar nichts damit zu tun, sondern ist eine Microsoft eigene Lösung für verschlüsselte Passwörter. Kannst du nach meinem letzten Kenntnisstand getrost in die Tonne treten.
Alles klar. Typisch MS, da wird einem was vorgesetzt, das man schlecht aendern kann und noch weniger durchblickt, was das alles an sich ueberhaupt ist.

Noch ne Sache, die Du weiter oben mal angesprochen hattest. Bitte nicht hauen, aber gibts ne kleine schlanke Anleitung, wie man den Postfix in chroot laufen lassen kann? :-) Interessiert mich allerdings nur, wenn dadurch nicht wieder nen Rattenschwanz voll Probleme im Haus aeh auf dem Rootserver stehen.

Viele Gruesse,
Roi

janc
Posts: 52
Joined: 2003-10-14 14:11

Re: Postfix / SASL2 / MySQL - Access Denied

Post by janc » 2004-01-18 20:31

Hallo,
Also vorab schonmal viiielen Dank, ohne Dich haette ich das nicht so schnell auf meine (fast, wegen den plain-Passwortern in der MySQL-Maildaten-Datenbank) Wunschkonfiguration umstellen koennen!!!
Gern geschehen. :) Dein Setup hört sich gut an.
Noch ne Sache, die Du weiter oben mal angesprochen hattest. Bitte nicht hauen, aber gibts ne kleine schlanke Anleitung, wie man den Postfix in chroot laufen lassen kann? :-) Interessiert mich allerdings nur, wenn dadurch nicht wieder nen Rattenschwanz voll Probleme im Haus aeh auf dem Rootserver stehen.
Keine Sorge. :) Eigentlich ist das gar nicht schwer, das Hauptproblem ist MySQL, da Postfix natürlich aus dem chroot nicht über localhost connecten kann. Du musst dich entscheiden entweder bei MySQL skip-networking zu deaktivieren und es dann über 127.0.0.1 anzusprechen (natürlich auch den User in MySQL von localhost auf 127.0.0.1 ändern) oder einen Hard-Link von (bei Debian) /var/spool/postfix/var/run/mysqld/mysqld.sock auf /var/run/mysqld/mysqld.sock zu legen. Das ist wie so vieles Geschmackssache, da beides die Sicherheit etwas kompromittiert, aber mir persönlich ist letzteres lieber, da ich MySQL nicht fürs Netzwerk öffnen möchte. Leider muss der Hardlink bei jedem Reboot erneuert werden, also am besten über Script.

Ansonsten musst du nur darauf achten, das in /etc/postfix und /var/spool/postfix/etc nicht die gleichen Dateien mit unterschiedlichem Inhalt stehen. Es reicht wenn alle Configs im ersten Verzeichnis stehen. Bei jedem Neustart sorgt Postfix selbst dafür, dass er alle Infos kriegt. Nur Dinge die er während des Betriebs braucht, wie den MySQL-Socket, müssen im chroot vorhanden sein.

Gruss
Jan