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
mailx
no Arch Linux, s-nail , depende da variável de ambienteHOME
ao procurar pelo arquivo.mailrc
. SeHOME
nã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);
-
systemd
defineHOME
apenas 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
.