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.