Seu maior problema foi que mailx , quando chamado de um script de shell executado por smartd , iniciado por systemd , no Arch Linux, não estava lendo o arquivo $HOME/.mailrc do usuário root.
Isso foi causado por alguns fatores:
- O
mailxno Arch Linux, s-nail , depende da variável de ambienteHOMEao procurar pelo arquivo.mailrc. SeHOMEnão estiver presente, ele usará o diretório de trabalho atual.
if ((cp = getenv("HOME")) == NULL)
cp = "."; /* XXX User and Login objects; Login: pw->pw_dir */
homedir = savestr(cp);
-
systemddefineHOMEapenas quando o arquivo de configuração da unidade contém a opçãoUser.
De Variáveis de ambiente em processos gerados :
$USER, $LOGNAME, $HOME, $SHELL
User name (twice), home directory, and the login shell. The variables are set for the units that have User= set, which includes user systemd instances.
Como não havia nenhuma variável HOME no ambiente fornecido para smartd e provavelmente foi iniciado no diretório / , mailx não leu o arquivo /root/.mailrc .
Para corrigir: adicione a linha
export HOME=~
ou
export MAILRC=~/.mailrc
para o shell script antes de invocar mailx
ou (não testado por mim) adicione
User=root
à sub-rotina [Service] do seu arquivo de configuração da unidade smartd.service .