Problem mit Mailserver und sql

#1
Guten Tag,

ich habe ein Problem mit einem Mailserver, welchen ich schon seit Monaten einrichte. Eigentlich ist das wahrscheinlich der vorletzte Schritt, ich komme aber einfach nicht weiter - egal was ich versuche. Solange linux-benutzer mit einer Domain genutzt wurden, war alles bestens, aber mit virtuellen Nutzern klappt es nicht mehr.

Der Server läuft mit Debian Squeeze. Installiert sind
- Postfix
- courier-imap
- SASL
- mySQL
- spamassassin
- mehrere email Domains
- all das mit SSL / STARTTLS


Ich will die Email Domains mit virtuellen Benutzern betreiben. Ich habe also die Tabellen in mySQL erstellt und ich habe Änderungen in SASL und courier-imap vorgenommen. Aber stets heisst es in der 'mail.info' dann beim Versuch sich mit einem Mailprogramm einloggen:
Code:
Jun 13 15:34:47 robo46 imapd: LOGIN FAILED, method=PLAIN, ip=[::ffff:xx.xx.xx.128]
Jun 13 15:34:47 robo46 imapd: authentication error: Input/output error
Jun 13 15:34:47 robo46 imapd: LOGIN FAILED, method=PLAIN, ip=[::ffff:xx.xx.xx.128]
Jun 13 15:34:47 robo46 imapd: authentication error: Input/output error
Jun 13 15:34:52 robo46 postfix/smtpd[25692]: connect from 174.xxx.xxx.xxx.static.mundo-r.com[xxx.xxx.xxx.174]
Jun 13 15:34:53 robo46 postfix/trivial-rewrite[25356]: warning: connect to mysql server 127.0.0.1: Access denied for user 'mailuser'@'localhost' (using password: YES)
Jun 13 15:34:53 robo46 postfix/trivial-rewrite[25356]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Jun 13 15:34:54 robo46 postfix/master[25346]: warning: process /usr/lib/postfix/trivial-rewrite pid 25356 exit status 1
Jun 13 15:34:55 robo46 postfix/pickup[25353]: 0C0F15642D5: uid=0 from=<root>
Jun 13 15:34:55 robo46 postfix/cleanup[3202]: warning: 2E6F35642D5: virtual_alias_maps map lookup problem for root@domain1.tld
Jun 13 15:34:55 robo46 postfix/trivial-rewrite[25696]: warning: connect to mysql server 127.0.0.1: Access denied for user 'mailuser'@'localhost' (using password: YES)
Jun 13 15:34:55 robo46 postfix/trivial-rewrite[25696]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Jun 13 15:34:56 robo46 postfix/smtpd[25692]: warning: problem talking to service rewrite: Success
Jun 13 15:34:56 robo46 postfix/cleanup[25355]: warning: problem talking to service rewrite: Connection reset by peer
Jun 13 15:34:56 robo46 postfix/master[25346]: warning: process /usr/lib/postfix/trivial-rewrite pid 25696 exit status 1
Jun 13 15:34:56 robo46 postfix/master[25346]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Das ist mein Problem. So wie ich das sehe, liegt es nicht am Benutzer der Email, sondern daran, daß der mySQL Benutzer ( "mailuser" ) der Datenbank "mailserver" nicht akzeptiert wird. Endweder wg. seines logins oder wg. seines Passwortes. Und erst dann kann sich ein email Benutzer in seiner Mailbox anmelden, wenn courier mit mySQL Verbindung herstellen kann.

Meine config Dateien

postconf -n
Code:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
home_mailbox = Maildir/
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
inet_protocols = ipv4
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain
mydomain = domain1.tld
myhostname = robo46.domain1.tld
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = $mydomain
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relay_domains = domain2.tld, domain3.tld
relayhost =
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_helo_required = yes
smtpd_recipient_restrictions = reject_non_fqdn_sender,  reject_non_fqdn_recipient,      reject_unknown_sender_domain,   reject_unknown_recipient_domain,        permit_sasl_authenticated,    permit_mynetworks,      reject_rbl_client zen.spamhaus.org,     reject_rbl_client ix.dnsbl.maintu.net,  reject_unauth_destination,      permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smtpd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
tls_random_prng_update_period = 3600s
tls_random_source = dev:/dev/urandom
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/mailusers/Maildir
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_uid_maps = static:5000
smtpd.conf (sasl)
Code:
pwcheck_method: saslauthd
mech_list: digest-md5 cram-md5 login plain
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: vmailuser
sql_passwd: abcdEFG123456
sql_database: vmailserver
sql_select: select password from users where email = '%u'
imapd.cf
Code:
ADDRESS=0
PORT=143
MAXDAEMONS=40
MAXPERIP=20
PIDFILE=/var/run/courier/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_MAILBOX_SANITY_CHECK=1
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=131072
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES
MAILDIRPATH=Maildir
AUTHMODULES="authdaemon"
authdaemonrc
Code:
authmodulelist="authmysql"
authmodulelistorig="authuserdb authpam authpgsql authldap authmysql authcustom authpipe"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""
authmysqlrc
Code:
MYSQL_SERVER            localhost
MYSQL_USERNAME          mailuser
MYSQL_PASSWORD          abcdEFG123456
MYSQL_PORT              0
MYSQL_OPT               0
MYSQL_DATABASE          mailserver
MYSQL_USER_TABLE        virtual_users
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         uid
MYSQL_GID_FIELD         gid
MYSQL_LOGIN_FIELD       email
MYSQL_HOME_FIELD        "/home/mailusers"
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
/etc/postfix/virtual_domains
Code:
domain1.tld,
domain2.tld,
domain3.tld,
/etc/postfix/virtual_mailbox_aliases
Code:
golum@domain2.tld            golum@domain2.tld
golum@domain1.tld            golum@domain1.tld

postmaster@domain2.tld       golum@domain2.tld
abuse@domain2.tld            golum@domain2.tld

postmaster@domain1.tld       golum@domain1.tld
abuse@domain1.tld            golum@domain1.tld
/etc/postfix/virtual_recipients
Code:
golum@domain2.tld        domain2.tld/golum/
golum@domain1.tld        domain1.tld/golum/
/etc/postfix/virtual_alias
Code:
golum@domain1.tld          user1
smurf@domain1.tld            user1
goblin@domain1.tld          user1
drache@domain1.tld       user1
zwerg@domain1.tld          user1
golum@domain2.tld          user_2
hexe@domain2.tld            user_2
/etc/postfix/mysql-virtual-alias-maps.cf
Code:
user = mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'
/etc/postfix/mysql-virtual-mailbox-domains.cf
Code:
user = mailuser
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'
Auf dem Server gibt es neben root nur 2 Benutzer - "user1" und "user_2". Schreibweise ist ähnlich, die Namen durch "user" ersetzt. Aber an dem Unterstrich wird es wohl nicht liegen? Es gibt darüber hinaus ein Pfad "/home/mailusers/Maildir" und dann die einzelnen Postfächer.

mySQL


Es existiert wirklich eine mySQL Datenbank "mailserver", es wurde der Benutzer "mailuser" angelegt - nur das PW wurde natürlich ersetzt. Der mySQL Port ist jetzt 0, aber mit 3306 ging es auch nicht.

In der Tabelle "mailserver" gibt es 3 Tabellen
'virtual_domains', 'virutal_users' und 'virtual_aliases'

Die erste Tabelle - 'virutal_users' - enthält folgende Spalten:
Code:
'id'
'domain_id'
'passwort'
'email'
Die Tabelle 'virtual_domains' folgende Spalten:
Code:
'id'
'name'
In der Tabelle 'virtual_aliases' folgende:
Code:
'id'
'domain_id'
'source'
'destination'
 
Zuletzt bearbeitet:
#2
Code:
netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*                     LISTEN      1440/mysqld
tcp        0      0 localhost:mysql         localhost:56314         TIME_WAIT   -
tcp        0      0 localhost:mysql         localhost:56311         TIME_WAIT   -
tcp        0      0 localhost:mysql         localhost:56315         TIME_WAIT   -
tcp        0      0 localhost:mysql         localhost:56313         TIME_WAIT   -
tcp        0      0 localhost:mysql         localhost:56312         TIME_WAIT   -
Ich habe schon soviel ausprobiert, soviel gelesen und soviel eingegeben, daß ich überhaupt nicht mehr durchblicke - es ist absolut verwirrend und unerträglich komplex geworden.
Ich hatte einiges zu den virtuellen email Benutzern von hier gehabt: HowtoForge Linux Tutorials » Virtuelle Benutzer und Domains Mit Postfix, Courier Und MySQL (Ubuntu 7.10) das ging aber alles nicht

Leider nicht alles, denn ich fing mit der Arbeit an, bevor ich dieses Tutorial hier fand.

Vielleicht kann mir jemand netterweise behilflich sein?
 

Till

Administrator
#3
Dein aktuelles setup ist ein mischmasch aus einem Linux User setup und einem mysql virtual User setup. Das macht so nicht viel Sinn und wird auch nicht sauber funktionieren denn postfix kommt damit nicht klar.

Mehrere Tutorials zu mischen bei einer Installation geht an sich immer schief, zumindest wenn man nicht ein Linux Crack ist. Daher würde ich Dir empfehlen einfach mal das System zu formatieren und nur einem Tutorial zu folgen um es neu aufzusetzen.
 

Werbung

Top