Das Installationsverfahren von Postfix erstellte einen Systembenutzer postfix
und seine primäre Gruppe, postfix
während das Installationsverfahren für OpenDKIM einen Systembenutzer opendkim
und seine primäre Gruppe erstellte opendkim
.
Um die Zusammenarbeit von Postfix und OpenDKIM zu ermöglichen, tun die meisten Administratoren zwei Dinge:
A
Sie hängen eine sekundäre Gruppe opendkim
an Postfix an.
B
Sie legen die OpenDKIM-Konfigurationsdatei so fest /etc/opendkim.conf
, dass mit diesen drei (zwei) Zeilen ein UNIX-Socket erstellt wird:
UMask 002
PidFile /var/run/opendkim/opendkim.pid
Socket local:/var/spool/postfix/opendkim/opendkim.sock
In der offiziellen OpenDKIM-Dokumentation heißt es für den Konfigurationsparameter UMask
:
Fordert eine bestimmte Berechtigungsmaske an, die für die Dateierstellung verwendet werden soll. Dies gilt eigentlich nur für die Erstellung des Sockets, wenn Socket einen UNIX-Domänensocket angibt, und für die PidFile (falls vorhanden);
Ich weiß, dass UNIX-Sockets praktisch sind, weil sie Benutzerrechte einschränken können. In meinem Fall möchte ich, dass OpenDKIM so sicher wie möglich mit Postfix funktioniert. Aber mit UMask
der Einstellung auf 002
UNIX wird ein Socket mit Eigentumsrechten opendkim:opendkim
und Berechtigungen 664
= erstellt rw-rw-r--
.
Ich verstehe, dass Gruppenmitglieder (Postfix) den UNIX-Socket lesen und schreiben müssen, aber ich verstehe nicht, warum fast alle Online-Tutorials (A,B,C...) Leserechte für andere belassen?
Handelt es sich hier um ein allgemeines Missverständnis? Wäre nicht ein angemessener Wert für UMask
? 007
Außerdem wird die PID-Datei mit denselben Berechtigungen erstellt ...
Wenn ich einen beliebigen anderen UNIX-Socket auf meinem System überprüfe, haben einige auch Rechte für andere ... Warum ist das wichtig?
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ss -x -l | head -n 10
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_dgr UNCONN 0 0 /run/systemd/notify 14848 * 0
u_str LISTEN 0 128 /var/run/dovecot/director-userdb 13957121 * 0
u_str LISTEN 0 128 /run/systemd/private 14852 * 0
u_str LISTEN 0 100 /var/run/dovecot/dict 13957125 * 0
u_str LISTEN 0 128 /var/run/dovecot/dict-async 13957129 * 0
u_str LISTEN 0 1 /var/run/irqbalance568.sock 17673 * 0
u_dgr UNCONN 0 0 /run/systemd/journal/syslog 14859 * 0
u_str LISTEN 0 128 /var/run/dovecot/config 13957133 * 0
u_str LISTEN 0 128 /var/run/dovecot/login/login 13957135 * 0
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ls -l /var/run/dovecot/config
srw------- 1 root root 0 Dec 31 07:35 /var/run/dovecot/config
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ls -l /var/run/dovecot/login/login
srw-rw-rw- 1 root root 0 Dec 31 07:35 /var/run/dovecot/login/login
Antwort1
Die Verwendung einer Umask von 002
wird wahrscheinlich durch die allgemeine Standard-Umask von beeinflusst 022
- was auch der Wert der OpenDKIM-Beispielkonfiguration istzitiert.
Da opendkim eine umask-Einstellung sowohl für die pidfile-Unddie Socket-Datei, kann es erforderlich sein, anderen den Lesezugriff auf die PID-Datei zu erlauben, so dass auch die Socket-Datei mit Leseberechtigung für andere erstellt wird, alsNebenwirkung.
Wenn Sie die Erstellung von PID-Dateien nicht einmal aktivieren (bei systemd brauchen Sie sie beispielsweise nicht) und den Postfix-Benutzer zur OpenDKIM-Gruppe hinzufügen, ist eine Umask von 007
sinnvoll.
Alternativ können Sie opendkim den Socket in einem Verzeichnis erstellen lassen, auf das nur opendkim und postfix wie folgt zugreifen können:
$ cat /etc/tmpfiles.d/opendkim.conf
d /run/opendkim-postfix 0750 opendkim postfix -
Hauptkonfigurationsausschnitt von OpenDKIM:
UMask 000
Socket local:/run/opendkim-postfix/opendkim.sock
Was dazu führt:
# find /run/opendkim-postfix -printf '%M %m %p\n'
drwxr-x--- 750 /run/opendkim-postfix
srwxrwxrwx 777 /run/opendkim-postfix/opendkim.sock
Auf diese Weise müssen Sie den Postfix-Benutzer nicht zur Opendkim-Gruppe hinzufügen.
Die Qualität der von Ihnen zitierten Tutorials ist möglicherweise begrenzt, da einige Cloud-Anbieter ihre technische Dokumentation an Kunden auslagern, die dann durch Cloud-Credits belohnt werden. Daher kann ein solches Tutorial, wie man sich vorstellen kann, andere vorhandene Tutorials und Beispielkonfigurationen ohne große Kritik verwenden.