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
Wanderlei,
Muito obrigado sua dica me ajudou a configurar o envio de e-mails pelo bacula!
Sucesso.