Integrando o Postfix + SpamAssassin + Fetchmail + Procmail + MS Exchange

Já pensou na possibilidade em integrar o Postfix ao MS Exchange Server? E melhorar um pouco mais e configurar o SpamAssassin? Se sim, este artigo tem como objetivo auxiliá-lo neste processo.

[ Hits: 57.478 ]

Por: Tiago Centurion Palanca em 07/11/2010


Shell scripts utilizados



Durante o artigo mencionei alguns shell scripts que desenvolvi para otimizar o processo de configuração do ambiente. Aqui disponibilizo o que foi feito:
  • Script para criação de múltiplos .procmailrc no diretório home de cada usuário
  • Nome do script: create_procmailrc.sh
  • Tarefa do script: Criar o arquivo .procmailrc no /home de cada usuário com as definições necessárias

#!/bin/bash

VAR1=$(ls /home -1)
for i in $VAR1; do

        cp /root/template_procmailrc /home/$i/.procmailrc
        chmod 755 /home/$i/.procmailrc
        chown $i:$i /home/$i/.procmailrc

done
        echo -e "\nInclusao finalizada com sucesso"
        echo " "

  • Script para criação do .fetchmailrc é um pouco mais complexo pois temos que desenvolver no próprio script um lógica que determine o nome do usuário e seu password.
  • Nome do script: create_fetchmailrc.sh
  • Tarefa do script: Criar o arquivo .fetchmailrc no /home de cada usuário com as definições necessárias.

#!/bin/bash

DEFAULT="\033[0m"
VERDE="\033[0;32m"
AZULCLARO="\033[1;34m"

VAR1=$(ls /home -1)
for i in $VAR1; do
        echo $i >> /home/$i/username.chk
        touch /home/$i/.fetchmailrc
        touch /home/$i/log/fetchmail.log
        echo '#!/bin/bash' >> /home/$i/.fetchmailrc
        echo -e '\nset logfile '"'/home/$i/log/fetchmail.log'"'' >> /home/$i/.fetchmailrc
        echo 'set invisible' >> /home/$i/.fetchmailrc
        echo 'set no bouncemail' >> /home/$i/.fetchmailrc
        echo -e '\ndefaults:' >> /home/$i/.fetchmailrc
        echo 'uidl' >> /home/$i/.fetchmailrc
        echo 'batchlimit 100' >> /home/$i/.fetchmailrc
        echo 'fetchlimit 100' >> /home/$i/.fetchmailrc
        echo 'flush' >> /home/$i/.fetchmailrc
        echo 'sslfingerprint '"'85:29:02:4C:DB:5D:07:C5:AD:C0:37:92:36:6E:8F:AC'"'' >> /home/$i/.fetchmailrc
        echo " " >> /home/$i/.fetchmailrc
        echo -e 'poll smtp.seudominio.com.br with proto POP3 and options uidl' >> /home/$i/.fetchmailrc
        echo 'auth cram-md5' >> /home/$i/.fetchmailrc
done
        echo -e "\n-> Definicao dos parametros iniciais............$VERDE[OK]$DEFAULT"

VAR2=$(ls /home -1)
for i in $VAR2; do
SINTAXE1=$(cut -c 1 /home/$i/username.chk)
SINTAXE2=$(cut -c 2 /home/$i/username.chk)
SINTAXE3=$(cut -c 3 /home/$i/username.chk)

        echo -e '\nuser\t'"'$i@seudominio.com.br'"'\tpassword '"'$SINTAXE1"1"$SINTAXE2"2"$SINTAXE3"3"'"'\tis '"'$i'"'\tmda '"'/usr/bin/procmail -d %T'"'' >>
/home/$i/.fetchmailrc

        echo -e '\nfetchall' >> /home/$i/.fetchmailrc
        echo 'nokeep' >> /home/$i/.fetchmailrc

        rm -rf /home/$i/username.chk
done
        echo -e "-> Definicao do usuario/password............$VERDE[OK]$DEFAULT"

VAR3=$(ls /home -1)
for i in $VAR3; do
        chmod +x /home/$i/.fetchmailrc
        chmod 710 /home/$i/.fetchmailrc
        chown $i:$i /home/$i/.fetchmailrc
        chown $i:$i /home/$i/log/fetchmail.log
done
        echo -e "-> Alteracao da seguranca dos arquivos .fetchmailrc e fetchmail.log............ $VERDE[OK]$DEFAULT"

VAR4=$(ls /home -1)
for i in $VAR4; do
        echo fetchmail -fastuidl -v -d 60 -f /home/$i/.fetchmailrc >> /home/$i/.bashrc
        echo 'exit' >> /home/$i/.bashrc
done
        echo -e "-> Definicao de parametros no arquivo .bashrc............$VERDE[OK]$DEFAULT"
        echo -e "->$AZULCLARO O arquivo .fetchmailrc foi criado com sucesso.$DEFAULT"
        echo " "

  • E por fim, um script que cria o usuário e faz a criação do .fetchmailrc e .procmailrc automaticamente.
  • Tarefas do script: Criar o usuário, o .fetchmailrc, o .procmailrc e adicionar o usuário nos arquivos sender_relay e sasl_passwd do Postfix.
  • Nome do script: create_user.sh

#!/bin/bash

. /usr/lib/customlibs/cores
#Configuracoes do .fetchmailrc
VAR1=$1
        useradd $1
        passwd $1
        echo $1 >> /home/$1/username.lock
        touch /home/$1/.fetchmailrc
        touch /home/$1/log/fetchmail.log
        echo '#!/bin/bash' >> /home/$1/.fetchmailrc
        echo -e '\nset logfile '"'/home/$1/log/fetchmail.log'"'' >> /home/$1/.fetchmailrc
        echo 'set invisible' >> /home/$1/.fetchmailrc
        echo 'set no bouncemail' >> /home/$1/.fetchmailrc
        echo -e '\ndefaults:' >> /home/$1/.fetchmailrc
        echo 'uidl' >> /home/$1/.fetchmailrc
        echo 'batchlimit 100' >> /home/$1/.fetchmailrc
        echo 'fetchlimit 100' >> /home/$1/.fetchmailrc
        echo 'flush' >> /home/$1/.fetchmailrc
        echo 'sslfingerprint '"'85:29:02:4C:DB:5D:07:C5:AD:C0:37:92:36:6E:8F:AC'"'' >> /home/$1/.fetchmailrc
        echo " " >> /home/$1/.fetchmailrc
        echo -e 'poll smtp.seudominio.com.br with proto POP3 and options uidl' >> /home/$1/.fetchmailrc
        echo 'auth cram-md5' >> /home/$1/.fetchmailrc

                echo -e "\n-> Definicao dos parametros iniciais...........................................$OK"

SINTAXE1=$(cut -c 1 /home/$1/username.lock)
SINTAXE2=$(cut -c 2 /home/$1/username.lock)
SINTAXE3=$(cut -c 3 /home/$1/username.lock)

        echo -e '\nuser\t'"'$1@seudominio.com.br'"'\tpassword '"'$SINTAXE1"1"$SINTAXE2"2"$SINTAXE3"3"'"'\tis '"'$1'"'\tmda '"'/usr/bin/procmail -d %T'"'' >>
/home/$1/.fetchmailrc

        echo -e '\nfetchall' >> /home/$1/.fetchmailrc
        echo 'nokeep' >> /home/$1/.fetchmailrc

        rm -rf /home/$1/username.lock

                echo -e "-> Definicao do usuario/password...............................................$OK"

        chmod +x /home/$1/.fetchmailrc
        chmod 710 /home/$1/.fetchmailrc
        chown $1:$1 /home/$1/.fetchmailrc
        chown $1:$1 /home/$1/log/fetchmail.log

                echo -e "-> Alteracao da seguranca dos arquivos .fetchmailrc e fetchmail.log............$OK"

        echo fetchmail -fastuidl -v -d 60 -f /home/$1/.fetchmailrc >> /home/$1/.bashrc
        echo 'exit' >> /home/$1/.bashrc

echo -e "-> Definicao de parametros no arquivo .bashrc..................................$OK"
                echo -e "$LB-> O arquivo .fetchmailrc foi criado com sucesso.$DF"
                echo " "

#Configuracoes do Postfix
        echo -e "$1@seudominio.com.br\t\t\t"$1@seudominio.com.br:"$SINTAXE1"1"$SINTAXE2"2"$SINTAXE3"3 >> /etc/postfix/sasl_passwd
        sort /etc/postfix/sasl_passwd > /etc/postfix/sasl_passwd.lock
        mv /etc/postfix/sasl_passwd.lock /etc/postfix/sasl_passwd
        postmap /etc/postfix/sasl_passwd
                echo -e "-> Adicionado usuario ao arquivo sasl_passwd...................................$OK"

        echo -e "$1@seudominio.com.br\t\t\t""[smtp.seudominio.com.br]" >> /etc/postfix/sender_relay
        sort /etc/postfix/sender_relay > /etc/postfix/sender_relay.lock
        mv /etc/postfix/sender_relay.lock /etc/postfix/sender_relay
        postmap /etc/postfix/sender_relay
                echo -e "-> Adicionado usuario ao arquivo sender_relay..................................$OK"
                echo -e "$LB-> Os arquivos do Postfix foram configurados com sucesso.$DF"
                echo " "

#Inicializacao do processo do Fetchmail
        su $1
        echo -e "-> Iniciado o processo do fetchmail para o usuario $1.............$OK"
        echo -e "$LB-> O usuario $DF$YE$1$DF$LB foi criado com sucesso.$DF"
        echo " "

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando e configurando o Dovecot e SpamAssassin
   3. Instalando e configurando o Procmail
   4. Instalando e configurando o Fetchmail
   5. Instalando e configurando o Postfix
   6. Instalando o Squirrel Mail, PVE POPCollector e MS Exchange
   7. Shell scripts utilizados
   8. Conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Clamav com Mailscanner para Postfix

Relay autenticado para Postfix no Debian

Populando sua SpamTrap com e-mails relevantes

Zimbra 8.0 no CentOS 6.3

Webmail Squirrelmail e Roundcubemail, Clamav e SpamAssassin integrados no MTA Postfix

  
Comentários
[1] Comentário enviado por mvquintella em 08/11/2010 - 09:46h

Ótimo artigo. Parabéns!

[2] Comentário enviado por michel5670 em 08/11/2010 - 13:17h

Colega parabéns otimo artigo.
Só uma pergunta o parametro smtp_sender_dependent_authentication no main.cf do postfix serve pra que?

[3] Comentário enviado por tiago.centurion em 08/11/2010 - 14:12h

Valeu brother!!
Essa opção está ligada ao envio através de um SMTP autenticado.
Caso o seu SMTP não seja autenticado você pode omitir esta linha.

[4] Comentário enviado por michel5670 em 08/11/2010 - 15:01h

Valeu obrigado pela resposta!!!

[5] Comentário enviado por andreandriotti em 08/09/2011 - 17:52h

Boa tarde Tiago, hoje (08/09/2011) o meu chefe me passou essa missão que vc teve no passado, se for possível, poderia me tirar uma dúvida?
Todos os usuários que tenho no Exchange, preciso cadastrá-los no Linux tb?

Ah, estava esquecendo, parabéns pelo artigo.


Muito Obrigado


André

[6] Comentário enviado por tiago.centurion em 11/09/2011 - 21:11h

Boa noite André.
Obrigado pelo comentário.

Quanto a sua dúvida, sim, você precisa cadastrar os usuários no linux.
Cada usuário do exchange terá um usuário respectivo no Linux.
Por exemplo: Você tem o usuário como o e-mail fulano@empresax.com.br, esse usuário chama-se fulano no exchange, então você terá o user fulano no linux e um redirect para o usuário através do postfix. No postfix você vai colocar o e-mail do usuário e o nome dele no exchange (arquivos sender_relay e sasl_passwd), com isso, todas as mensagens que chegarem neste e-mail serão redirecionadas para o usuário interno do exchange, ou seja quem acaba sendo responsável pelo redirect é o postfix.

Espero ter ajudado, qualquer dúvida é só falar.

[7] Comentário enviado por andreandriotti em 12/09/2011 - 08:03h

Me ajudou bastante Tiago, muito obrigado por responder a minha dúvida.

E mais uma vez, parabéns pelo artigo.

Sucesso pra você.

André.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts