Enviar email autenticado usando sendEmail ou PHPMailer

Existe um cliente SMTP desenvolvido em perl chamado “sendEmail”, que é leve e intuitivo para enviar emails autenticados sem a necessidade de possuir instalado nenhum MTA (Mail Tranfer Agent).

Faça o download do programa clicando no link abaixo:
http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

Após baixar o arquivo, extrair para /usr/src e copiar o arquivo “sendEmail.pl” para /usr/local/bin e dar permissões a+x

cd /usr/src && wget -c http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz && tar xvzf sendEmail-v1.56.tar.gz && cp /usr/src/sendEmail-v1.56/sendEmail.pl /usr/local/bin && chmod a+x /usr/local/bin/sendEmail.pl

Criar o script abaixo em /etc/bacula/scripts/_email.sh e também dar permissão a+x.

#!/bin/bash
# script /etc/bacula/script/_email.sh
#!/bin/bash

# Configurção das variáveis
USERNAME="remetente@gmail.com" # <= coloque seu usuário do gmail
USERPWD="XXXXX" # <= coloque sua senha do gmail
MAILFROM="Bacula <$USERNAME>"
SMTPADDRESS="smtp.gmail.com:587"
TLSOPTIONS="tls=auto"
VERBOSE=0 # altere para 1 p/ habilitar o debug
SUBJECT=$1
MAILTO=`echo $2 | sed -e 's/ / -t /g'`
MESSAGEBODY=$3

if [ $VERBOSE -eq 0 ]; then
   VERBOSE="-q"
else
   VERBOSE="-v"
fi

#Envia o email
/usr/local/bin/sendEmail.pl -f "$MAILFROM" -t $MAILTO -u $SUBJECT -m $MESSAGEBODY -xu $USERNAME -xp $USERPWD -s $SMTPADDRESS -o $TLSOPTIONS $VERBOSE

Existe um pequeno bug que precisa ser corrigido para enviar emails pelo gmail.
Deve-se alterar a linha 1906 do arquivo /usr/local/bin/sendEmail.pl
de: if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
para: if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'TLSv1
')) {

Alterar a diretiva Messages no bacula-dir.conf conforme abaixo e dar um reload no bconsole.

Messages {
   Name = Standard
   mailcommand = "/etc/bacula/scripts/_email.sh \"Bacula: %t %e of %c %l\" %r"
   operatorcommand = "/etc/bacula/scripts/_email.sh \"Bacula: Intervention needed for %j\" %r"
   mail = destinatario@dominio.com.br = all, !skipped
   operator = destinatario@dominio.com.br = mount
   console = all, !skipped, !saved
   append = "/etc/bacula/log/bacula.log" = all, !skipped
   catalog = all, !skipped, !saved
}

Para testar se está funcionando, digite o seguinte comando:
echo "mensagem teste" | /etc/bacula/scripts/_email.sh "Assunto email" destinatario@dominio.com.br

Se tudo ocorrer bem você receberá o email

Uma outra alternativa seria usar um script php com a classe PHPMailer.
Faça o download do programa clicando no link abaixo:
https://github.com/PHPMailer/PHPMailer/archive/master.zip

Após baixar o arquivo, extrair para /usr/src.
wget -c https://github.com/PHPMailer/PHPMailer/archive/master.zip && unzip master.zip && mv PHPMailer-master PHPMailer

Criar o script abaixo em /etc/bacula/scripts/_email.php e também dar permissão a+x.

<?php
// script /etc/bacula/script/_email.sh
require_once("/usr/src/PHPMailer/class.phpmailer.php");
require_once("/usr/src/PHPMailer/class.smtp.php");

$sBody            = stream_get_contents(STDIN);
$sSubject         = $argv[1];
$sMailTo          = $argv[2];
$sNameFrom        = "Bacula";
$sUserName        = "remetente@gmail.com";
$sUserPassword    = "XXXXX";
$sSMTPServer      = "smtp.gmail.com";
$sSMTPPort        = "587";


//***** PHP Mailer *****
date_default_timezone_set('America/Sao_Paulo');
$mail              = new PHPMailer();
$mail->CharSet     = 'UTF-8';
$mail->IsSMTP();
$mail->SMTPAuth    = true;
$mail->SMTPAutoTLS = true;
$mail->SMTPDebug   = 0; // 1 = errors and messages or 2 = messages only
$mail->Host        = $sSMTPServer;
$mail->Port        = $sSMTPPort;
$mail->Username    = $sUserName;
$mail->Password    = $sUserPassword;
$mail->SingleTo    = true;
$mail->From        = $sUserName;
$mail->FromName    = $sNameFrom;
$mail->Sender      = $mail->Username;
$mail->Subject     = $sSubject;
$mail->Body        = $sBody;

if($sMailTo != ""){
   $sAddressTo = explode(" ", $sMailTo);
   for($i=0;$i<count($sAddressTo);$i++){
      $mail->AddAddress($sAddressTo[$i], "");
   }
}
if(!$mail->Send()) {
  return $mail->ErrorInfo;
}
else{
   exit(0);
}
?>

Alterar a diretiva Messages no bacula-dir.conf conforme abaixo e dar um reload no bconsole.

Messages {
   Name = Standard
   mailcommand = "/usr/bin/php /etc/bacula/scripts/_email.php \"Bacula: %t %e of %c %l\" \"%r\""
   operatorcommand = "/usr/bin/php /etc/bacula/scripts/_email.php \"Bacula: Intervention needed for %j\" \"%r\""
   mail = destinatario@dominio.com.br = all, !skipped
   operator = destinatario@dominio.com.br = mount
   console = all, !skipped, !saved
   append = "/etc/bacula/log/bacula.log" = all, !skipped
   catalog = all, !skipped, !saved
}

Para testar se está funcionando, digite o seguinte comando:
echo "mensagem teste" | /usr/bin/php /etc/bacula/scripts/_email.php "Assunto email" destinatario@dominio.com.br

Se tudo ocorrer bem você receberá o email

FacebooktwitterlinkedinFacebooktwitterlinkedinby feather

Um comentário sobre “Enviar email autenticado usando sendEmail ou PHPMailer

Os comentários estão fechados.