Soluzione 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
Quindi, prova questo:
# useradd -K MAIL_DIR=/dev/null nomailuser
Viene visualizzato un avviso (Creazione del file della casella di posta in corso:non una directory ), ma puoi ignorare.
Soluzione 2:
Sto configurando un'immagine Docker con il pacchetto Alpine e shadow e ho ricevuto lo stesso errore.
Per evitare questo "Creazione del file della casella di posta in corso:file o directory non presenti" errore Ho dovuto aggiungere la seguente sostituzione in linea prima di provare ad aggiungere l'utente:
RUN sed -i 's/^CREATE_MAIL_SPOOL=yes/CREATE_MAIL_SPOOL=no/' /etc/default/useradd
Questa è una direttiva Dockerfile . Se stai lottando con un host già in esecuzione, modifica semplicemente il file /etc/default/useradd e cambia l'impostazione di conseguenza. Questa modifica impedirebbe a qualsiasi altra creazione utente di ottenere la creazione della propria casella di posta.
Se questo non è il comportamento desiderato, puoi semplicemente creare la cartella /var/mail con
[ -d /var/mail ] || mkdir /var/mail
O nel Dockerfile:
RUN mkdir /var/mail
Spero che questo abbia aiutato.
Soluzione 3:
Stranamente, la risposta è no. Ho appena letto il codice sorgente e non c'è alcuna opzione per questo, anche se c'è una soluzione alternativa (una specie di):le maildir non vengono create per gli account di sistema.
Quindi puoi fare useradd -r -m
. Dovrai specificare manualmente anche un UID/GID, poiché vengono scelti da intervalli diversi.