Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[postfix] maildir delivery failed

56 views
Skip to first unread message

Jens Meißner

unread,
Mar 6, 2008, 2:11:06 PM3/6/08
to
Hallo,
ich habe einen Postfix MTA laufen, welcher die Mails nach /var/mail
speichert und nur mit real existierenden Systembenutzern (aus der Datei
/etc/passwd) arbeitet. Wenn ich jetzt einem Benutzer die erste Mail
schicke, für den noch keine Mailbox existiert, bekomme ich nur folgende
Fehlermeldung:

maildir delivery failed: create maildir file
/var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied

Die Rechte des Ordners waren auf 775 / root:mail gesetzt. Der
Postfixbenutzer befindet sich in der Gruppe mail. Wenn ich die Rechte
des Verzeichnisses auf 777 ändere, klappt es, dass der Ordner mit den
Unterordnern cur, new und tmp angelegt wird und die Mail gespeichert wird.
Muss ich auf das Verzeichnis wirklich allen Benutzern Schreibrechte
geben? Oder geht es auch anders? Mir scheint das so ein wenig unsicher.

Vielen Dank für eure Hilfe
Jens

Message has been deleted

Juergen P. Meier

unread,
Mar 6, 2008, 11:33:07 PM3/6/08
to
Jens Meißner <meis...@temporaryforwarding.com>:

> ich habe einen Postfix MTA laufen, welcher die Mails nach /var/mail
> speichert und nur mit real existierenden Systembenutzern (aus der Datei
> /etc/passwd) arbeitet. Wenn ich jetzt einem Benutzer die erste Mail
> schicke, für den noch keine Mailbox existiert, bekomme ich nur folgende
> Fehlermeldung:
>
> maildir delivery failed: create maildir file
> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied

> Die Rechte des Ordners waren auf 775 / root:mail gesetzt. Der

Existiert denn /var/mail/admin/ ? Das muss dann auch dem USer gehoern,
nicht root.

Denn: maildir delivery macht:
set_eugid(usr_attr.uid, usr_attr.gid);
bevor er versucht auf die Maildirs zuzugreifen.

Das mit GID=mail gilt nur fuer MBOX-File delivery! Und auch da
muessen die mailboxfiles dem User gehoeren.

Postfix selbst erzeugt kein Maildir-directory!

(RTFM)

> Postfixbenutzer befindet sich in der Gruppe mail. Wenn ich die Rechte
> des Verzeichnisses auf 777 ändere, klappt es, dass der Ordner mit den
> Unterordnern cur, new und tmp angelegt wird und die Mail gespeichert wird.
> Muss ich auf das Verzeichnis wirklich allen Benutzern Schreibrechte
> geben? Oder geht es auch anders? Mir scheint das so ein wenig unsicher.

Nein, es geht auch anders:

Beim Anlegen des Benutzers auch gleich sein Maildir anlegen und chown
user drauf machen. GID ist egal.

Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)

Juergen P. Meier

unread,
Mar 6, 2008, 11:39:46 PM3/6/08
to
Heiko Schlenker <hsc...@gmx.de>:
> * Jens Meißner <meis...@temporaryforwarding.com> schrieb:

>
>> ich habe einen Postfix MTA laufen,
>
> Welche Postfix-Version unter welchem Betriebssystem?

>
>> maildir delivery failed: create maildir file
>> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied
>>
>> Die Rechte des Ordners waren auf 775 / root:mail
>
> Du meinst Verzeichnis (engl. directory)? Ordner (engl. folder) sind
> was anderes, nämlich Container. ;-)

"maildir" kommt von Qmail, und ist ein weiterer Versuch die Welt zu
verschlimmbessern sowie Probleme mit dem mbox-fileformat zu loesen,
die meist nicht relevant sind und sich statdessen die Probleme von
Dateisystemen einzufangen. Einzig in bestimmten (archaischen)
Backupszenarien hat das Vorteile (wenn eine Fielsystemorientierte
Backupsoftware mit Mailboxfiles nicht speziell umgehen.
Sinnvollerweise loest man dieses Problem in der Backupsoftware,
nicht im Mailsystem - do'h.).

Ganz besonders gut lache ich dann ueber diejenigen, die maildirs
auf reisserfs legen, weils da so super performant ist!!1elf.
(Ok, dafuer ist das Backup/Restore einfach und effizient, dass man
dann aber auch wirklich braucht).

> Versuch's mal mit 2770 und admin:mail bzw. root:mail, sowohl für

Flasch. 0700 und es muss dem User gehoeren. 770 mit Gruppe mail
mag fuer andere MDAs auf dem System noetig sein (oder IMAP Server).

> /var/mail/admin als auch für /var/mail/admin/tmp.

/var/mail/admin/ muss ein Verzeichnis sein (maildir vs. mailbox)
und dem user gehoeren. die GID kann man auf mail stellen, allerdings
interessiert sich postfix dafuer wenig, denn es setzt EUID und EGID
auf die des Users vor dem Versuch auf Unterverzeichnisse und Dateien
unterhalb des Maildirs zuzugreifen (es versucht diese auch mit
$UID.$GID und modbits 0700 anzulegen).

Das maildir muss bereits existieren.

HTH,

Jens Meißner

unread,
Mar 7, 2008, 3:56:13 AM3/7/08
to
Juergen P. Meier schrieb:

> Jens Meißner <meis...@temporaryforwarding.com>:
>> ich habe einen Postfix MTA laufen, welcher die Mails nach /var/mail
>> speichert und nur mit real existierenden Systembenutzern (aus der Datei
>> /etc/passwd) arbeitet. Wenn ich jetzt einem Benutzer die erste Mail
>> schicke, für den noch keine Mailbox existiert, bekomme ich nur folgende
>> Fehlermeldung:
>>
>> maildir delivery failed: create maildir file
>> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied
>
>> Die Rechte des Ordners waren auf 775 / root:mail gesetzt. Der
>
> Existiert denn /var/mail/admin/ ? Das muss dann auch dem USer gehoern,
> nicht root.
Nein, es existiert nicht. Es sollte bei der ersten eintreffenden Mail
angelegt werden. Wird es auch, aber nur wenn auf dem Verzeichnis
/var/mail die Rechte 0777 sind.

>
> Denn: maildir delivery macht:
> set_eugid(usr_attr.uid, usr_attr.gid);
> bevor er versucht auf die Maildirs zuzugreifen.
>
> Das mit GID=mail gilt nur fuer MBOX-File delivery! Und auch da
> muessen die mailboxfiles dem User gehoeren.
>
> Postfix selbst erzeugt kein Maildir-directory!
Doch, wenn die Rechte für /var/mail 0777 sind.

>
> (RTFM)
>
>> Postfixbenutzer befindet sich in der Gruppe mail. Wenn ich die Rechte
>> des Verzeichnisses auf 777 ändere, klappt es, dass der Ordner mit den
>> Unterordnern cur, new und tmp angelegt wird und die Mail gespeichert wird.
>> Muss ich auf das Verzeichnis wirklich allen Benutzern Schreibrechte
>> geben? Oder geht es auch anders? Mir scheint das so ein wenig unsicher.
>
> Nein, es geht auch anders:
>
> Beim Anlegen des Benutzers auch gleich sein Maildir anlegen und chown
> user drauf machen. GID ist egal.

Mein Frage war, ob es auch geht, wenn für /var/mail nicht für alle
Benutzer lesen und schreiben gestattet ist.

Jens Meißner

unread,
Mar 7, 2008, 3:58:50 AM3/7/08
to
Heiko Schlenker schrieb:

> * Jens Meißner <meis...@temporaryforwarding.com> schrieb:
>
>> ich habe einen Postfix MTA laufen,
>
> Welche Postfix-Version unter welchem Betriebssystem?
Gentoo Kernel 2.6.19-gentoo-r5-G5 ppc64 PPC970
Postfix 2.4.6-r2

>
>> maildir delivery failed: create maildir file
>> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied
>>
>> Die Rechte des Ordners waren auf 775 / root:mail
>
> Du meinst Verzeichnis (engl. directory)? Ordner (engl. folder) sind
> was anderes, nämlich Container. ;-)
Gut

>
> Versuch's mal mit 2770 und admin:mail bzw. root:mail, sowohl für
> /var/mail/admin als auch für /var/mail/admin/tmp.
Ich meinte, das die Rechte für /var/mail gesetzt sind.

Juergen P. Meier

unread,
Mar 7, 2008, 4:02:29 AM3/7/08
to
Jens Meißner <meis...@temporaryforwarding.com>:

> Juergen P. Meier schrieb:
>> Jens Meißner <meis...@temporaryforwarding.com>:
>>> ich habe einen Postfix MTA laufen, welcher die Mails nach /var/mail
>>> speichert und nur mit real existierenden Systembenutzern (aus der Datei
>>> /etc/passwd) arbeitet. Wenn ich jetzt einem Benutzer die erste Mail
>>> schicke, für den noch keine Mailbox existiert, bekomme ich nur folgende
>>> Fehlermeldung:
>>>
>>> maildir delivery failed: create maildir file
>>> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied
>>
>>> Die Rechte des Ordners waren auf 775 / root:mail gesetzt. Der
>>
>> Existiert denn /var/mail/admin/ ? Das muss dann auch dem USer gehoern,
>> nicht root.
> Nein, es existiert nicht. Es sollte bei der ersten eintreffenden Mail
> angelegt werden. Wird es auch, aber nur wenn auf dem Verzeichnis
> /var/mail die Rechte 0777 sind.

Falsch. Bitte Lies die Dokumentation zu Maildirs.

Maildirs muessen vorhanden sein, und /var/mail sollte tunlichst keine
Schreibrechte fuer alle haben.

>> Postfix selbst erzeugt kein Maildir-directory!
> Doch, wenn die Rechte für /var/mail 0777 sind.

Nein. Tut es nicht. Wenn du mir nicht glaubst, dann schau doch selbst
in src/local/maildir.c (postfix-sourcen) nach. Es legt
/unterverzeichnisse/ automatisch an, aber verweigert die Arbiet, wenn
das Maildir nicht existiert (ganz im Einklang mit dem Konzept von
Maildirs uebrigens. It's not a bug, it's a feature.)



>> Nein, es geht auch anders:
>>
>> Beim Anlegen des Benutzers auch gleich sein Maildir anlegen und chown
>> user drauf machen. GID ist egal.
>
> Mein Frage war, ob es auch geht, wenn für /var/mail nicht für alle
> Benutzer lesen und schreiben gestattet ist.

Ja: Wenn du als Admin bei User-anlegen auch das passende Maildir
anlegst. So wie das bei Maildirs vorgesehen ist.

Wenn du schon Maildirs verwendest, solltest du dich wenigstens mit den
Konzepten bekannt machen.

Jens Meißner

unread,
Mar 7, 2008, 5:12:32 AM3/7/08
to
Ich hab es gerade noch einmal ausprobiert. Auf meinen System legt
postfix einen maildir an, wenn und nur wenn die Rechte für /var/mail
0777 sind oder wenn der Betreffende Benutzer Eigentümer von /var/mail.
Es reicht ja nicht einmal, wenn der Benutzer in der Gruppe mail ist.
Das mit den vollen Schreibrechten ist natürlich kein Zustand, der so
bleiben darf. Schließlich gibt es einen Unterschied zwischen /var/mail
und /tmp ;-)

>>> Nein, es geht auch anders:
>>>
>>> Beim Anlegen des Benutzers auch gleich sein Maildir anlegen und chown
>>> user drauf machen. GID ist egal.
>> Mein Frage war, ob es auch geht, wenn für /var/mail nicht für alle
>> Benutzer lesen und schreiben gestattet ist.
>
> Ja: Wenn du als Admin bei User-anlegen auch das passende Maildir
> anlegst. So wie das bei Maildirs vorgesehen ist.
Also gut, dann werde ich das wohl machen müssen. Wir war so, als hätte
ich irgendwann mal gelesen, das adduser gleich ein solches Verzeichnis
mit anlegen kann. Nur in meinen Manual-Seiten finde ich keinen Kommentar
dazu. Welche Option muss ich da setzen? Oder irr ich da jetzt?
Message has been deleted
Message has been deleted

Jens Meißner

unread,
Mar 7, 2008, 8:15:59 AM3/7/08
to
Heiko Schlenker schrieb:

>>>> maildir delivery failed: create maildir file
>>>> /var/mail/admin/tmp/1204829466.P31777.intranet: Permission denied
>>>>
>>>> Die Rechte des Ordners waren auf 775 / root:mail
> [...]

>> Ich meinte, das die Rechte für /var/mail gesetzt sind.
>
> Hier für /var/mail: 2775 und root:mail.

Hm, funktioniert leider immer noch nicht, habe auch 4775 und 6775
ausprobiert, leider ohne Erfolg.

Gruß
Jens

Message has been deleted

Jens Meißner

unread,
Mar 7, 2008, 12:35:41 PM3/7/08
to
Heiko Schlenker schrieb:
> * Jens Meißner <meis...@temporaryforwarding.com> schrieb:
>
>> Heiko Schlenker schrieb:

>>> Hier für /var/mail: 2775 und root:mail.
>> Hm, funktioniert leider immer noch nicht, habe auch 4775 und 6775
>> ausprobiert, leider ohne Erfolg.
>
> Was sagt denn:
> ls -ld /var/mail /var/mail/admin /var/mail/admin/tmp

drwxrwxr-x 3 root mail 4096 Mar 7 14:10 /var/mail
drwx------ 9 admin admin 4096 Mar 7 18:32 /var/mail/admin
drwx------ 2 admin admin 4096 Mar 7 12:12 /var/mail/admin/tmp

(Nur dass das jetzt nicht falsch rüber kommt, die Mails für admin kommen
an, aber für Benutzer, die kein Ordner haben halt noch nicht geht es
halt nicht. Die Rechte für /var/mail sind auch ersteinmal wieder im
Ausgangszustand, mit den anderen Rechten hat es aber wie schon gesagt
auch nicht funktioniert.)

server ~ # ls -la /var/mail/
total 12
drwxrwxr-x 3 root mail 4096 Mar 7 14:10 .
drwxr-xr-x 16 root root 4096 Mar 7 18:23 ..
-rw-r--r-- 1 root root 0 Feb 21 21:35 .keep_net-mail_mailbase-0
drwx------ 9 admin admin 4096 Mar 7 18:32 admin
server ~ #

Gruß
Jens

Message has been deleted

Jens Meißner

unread,
Mar 8, 2008, 2:16:11 AM3/8/08
to
Heiko Schlenker schrieb:
> * Jens Meißner <meis...@temporaryforwarding.com> schrieb:
>
>> Heiko Schlenker schrieb:
>>> Was sagt denn:
>>> ls -ld /var/mail /var/mail/admin /var/mail/admin/tmp
>> drwxrwxr-x 3 root mail 4096 Mar 7 14:10 /var/mail
>> drwx------ 9 admin admin 4096 Mar 7 18:32 /var/mail/admin
>> drwx------ 2 admin admin 4096 Mar 7 12:12 /var/mail/admin/tmp
>>
>> (Nur dass das jetzt nicht falsch rüber kommt, die Mails für admin kommen
>> an, aber für Benutzer, die kein Ordner haben halt noch nicht geht es
>> halt nicht.
>
> Verzeichnisse des Musters /var/mail/$USER müssen angelegt werden,
> bevor Nachrichten zugestellt werden können.
Ich muss sie also doch anlegen. Naja, da werde ich wohl nicht drumherum
kommen.

Vielen Dank für die Hilfe noch mal!
Jens

0 new messages