Script criado para auxiliar na manipulação do qmail no freebsd!

Script criado para auxiliar na manipulação do qmail no freebsd!

[root@netuno ~]# cat /usr/local/bin/qmail-adm.sh
#!/bin/sh

dominio=”@i-hunter.net”

main()
{
clear
echo “======= Gerenciamento auxiliar do MTA QMAIL =======”
echo “===================================================”
echo “Opcoes:”
echo
echo “1 – Listar todas as mensagens na fila.”
echo “2 – Listar todas as mensagens na fila Remota.”
echo “3 – Listar todas as mensagens na fila Local.”
echo “4 – Mostrar STATUS das filas do Qmail.”
echo “5 – Ver o conteudo de uma mensagem especifica.”
echo “6 – Apagar uma mensagem especifica da fila.”
echo “7 – Apagar mensagens com um Assunto (Subject: ) especifico.”
echo “8 – Apagar mensagens com Remetente (From: ) especifico.”
echo “9 – Apagar mensagens com Destinario (To: ) especifico.”
echo “10 – Apagar TODAS as mensagens das filas do Qmail.”
echo “11 – Sair.”
echo “15 – Avancado.”
echo -n “Qual opcao voce deseja? ”
read opcao
case $opcao in
1) listar_todas ;;
2) listar_r ;;
3) listar_l ;;
4) status ;;
5) ver_msg ;;
6) apaga_msg ;;
7) subject ;;
8) from ;;
9) to ;;
10) apagar_todas ;;
11) exit ;;
15) menu_avancado ;;
*) echo “Opcao desconhecida.” ; echo ; main ;;
esac
}

###### funcoes auxiliares

restart_qmail()
{
svc -k /service/qmail
svc -u /service/qmail
}

status ()
{
echo “”
echo “Status atual do Qmail: ”
echo “”
sleep 2
fila-qmail -s
echo “”
/var/qmail/bin/qmail-qstat
echo “”
svstat /service/qmail
echo “”
}

remotas_locais()
{
echo “”
echo -n ” Mensagens Remotas ou Locais? [R/L]: ”
read ROL

case ${ROL} in
[Rr])
ROLRESP=”R”
;;
[Ll])
ROLRESP=”L”
;;
*)
remotas_locais
;;
esac
}

#### funcoes principais

listar_todas()
{
echo “”
echo “Listando as mensagens nas filas Remota e Local: ”
fila-qmail -l
echo “”
}

listar_r()
{
echo””
echo “Listando as mensagens na fila Remota: ”
fila-qmail -R
echo “”
}

listar_l()
{
echo “”
echo “Listando as mensagens na fila Local: ”
fila-qmail -L
echo “”
}

ver_msg()
{
echo “”
echo ” O numero de Identificacao da mensagem – Msg ID – pode ser”
echo “identificado como o primeiro numero que precede um email,”
echo “quando as mensagens nas filas sao listadas.”
echo “”
echo ” Por exemplo:”
echo ” 762178 [14, R] – O primeiro numero, fora dos parenteses,”
echo ” indica o numero da mensagem. Nesse caso, 762178.”
echo “”
echo -n ” Deseja visualizar o conteudo da mensagem numero: ”
read NROMSG

echo “”
fila-qmail -v${NROMSG} | less

}

apaga_msg()
{
echo “”
echo ” O numero de Identificacao da mensagem – Msg ID – pode ser”
echo “identificado como o primeiro numero que precede um email,”
echo “quando as mensagens nas filas sao listadas.”
echo “”
echo ” Por exemplo:”
echo ” 762178 [14, R] – O primeiro numero, fora dos parenteses,”
echo ” indica o numero da mensagem. Nesse caso, 762178.”
echo “”
echo -n ” Deseja apagar qual mensagem da fila? ”
read NROMSG

fila-qmail -d${NROMSG}

restart_qmail
status

}

subject()
{
echo “”
echo ” Para maior praticidade, a pesquisa sera Case Insensitive,”
echo “nao diferenciando letras maiusculas de letras minusculas.”
echo “”
echo -n ” Deseja apagar todas as mensagens com qual Assunto [Subject: ] ”
read ASSUNTO

remotas_locais

fila-qmail -c -l | \
grep -i -B 4 “${ASSUNTO}” | \
grep “, ${ROLRESP}” | awk ‘{print “echo \”Apagando mensagem “$1″\” ; ” “fila-qmail -d”$1}’ > /tmp/XyZkPPty

sh /tmp/XyZkPPty
COUNT=”`cat /tmp/XyZkPPty | wc -l`”
rm -f /tmp/XyZkPPty

echo “”
echo ” Foram apagadas ${COUNT} mensagens que continham”
echo “a expressao ‘${ASSUNTO}’ como parte do Assunto…”
echo “”
echo “Reiniciando o Qmail…”

restart_qmail
status
}

from()
{
echo “”
echo ” Para maior praticidade, a pesquisa sera Case Insensitive,”
echo “nao diferenciando letras maiusculas de letras minusculas.”
echo “”
echo -n ” Deseja apagar todas as mensagens de qual Remetente [From: ] ”
read FROM

remotas_locais

fila-qmail -c -l | \
grep -i -B 2 “${FROM}” | \
grep “, ${ROLRESP}” | awk ‘{print “echo \”Apagando mensagem “$1″\” ; ” “fila-qmail -d”$1}’ > /tmp/XyZkPPty

sh /tmp/XyZkPPty
COUNT=”`cat /tmp/XyZkPPty | wc -l`”
rm -f /tmp/XyZkPPty

echo “”
echo ” Foram apagadas ${COUNT} mensagens que continham”
echo “a expressao ‘${FROM}’ como parte do endereco do Remetente…”
echo “”
echo “Reiniciando o Qmail…”

restart_qmail
status
}

to()
{
echo “”
echo ” Para maior praticidade, a pesquisa sera Case Insensitive,”
echo “nao diferenciando letras maiusculas de letras minusculas.”
echo “”
echo -n ” Deseja apagar todas as mensagens de qual Destinatario [To: ] ”
read TO

remotas_locais

fila-qmail -c -l | \
grep -i -B 3 “${TO}” | \
grep “, ${ROLRESP}” | awk ‘{print “echo \”Apagando mensagem “$1″\” ; ” “fila-qmail -d”$1}’ > /tmp/XyZkPPty

sh /tmp/XyZkPPty
COUNT=”`cat /tmp/XyZkPPty | wc -l`”
rm -f /tmp/XyZkPPty

echo “”
echo ” Foram apagadas ${COUNT} mensagens que continham”
echo “a expressao ‘${TO}’ como parte do endereco do Remetente…”
echo “”
echo “Reiniciando o Qmail…”

restart_qmail
status
}

apagar_todas()
{
echo “”
echo ” Todas as mensagens de todas as filas do QMail serao apagadas.”
echo “”
echo -n ” Deseja mesmo continuar? [S/N] ”

read SIMNAO

case ${SIMNAO} in
[Ss])

fila-qmail -D && \
restart_qmail && \
status
;;

*)
echo “”
echo “Saindo…”
;;
esac

}

virus_dat_version() {
echo “”
/usr/local/bin/uvscan –version | grep -v “EVALUATION”
echo “”
}

############## Menu Avancado ###############
## Nao tem nada de Avancado mas nao deve ##
## ser usado por quem nao sabe como ele ##
## funciona… enfim, leiam as man pages ##
## do svc, do svscan, svstat e o resto do ##
## Daemontools inteiro… ##
############################################

menu_avancado()
{
clear
echo “===== Controle dos servicos de e-mail =====”
echo “”
echo “Servico qmail-send [modulo nivel 1]:”
echo “”
echo “01 – Matar o qmail-send.”
echo “02 – Iniciar o qmail-send.”
echo “03 – Reprocessar as filas de email.”
echo “04 – STATUS do qmail-send e das filas de e-mail.”
echo “05 – Reiniciar o Qmail [qmail-send].”
echo “06 – Verificar os logs do qmail-send.”
echo “07 – Verificar os logs do qmail-queue.”
echo “”
echo “”
echo “Servico Qmail SMTP:”
echo “10 – Matar o daemon SMTP.”
echo “11 – Iniciar o daemon SMTP.”
echo “12 – STATUS do daemon SMTP.”
echo “13 – Reiniciar o daemon SMTP.”
echo “14 – Verificar os logs do SMTP.”
echo “”
echo “”
echo “Servico Qmail POP3:”
echo “20 – Matar o daemon POP3.”
echo “21 – Iniciar o daemon POP3.”
echo “22 – STATUS do daemon POP3.”
echo “23 – Reiniciar o daemon POP3.”
echo “24 – Verificar os logs do POP3.”
echo “”
echo “”
echo “Anti Virus:”
echo “30 – Logs dos ultimos virus encontrados.”
echo “31 – Logs do qmail-queue junto ao antivirus.”
echo “32 – Apagar todas as mensagens com virus do Quarantine.”
echo “33 – Apagar todas as mensagens com virus verificadas agora.”
echo “34 – Contar virus encontrados.”
echo “35 – Mostrar as definicoes (dat-version) de virus atuais.”
echo “”
echo “”
echo “Servico Courier-IMAP:”
echo “36 – Para o servico IMAP (caso instalado).”
echo “37 – Inicia o servico IMAP (caso instalado).”
echo “38 – Verificar os logs do IMAP (caso instalado).”
echo “”
echo “”
echo “50 – Sair.”
echo -n “Qual opcao voce deseja? ”
read opctao
case $opctao in
01) kill_qsend ;;
02) up_qsend ;;
03) alrm_queue ;;
04) status ;;
05) qmailrestart ;;
06) qsend_logs ;;
07) queue_logs ;;
10) kill_smtp ;;
11) up_smtp ;;
12) status_smtp ;;
13) restart_smtp ;;
14) qsmtp_logs ;;
20) kill_pop3 ;;
21) up_pop3 ;;
22) status_pop3 ;;
23) restart_pop3 ;;
24) qpop3_logs ;;
30) virus_log ;;
31) queue_logs ;;
32) rm_quarantine ;;
33) rm_working ;;
34) virus_count ;;
35) virus_dat_version ;;
36) stop_imapd ;;
37) start_imapd ;;
38) vlogs_imapd ;;
50) exit ;;
*) echo “Opcao desconhecida.” ; echo ; main ;;
esac
}

kill_qsend()
{
echo “”
echo -n ” Matando o Qmail [qmail-send]…”
svc -k /service/qmail
echo ” OK”
echo “”
exit
}

up_qsend()
{
echo “”
echo “Iniciando o Qmail [qmail-send]…”
svc -u /service/qmail
echo ” O qmail-send foi iniciado e esta supervisionado.”
echo “”
exit
}

alrm_queue()
{
echo “”
echo ” Reprocessando todas as mensagens nas filas Locais e Remotas”
svc -a /service/qmail
echo ” Pronto.”
exit
}

qmailrestart()
{
echo “”
echo -n ” Forcando a reinicializacao do Qmail… ”
restart_qmail
echo “OK”
echo “”
echo ” O Qmail foi reiniciado e deve estar no ar,”.
echo ” verifique o status do MTA:”
status
exit
}

qsend_logs()
{
echo “”
echo -n ” Quantas linhas de log do Qmail voce deseja analisar? ”
read linhaslog
echo “”
echo ” Analisando as ultimas ${linhaslog} linhas dos logs do qmail: ”
echo “”
tail -${linhaslog} /var/log/qmail/current
exit
}

queue_logs()
{
echo “”
echo -n ” Quantas linhas de log do qmail-queue voce deseja analisar? ”
read logqueue
echo “”
echo ” Analisando as ultimas ${logqueue} linhas dos logs do qmail-queue: ”
echo “”
tail -${logqueue} /var/spool/qmailscan/qmail-queue.log
exit
}

kill_smtp()
{
echo “”
echo -n ” Matando o Qmail SMTP [qmail-smtpd]…”
svc -k /service/smtpd
echo ” OK”
echo “”
exit
}

up_smtp()
{
echo “”
echo “Iniciando o Qmail SMTP [qmail-smtpd]…”
svc -u /service/smtpd
echo ” O qmail-smtpd foi iniciado e esta sendo supervisionado.”
echo “”
exit
}

status_smtp()
{
echo “”
echo ” Status do daemon SMTP [qmail-smtpd]: ”
svstat /service/smtpd
exit
}

restart_smtp()
{
echo “”
echo ” Forcando a reinicializacao do daemon SMTP [qmail-smtpd]… ”
kill_smtp
up_smtp
}

qsmtp_logs()
{
echo “”
echo -n ” Quantas linhas de logs do qmail-smtpd voce deseja analisar? ”
read smtplogs
echo ” Analisando as ultimas ${smtplogs} linhas de logs do qmail-smtpd: ”
echo “”
tail -${smtplogs} /service/smtpd/log/main/current
exit
}

kill_pop3()
{
echo “”
echo -n ” Matando o Qmail POP3 [qmail-pop3d]…”
svc -k /service/pop3d
echo ” OK”
echo “”
exit
}

up_pop3()
{
echo “”
echo “Iniciando o Qmail POP3 [qmail-pop3d]…”
svc -u /service/pop3d
echo ” O qmail-pop3d foi iniciado e esta sendo supervisionado.”
echo “”
exit
}

status_pop3()
{
echo “”
echo ” Status do daemon POP3 [qmail-pop3d]: ”
svstat /service/pop3d
exit
}

restart_pop3()
{
echo “”
echo “Forcando a reinicializacao do daemon POP3 [qmail-pop3d]… ”
kill_pop3
up_pop3
}

qpop3_logs()
{
echo “”
echo -n ” Quantas linhas de logs do qmail-pop3d voce deseja analisar? ”
read pop3logs
echo ” Analisando as ultimas ${pop3logs} linhas de logs do qmail-pop3d: ”
echo “”
tail -${pop3logs} /service/pop3d/log/main/current
exit
}

virus_log()
{
echo “”
echo -n ” Quantas linhas de logs de virus encontrados voce deseja analisar? ”
read viruslog
echo ” Analisando as ultimas ${viruslog} linhas de logs sobre virus encontrados:”
echo “”
tail -${viruslog} /var/spool/qmailscan/viruses.log
exit
}

rm_quarantine()
{
echo “”
echo ” Apagando todos os emails armazenados em quarentena… ”
find /var/spool/qmailscan/quarantine/ -name “*${dominio}*” -exec rm -f {} \;
echo ” Apagados!”
exit
}

rm_working()
{
echo “”
echo ” Apagando todas as mensagens verificadas por virus ha pouco…”
find /var/spool/qmailscan/working/ -name “*${dominio}*” -exec rm -f {} \;
echo ” Apagados!”
exit
}

virus_count()
{
echo “”
echo ” Total de virus interceptados segundo os logs recentes: ”
cat /var/spool/qmailscan/viruses.log | grep uvscan | wc -l
echo ” Virus!”
exit
}

stop_imapd()
{
echo “”
if [ -x /usr/local/etc/rc.d/imapd.sh ]; then
echo -n “Parando Courier-IMAP…”
/usr/local/etc/rc.d/imapd.sh stop
echo ” OK”
else
echo “O courier-imap nao parece estar corretamente”
echo “configurado via ports… Saindo.”
fi
echo “”
exit
}

start_imapd()
{
echo “”
if [ -x /usr/local/etc/rc.d/imapd.sh ]; then
echo -n “Iniciando Courier-IMAP…”
/usr/local/etc/rc.d/imapd.sh start
echo ” OK”
else
echo “O courier-imap nao parece estar corretamente”
echo “configurado via ports… Saindo.”
fi
echo “”
exit
}

vlogs_imapd()
{
echo “”
echo -n ” Quantas linhas de logs do courier-imap voce deseja analisar? ”
read imaplog
echo ” Analisando as ultimas ${imaplog} linhas de logs do courier-imap:”
echo “”
grep -i “imapd:” -C1 /var/log/maillog | tail -${imaplog}
echo “”
exit
}

# Inicia esse programa em shell
main

Deixe um comentário