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.
Parte 7: 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 " "
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 " "
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 " "
. /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 " "