Objetivo
Descrever os procedimentos necessários para integração de um relay SMTP ao OpMon, permitindo assim que os relatórios agendados e as notificações que são enviadas por e-mail possam ser entregues.
Público-alvo
Destinado aos administradores do OpMon e as equipes de TI, que necessitam realizar a integração do correio eletrônico ao OpMon.
Introdução
Após a instalação, caso seja necessário, pode-se proceder a configuração para poder integrar o correio eletrônico ao OpMon. Desta forma todas as notificações estarão sendo entregues ao servidor de correio que será encarregado de entregar as mensagens aos destinatários. Esta configuração é extremamente RECOMENDADA. Para tanto, para umas das duas opções mais usadas deve-se seguir os seguintes passos.
Opção 1 – Transporte com Relay
Edite o arquivo /etc/postfix/main.cf, procure a entrada relayhost e adicione o IP ou nome do servidor:
relayhost = smtp.dominio.com
Após a edição, é necessário reiniciar o serviço através do seguinte comando:
[root@opmon /]# postfix reload postfix/postfix-script: refreshing the Postfix mail system
Opção 2 – Transporte com Relay Autenticado
Instale os pacotes abaixo.
[root@opmon]# yum install postfix mailx cyrus-sasl cyrus-sasl-plain -y
Edite o arquivo /etc/postfix/main.cf e adicione as seguintes linhas:
relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/saslpass smtp_sasl_security_options = noanonymous smtp_use_tls=yes smtp_sasl_mechanism_filter = plain
Após a edição, é necessário criar o arquivo de senhas.
[root@opmon /]# vim /etc/postfix/saslpass
Crie o arquivo /etc/postfix/saslpass com a seguinte estrutura:
[smtp.gmail.com]:587 usuario@gmail.com:senha_usuario
Após a edição, é necessário indexar e reiniciar o serviço através dos seguintes comandos:
[root@opmon /]# postmap /etc/postfix/saslpass [root@opmon /]# postfix reload postfix/postfix-script: refreshing the Postfix mail system
Testando o funcionamento
Você pode usar o próprio comando usado para notificação no OpMon, conforme exemplo abaixo, respeitando apenas usar usuário e domínio válido.
root@opmon /]# /usr/local/opmon/libexec/notify_by_email.pl -O 127.0.0.1 -F opmon@dominio.com -T usuario@dominio.com -N RECOVERY -D "01/01/1970 00:00:00" -H HOSTNAME --Haddr HOSTADDRESS --Hstate UP --Houtput HOSTOUTPUT --Hackauthor HOSTACKAUTHOR --Hackcomm HOSTACKCOMMENT -r opmon@dominio.com -f html
Outra forma é através da linha de comando do sistema, conforme exemplo abaixo, respeitando apenas usar usuário e domínio válido.
root@opmon /]# echo "Teste de relay com postfix no OpMon" | mail -s "Teste de relay" usuario@dominio.com
Outra forma de teste é convertendo a senha para base64, assim execute o comando abaixo para conversão da senha.
root@opmon /]# echo -ne ' usuario@gmail.com senha_do_usuario' | base64 AHJlbGF5QG9wc2VydmljZX29tAHkwdWIzdHQzcjczPzQxYzR
Execute o comando abaixo, neste exemplo estamos usando o Gmail, se o acesso estiver liberado, deve receber o resultado 250.
root@opmon /]# openssl s_client -connect smtp.gmail.com:587 -starttls smtp CONNECTED(00000003) --- 250 SMTPUTF8
A próxima etapa é tentar autenticar com o usuário e senha que convertemos para base64, para isso digite AUTH PLAIN seguido da senha, conforme exemplo abaixo. Se o resultado for 235 é porque a autenticação está funcionando e os e-mails serão enviados.
AUTH PLAIN AHJlbGF5QG9wc2VydmljZX29tAHkwdWIzdHQzcjczPzQxYzR 235 2.7.0 Accepted EHLO there 250-smtp.gmail.com at your service, [177.135.99.151] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8
Se o resultado for outro, por exemplo 451, é porque não foi possível autenticar, provavelmente tem algo errado, com o usuário, com a senha ou com a permissão de uso de IMAP/POP/SMTP na conta configurada.
root@opmon /]# openssl s_client -connect smtp.gmail.com:587 -starttls smtp CONNECTED(00000003) --- 250 SMTPUTF8 AUTH PLAIN AHJlbGF5QG9wc2VydmljZX29tAHkwdWIzdHQzcjczPzQxYzR 451 4.7.0 Timeout waiting for client input
Os eventos e seu funcionamento podem ser observados através dos logs abaixo.
[root@opmon /]# tail -f /var/log/maillog 2011-07-11T14:19:47.694692-03:00 smtp.dominio.com postfix/qmgr[6950]: A91314310025: from=, size=17867, nrcpt=1 (queue active) 2011-07-11T14:19:47.705767-03:00 smtp.dominio.com postfix/smtp[20944]: A91314310025: to=, relay=192.168.10.9[smtp.dominio.com]:25, delay=0.03, delays=0.02/0/0/0.01, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as AB0FC3900181) 2011-07-11T14:19:47.705896-03:00 link32 postfix/qmgr[6950]: A91314310025: removed
Solução de Problemas
1 -Caso tenha problema de e-mails enfileirados, dois comandos úteis são eles:
- Lista todos e-mails na fila
[root@opmon /]# postqueue -p Mail queue is empty
- Deleta todos e-mails da fila:
[root@opmon /]# postsuper -d ALL
2-Caso o tipo de autenticação seja com criptografia TLS, e mesmo após ter realizado a configuração corretamente, aparecer a mensagem abaixo no /var/log/maillog
Jan 12 17:44:57 opmon postfix/smtp[18220]: 4900DD68067: to=<operacao@email.com.br>, relay=smtp.gmail.com[64.233.190.109]:587, delay=1.3, delays=0.04/0/0.93/0.34, dsn=5.7.0, status=bounced (host smtp.gmail.com[64.233.190.109] said: 530 5.7.0 Must issue a STARTTLS command first. r7sm5018190qhc.38 - gsmtp (in reply to MAIL FROM command)) Jan 12 17:44:57 opmon postfix/qmgr[18208]: 4900DD68067: removed
Falta adicionar a linha smtp_use_tls=yes no arquivo /etc/postfix/main.cf e reiniciar o postfix(service postfix restart). Referência: http://mhawthorne.net/posts/postfix-configuring-gmail-as-relay.html
3-Um erro comum é o nome do servidor estar errado e não autenticar.
No caso acima, eu quero usar o relayhost = smtp.terra.com.br, mas esse host é um CNAME ou apelido para smtp.poa.terra.com.br. O Postfix vai procurar pelo nome final (depois de todos os CNAMEs).
4-Caso mostre mensagem abaixo no /var/log/maillog
Mar 1 20:55:19 svlxoss01 postfix/qmgr[26943]: 4FA751A98014: to=<operacao@email.com.br>, relay=none, delay=21958, delays=21957/1.1/0/0, dsn=4.7.0, status=deferred (delivery temporarily suspended: SASL authentication failed; cannot authenticate to server mail.email.com[172.20.1.10]: no mechanism available)
O postfix utiliza o Cyrus como mecanismo de autenticação segura, assim instalar os pacotes abaixo:
[root@opmon /]# yum install cyrus-sasl [root@opmon /]# yum install cyrus-sasl-lib [root@opmon /]# yum install cyrus-sasl-plain
5-Caso ocorra o erro do from errado ou sem permissão de autenticar.
Jan 12 18:47:12 oprobot-lnx postfix/qmgr[19584]: 8DE6AA6B75: from=<>, size=2532, nrcpt=1 (queue active) Jan 12 18:47:12 oprobot-lnx postfix/local[19627]: 895A1A6B78: to=<root@oprobot-lnx.localdomain>, relay=local, delay=0.02, delays=0.01/0.01/0/0.01, dsn=2.0.0, status=sent (forwarded as 8DE6AA6B75) Jan 12 18:47:12 oprobot-lnx postfix/qmgr[19584]: 895A1A6B78: removed Jan 12 18:47:36 oprobot-lnx postfix/smtp[19602]: 8DE6AA6B75: to=<opmon@dominio.com>, orig_to=<root@oprobot-lnx.localdomain>, relay=smtp.office365.com[191.232.104.194]:587, delay=23, delays=0.01/0/18/5.7, dsn=5.7.60, status=bounced (host smtp.office365.com[191.232.104.194] said: 550 5.7.60 SMTP; Client does not have permissions to send as this sender (in reply to end of DATA command))
Edite o /etc/postfix/sender_canonical e adicione o endereço de from.
[root@opmon /]# vim /etc/postfix/sender_canonical
Adicione o conteúdo de acordo com o exemplo abaixo e depois salve o arquivo.
/.+/ opmon@dominio.com
Adicione a linha abaixo ao /etc/postfix/main.cf.
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
Execute os comandos abaixo.
[root@opmon /]# postmap hash:/etc/postfix/sender_canonical [root@opmon /]# chown root:root /etc/postfix/sender_canonical* [root@opmon /]# chmod 644 /etc/postfix/sender_canonical*
Após, reinicie o postfix e refaça os testes de envio.
[root@opmon /]# postfix reload
Algumas referencias para configuração.