Postfix: Adicionando disclaimer – Exceções de remetentes e arquivos diferentes por domínio

Seguindo a série de tutoriais sobre Disclaimer (ou footer) com Postfix, apresento um script mais elaborado que contempla exceções de remetentes que não devem ter o Disclaimer inserido e a possibildiade de incluir Disclaimers diferentes com base no domínio de origem. Todos os passos para configuração devem ser seguidos conforme o primeiro artigo: https://respirandolinux.wordpress.com/2012/12/18/postfix-adicionando-disclaimer-todas-as-mensagens-enviadas/, substituindo o script pelo que é apresentado nesse tutorial.

Antes de publicar o post explico a lógica utilizada, onde primeiramente serão tratadas as exceções, os remetentes devem ser incluídos no arquivo definido pela variável EXCECOES_REMETENTES. Após tratar as exceções, será feito o tratamento para definir qual o arquivo que deve ser utilizado, o script contempla dois disclaimers, os domínios para qual cada um será aplicado é definido pelas variáveis DISCLAIMER1 e DISCLAIMER2. Os arquivos com os Disclaimer estão como disclaimer1.txt e disclaimer2.txt conforme pode ser visto no Script.

Obs.: É recomendável criar um diretório específico para armazenar  as configurações e arquivos contendo os disclaimers, para uma melhor organização.

Segue o script, que também está publicado em https://github.com/fsschmidt/postfix/blob/master/Disclaimer/disclaimer-pordominio.sh:

#!/bin/sh

# Fabio S. Schmidt <fabio@improve.inf.br>

# 06/Jan/2013

# Contempla excecoes de remetentes que nao terao o disclaimer inserido

# e disclaimers especificos de acordo com o dominio do remetente




# Localize these.

INSPECT_DIR=/var/spool/filter

SENDMAIL=/usr/sbin/sendmail




#REMETENTES QUE NAO DEVEM TER O DISCLAIMER INSERIDO

EXCECOES_REMETENTES=/etc/postfix/excecoes_remetente




#DEFINIMOS QUAL DISCLAIMER DEVE SER INSERIDO PARA CADA DOMINIO

DISCLAIMER1=/etc/postfix/dominios-disclaimer1.txt

DISCLAIMER2=/etc/postfix/dominios-disclaimer2.txt




# Exit codes from <sysexits.h>

EX_TEMPFAIL=75

EX_UNAVAILABLE=69




# Clean up when done or when aborting.

trap "rm -f in.$" 0 1 2 3 15




# Start processing.

cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit

$EX_TEMPFAIL; }




cat >in.$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }




#FAZ A PESQUISA DO REMETENTE PARA A EXCECAO

from_address=`grep -m 1 "From:" in.$ | cut -d " " -f 2 | cut -d " " -f 1`

# FAZ A PESQUISA DO DOMINIO REMETENTE PARA ADICIONAR O DISCLAIMER DESEJADO

from_domain=`grep -m 1 "From:" in.$ | cut -d " " -f 2 | cut -d " " -f 1 | cut -d@ -f2`




#TRATA AS EXCECOES PRIMEIRO

if [ `grep -wi ^${from_address}$ ${EXCECOES_REMETENTES}` ]; then




$SENDMAIL -oi "$@" <in.$

exit $?




#CONSULTA O DOMINIO DO REMENTE PARA ADICIONAR O DISCLAIMER CORRESPONDENTE

elif [ `grep -wi ^${from_domain}$ ${DISCLAIMER1}` ]; then

/usr/bin/altermime --input=in.$ \

                   --disclaimer=/etc/postfix/disclaimer1.txt \

                   --disclaimer-html=/etc/postfix/disclaimer1.html \

                   --xheader="X-Copyrighted-Material: Colocar o site da empresa aqui http://www.company.com/privacy.htm" || \

                     { echo Message content rejected; exit $EX_UNAVAILABLE; }




elif [ `grep -wi ^${from_domain}$ ${DISCLAIMER2}` ]; then




/usr/bin/altermime --input=in.$ \

                   --disclaimer=/etc/postfix/disclaimer2.txt \

                   --disclaimer-html=/etc/postfix/disclaimer2.html \

                   --xheader="X-Copyrighted-Material: Colocar o site da empresa aqui http://www.company.com/privacy.htm" || \

                     { echo Message content rejected; exit $EX_UNAVAILABLE; }




fi




### ENVIA A MENSAGEM APOS INSERIR O DISCLAIMER DESEJADO ###

$SENDMAIL -oi "$@" <in.$

exit $?

Postfix: Adicionando disclaimer – Exceções de remetentes

No primeiro tutorial sobre disclaimer (muitas vezes também chamado de footer) com o Postfix, compartilhei um script básico que irá adicionar o texto automátio em todas as mensagens: https://respirandolinux.wordpress.com/2012/12/18/postfix-adicionando-disclaimer-todas-as-mensagens-enviadas/

Com o script abaixo, é possível definir exceções de remetentes que não terão o disclaimer inserido. Para configurar basta seguir os passos do primeiro artigo e substituir o script pelo arquivo abaixo, que também está publicado em https://github.com/fsschmidt/postfix/tree/master/Disclaimer:

#!/bin/sh

# Fabio S. Schmidt <fabio@improve.inf.br>

# 05/Jan/2013

# Contempla exceções de remetentes que não terão o disclaimer inserido

# Inserir os remetentes para exceção no arquivo definido pela variavel EXCESSOES_REMETENTES




# Localize these.

INSPECT_DIR=/var/spool/filter

SENDMAIL=/usr/sbin/sendmail




#REMETENTES QUE NAO DEVEM TER O DISCLAIMER INSERIDO

EXCECOES_REMETENTES=/etc/postfix/excecoes_remetente




# Exit codes from <sysexits.h>

EX_TEMPFAIL=75

EX_UNAVAILABLE=69




# Clean up when done or when aborting.

trap "rm -f in.$$" 0 1 2 3 15




# Start processing.

cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit

$EX_TEMPFAIL; }




cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }




#FAZ A PESQUISA DO REMETENTE PARA A EXCECAO

from_address=`grep -m 1 "From:" in.$$ | cut -d " " -f 2 | cut -d " " -f 1`







if [ `grep -wi ^${from_address}$ ${EXCECOES_REMETENTES}` ]; then




$SENDMAIL -oi "$@" <in.$$

exit $?




else




/usr/bin/altermime --input=in.$$ \

                   --disclaimer=/etc/postfix/disclaimer.txt \

                   --disclaimer-html=/etc/postfix/disclaimer.html \

                   --xheader="X-Copyrighted-Material: Colocar o site da empresa aqui http://www.company.com/privacy.htm" || \

                     { echo Message content rejected; exit $EX_UNAVAILABLE; }

$SENDMAIL -oi "$@" <in.$$

exit $?




fi