Configurar Postfix + Sendmail para envio de e-mails em scripts
Dica publicada em Linux / Correio Eletrônico
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.
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:
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:
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 =
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