Utilizando o amavis para inserir Disclaimer

Olá ! Nos artigos anteriores eu expliquei sobre a inserção de Disclaimer utilizando um filtro externo escrito somente para essa funcionalidade:

https://respirandolinux.wordpress.com/2013/01/10/postfix-adicionando-disclaimer-excecoes-de-remetentes-e-arquivos-diferentes-por-dominio/

https://respirandolinux.wordpress.com/2013/01/05/postfix-adicionando-disclaimer-excecoes-de-remetentes/

https://respirandolinux.wordpress.com/2012/12/18/postfix-adicionando-disclaimer-todas-as-mensagens-enviadas/

Porém, se o Amavis já estiver implementado é possível utilizar o mesmo para inserir as mensagens automáticas, portanto veremos essa implementação neste artigo.

Primeiramente, é necessário instalar o altermime, que continua sendo o programa utilizado para modificar a mensagem,

Após instalar o altermime, vamos iniciar a configuração do Disclaimer, podendo ser feita no arquivo 50-user.conf do Amavis:

### HABILITA INSERÇÃO DISCLAIMER
$defang_maps_by_ccat{+CC_CATCHALL} = [ 'disclaimer' ];

# Programa utilizado para modificar a mensagem
$altermime = '/usr/bin/altermime';

$policy_bank{'MYNETS'} = { # Modificar somente as mensagens geradas internamente
originating => 1,
allow_disclaimers => 1,
};

# Arquivo com o Disclaimer
@altermime_args_disclaimer = qw(--disclaimer=/etc/postfix/disclaimer/_OPTION_.txt);

@disclaimer_options_bysender_maps = ({
#Permite incluir disclaimer baseado no dominio ou usuário

#Os domínios matriz e filial terão disclaimers diferentes
'matriz.com.br' => 'matriz.com.br',
'filial.com.br' => 'filial.com.br',

#O usuario fabio terá um disclaimer pessoal
fabio@matriz.com.br' => 'fabio.matriz.com.br',

#O usuario fulano não terá um disclaimer

fulano@matriz.com.br' => 'empty',

# Disclaimer para ser inserido caso não se encaixe nos critérios acima
'.' => 'default',
},);

Feito isso, basta reiniciar o serviço do Amavis que as mensagens automáticas já serão inseridas, sendo preciso criar os arquivos no diretório apontado em altermime_args_disclaimer.

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