El procedimiento de instalación de Postfix creó un usuario del sistema postfix
y su grupo principal, postfix
mientras que el procedimiento de instalación de OpenDKIM creó un usuario del sistema opendkim
y su grupo principal opendkim
.
Para permitir que Postfix y OpenDKIM funcionen juntos, la mayoría de los administradores hacen dos cosas:
A
Añaden un grupo secundario opendkim
a Postfix.
B
Configuraron el archivo de configuración OpenDKIM /etc/opendkim.conf
para crear un socket UNIX usando estas tres (dos) líneas:
UMask 002
PidFile /var/run/opendkim/opendkim.pid
Socket local:/var/spool/postfix/opendkim/opendkim.sock
La documentación oficial de OpenDKIM indica esto para el parámetro de configuración UMask
:
Solicita una máscara de permisos específica que se utilizará para la creación de archivos. En realidad, esto sólo se aplica a la creación del socket cuando Socket especifica un socket de dominio UNIX y al PidFile (si lo hay);
Sé que los sockets UNIX son convenientes porque pueden limitar los privilegios de los usuarios. En mi caso quiero que OpenDKIM funcione con Postfix de la forma más segura posible. Pero si UMask
se establece en 002
UNIX, el socket se creará con propiedad opendkim:opendkim
y privilegios 664
= rw-rw-r--
.
Entiendo que los miembros del grupo (Postfix) necesitan leer y escribir en el socket UNIX, pero no entiendo por qué casi todos los tutoriales en línea (A,B,C...) ¿dejar permisos de lectura para otros?
¿Es esto un error generalizado? ¿No UMask
sería un valor razonable 007
? Además, el archivo PID se crea utilizando los mismos privilegios...
Si reviso cualquier otro socket UNIX en mi sistema, algunos también tienen derechos para otros... ¿Por qué es importante tenerlo?
┌───┐
│ # │ 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
Respuesta1
El uso de una máscara de usuario 002
de probable está influenciado por la máscara de usuario predeterminada común de 022
, que también es la configuración de muestra de opendkim.cita.
Dado que opendkim usa una configuración de umask tanto para el archivo pidfileyel archivo de socket, puede ser necesario permitir el acceso de lectura en el archivo pid para otros, de modo que también el archivo de socket se cree con permiso de lectura para otros, como unefecto secundario.
Si ni siquiera habilita la creación de archivos pid (por ejemplo, con systemd no lo necesita) y agrega el usuario postfix al grupo opendkim, entonces una máscara umask 007
tiene sentido.
Alternativamente, puede dejar que opendkim cree el socket en un directorio al que solo puede acceder opendkim y postfix de esta manera:
$ cat /etc/tmpfiles.d/opendkim.conf
d /run/opendkim-postfix 0750 opendkim postfix -
Fragmento de configuración principal de opendkim:
UMask 000
Socket local:/run/opendkim-postfix/opendkim.sock
Lo que resulta en:
# find /run/opendkim-postfix -printf '%M %m %p\n'
drwxr-x--- 750 /run/opendkim-postfix
srwxrwxrwx 777 /run/opendkim-postfix/opendkim.sock
De esa manera no es necesario agregar el usuario postfix al grupo opendkim.
La calidad de los tutoriales que usted cita puede ser limitada, porque algunos proveedores de la nube subcontratan su documentación técnica a clientes que luego se ven incentivados por los créditos de la nube. Por lo tanto, como se puede imaginar, dicho tutorial puede utilizar otros tutoriales existentes y configuraciones de muestra sin mucha crítica.