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

Publicado por Kleyton Maia em 18/06/2015

[ Hits: 12.011 ]

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

Bloqueando anexos via Procmail

Patch para Cyrus IMAP 2.4.x - erro: "Message contains bare newlines"

Comandos básicos de vpopmail

Thunderbird - Erro: Data errada de recebimento de e-mail [Resolvido]

Postfix - Copiar mensagens de remetentes ou destinatários específicos

  

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