Postfix, Courier, Maildrop: .maildir automatisch anlegen

tobix

Registered User
Hallo,

ich will mich zuerst kurz vorstellen: Tobi / 26 / Frankfurt / Fachinformatiker

Nu zu meiner Frage:
Ich habe meinen Server soweit fertig, wie ich ihn brauche.
Ich nutze Gentoo mit Postix, Courier-imap, SA und maildrop und würde gerne erreichen, dass ein .maildir automatisch erzeugt wird, sofern sich jemand per Webinterface (ein selber geschriebenes) ein Postfach anlegt.

Das Ganze lief wunderbar, solange maildrop noch nicht eingebunden war. Jeder User hat eine Mail in das neu angelegte Postfach bekommen (Willkommen...), dadurch wurde das .maildir angelegt. Die Postfachinformationen liegen alle in einer mysql-DB. Die Funktion ist überprüft, lege ich die Verzeichnisse und das .maldir per Hand an und ändere den Besitzer auf "vmail", klappt alles wunderbar.

Seit dem maildrop die Zustellung übernommen hat, klappt es leider nicht mehr. Die Fehlermeldung, die ausgegeben wird, lauter:
Code:
Aug 31 18:47:58 [postfix/smtp] DB6A6107AAB: to=<test@tobix.org>, relay=127.0.0.1[127.0.0.1], delay=6, status=sent (250 2.6.0 Ok, id=23632-11, from MTA([127.0.0.1]:10025): 250 Ok: queued as EEDB6107A84)
Aug 31 18:47:58 [postfix/qmgr] DB6A6107AAB: removed
Aug 31 18:47:58 [postfix/pipe] EEDB6107A84: to=<test@tobix.org>, relay=maildrop, delay=1, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Unable to change to home directory. )

Maildrop und Postfix laufen unter dem User "vmail".
Das Verzeichnis (/home/vmail/domain.tld/postfach/.maildir), in dem die Postfächer liegen gehört ebenfalls dem gleichen User.

Im Anhang: /etc/postfix/master.cf. Werden weiter config Dateien benötigt?

Dank und Gruß, Tobi

/etc/postfix/master.cf
Code:
smtp      inet  n       -       n       -       -       smtpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
        -o fallback_relay=
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
maildrop  unix  -       n       n       -       -       pipe
  flags=Ru user=vmail argv=/usr/bin/maildrop -d ${recipient}
old-cyrus unix  -       n       n       -       -       pipe
  flags=R user=cyrus argv=/usr/lib/cyrus/deliver -e -m ${extension} ${user}
cyrus     unix  -       n       n       -       -       pipe
  flags=hu user=cyrus argv=/usr/lib/cyrus/deliver -e -r ${sender} -m ${extension} ${user}
virt-cyrus     unix  -       n       n       -       -       pipe
  flags=hu user=cyrus argv=/usr/lib/cyrus/deliver -e -r ${sender} -m ${recipient} ${user}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient

amavis unix - - - - 2 smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
 
Hallo Tobi / 26 / Frankfurt / Fachinformatiker,

darf ich auch tobix zu Dir sagen? :)
Jedenfalls willkommen an Board.

Des Pudels Kern der Problematik ist diese Zeile:
temporary failure. Command output: /usr/bin/maildrop: Unable to change to home directory.

Wenn ich Dich richtig verstanden habe, werden die Email-Benutzer nicht als System-User angelegt, sondern stehen rein virtuell in der Datenbank. Nutzt Du denn auch die postfix-sql-Erweiterung? Wahrscheinlich, gell?
Aber ich fürchte, daß Maildrop diese Informationen aus der Datenbank nicht hat.

huschi.
 
darf ich auch tobix zu Dir sagen? :)
Jedenfalls willkommen an Board.
Gerne doch, danke für's willkommen heißen :)

Wenn ich Dich richtig verstanden habe, werden die Email-Benutzer nicht als System-User angelegt, sondern stehen rein virtuell in der Datenbank. Nutzt Du denn auch die postfix-sql-Erweiterung? Wahrscheinlich, gell?
Aber ich fürchte, daß Maildrop diese Informationen aus der Datenbank nicht hat.
Korrekt!
Maildrop legt die Mails ja korrekt ab, hat also doch, irgendwie, die Infos, wo welches Postfach liegt, sofern ich die Verzeichnisse per Hand anlege.

Ein Workaround wäre es, aus dem php Script heraus die Verzeichnisstrucktur anzulegen, per Mailversand wäre es aber eleganter.
 
Back
Top