Configurar Postfix + Sendmail para envio de e-mails em scripts

Publicado por Kleyton Maia em 18/06/2015

[ Hits: 11.794 ]

Blog: http://kadron74.blogspot.com/

 


Configurar Postfix + Sendmail para envio de e-mails em scripts



O primeiro passo é ter instalado o Postfix e o Sendmail. Em nosso exemplo foi usado o Red Hat 6.4, que já vem com esses pacotes instalados...

Configurar o Postfix para fazer relay de e-mails encaminhando para o servidor de correio já existente da empresa, certifique-se de que o correio está habilitado para permitir o relay através desses host como normalmente os servidores estão na DMZ deve funcionar corretamente ou crie as regras para esta liberação.

Postfix em modo null client

No modo null client a máquina somente manda e-mail, ela não receberá e-mails da rede, e não entregará e-mails localmente (contas de home users).

No exemplo abaixo vamos entender que o domínio é exemplo.com e o nome da máquina é hostname.exemplo.com. O exemplo mostra somente os parâmetros que não são deixados nas configurações padrões:

Editamos o arquivo /etc/postfix/main.cf onde:

myhostname = hostname.exemplo.com
myorigin = $mydomain
relayhost = $mydomain
inet_interfaces = loopback-only
mydestination =

Descrição:

myhostname: define o myhostname para hostname.exemplo.com, no caso do nome da máquina não ser um nome fully-qualified (nome qualificado).

Obs.: use o comando "post-conf -d myhostname" para achar o nome da máquina.

O myhostname no seu conteúdo também define o valor padrão para o parâmetro mydomain (aqui, "mydomain = exemplo.com").

myorigin: nesta linha enviará o e-mail como "user@exemplo.com" (ao invés de "user@hostname.exemplo.com").

relayhost 4: encaminhar todos e-mails para o servidor de e-mail responsável pelo domínio "exemplo.com". Isso previne dos e-mails ficarem presos neste servidor, especifique outro hostname ou IP caso não tenha o registro MX configurado.

inet_interfaces: não aceitar e-mails vindo da rede.

mydestination: desabilita entrega de e-mails locais. Todos os e-mails vão para o servidor especificado na linha 4.

Após isso, usando o Sendmail, podemos chamar o envio de e-mail...

Sendo assim montamos o script para recolher alguns dados e enviar por e-mail.

No exemplo abaixo checo o conteúdo de duas pastas e envio no corpo e-mail para análise de qual conteúdo foi feito backup, no meu caso esse script foi adicionado a permissão para execução e colocado no crontab após a rotina de backup e eu recebo por e-mail o que foi feito:

#!/bin/sh
#
#
#Variáveis de ambiente
FROM="tecnologia@exemplo.com"
TO="tecnologia@exemplo.com"

# Aqui o assunto da mensagem com a data
SUBJECT="Backup XPTO Concluido $(date "+dia %d de %b de %Y as %r")"

#Aqui ele coloca na variável o resultado do comando com o conteúdo dos diretórios de onde são salvos os bkps
#Neste meu exemplo um local e outro remoto
MSG=$(tree -l -h -C -D --charset x /Backup/local/)
MSG2=$(tree -l -h -C -D --charset x /mnt/BKP_REMOTO/)

cat <<EOF | /usr/sbin/sendmail -t
From: $FROM
To: $TO
Subject: $SUBJECT

Bom dia, enviando as tarefas de backups executadas.

Resultado no Backup Local:
$MSG

Resultado no Backup Remoto
$MSG2

Sh versao 12.27 - Kleyton Maia
EOF
#
# Fim do Script

Outras dicas deste autor

Grep - Mostrando mais linhas no resultado de pesquisas

Leitura recomendada

Qmail - monte o seu próprio servidor de e-mail

Postfix: Adicionando disclaimer - Exceções de remetentes

SMTP Auth com Postfix e SASL (sem domínios virtuais)

Erro no Sendmail: "Deferred: 403 4.7.0 TLS handshake failed" (solucionado)

Kshowmail: Combatendo SPAM & CIA

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts