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.455 ]

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

Postfix fazendo relay SMTP do Gmail/Google Apps

Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Instalação do Postfix e OpenWebmail no Slackware

Mutt - o melhor amigo do homem

Dividindo carga de saída de servidor SMTP (MTA Selor)

  
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