Solución 1:
man useradd
-K, --key KEY=VALUE
Overrides /etc/login.defs defaults (UID_MIN, UID_MAX, UMASK, PASS_MAX_DAYS and others).
Example: -K PASS_MAX_DAYS=-1 can be used when creating system account to turn off password ageing, even though
system account has no password at all. Multiple -K options can be specified, e.g.: -K UID_MIN=100 -K UID_MAX=499
Entonces, prueba esto:
# useradd -K MAIL_DIR=/dev/null nomailuser
Aparecería una advertencia (Creando archivo de buzón:No es un directorio ), pero puedes ignorarlo.
Solución 2:
Estoy configurando una imagen de Docker con Alpine y el paquete shadow y obtuve el mismo error.
Para evitar esto "Creando archivo de buzón:No existe tal archivo o directorio" error Tuve que agregar el siguiente reemplazo en línea antes de intentar agregar un usuario:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Esta es una directiva de Dockerfile . Si tiene problemas con un host que ya se está ejecutando, simplemente edite el archivo /etc/default/useradd y cambie la configuración según corresponda. Este cambio evitaría que se creara su buzón de correo para cualquier otra creación de usuario.
Si ese no es el comportamiento deseado, simplemente puede crear la carpeta /var/mail con
[ -d /var/mail ] || mkdir /var/mail
O en el Dockerfile:
RUN mkdir /var/mail
Espero que esto haya ayudado.
Solución 3:
Curiosamente, la respuesta es no. Acabo de leer el código fuente y no hay ninguna opción para esto, aunque hay una solución alternativa (más o menos):los maildirs no se crean para las cuentas del sistema.
Entonces puedes hacer useradd -r -m
. Sin embargo, también deberá especificar un UID/GID manualmente, ya que se seleccionan de diferentes rangos.