{"id":761,"date":"2014-09-18T11:46:32","date_gmt":"2014-09-18T14:46:32","guid":{"rendered":"http:\/\/blog.abratel.com.br\/?p=761"},"modified":"2014-09-24T11:09:39","modified_gmt":"2014-09-24T14:09:39","slug":"761","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=761","title":{"rendered":"Dois scripts para facilitar a vida com o qmail freebsd"},"content":{"rendered":"<p><a href=\"http:\/\/blog.abratel.com.br\/wp-content\/uploads\/2014\/09\/qmail-fila.txt\">qmail-fila<\/a><\/p>\n<p><a href=\"http:\/\/blog.abratel.com.br\/wp-content\/uploads\/2014\/09\/qmail-adm1.txt\">qmail-adm<\/a><\/p>\n<p>Cr\u00e9ditos FreeBSD Brasil<\/p>\n<p>#!\/bin\/sh<\/p>\n<p>dominio=&#8221;@dominio.com.br&#8221;<\/p>\n<p>main()<br \/>\n{<br \/>\n   clear<br \/>\n   echo &#8220;======= Gerenciamento auxiliar do MTA QMAIL =======&#8221;<br \/>\n   echo &#8220;===================================================&#8221;<br \/>\n   echo &#8220;Opcoes:&#8221;<br \/>\n   echo<br \/>\n   echo &#8220;1 &#8211; Listar todas as mensagens na fila.&#8221;<br \/>\n   echo &#8220;2 &#8211; Listar todas as mensagens na fila Remota.&#8221;<br \/>\n   echo &#8220;3 &#8211; Listar todas as mensagens na fila Local.&#8221;<br \/>\n   echo &#8220;4 &#8211; Mostrar STATUS das filas do Qmail.&#8221;<br \/>\n   echo &#8220;5 &#8211; Ver o conteudo de uma mensagem especifica.&#8221;<br \/>\n   echo &#8220;6 &#8211; Apagar uma mensagem especifica da fila.&#8221;<br \/>\n   echo &#8220;7 &#8211; Apagar mensagens com um Assunto (Subject: ) especifico.&#8221;<br \/>\n   echo &#8220;8 &#8211; Apagar mensagens com Remetente (From: ) especifico.&#8221;<br \/>\n   echo &#8220;9 &#8211; Apagar mensagens com Destinario (To: ) especifico.&#8221;<br \/>\n   echo &#8220;10 &#8211; Apagar TODAS as mensagens das filas do Qmail.&#8221;<br \/>\n   echo &#8220;11 &#8211; Sair.&#8221;<br \/>\n   echo &#8220;15 &#8211; Avancado.&#8221;<br \/>\n   echo -n &#8220;Qual opcao voce deseja? &#8221;<br \/>\n   read opcao<br \/>\n   case $opcao in<br \/>\n     1) listar_todas ;;<br \/>\n     2) listar_r ;;<br \/>\n     3) listar_l ;;<br \/>\n     4) status ;;<br \/>\n     5) ver_msg ;;<br \/>\n     6) apaga_msg ;;<br \/>\n     7) subject ;;<br \/>\n     8) from ;;<br \/>\n     9) to ;;<br \/>\n     10) apagar_todas ;;<br \/>\n     11) exit ;;<br \/>\n     15) menu_avancado ;;<br \/>\n     *) echo &#8220;Opcao desconhecida.&#8221; ; echo ; main ;;<br \/>\n   esac<br \/>\n}<\/p>\n<p>###### funcoes auxiliares <\/p>\n<p> restart_qmail()<br \/>\n {<br \/>\n  svc -k \/service\/qmail<br \/>\n  svc -u \/service\/qmail<br \/>\n }<\/p>\n<p> status ()<br \/>\n {<br \/>\n\t echo &#8220;&#8221;<br \/>\n\t echo &#8220;Status atual do Qmail: &#8221;<br \/>\n\t echo &#8220;&#8221;<br \/>\n\t sleep 2<br \/>\n\t fila-qmail -s<br \/>\n\t echo &#8220;&#8221;<br \/>\n\t \/var\/qmail\/bin\/qmail-qstat<br \/>\n\t echo &#8220;&#8221;<br \/>\n\t svstat \/service\/qmail<br \/>\n\techo &#8220;&#8221;<br \/>\n }<\/p>\n<p> remotas_locais()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Mensagens Remotas ou Locais? [R\/L]: &#8221;<br \/>\n read ROL<\/p>\n<p> case ${ROL} in<br \/>\n\t [Rr])<br \/>\n\t     ROLRESP=&#8221;R&#8221;<br \/>\n\t ;;<br \/>\n\t [Ll])<br \/>\n\t     ROLRESP=&#8221;L&#8221;<br \/>\n         ;;<br \/>\n \t *)<br \/>\n\t     remotas_locais<br \/>\n         ;;<br \/>\n esac<br \/>\n }<\/p>\n<p>#### funcoes principais<\/p>\n<p> listar_todas()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Listando as mensagens nas filas Remota e Local: &#8221;<br \/>\n fila-qmail -l<br \/>\n echo &#8220;&#8221;<br \/>\n } <\/p>\n<p> listar_r()<br \/>\n {<br \/>\n echo&#8221;&#8221;<br \/>\n echo &#8220;Listando as mensagens na fila Remota: &#8221;<br \/>\n fila-qmail -R<br \/>\n echo &#8220;&#8221;<br \/>\n }<\/p>\n<p> listar_l()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Listando as mensagens na fila Local: &#8221;<br \/>\n fila-qmail -L<br \/>\n echo &#8220;&#8221;<br \/>\n }<\/p>\n<p> ver_msg()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; O numero de Identificacao da mensagem &#8211; Msg ID &#8211; pode ser&#8221;<br \/>\n echo &#8220;identificado como o primeiro numero que precede um email,&#8221;<br \/>\n echo &#8220;quando as mensagens nas filas sao listadas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Por exemplo:&#8221;<br \/>\n echo &#8221; 762178 [14, R] &#8211; O primeiro numero, fora dos parenteses,&#8221;<br \/>\n echo &#8221; indica o numero da mensagem. Nesse caso, 762178.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja visualizar o conteudo da mensagem numero: &#8221;<br \/>\n read NROMSG <\/p>\n<p> echo &#8220;&#8221;<br \/>\n fila-qmail -v${NROMSG} | less<\/p>\n<p> } <\/p>\n<p> apaga_msg()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; O numero de Identificacao da mensagem &#8211; Msg ID &#8211; pode ser&#8221;<br \/>\n echo &#8220;identificado como o primeiro numero que precede um email,&#8221;<br \/>\n echo &#8220;quando as mensagens nas filas sao listadas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Por exemplo:&#8221;<br \/>\n echo &#8221; 762178 [14, R] &#8211; O primeiro numero, fora dos parenteses,&#8221;<br \/>\n echo &#8221; indica o numero da mensagem. Nesse caso, 762178.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja apagar qual mensagem da fila? &#8221;<br \/>\n read NROMSG<\/p>\n<p> fila-qmail -d${NROMSG}<\/p>\n<p> restart_qmail<br \/>\n status<\/p>\n<p> }<\/p>\n<p> subject()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Para maior praticidade, a pesquisa sera Case Insensitive,&#8221;<br \/>\n echo &#8220;nao diferenciando letras maiusculas de letras minusculas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja apagar todas as mensagens com qual Assunto [Subject: ] &#8221;<br \/>\n read ASSUNTO<\/p>\n<p> remotas_locais<\/p>\n<p> fila-qmail -c -l | \\<br \/>\n grep -i -B 4 &#8220;${ASSUNTO}&#8221; | \\<br \/>\n grep &#8220;, ${ROLRESP}&#8221; | awk &#8216;{print &#8220;echo \\&#8221;Apagando mensagem &#8220;$1&#8243;\\&#8221; ; &#8221; &#8220;fila-qmail -d&#8221;$1}&#8217; > \/tmp\/XyZkPPty<\/p>\n<p>   sh \/tmp\/XyZkPPty<br \/>\n   COUNT=&#8221;`cat \/tmp\/XyZkPPty | wc -l`&#8221;<br \/>\n   rm -f \/tmp\/XyZkPPty<\/p>\n<p>        echo &#8220;&#8221;<br \/>\n        echo &#8221; Foram apagadas ${COUNT} mensagens que continham&#8221;<br \/>\n\techo &#8220;a expressao &#8216;${ASSUNTO}&#8217; como parte do Assunto&#8230;&#8221;<br \/>\n        echo &#8220;&#8221;<br \/>\n        echo &#8220;Reiniciando o Qmail&#8230;&#8221;<\/p>\n<p>        restart_qmail<br \/>\n\tstatus<br \/>\n }<\/p>\n<p> from()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Para maior praticidade, a pesquisa sera Case Insensitive,&#8221;<br \/>\n echo &#8220;nao diferenciando letras maiusculas de letras minusculas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja apagar todas as mensagens de qual Remetente [From: ] &#8221;<br \/>\n read FROM<\/p>\n<p> remotas_locais<\/p>\n<p> fila-qmail -c -l | \\<br \/>\n grep -i -B 2 &#8220;${FROM}&#8221; | \\<br \/>\n grep &#8220;, ${ROLRESP}&#8221; | awk &#8216;{print &#8220;echo \\&#8221;Apagando mensagem &#8220;$1&#8243;\\&#8221; ; &#8221; &#8220;fila-qmail -d&#8221;$1}&#8217; > \/tmp\/XyZkPPty<\/p>\n<p>   sh \/tmp\/XyZkPPty<br \/>\n   COUNT=&#8221;`cat \/tmp\/XyZkPPty | wc -l`&#8221;<br \/>\n   rm -f \/tmp\/XyZkPPty<\/p>\n<p>        echo &#8220;&#8221;<br \/>\n        echo &#8221; Foram apagadas ${COUNT} mensagens que continham&#8221;<br \/>\n        echo &#8220;a expressao &#8216;${FROM}&#8217; como parte do endereco do Remetente&#8230;&#8221;<br \/>\n        echo &#8220;&#8221;<br \/>\n        echo &#8220;Reiniciando o Qmail&#8230;&#8221;<\/p>\n<p>        restart_qmail<br \/>\n        status<br \/>\n }<\/p>\n<p> to()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Para maior praticidade, a pesquisa sera Case Insensitive,&#8221;<br \/>\n echo &#8220;nao diferenciando letras maiusculas de letras minusculas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja apagar todas as mensagens de qual Destinatario [To: ] &#8221;<br \/>\n read TO<\/p>\n<p> remotas_locais<\/p>\n<p> fila-qmail -c -l | \\<br \/>\n grep -i -B 3 &#8220;${TO}&#8221; | \\<br \/>\n grep &#8220;, ${ROLRESP}&#8221; | awk &#8216;{print &#8220;echo \\&#8221;Apagando mensagem &#8220;$1&#8243;\\&#8221; ; &#8221; &#8220;fila-qmail -d&#8221;$1}&#8217; > \/tmp\/XyZkPPty<\/p>\n<p>   sh \/tmp\/XyZkPPty<br \/>\n   COUNT=&#8221;`cat \/tmp\/XyZkPPty | wc -l`&#8221;<br \/>\n   rm -f \/tmp\/XyZkPPty<\/p>\n<p>        echo &#8220;&#8221;<br \/>\n        echo &#8221; Foram apagadas ${COUNT} mensagens que continham&#8221;<br \/>\n        echo &#8220;a expressao &#8216;${TO}&#8217; como parte do endereco do Remetente&#8230;&#8221;<br \/>\n        echo &#8220;&#8221;<br \/>\n        echo &#8220;Reiniciando o Qmail&#8230;&#8221;<\/p>\n<p>        restart_qmail<br \/>\n        status<br \/>\n }<\/p>\n<p>apagar_todas()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Todas as mensagens de todas as filas do QMail serao apagadas.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Deseja mesmo continuar? [S\/N] &#8221;<\/p>\n<p> read SIMNAO<\/p>\n<p> case ${SIMNAO} in<br \/>\n         [Ss])<\/p>\n<p> \t fila-qmail -D &#038;&#038; \\<br \/>\n\t restart_qmail &#038;&#038; \\<br \/>\n\t status<br \/>\n         ;;<\/p>\n<p>         *)<br \/>\n\t echo &#8220;&#8221;<br \/>\n         echo &#8220;Saindo&#8230;&#8221;<br \/>\n         ;;<br \/>\n esac<\/p>\n<p> }<\/p>\n<p>virus_dat_version() {<br \/>\n\techo &#8220;&#8221;<br \/>\n\t\/usr\/local\/bin\/uvscan &#8211;version | grep -v &#8220;EVALUATION&#8221;<br \/>\n\techo &#8220;&#8221;<br \/>\n}<\/p>\n<p> ############## Menu Avancado ###############<br \/>\n ## Nao tem nada de Avancado mas nao deve  ##<br \/>\n ## ser usado por quem nao sabe como ele   ##<br \/>\n ## funciona&#8230; enfim, leiam as man pages  ##<br \/>\n ## do svc, do svscan, svstat e o resto do ##<br \/>\n ## Daemontools inteiro&#8230;\t\t   ##<br \/>\n ############################################<\/p>\n<p> menu_avancado()<br \/>\n{<br \/>\n   clear<br \/>\n   echo &#8220;===== Controle dos servicos de e-mail =====&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;Servico qmail-send [modulo nivel 1]:&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;01 &#8211; Matar o qmail-send.&#8221;<br \/>\n   echo &#8220;02 &#8211; Iniciar o qmail-send.&#8221;<br \/>\n   echo &#8220;03 &#8211; Reprocessar as filas de email.&#8221;<br \/>\n   echo &#8220;04 &#8211; STATUS do qmail-send e das filas de e-mail.&#8221;<br \/>\n   echo &#8220;05 &#8211; Reiniciar o Qmail [qmail-send].&#8221;<br \/>\n   echo &#8220;06 &#8211; Verificar os logs do qmail-send.&#8221;<br \/>\n   echo &#8220;07 &#8211; Verificar os logs do qmail-queue.&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;Servico Qmail SMTP:&#8221;<br \/>\n   echo &#8220;10 &#8211; Matar o daemon SMTP.&#8221;<br \/>\n   echo &#8220;11 &#8211; Iniciar o daemon SMTP.&#8221;<br \/>\n   echo &#8220;12 &#8211; STATUS do daemon SMTP.&#8221;<br \/>\n   echo &#8220;13 &#8211; Reiniciar o daemon SMTP.&#8221;<br \/>\n   echo &#8220;14 &#8211; Verificar os logs do SMTP.&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;Servico Qmail POP3:&#8221;<br \/>\n   echo &#8220;20 &#8211; Matar o daemon POP3.&#8221;<br \/>\n   echo &#8220;21 &#8211; Iniciar o daemon POP3.&#8221;<br \/>\n   echo &#8220;22 &#8211; STATUS do daemon POP3.&#8221;<br \/>\n   echo &#8220;23 &#8211; Reiniciar o daemon POP3.&#8221;<br \/>\n   echo &#8220;24 &#8211; Verificar os logs do POP3.&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;Anti Virus:&#8221;<br \/>\n   echo &#8220;30 &#8211; Logs dos ultimos virus encontrados.&#8221;<br \/>\n   echo &#8220;31 &#8211; Logs do qmail-queue junto ao antivirus.&#8221;<br \/>\n   echo &#8220;32 &#8211; Apagar todas as mensagens com virus do Quarantine.&#8221;<br \/>\n   echo &#8220;33 &#8211; Apagar todas as mensagens com virus verificadas agora.&#8221;<br \/>\n   echo &#8220;34 &#8211; Contar virus encontrados.&#8221;<br \/>\n   echo &#8220;35 &#8211; Mostrar as definicoes (dat-version) de virus atuais.&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;Servico Courier-IMAP:&#8221;<br \/>\n   echo &#8220;36 &#8211; Para o servico IMAP (caso instalado).&#8221;<br \/>\n   echo &#8220;37 &#8211; Inicia o servico IMAP (caso instalado).&#8221;<br \/>\n   echo &#8220;38 &#8211; Verificar os logs do IMAP (caso instalado).&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;&#8221;<br \/>\n   echo &#8220;50 &#8211; Sair.&#8221;<br \/>\n   echo -n &#8220;Qual opcao voce deseja? &#8221;<br \/>\n   read opctao<br \/>\n   case $opctao in<br \/>\n     01) kill_qsend ;;<br \/>\n     02) up_qsend ;;<br \/>\n     03) alrm_queue ;;<br \/>\n     04) status ;;<br \/>\n     05) qmailrestart ;;<br \/>\n     06) qsend_logs ;;<br \/>\n     07) queue_logs ;;<br \/>\n     10) kill_smtp ;;<br \/>\n     11) up_smtp ;;<br \/>\n     12) status_smtp ;;<br \/>\n     13) restart_smtp ;;<br \/>\n     14) qsmtp_logs ;;<br \/>\n     20) kill_pop3 ;;<br \/>\n     21) up_pop3 ;;<br \/>\n     22) status_pop3 ;;<br \/>\n     23) restart_pop3 ;;<br \/>\n     24) qpop3_logs ;;<br \/>\n     30) virus_log ;;<br \/>\n     31) queue_logs ;;<br \/>\n     32) rm_quarantine ;;<br \/>\n     33) rm_working ;;<br \/>\n     34) virus_count ;;<br \/>\n     35) virus_dat_version ;;<br \/>\n     36) stop_imapd ;;<br \/>\n     37) start_imapd ;;<br \/>\n     38) vlogs_imapd ;;<br \/>\n     50) exit ;;<br \/>\n     *) echo &#8220;Opcao desconhecida.&#8221; ; echo ; main ;;<br \/>\n   esac<br \/>\n}<\/p>\n<p> kill_qsend()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Matando o Qmail [qmail-send]&#8230;&#8221;<br \/>\n svc -k \/service\/qmail<br \/>\n echo &#8221; OK&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> up_qsend()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Iniciando o Qmail [qmail-send]&#8230;&#8221;<br \/>\n svc -u \/service\/qmail<br \/>\n echo &#8221; O qmail-send foi iniciado e esta supervisionado.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> alrm_queue()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Reprocessando todas as mensagens nas filas Locais e Remotas&#8221;<br \/>\n svc -a \/service\/qmail<br \/>\n echo &#8221; Pronto.&#8221;<br \/>\n exit<br \/>\n } <\/p>\n<p> qmailrestart()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Forcando a reinicializacao do Qmail&#8230; &#8221;<br \/>\n restart_qmail<br \/>\n echo &#8220;OK&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; O Qmail foi reiniciado e deve estar no ar,&#8221;.<br \/>\n echo &#8221; verifique o status do MTA:&#8221;<br \/>\n status<br \/>\n exit<br \/>\n }<\/p>\n<p> qsend_logs()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de log do Qmail voce deseja analisar? &#8221;<br \/>\n read linhaslog<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Analisando as ultimas ${linhaslog} linhas dos logs do qmail: &#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n tail -${linhaslog} \/var\/log\/qmail\/current<br \/>\n exit<br \/>\n }<\/p>\n<p> queue_logs()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de log do qmail-queue voce deseja analisar? &#8221;<br \/>\n read logqueue<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Analisando as ultimas ${logqueue} linhas dos logs do qmail-queue: &#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n tail -${logqueue} \/var\/spool\/qmailscan\/qmail-queue.log<br \/>\n exit<br \/>\n }<\/p>\n<p> kill_smtp()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Matando o Qmail SMTP [qmail-smtpd]&#8230;&#8221;<br \/>\n svc -k \/service\/smtpd<br \/>\n echo &#8221; OK&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> up_smtp()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Iniciando o Qmail SMTP [qmail-smtpd]&#8230;&#8221;<br \/>\n svc -u \/service\/smtpd<br \/>\n echo &#8221; O qmail-smtpd foi iniciado e esta sendo supervisionado.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> status_smtp()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Status do daemon SMTP [qmail-smtpd]: &#8221;<br \/>\n svstat \/service\/smtpd<br \/>\n exit<br \/>\n }<\/p>\n<p> restart_smtp()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Forcando a reinicializacao do daemon SMTP [qmail-smtpd]&#8230; &#8221;<br \/>\n kill_smtp<br \/>\n up_smtp<br \/>\n }<\/p>\n<p> qsmtp_logs()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de logs do qmail-smtpd voce deseja analisar? &#8221;<br \/>\n read smtplogs<br \/>\n echo &#8221; Analisando as ultimas ${smtplogs} linhas de logs do qmail-smtpd: &#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n tail -${smtplogs} \/service\/smtpd\/log\/main\/current<br \/>\n exit<br \/>\n }<\/p>\n<p> kill_pop3()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Matando o Qmail POP3 [qmail-pop3d]&#8230;&#8221;<br \/>\n svc -k \/service\/pop3d<br \/>\n echo &#8221; OK&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> up_pop3()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Iniciando o Qmail POP3 [qmail-pop3d]&#8230;&#8221;<br \/>\n svc -u \/service\/pop3d<br \/>\n echo &#8221; O qmail-pop3d foi iniciado e esta sendo supervisionado.&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> status_pop3()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Status do daemon POP3 [qmail-pop3d]: &#8221;<br \/>\n svstat \/service\/pop3d<br \/>\n exit<br \/>\n }<\/p>\n<p> restart_pop3()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8220;Forcando a reinicializacao do daemon POP3 [qmail-pop3d]&#8230; &#8221;<br \/>\n kill_pop3<br \/>\n up_pop3<br \/>\n }<\/p>\n<p> qpop3_logs()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de logs do qmail-pop3d voce deseja analisar? &#8221;<br \/>\n read pop3logs<br \/>\n echo &#8221; Analisando as ultimas ${pop3logs} linhas de logs do qmail-pop3d: &#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n tail -${pop3logs} \/service\/pop3d\/log\/main\/current<br \/>\n exit<br \/>\n }<\/p>\n<p> virus_log()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de logs de virus encontrados voce deseja analisar? &#8221;<br \/>\n read viruslog<br \/>\n echo &#8221; Analisando as ultimas ${viruslog} linhas de logs sobre virus encontrados:&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n tail -${viruslog} \/var\/spool\/qmailscan\/viruses.log<br \/>\n exit<br \/>\n }<\/p>\n<p> rm_quarantine()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Apagando todos os emails armazenados em quarentena&#8230; &#8221;<br \/>\n find \/var\/spool\/qmailscan\/quarantine\/ -name &#8220;*${dominio}*&#8221; -exec rm -f {} \\;<br \/>\n echo &#8221; Apagados!&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> rm_working()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Apagando todas as mensagens verificadas por virus ha pouco&#8230;&#8221;<br \/>\n find \/var\/spool\/qmailscan\/working\/ -name &#8220;*${dominio}*&#8221; -exec rm -f {} \\;<br \/>\n echo &#8221; Apagados!&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p> virus_count()<br \/>\n {<br \/>\n echo &#8220;&#8221;<br \/>\n echo &#8221; Total de virus interceptados segundo os logs recentes: &#8221;<br \/>\n cat \/var\/spool\/qmailscan\/viruses.log | grep uvscan | wc -l<br \/>\n echo &#8221; Virus!&#8221;<br \/>\n exit<br \/>\n }<\/p>\n<p>stop_imapd()<br \/>\n{<br \/>\n echo &#8220;&#8221;<br \/>\n if [ -x \/usr\/local\/etc\/rc.d\/imapd.sh ]; then<br \/>\n    echo -n &#8220;Parando Courier-IMAP&#8230;&#8221;<br \/>\n    \/usr\/local\/etc\/rc.d\/imapd.sh stop<br \/>\n    echo &#8221; OK&#8221;<br \/>\n else<br \/>\n    echo &#8220;O courier-imap nao parece estar corretamente&#8221;<br \/>\n    echo &#8220;configurado via ports&#8230; Saindo.&#8221;<br \/>\n fi<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n}<\/p>\n<p>start_imapd()<br \/>\n{<br \/>\n echo &#8220;&#8221;<br \/>\n if [ -x \/usr\/local\/etc\/rc.d\/imapd.sh ]; then<br \/>\n    echo -n &#8220;Iniciando Courier-IMAP&#8230;&#8221;<br \/>\n    \/usr\/local\/etc\/rc.d\/imapd.sh start<br \/>\n    echo &#8221; OK&#8221;<br \/>\n else<br \/>\n    echo &#8220;O courier-imap nao parece estar corretamente&#8221;<br \/>\n    echo &#8220;configurado via ports&#8230; Saindo.&#8221;<br \/>\n fi<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n}<\/p>\n<p>vlogs_imapd()<br \/>\n{<br \/>\n echo &#8220;&#8221;<br \/>\n echo -n &#8221; Quantas linhas de logs do courier-imap voce deseja analisar? &#8221;<br \/>\n read imaplog<br \/>\n echo &#8221; Analisando as ultimas ${imaplog} linhas de logs do courier-imap:&#8221;<br \/>\n echo &#8220;&#8221;<br \/>\n grep -i &#8220;imapd:&#8221; -C1 \/var\/log\/maillog | tail -${imaplog}<br \/>\n echo &#8220;&#8221;<br \/>\n exit<br \/>\n}<\/p>\n<p> # Inicia esse programa em shell<br \/>\n main<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>#!\/usr\/bin\/perl<br \/>\n#<br \/>\n# fila-qmail &#8211; programa pra gerenciar a complexa e poderosa fila de mensagens<br \/>\n# locais e remotas do MTA Qmail.<br \/>\n##<br \/>\n# Baseado no script de Kasperv e Michelle algumacoisa&#8230;<br \/>\n##<br \/>\n# FreeBSD, Qmail, Vpopmail, Qmail-scanner, spamassassin, Daemontools,<br \/>\n# McAfee UVScan &#8211; Unix Virus Scanner, Mysql, e o necessario pra isso tudo funcionar junto.<\/p>\n<p>use strict;<br \/>\nuse diagnostics;<\/p>\n<p>my ($CID) = &#8216;dominio.com.br&#8217;;<\/p>\n<p>#################### Variaveis que PODEM ser alteradas pela usuario.<\/p>\n<p>#####<br \/>\n# Caminho completo pro seu diretorio de filas do qmail&#8230;<br \/>\nmy ($queue) = &#8216;\/var\/qmail\/queue\/&#8217;;<\/p>\n<p>#####<br \/>\n# Se voce possuir algum script ou comando externo que inicie e mate<br \/>\n# o seu Qmail, entao defina-os nas variaveis $stopmail e $startmail<br \/>\n# NAO pode haver mais de uma variavel com esses nomes.<\/p>\n<p># Caso voce utilize o Daemontools&#8230;<br \/>\nmy ($stopqmail) = &#8216;\/usr\/local\/bin\/svc -d \/service\/qmail&#8217;;<br \/>\nmy ($startqmail) = &#8216;\/usr\/local\/bin\/svc -u \/service\/qmail&#8217;;<\/p>\n<p># Se preferir, deixe eu matar o qmail sozinho.<br \/>\n# my ($stopqmail) = &#8221;;<\/p>\n<p>#####<br \/>\n# Defina aqui o comando ou script que retorne o PID do qmail-send<br \/>\n# pidof pode ser instalado pelo Ports do FreeBSD<br \/>\n#my ($pidcmd) = &#8216;pidof qmail-send&#8217;;<\/p>\n<p>######################################################<br \/>\n# DAQUI PRA BAIXO COMECA O PROGRAMA. NAO MEXA MUITO  #<br \/>\n# SE NAO SOUBER OQ ESTAS FAZENDO&#8230;                  #<br \/>\n######################################################<\/p>\n<p># Se nao existir protousuario input<br \/>\nif ($#ARGV == -1) {<br \/>\n    &#038;Usage();<br \/>\n}<\/p>\n<p># Define variaveis globais<br \/>\nmy ($norestart) = 0;<\/p>\n<p># Cria as listas para e-mail nas filas local e remota<br \/>\nmy (@queues) = (&#8220;remote&#8221;, &#8220;local&#8221;);<br \/>\nmy (@msglist) = ();<br \/>\nmy (%type) = ();<\/p>\n<p>foreach my $currentqueue (@queues) {<\/p>\n<p>    # Lista as mensagens de cada fila<br \/>\n    opendir(DIR,&#8221;${queue}$currentqueue&#8221;);<br \/>\n    my (@dirlist) = grep !\/\\.\/, readdir DIR;<br \/>\n    closedir DIR;<br \/>\n    foreach my $dir (@dirlist) {<br \/>\n\topendir (SUBDIR,&#8221;${queue}${currentqueue}\/$dir&#8221;);<br \/>\n\tmy (@files) = grep !\/\\.\/, map &#8220;$dir\/$_&#8221;, readdir SUBDIR;<br \/>\n\tforeach my $file (@files) {<br \/>\n\t    push @msglist, &#8220;$file&#8221;;<br \/>\n\t    ($currentqueue eq &#8220;remote&#8221;) ? ($type{&#8220;$file&#8221;} = &#8216;R&#8217;) : ($type{&#8220;$file&#8221;} = &#8216;L&#8217;);<br \/>\n\t}<br \/>\n\tclosedir SUBDIR;<br \/>\n    }<\/p>\n<p>}<\/p>\n<p># Verifica user-level input<br \/>\nmy ($color) = 1;<br \/>\n# Saida SEMPRE colorida.<\/p>\n<p>my ($summary) = 0;<br \/>\nmy (@actions) = ();<br \/>\nforeach my $arg (@ARGV) {<br \/>\n  SWITCH: {<br \/>\n      $arg eq &#8216;-l&#8217; and do { push @actions, &#8220;&#038;ListMsg(&#8216;A&#8217;)&#8221;; last SWITCH; };<br \/>\n      $arg eq &#8216;-R&#8217; and do { push @actions, &#8220;&#038;ListMsg(&#8216;L&#8217;)&#8221;; last SWITCH; };<br \/>\n      $arg eq &#8216;-L&#8217; and do { push @actions, &#8220;&#038;ListMsg(&#8216;R&#8217;)&#8221;; last SWITCH; };<br \/>\n      $arg eq &#8216;-N&#8217; and do { $summary = 1; last SWITCH; };<br \/>\n      $arg eq &#8216;-c&#8217; and do { $color = 0; last SWITCH; };<br \/>\n      $arg eq &#8216;-s&#8217; and do { push @actions, &#8220;&#038;Stats()&#8221;; last SWITCH; };<br \/>\n      $arg =~ \/^-v(.+)\/ and do { push @actions, &#8220;&#038;ViewMsg($1)&#8221;; last SWITCH; };<br \/>\n      $arg =~ \/^-d(.+)\/ and do { push @actions, &#8220;&#038;DelMsg($1)&#8221;; last SWITCH; };<br \/>\n      $arg eq &#8216;-D&#8217; and do { push @actions, &#8220;&#038;DelAll()&#8221;; last SWITCH; };<br \/>\n      &#038;Usage();<br \/>\n  }<br \/>\n}<\/p>\n<p>foreach my $action(@actions) {<br \/>\n    eval &#8220;$action&#8221;;<br \/>\n}<\/p>\n<p>exit(0);<\/p>\n<p>sub ListMsg {<br \/>\n    my ($q) = shift;<br \/>\n    my (%ret, %date, %from, %subj, %to, %cc, %fsize);<\/p>\n<p>    if ($summary == 0) {<\/p>\n<p>\tforeach my $msg(@msglist) {<\/p>\n<p>\t    # Descobre o return-path<br \/>\n\t    open (MSG, &#8220;${queue}info\/$msg&#8221;);<br \/>\n\t    $ret{$msg} = <MSG>;<br \/>\n\t    substr($ret{$msg}, 0, 1) = &#8221;;<br \/>\n\t    chop ($ret{$msg});<br \/>\n\t    close (MSG);<\/p>\n<p>\t    # Descobre o tamanho do e-mail em disco.<br \/>\n\t    $fsize{$msg} = (stat(&#8220;${queue}mess\/$msg&#8221;))[7];<\/p>\n<p>\t    # Pegar dados basicos do cabecalho do e-mail<br \/>\n\t    open (MSG, &#8220;${queue}mess\/$msg&#8221;);<br \/>\n\t    while (<MSG>) {<br \/>\n\t\tif ($_ =~ \/^Date: \/) {<br \/>\n\t\t    $date{$msg} = $&#8217;;<br \/>\n\t\t    chop ($date{$msg});<br \/>\n\t\t} elsif ( $_ =~ \/^From: \/) {<br \/>\n\t\t    $from{$msg} = $&#8217;;<br \/>\n\t\t    chop ($from{$msg});<br \/>\n\t\t} elsif ( $_ =~ \/^Subject: \/) {<br \/>\n\t\t    $subj{$msg} = $&#8217;;<br \/>\n\t\t    chop ($subj{$msg});<br \/>\n\t\t} elsif ( $_ =~ \/^To: \/) {<br \/>\n\t\t    $to{$msg} = $&#8217;;<br \/>\n\t\t    chop ($to{$msg});<br \/>\n\t\t} elsif ( $_ =~ \/^Cc: \/) {<br \/>\n\t\t    $cc{$msg} = $&#8217;;<br \/>\n\t\t    chop ($cc{$msg});<br \/>\n\t\t} elsif ( $_ eq &#8220;\\n&#8221;) {<br \/>\n\t\t    last;<br \/>\n\t\t}<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>    }<\/p>\n<p>    if ($color == 1) {<\/p>\n<p>\tforeach my $msg(@msglist) {<br \/>\n\t    unless ($q eq $type{$msg})  {<br \/>\n\t\tmy ($dir, $rmsg) = split (\/\\\/\/, $msg);<br \/>\n\t\tprint chr(27).&#8221;[01;34m$rmsg ($dir, $type{$msg})\\n&#8221;;<br \/>\n\t\tif ($summary == 0) {<br \/>\n\t\t    defined($ret{$msg})   and print &#8221;  \\e[01;31mReturn-path\\e[00m: $ret{$msg}\\n&#8221;;<br \/>\n\t\t    defined($from{$msg})  and print &#8221;  \\e[01;31mFrom\\e[00m: $from{$msg}\\n&#8221;;<br \/>\n\t\t    defined($to{$msg})    and print &#8221;  \\e[01;31mTo\\e[00m: $to{$msg}\\n&#8221;;<br \/>\n\t\t    defined($cc{$msg})    and print &#8221;  \\e[01;31mCc\\e[00m: $cc{$msg}\\n&#8221;;<br \/>\n\t\t    defined($subj{$msg})  and print &#8221;  \\e[01;31mSubject\\e[00m: $subj{$msg}\\n&#8221;;<br \/>\n\t\t    defined($date{$msg})  and print &#8221;  \\e[01;31mDate\\e[00m: $date{$msg}\\n&#8221;;<br \/>\n\t\t    defined($fsize{$msg}) and print &#8221;  \\e[01;31mSize\\e[00m: $fsize{$msg} bytes\\n\\n&#8221;;<br \/>\n\t\t}<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>    } else {<\/p>\n<p>\tforeach my $msg(@msglist) {<br \/>\n\t    unless ($q eq $type{$msg})  {<br \/>\n\t\tmy ($dir, $rmsg) = split (\/\\\/\/, $msg);<br \/>\n\t\tprint &#8220;$rmsg ($dir, $type{$msg})\\n&#8221;;<br \/>\n\t\tif ($summary == 0) {<br \/>\n\t\t    defined($ret{$msg})   and print &#8221;  Return-path: $ret{$msg}\\n&#8221;;<br \/>\n\t\t    defined($from{$msg})  and print &#8221;  From: $from{$msg}\\n&#8221;;<br \/>\n\t\t    defined($to{$msg})    and print &#8221;  To: $to{$msg}\\n&#8221;;<br \/>\n\t\t    defined($cc{$msg})    and print &#8221;  Cc: $cc{$msg}\\n&#8221;;<br \/>\n\t\t    defined($subj{$msg})  and print &#8221;  Subject: $subj{$msg}\\n&#8221;;<br \/>\n\t\t    defined($date{$msg})  and print &#8221;  Date: $date{$msg}\\n&#8221;;<br \/>\n\t\t    defined($fsize{$msg}) and print &#8221;  Size: $fsize{$msg} bytes\\n\\n&#8221;;<br \/>\n\t\t}<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>    }<br \/>\n    &#038;Stats();<br \/>\n}<\/p>\n<p># Mostra conteudo da mensagem<br \/>\nsub ViewMsg {<br \/>\n    my ($rmsg) = shift;<\/p>\n<p>    unless ($rmsg =~ \/^\\d+$\/) {<\/p>\n<p>\tprint &#8220;$rmsg nao e&#8217; um numero de e-mail valido!\\n&#8221;;<\/p>\n<p>    } else {<\/p>\n<p>\t# Encontra o email<br \/>\n\tmy ($ok) = 0;<br \/>\n\tforeach my $msg(@msglist) {<br \/>\n\t    if ($msg =~ \/$rmsg$\/) {<br \/>\n\t\t$ok = 1;<br \/>\n\t\tprint &#8220;\\n &#8212;&#8212;&#8212;&#8212;&#8211;\\n NUMERO DO E-MAIL NA FILA: $rmsg \\n &#8212;&#8212;&#8212;&#8212;&#8211;\\n\\n&#8221;;<br \/>\n\t\topen (MSG, &#8220;${queue}mess\/$msg&#8221;);<br \/>\n\t\twhile (<MSG>) {<br \/>\n\t\t    print $_;<br \/>\n\t\t}<br \/>\n\t\tclose (MSG);<br \/>\n\t\tlast;<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>\t# Se nao encontrar a msg<br \/>\n\tif ($ok == 0) {<br \/>\n\t    print &#8220;Mensagem numero $rmsg nao foi encontrada na fila!\\n&#8221;;<\/p>\n<p>\t}<br \/>\n    }<\/p>\n<p>}<\/p>\n<p># Deleta uma mensagem da fila<br \/>\nsub DelMsg {<br \/>\n    my ($rmsg) = shift;<\/p>\n<p>    unless ($rmsg =~ \/^\\d+$\/) {<\/p>\n<p>\tprint &#8220;$rmsg nao e&#8217; uma mensagem valida!\\n&#8221;;<\/p>\n<p>    } else {<\/p>\n<p>\t# Mata o qmail<br \/>\n\t&#038;stopQmail() or die &#8220;O processo qmail nao pode ser interrompido: $!&#8221;;<\/p>\n<p>\t# Encontra o email<br \/>\n\tmy ($ok) = 0;<br \/>\n\tforeach my $msg(@msglist) {<br \/>\n\t    if ($msg =~ \/$rmsg$\/) {<br \/>\n\t\t$ok = 1;<br \/>\n\t\tunlink &#8220;${queue}mess\/$msg&#8221;;<br \/>\n\t\tunlink &#8220;${queue}info\/$msg&#8221;;<br \/>\n\t\tif ($type{$msg} eq &#8216;R&#8217;) {<br \/>\n\t\t    unlink &#8220;${queue}remote\/$msg&#8221;;<br \/>\n\t\t} else {<br \/>\n\t\t    unlink &#8220;${queue}local\/$msg&#8221;;<br \/>\n\t\t}<br \/>\n\t\tlast;<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>\t# Se nao achar o email,<br \/>\n\tif ($ok == 0) {<br \/>\n\t    print &#8220;O e-mail $rmsg nao foi encontrado!\\n&#8221;;<br \/>\n\t}<\/p>\n<p>\t# Ressuscita Qmail<br \/>\n\t&#038;startQmail();<\/p>\n<p>    }<br \/>\n}<\/p>\n<p># Apaga todas as mensagens de ambas as filas.<br \/>\nsub DelAll {<br \/>\n    my ($rmsg) = shift;<\/p>\n<p>    # Para o qmail<br \/>\n    &#038;stopQmail() or die &#8220;O processo qmail nao pode ser interrompido: $!&#8221;;<\/p>\n<p>    # Search messages<br \/>\n    my ($ok) = 0;<br \/>\n    foreach my $msg (@msglist) {<br \/>\n\t$ok = 1;<br \/>\n\tprint &#8220;Apagando o email $msg&#8230;\\n&#8221;;<br \/>\n\tunlink &#8220;${queue}mess\/$msg&#8221;;<br \/>\n\tunlink &#8220;${queue}info\/$msg&#8221;;<br \/>\n\tif ($type{$msg} eq &#8216;R&#8217;) {<br \/>\n\t    unlink &#8220;${queue}remote\/$msg&#8221;;<br \/>\n\t} else {<br \/>\n\t    unlink &#8220;${queue}local\/$msg&#8221;;<br \/>\n\t}<br \/>\n    }<\/p>\n<p>    # Se nao houverem mensagens&#8230;<br \/>\n    if ($ok == 0) {<br \/>\n\tprint &#8220;Nao foram encontradas mensagens nas filas!\\n&#8221;;<br \/>\n    }<\/p>\n<p>    # Reinicia o Qmail&#8230;<br \/>\n    &#038;startQmail();<br \/>\n}<\/p>\n<p># Stats, oras&#8230;<br \/>\nsub Stats {<br \/>\n    my ($l) = 0;<br \/>\n    my ($r) = 0;<\/p>\n<p>    foreach my $msg(@msglist) {<br \/>\n\tif ($type{$msg} eq &#8216;R&#8217;) { $r++; }<br \/>\n\telse { $l++; }<br \/>\n    }<\/p>\n<p>    if ($color == 1) {<br \/>\n\tprint chr(27).&#8221;[01;31mMensagens na fila Local&#8221;.chr(27).&#8221;[00m: $l\\n&#8221;;<br \/>\n\tprint chr(27).&#8221;[01;31mMensagens na fila Remota&#8221;.chr(27).&#8221;[00m: $r\\n&#8221;;<br \/>\n    } else {<br \/>\n\tprint &#8220;Mensagens na fila Local: $l\\n&#8221;;<br \/>\n\tprint &#8220;Mensagens na fila Remota: $r\\n&#8221;;<br \/>\n  }<br \/>\n}<\/p>\n<p># Pega o processo do qmail<br \/>\nsub qmailPid {<br \/>\n    my $qmpid = `\/bin\/ps waux | \/usr\/bin\/grep qmail-send | \/usr\/bin\/grep -v &#8220;\/bin\/ps&#8221; | \/usr\/bin\/awk &#8216;{print \\$2}&#8217;`;<br \/>\n#   my $qmpid = `$pidcmd`;<br \/>\n    chomp ($qmpid);<br \/>\n    if ($qmpid =~ \/^\\d+$\/) { return $qmpid; }<br \/>\n    return 0;<br \/>\n}<\/p>\n<p># Mata qmail<br \/>\nsub stopQmail {<br \/>\n    my ($qmpid) = &#038;qmailPid();<\/p>\n<p>    # Caso Exista o PID do Qmail, vamos mata-lo.<br \/>\n    if ($qmpid != 0) {<\/p>\n<p>\t# Se existir um script ou comando externo para mata-lo, vamos usa-lo.<br \/>\n\tif ($stopqmail ne &#8221;) {<\/p>\n<p>\t    print &#8220;Chamando comando externo para parar o qmail&#8230;\\n&#8221;;<br \/>\n\t    if (system($stopqmail) > 0) {<br \/>\n\t\treturn 0;<br \/>\n\t    }<\/p>\n<p>\t# Senao, vamos tentar matar nos mesmos!<br \/>\n\t} else {<br \/>\n\t    print &#8220;Terminando qmail (pid $qmpid)&#8230; essa operacao pode levar algum tempo caso existam mensagens sendo entregues.\\n&#8221;;<br \/>\n\t    kill &#8216;TERM&#8217;, $qmpid;<\/p>\n<p>\t    while (&#038;qmailPid() eq &#8220;$qmpid\\n&#8221;){<br \/>\n\t\tsleep 1;<br \/>\n\t    }<br \/>\n\t}<\/p>\n<p>    # Se o qmail nao estiver rodando, nao vamos querer reinicia-lo depois<br \/>\n    # evitando alteracoes no ambiente externo.<br \/>\n    } else {<br \/>\n\tprint &#8220;Qmail nao esta no ar.\\n&#8221;;<br \/>\n\t$norestart = 1;<br \/>\n    }<\/p>\n<p>    return 1;<br \/>\n}<\/p>\n<p># Starta qmail<br \/>\nsub startQmail {<br \/>\n    my ($qmpid) = &#038;qmailPid();<\/p>\n<p>    if ($qmpid != 0) {<br \/>\n\tprint &#8220;Qmail esta ativo novamente, por isso nao sera reiniciado.\\n&#8221;;<\/p>\n<p>    } elsif ($norestart == 1) {<br \/>\n\tprint &#8220;Qmail nao estava em execussao quando o fila-qmail foi chamado, por isso nao sera reiniciado \\n&#8221;;<\/p>\n<p>    } else {<br \/>\n\tprint &#8220;Reiniciando qmail&#8230; &#8220;;<br \/>\n\tsystem($startqmail);<br \/>\n\tprint &#8220;OK (esperamos).\\n&#8221;;<br \/>\n    }<\/p>\n<p>    return 1;<br \/>\n}<\/p>\n<p>sub Usage {<br \/>\nprint &#8220;\\n&#8221;;<br \/>\nprint chr(27).&#8221;[01;39m\\n\\t\\t\\tQmail\/FreeBSD Mail Service da $CID\\n&#8221;.chr(27).&#8221;[00m&#8221;;<br \/>\nprint &#8220;\\n&#8221;;<br \/>\nprint chr(27).&#8221;[01;33m&#8221;;<br \/>\nprint &#8221;                __ _ _                                       _ _  \\n&#8221;;<br \/>\nprint &#8221;               \/ _(_) | __ _            __ _ _ __ ___   __ _(_) | \\n&#8221;;<br \/>\nprint &#8221;              | |_| | |\/ _` |  _____   \/ _` | &#8216;_ ` _ \\\\ \/ _` | | | \\n&#8221;;<br \/>\nprint &#8221;              |  _| | | (_| | |_____| | (_| | | | | | | (_| | | | \\n&#8221;;<br \/>\nprint &#8221;              |_| |_|_|\\\\__,_|          \\\\__, |_| |_| |_|\\\\__,_|_|_| \\n&#8221;;<br \/>\nprint &#8221;                                          |_|                     \\n&#8221;;<br \/>\nprint chr(27).&#8221;[00m&#8221;;<br \/>\nprint &#8220;\\n&#8221;;<br \/>\nprint chr(27).&#8221;[01;31m\\t\\t\\tEl Super fila-qmail v0.2 da $CID\\n\\n&#8221;.chr(27).&#8221;[00m&#8221;;<\/p>\n<p>    print &#8220;\\n&#8221;;<br \/>\n    print chr(27).&#8221;[01;34mOpcoes possiveis sao:\\n&#8221;.chr(27).&#8221;[00m&#8221;;<br \/>\n    print &#8221;  -l   : lista todas as mensagens nas filas remota e local.\\n&#8221;;<br \/>\n    print &#8221;  -L   : lista apenas mensagens na fila local.\\n&#8221;;<br \/>\n    print &#8221;  -R   : lista apenas mensagens na fila remota.\\n&#8221;;<br \/>\n    print &#8221;  -s   : mostra a saida do qmail-qstat.\\n&#8221;;<br \/>\n    print &#8221;  -vN  : mostra o conteudo da mensagem numero N.\\n&#8221;;<br \/>\n    print &#8221;  -dN  : apaga a mensagem numero N da fila.\\n&#8221;;<br \/>\n    print &#8221;  -D   : deleta todas as mensagens nas filas remota e local.\\n&#8221;;<\/p>\n<p>    print &#8220;\\n&#8221;;<br \/>\n    print chr(27).&#8221;[01;35mOpcoes adicionais:\\n&#8221;.chr(27).&#8221;[00m&#8221;;<br \/>\n    print &#8221;  -c   : NAO imprime cores &#8211; ideal para criar scripts.\\n&#8221;;<br \/>\n    print &#8221;  -N   : lista apenas o numero das mensagens nas respectivas filas.\\n&#8221;;<br \/>\n    print &#8221;         (pode ser usado com -l, -L ou -R &#8211; ex: fila-qmail -N -l)\\n\\n&#8221;;<br \/>\n    print &#8220;NOTA: E&#8217; possivel executar varios comandos simultaneamente.\\n\\n&#8221;;<br \/>\n    exit 1;<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>qmail-fila qmail-adm Cr\u00e9ditos FreeBSD Brasil #!\/bin\/sh dominio=&#8221;@dominio.com.br&#8221; main() { clear echo &#8220;======= Gerenciamento auxiliar do MTA QMAIL =======&#8221; echo &#8220;===================================================&#8221; echo &#8220;Opcoes:&#8221; echo echo &#8220;1 &#8211; Listar todas as mensagens na fila.&#8221; echo &#8220;2 &#8211; Listar todas as mensagens na fila Remota.&#8221; echo &#8220;3 &#8211;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[10],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/761"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=761"}],"version-history":[{"count":5,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/761\/revisions"}],"predecessor-version":[{"id":769,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/761\/revisions\/769"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}