728x90a

Solução para envio de emails do servidor por SMTP relay com Mutt e SparkPost

Visualizando 14 posts - 1 até 14 (de 14 do total)
  • Autor
    Posts
  • #12949
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    Esta solução poderá ser usada em casos onde a empresa que aluga servidores, dedicados ou VPS, bloqueiam a saida de emails pela porta 25 e 587. Qualquer email a ser enviado não encontra rota de saida.

    Será necessário criarmos um método de envio por SMTP Relay via porta 2525 que não é filtrada. A melhor maneira de fazer isso é:

    01) Crie uma conta na SparkPost e valide o dominio pelo qual pretende enviar os emails do servidor, por exemplo eu validei o fatorbinario.com. Em seguida crie uma API key específica para o servidor e no campo Whitelist de IPs coloque o IP do servidor que enviará os emails.

    02) Crie o diretório /root/Mail que deverá estar vazio (note que Mail deverá ter o “M” maiúsculo)

    03) Em seguida crie o arquivo /root/.muttrc com o seguinte conteúdo. Altere os textos em negrito para informações do seu dominio:

    # Arquivo configurado para monitoramento dos servicos
    # Sempre Criar a pasta /root/Mail manualmente
    # Obs1: ATENCAO: LIBERAR O IP NA API DO SPARKPOST
    # Obs2: Na VULTR instalar o pacote libsasl2-modules para conseguir executar o MUTT
    
    set ssl_starttls=yes
    set ssl_force_tls=yes
    
    # set from to ensure mutt doesn't put user@localhost.localhost
    set from="sysmonitor@MEUDOMINIO.COM"
    set use_from=yes
    set envelope_from="yes"
    
    # set realname (sera sobrescrito no script)
    set realname="Monitor do Servidor"
    
    # SMTP user auth
    # # fill in the right user and pass based on your setup
    # # protocols: smtp for TLS (25/587), smtps for SSL (465)
    set smtp_url = "smtp://SMTP_Injection@smtp.sparkpostmail.com:2525/"
    set smtp_pass = "API_DO_SPARKPOST_ENTRE ASPAS_DUPLAS"
    
    # Where to save copies of outgoing mail
    set record = '+Sent'

     

    04) Teste o envio com o comando:

    > echo -e "TESTE de envio com Mutt e SMTP Relay" | mutt -s "TESTE de envio" -e 'set realname="Monitor do Servidor"' SEUEMAIL@gmail.com

    *Lembre de trocar SEUEMAIL@gmail.com pelo email que receberá os alertas.

     

    05) Para enviar emails do Logwatch por exemplo, pode-se usar o comando:

    > logwatch | mutt -s "Resultado do Logwatch" -e 'set realname="Monitor do Servidor' SEUEMAIL@gmail.com

    Ou simplesmente dar um “cat” no arquivo de resultados do Logwatch direcionando para o mutt com o “| pipe” como demonstrado acima.

     

    #12950

    mcardoso
    Participante

    Luis, algumas dúvidas.
    Além da API que é criada quando logamos na conta do sparkpost devemos criar outra?
    Se sim, devo selecionar todas as “API Permissions” que tem por lá? O IP que deve ser colocado é o do VPS mesmo, né?

    Dentro do arquivo /root/.muttrc posso colocar meu gmail, ou tem que ser algum email@meudominio.com? Pois como vou usar o servidor só para sites, nem criei conta de email e nem configurei aquela parte de servidor de email do tutorial. Para usar qualquer email@meudominio.com devo fazer aquela parte do tutorial?
    Obrigada

    #12951
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    Pode-se criar quantas APIs quiser, para cada uma ative somente as opções:

    Send via SMTP” – É a que fica na coluna do meio e linha do meio

    Transmissions: Read/Write” – A última da última coluna

    Allowed IPs” – O IP do servidor. Pode-se colocar um lista separada por vírgulas.

    *Após mandar criar a chave ela só será mostrada uma única vez. Anote. Caso esqueça de anotar pode-se destruir ela e refazer o processo.

     

    No MUTT o parâmetro “set from” tem que ser do domínio validado, funciona assim para qualquer empresa de relay. E não precisa criar a conta de email que envia, o SparkPost verifica somente se ela é do mesmo domínio validado. Por exemplo, poderia ser usado noreply@dominio.com.

    Já o email para onde será enviado pode ser qualquer um.

    #12953

    mcardoso
    Participante

    Então no arquivo /root/.muttrc eu coloco as duas API’s? A que foi gerada no momento da criação da conta e essa liberando o ip do servidor?

    Sim, anotei.

    Ah, entendi. Então sendo do meu dominio que validei lá posso colocar qualquer endereço. Blz.

    Obrigada.

    #12954
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    Só precisa colocar a API criada para o dominio.

    Na verdade você pode colocar qualquer uma das APIs, mas aquela que criou para o dominio tem o IP do servidor amarrado nela, e isso irá prevenir spoofing da conta.

    #12955

    mcardoso
    Participante

    Ah sim, farei isto então.

    Outra dúvida: O teste de envio no passo 4 veio certinho no email, já o teste do passo 5 que é o do logwatch o email veio vazio.

    E pro mutt ficar enviando o email do logwatch tem que alterar alguma coisa no arquivo de configuração do logwatch? Essa parte não ficou clara pra mim.

    E quanto aos scripts criados no tutorial de configurações adicionais. Como enviá-los com o mutt?

    #12956
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    É que o Logwatch tem opção de configurar para enviar o resultado por email, tela ou arquivo se não me engano. Configura ele para arquivo e pode usar o comando “cat” para direcionar ao mutt.

    Para os demais scripts eu uso algo assim:

    #!/bin/bash
    # Reinicia o MySQL caso tenha uma queda
    
    #Nome do Host, o shortname sera usado no assunto do email
    THISHOST=$(hostname)
    THISHOSTSHORT=$(hostname | awk -F. '{print $1}')
    
    UPMYSQL=$(lsof -i :3306 | grep mysql | wc -l);
    if [ "$UPMYSQL" -le 0 ];
    then
            #echo "MySQL is down. Restarting..";
    	#echo $UPMYSQL;
            /etc/init.d/mysql restart
    	echo -e "O MySQL em $THISHOST foi reiniciado, verifique o servidor." | mutt -s "O MySQL em $THISHOST foi reiniciado" -e 'set realname="Monitor '$THISHOST'"' MEUEMAIL@gmail.com
    fi
    

     

    #12957

    mcardoso
    Participante

    Beleza, dos scripts eu entendi.

    Agora do logwatch eu configuro o resultado para arquivo e tenho que rodar o mutt manualmente todo dia para receber o email do logwatch?

    Ou tenho que criar um script que roda o mutt para me enviar o email do logwatch?

    Obrigada.

    #12958
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    O problema de você configurar o Logwatch para que mande por email diretamente ele tentará enviar pelo Postfix. Então a opção via cron manual é melhor.

    Você também poderia seguir o tutorial de smtp relay para Postfix que tenho aqui no site e então ver se consegue liberar na SparkPost o FQDN do servidor pra envio.

    #12959

    mcardoso
    Participante

    Parei e desativei o Amavis e mesmo assim recebi o email do logwatch. Isso significa que o postfix está funcionando?

    Posso deixar assim?

    To com medo de mexer e acabar estragando XD

    O email dos scripts tambem estão chegando legal.

    #12960
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    haha

    Pode sim e nem esquente muito.

    #12961

    mcardoso
    Participante

    Ai que bom.

    Esquentar eu esquento, mas não adianta muito porque se me invadirem vou ter que fugir para as colinas ahahahhahah

    Muito obrigada mesmo e parabéns pelo trabalho de excelência! Você merece todo suce$$o do mundo!

    #12962
    Luis FatorBinario
    Luis FatorBinario
    Administrador

    ha!

    Esses servidores são à prova de bala, lembre sempre de usar senhas bem seguras, de 15 caracteres.

    Somente durante esses anos de Fator Binario não tive nenhum invadido e já configurei centenas.

    #12963

    mcardoso
    Participante

    Opa, fico mais aliviada então pois todas tem mais de 15 caracteres.

    Só a do banco de dados do wordpress que tem 13 porque peguei a senha que ISPConfig me ofereceu e nem reparei.

    Vou consertar.

Visualizando 14 posts - 1 até 14 (de 14 do total)

Você deve fazer login para responder a este tópico.