mailx executa com sucesso, mas não envia o e-mail

0

Estou usando as funções mailx e sendmail para enviar mensagens de um conjunto de máquinas solaris com versões diferentes. E o script envia um email para a maioria da máquina. Ainda existe problema em enviar e-mail para alguns servidores. Mas não há erro mostrado enquanto executa este script.

Script 1:

uuencode report.html report.html | mailx -s "mail subject" [email protected]

Script 2:

SELFDIR='pwd'
DOCROOT=$SELFDIR"/"
MAIL_FROM="[email protected]"
MAIL_TO="[email protected]"

echo "From: "$MAIL_FROM > $DOCROOT"header.txt"
echo "To: "$MAIL_TO >> $DOCROOT"header.txt"
echo "Subject:  The mail subject  " >> $DOCROOT"header.txt"
echo "Content-Type: text/html" >> $DOCROOT"header.txt"

cat $DOCROOT"header.txt" $DOCROOT"report.html" | /usr/lib/sendmail -t

Simplesmente existe alguma maneira de encontrar o erro ou os logs da entrega de e-mails falharam em reconhecer o motivo da falha?

    
por sugunan 10.05.2016 / 14:45

2 respostas

1

Já faz muito tempo desde a última vez que usei sendmail no Solaris, mas tenho certeza de que o sinal -v mostrará o que está acontecendo:

(
    echo 'From: [email protected]'
    echo 'To: [email protected]'
    echo 'Subject: from me to you'
    echo
    finger
) | sendmail -t -v

Também tenho certeza de que mailx passa essa sinalização em diante:

echo hello, world | mailx -v -s "mail subject" [email protected]

Verifique /var/log/syslog para sendmail mensagens. Leia também o Guia de solução de problemas do sendmail para o Solaris que ajuda nas diferenças entre as versões do Solaris 8 9, 10.

    
por 10.05.2016 / 15:31
0

Aqui está uma versão ligeiramente melhorada do seu script. Ele usa $(pwd) em vez de back-ticks, aspas simples em torno de strings literais (os endereços From e To e a string de assunto), aspas duplas onde é necessária a interpolação de variável e usa um heredoc para os cabeçalhos em vez de vários echo linhas. Eu gosto de usar a string __EOF__ para delimitar heredocs porque é improvável que ocorra no corpo da heredoc ... qualquer string arbitrária também funcionaria.

Observe a linha final em branco antes do final do heredoc - uma linha em branco é necessária para separar cabeçalhos de mensagens e corpo.

BTW, variáveis são interpoladas dentro de heredocs da mesma maneira que para strings de aspas duplas. Você pode até usar a substituição de comandos $(...) neles.

#! /bin/sh

DOCROOT=$(pwd)
$header="$DOCROOT/header.txt"
$body="$DOCROOT/report.html"

MAIL_FROM='[email protected]'
MAIL_TO='[email protected]'
$subject='The mail subject'

cat <<__EOF__ > "$header"
From: $MAIL_FROM
To: $MAIL_TO
Subject: $subject
Content-Type: text/html

__EOF__

cat "$header" "$body" | /usr/lib/sendmail -t

Deixe-me saber se isso resolve o seu problema.

BTW para responder a sua pergunta real, sendmail deve estar fazendo o login para onde quer que o correio de instalação esteja sendo enviado em seu sistema - possivelmente /var/log/mail.log ou similar, tente grep mail /etc/syslog.conf para verificar isso.

    
por 10.05.2016 / 15:16

Tags