Tomek
05.11.04, 19:55
Huhu,
SysCP arbeitet ohne Shell-Benutzer. Alle User und Daten sind in der MySQL-Datenbank gespeichert. Das rennt auch alles soweit ganz prima. Jedoch habe ich ein Problem mit maildrop.
Ich möchte eingehende Mails auf dem Server durch Spamassassin jagen und serverseitig Mails filtern für courier-imap. Bisher habe ich das alles mit procmail gelöst, das allerdings hierbei aufgrund der fehlenden Shell-User nicht möglich ist.
courier-maildrop habe ich per dpkg-buildpackage neu kompilert, so dass ich nun MySQL-Support habe und die Datei /etc/maildropmysql.config verwendet wird:
$ maildrop -v
maildrop 1.7.0 Copyright 1998-2003 Double Precision, Inc.
GDBM extensions enabled.
Maildir quota extension enabled.
Virtual user database extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
Konfigurationsdateien
/etc/postfix/main.cf:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost =
append_dot_mydomain = no
myhostname = srv.testdomain.de
mydomain = testdomain.de
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_invalid_hostname, reject_unknown_sender_domain
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_mailbox_base = /var/kunden/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
virtual_transport = maildrop
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_use_tls = no
smtpd_enforce_tls = no
bounce_size_limit = 50000
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
/etc/postfix/master.cf:
[...]
maildrop unix - n n - - pipe
flags=R user=vmail argv=/usr/bin/maildrop -d ${user}@${nexthop} ${extension} ${recipient} ${user}
${nexthop} ${sender}
#maildrop unix - n n - - pipe
# flags=R user=vmail argv=/usr/bin/maildrop -d ${recipient}
#maildrop unix - n n - - pipe
# flags=R user=vmail argv=/usr/bin/maildrop -V9
# -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${sender}
[...]
Ich habe übrigens alle 3 Maildrop-Konfigurationen probiert. Jedoch gibts ein Problem bei der Zustellung der eingehenden Mail (ohne maildrop gehts einwandfrei):
Nov 5 06:29:00 srv postfix/pipe[32662]: 2A29C2AF1: to=<meinuser@testdomain.de>, relay=maildrop, delay=0, status=bounced (user unknown. Command output: Invalid user specified. )
Hier die dazugehörigen Queries aus dem mysql.log:
041105 13:58:00 4 Connect syscp@localhost on syscp
4 Query select domain from panel_domains where domain = 'absenderdomain.de'
4 Query select domain from panel_domains where domain = 'empfaengerdomain.de'
5 Connect syscp@localhost on syscp
5 Query select destination from mail_virtual where email = 'tomek@empfaengerdomain.de'
6 Connect syscp@localhost on syscp
6 Query select destination from mail_virtual where email = 'tomek@empfaengerdomain.de'
4 Query select domain from panel_domains where domain = 'empfaengerdomain.de'
7 Connect syscp@localhost on
7 Init DB syscp
7 Query SELECT email, uid, gid, homedir, maildir, 50000000 FROM mail_users WHERE email = "tomek@empfaengerdomain.de" "where postfix = 'Y'"
7 Quit
6 Query select destination from mail_virtual where email = 'absender@absenderdomain.de'
6 Query select destination from mail_virtual where email = '@absenderdomain.de'
4 Query select domain from panel_domains where domain = 'absenderdomain.de'
041105 13:59:00 5 Quit
6 Quit
4 Quit
(Domains sind auf Beispiele abgeändert.)
Wo steckt nun der Fehler? Bis zum Filtern, also das Auslesen der /etc/courier/maildroprc, kommt es ja gar nicht. Ich komme da nicht hinter. Bin dankbar für jede Idee. :ugly:
SysCP arbeitet ohne Shell-Benutzer. Alle User und Daten sind in der MySQL-Datenbank gespeichert. Das rennt auch alles soweit ganz prima. Jedoch habe ich ein Problem mit maildrop.
Ich möchte eingehende Mails auf dem Server durch Spamassassin jagen und serverseitig Mails filtern für courier-imap. Bisher habe ich das alles mit procmail gelöst, das allerdings hierbei aufgrund der fehlenden Shell-User nicht möglich ist.
courier-maildrop habe ich per dpkg-buildpackage neu kompilert, so dass ich nun MySQL-Support habe und die Datei /etc/maildropmysql.config verwendet wird:
$ maildrop -v
maildrop 1.7.0 Copyright 1998-2003 Double Precision, Inc.
GDBM extensions enabled.
Maildir quota extension enabled.
Virtual user database extension enabled.
Virtual user database via MySQL extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
Konfigurationsdateien
/etc/postfix/main.cf:
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
relayhost =
append_dot_mydomain = no
myhostname = srv.testdomain.de
mydomain = testdomain.de
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_invalid_hostname, reject_unknown_sender_domain
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_mailbox_base = /var/kunden/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
virtual_transport = maildrop
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_use_tls = no
smtpd_enforce_tls = no
bounce_size_limit = 50000
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +
/etc/postfix/master.cf:
[...]
maildrop unix - n n - - pipe
flags=R user=vmail argv=/usr/bin/maildrop -d ${user}@${nexthop} ${extension} ${recipient} ${user}
${nexthop} ${sender}
#maildrop unix - n n - - pipe
# flags=R user=vmail argv=/usr/bin/maildrop -d ${recipient}
#maildrop unix - n n - - pipe
# flags=R user=vmail argv=/usr/bin/maildrop -V9
# -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${sender}
[...]
Ich habe übrigens alle 3 Maildrop-Konfigurationen probiert. Jedoch gibts ein Problem bei der Zustellung der eingehenden Mail (ohne maildrop gehts einwandfrei):
Nov 5 06:29:00 srv postfix/pipe[32662]: 2A29C2AF1: to=<meinuser@testdomain.de>, relay=maildrop, delay=0, status=bounced (user unknown. Command output: Invalid user specified. )
Hier die dazugehörigen Queries aus dem mysql.log:
041105 13:58:00 4 Connect syscp@localhost on syscp
4 Query select domain from panel_domains where domain = 'absenderdomain.de'
4 Query select domain from panel_domains where domain = 'empfaengerdomain.de'
5 Connect syscp@localhost on syscp
5 Query select destination from mail_virtual where email = 'tomek@empfaengerdomain.de'
6 Connect syscp@localhost on syscp
6 Query select destination from mail_virtual where email = 'tomek@empfaengerdomain.de'
4 Query select domain from panel_domains where domain = 'empfaengerdomain.de'
7 Connect syscp@localhost on
7 Init DB syscp
7 Query SELECT email, uid, gid, homedir, maildir, 50000000 FROM mail_users WHERE email = "tomek@empfaengerdomain.de" "where postfix = 'Y'"
7 Quit
6 Query select destination from mail_virtual where email = 'absender@absenderdomain.de'
6 Query select destination from mail_virtual where email = '@absenderdomain.de'
4 Query select domain from panel_domains where domain = 'absenderdomain.de'
041105 13:59:00 5 Quit
6 Quit
4 Quit
(Domains sind auf Beispiele abgeändert.)
Wo steckt nun der Fehler? Bis zum Filtern, also das Auslesen der /etc/courier/maildroprc, kommt es ja gar nicht. Ich komme da nicht hinter. Bin dankbar für jede Idee. :ugly: