Pesquisar neste blog

terça-feira, 27 de agosto de 2013

Zimbra - COMANDOS BÁSICOS E DICAS

Para mudar senha do administrador
#su - zimbra
#zmprov sp <admin email address> <new password>


*Para parar e iniciar o zimbra:
#su - zimbra
#zmcontrol stop
#zmcontrol start


*Para ver o status dos serviços do zimbra:
#su - zimbra
#zmcontrol status


Uma dica é o fato de o Zimbra 8 vir configurado para acesso apenas via https. Você pode ativar também o acesso via http.

Como usuário zimbra:
#su - zimbra

Ativa suporte ao acesso http e https
#/opt/zimbra/bin/zmtlsctl mixed
#zmcontrol restart


Ativa suporte apenas ao https
#/opt/zimbra/bin/zmtlsctl https
#zmcontrol restart


Ativa suporte apenas ao http
#/opt/zimbra/bin/zmtlsctl http
#zmcontrol restart



Para ativar uma conta bloqueada
# zmprov ma admin zimbraAccountStatus active

segunda-feira, 26 de agosto de 2013

Juntando Colunas de informações com o PASTE

Hoje vou falar sobre o PASTE, incrível ferramenta de apoio ao administrador/usuário Linux.
Com o PASTE podemo juntar texto presente em dois arquivos.
Vamos supor que você tem 2 arquivos: nome.txt e telefone.txt
Conteudo do nome.txt:
daniel
cesar
julio
marcos
Conteudo do arquivo telefone.txt
5550910
5551020
5552030
5556060
Ao se usar o PASTE da seguinte forma:
paste nomes.txt telefone.txt > nomesEtelefones.txt
teremos criado um novo arquivo chamado nomesEtelefones.txt com o seguinte conteúdo:
daniel            5550910
cesar             5551020
julio              5552030
marcos        5556060
Você pode também adicionar um delimitador entre as colunas por exemplo: dois pontos ( : )
Para isso use o Paste assim:
paste -d’:’ nomes.txt telefone.txt > nomesEtelefones.txt
O resultado será:
daniel:5550910
cesar:5551020
julio:5552030
marcos:5556060
Basicamente é isso aí!
Sucesso!

Fonte: centraldolinux

quinta-feira, 22 de agosto de 2013

Backup/Restore Zimbra 8

Excelente dica de backup das contas do Zimbra.

zimbra_backup


Corrigir instrução com erro de TTY (you must have a tty to run sudo)

Para corrigir essa mensagem, segue a instrução para corrigir esse problema:

Atenção: a responsabilidade por qualquer ação feita em seu sistema é só sua! Na dúvida, não faça nada.
1) Abra um terminal;
2) Digite sudo visudo;
3) Comente a linha Default requiretty.

quarta-feira, 21 de agosto de 2013

Migrando e-mails entre servidores (imapsync)

A ferramenta imapsync, desenvolvida sob licença GPL é útil e funcional para migrar mensagens de um servidor de e-mails para outro. Seja porque você está realmente migrando o servidor de e-mails atual da sua empresa, ou seja porque você quer fazer um backup de suas mensagens em outra conta de sua propriedade, caso você precise transferir mensagens de um lado para outro usando o protocolo IMAP, certamente você vai querer conhecer o imapsync pra isso.

Instalação


O imapsync está disponível no repositório oficial do Ubuntu e certamente da grande maioria das distribuições linux também. Desta forma, sua instalação dispensa comentários, visto que uma busca no sistema de gerenciamento de pacotes da sua distribuição facilmente o mostrará o pacote para instalação.

No ambiente da tela azul

Segundo consta no site oficial [1], usuário de sistemas Microsoft poderão executar a ferramenta a partir de um ambiente com ActiveState’s Perl, mas não vou comentar sobre este  procedimento  por dois motivos: (1) Não conheço Perl, embora tenha vontade de conhece-lo um dia; (2) Não uso sistemas Microsoft e não tenho vontade de usá-los.
Desta forma caso você não queira ao menos se esforçar em usar um LiveCD do Linux, então consulte o site oficial [1] da ferramenta que deve haver algum tutorial explicando o “ritual” para instalação, pois o uso depende das mesmas opções que descrevo abaixo.

Uso


Considerando que o software esteja instalado ele será usado via linha de comandos e a sintaxe básica é a que segue abaixo:
$ imapsync opções-servidor1 opções-servidor2 outras-opções
Com ele você poderá transferir, copiar, sincronizar ou mover todas as mensagens (ou apenas um pasta especifica, recursivamente ou não) que estejam em um servidor IMAP para outro, tudo dependerá, é claro, das opções fornecidas.
Perceba que você se conectará nos dois servidores simultaneamente: Onde estão as mensagens atualmente; e no novo para onde as mensagens serão copiadas/movidas/sincronizadas etc.

Algumas opções básicas


Existem algumas dezenas de parâmetros que podem ser usados e sugiro uma leitura na página de manual para encontrá-las, mas as que deixo aqui são essenciais e que você deverá usar com mais frequência:
–host1 e –host2 – Seguidas pelo nome ou endereço IP do servidor IMAP indicam o servidor de origem e o de destino das mensagens (ambas as opções são obrigatórias)
–port1 e –port2 – Após estes parâmetros informam a porta em que os seus servidores estão escutando e esperando por conexões IMAP (143, 993 etc)
–user1 e –user2 – Com estas opções informaremos o login do usuário em ambos os servidores, que não necessariamente precisam ser o mesmo.
–ssl1 e –ssl2 – Caso algum dos servidores utilize conexão segura SSL você deverá informar estes parâmetros para um, ou ambos os servidores, de acordo com a necessidade.
–authmech1 e –authmech2 – O mecanismo de autenticação usado por cada servidor (uma dica fácil para descobrir qual e o método a ser usado é tentar se conectar ao servidor a partir de cliente IMAP qualquer como o Thunderbird, Evolution, Outlook etc e então ver qual foi o método usado por lá).
–password1 e –password2 -  A senha dos usuários em ambos os servidores pode ser fornecida na linha de comandos usando-se estas opções, ou se estas opções forem omitidas você receberá um prompt as solicitando na hora de executar o comando.
–passfile1 e –passfile2 – Alternativamente você pode gravar a senha em um arquivo separado e informa-lo através destas opções. isto evita  que a senha fique registrada no histórico de comandos e também o desconforto de ter que digita-la caso tenha que acessar estas contas muitas vezes (não se esqueça de assegurar as permissões de acesso a estes arquivos o mais restritiva possível).

Opções de restrição

As opções a seguir permitem selecionar quais pastas/mensagens  serão sincronizadas/copiadas/movidas.
–folder – Informa o nome da pasta a ser sincronizada. Caso necessário você pode usar esta opção várias vezes para informar que deseja sincronizar várias pastas. Perceba que as pastas deverão existir em ambos os servidores com o mesmo nome. Caso não existam serão criadas antes que as mensagens sejam transferidas;
–folderrec – Da mesma forma que a opção anterior, mas funciona recursivamente. Ou seja se dentro da pasta “Acompanhar” você tem duas outras “Processos” e “Serviços”, ao invés de usar a opção –folder 3 vezes (uma para cada pasta), bastaria usar esta nova opção uma vez só para a pasta “Acompanhar”
–include – Se você tem um conjunto de pastas que o nome possui alguma similaridade você poderá usar esta opção para sincronizar aquelas que combinem com a sua expressão regular.
–exclude – Complementa a opção anterior fazendo o imapsync ignorar as pastas que combinem com o padrão fornecido. Por exemplo você poderia querer sincronizar a pasta “Mensagens-20..” (com a opção –include – o .. seriam substituídos por dois caracteres quaisquer na hora da procura por pastas) mas ignorando a pasta “Mensagens-2009″ (adicionando também a opção –exclude)
–minage – Não sincroniza mensagens mais novas que N dias. Útil se você deseja apenas copiar as mensagens recebidas no últimos dias
–maxage – Não sincroniza mensagens mais velhas que N dias. Caso use ambas as opções ao mesmo tempo, esteja atento a ordem em que elas serão usadas pois isto pode influenciar nas mensagens que serão sincronizadas, conforme a representação abaixo, onde somente as mensagens dentro do período representado por “+” serão sincronizados:
passado |------------- maxage ++++++++> hoje (somente mensagens mais recentes)
passado |+++++++++++++ minage --------> hoje (somente mensagens mais antigas)
passado |---- maxage ++++ minage -----> hoje (mensagens dentro do intervalo especificado)
passado |+++ minage ------ maxage ++++> hoje (mensagens que não estão dentro do intervalo especificado)
–maxsize – Ignora as mensagens que sejam maior do que o tamanho estabelecido com esta opção.

Opções de teste


Estas opções podem ser usadas para testar se o comando está funcionando como você espera que estivesse
–dry – Não faz absolutamente nada mais além de mostrar as mensagens sobre o que seria feito se você não usa-se esta opção.
–justfoldersizes – Somente exibe o tamanho das pastas
–debug – Ativa o modo de depuração incrementando a quantidade de informações sobre o processo que está sendo feito
–debugimap – Ativa o modo de depuração sobre os comandos enviados/recebidos dos servidores IMAP
–justconnect – Somente testa se é viável conectar a ambos os servidores IMAP
–justlogin – Não só testa a viabilidade de conexão, mas testar a autenticação dos usuários também.

Outras opções úteis

Existem muitas outras opções. Eu escolhi aqui apenas aquelas que considerei mais úteis nas vezes que usei o imapsync, então não deixe de consultar a página de manual e o help interno do comando  para obter mais informações sobre estas e outras opções.
–delete – Exclui as mensagens do servidor de origem logo após a transferência. Isso é útil para quem precisar mover as mensagens de um servidor para o outro, pois sem esta opção as mensagens serão apenas copiadas de um servidor para o outro (veja que não é “delete1″ e sim “delete”).
–delete2 – Excluir do servidor de destino, todas as mensagens que não tiverem uma cópia no servidor de origem. Se você pretende manter ambos os servidores sincronizados esta opção te será útil
–expunge1 – Expurga as mensagens do servidor de origem ao invés de deleta-las. Lembre-se que no IMAP, o processo de “delete” na verdade apenas marca a mensagem para a exclusão e a oculta da listagem de mensagens. Para realmente excluir a mensagem você deve expurgar, com esta opção.
–expunge2 – Expurga as mensagens no servidor de destino
–uindexpunge – Expurga somente as mensagens que não possuírem mais uma cópia no servidor de origem. Para que ela possa funcionar é obrigatório também informar a opção “–delete2″
–ignoresize – Ignora o tamanho das mensagens e simplesmente as transfere. Dica: Para copiar mensagens de/para um servidor Gmail eu tive que usar esta opção
–allowsizemismatch – Alguns servidores reportam um tamanho de mensagem (RFC822) diferente do que a mensagem realmente tem (as vezes algumas dezenas de bytes é suficiente para estragar tudo) e por isso o imapsync emite um erro não copiando as mensagens. Esta opção diz ao imapsync para ignorar o tamanho informado pelo servidor. Para usar esta opção é recomendável usar também a opção anterior. Em meus testes com Gmail eu precisei usar esta opção também, e não tive nenhum problema com perda de dados e nem de mensagens truncadas.
–idatefromheader – Ao enviar a mensagem para o servidor de destino esta opção informa que a data da mensagem é exatamente a que consta no cabeçalho da mensagem. Pode parecer algo imbecil, mas se você não usar esta opção as mensagens poderão ser listadas no novo servidor com a data em que você as transferiu, ao invés da data correta que deve ser exatamente (ou mais próximo possível do que consta em seu cabeçalho).

Agora na prática


Vou deixar alguns exemplos para que fique claro como se usa esta ferramenta, mas lembre-se que o segredo todo está na escolha das opções que serão empregadas. Consulte o “miniguia” que deixei acima e também a página de manual para entendê-las.

Movendo mensagens de um servidor para outro

O exemplo que deixo a seguir conecta-se a minha caixa postal no servidor IMAP da minha empresa que não possui SSL e realizada autenticação pelo método PLAIN e também ao minha caixa postal no Gmail, aonde eu pretendo mover todas as mensagens com mais de 365 dias que estão na pasta “Arquivo”.
imapsync \
--host1 imap.minhaempresa.com --port1 143 --user1 welrbraga --authmech1 PLAIN \
--host2 imap.gmail.com --port2 993 --ssl2 --user2 welrbraga --authmech2 LOGIN \
--folder Arquivo --idatefromheader --delete --skipsize --allowsizemismatch
Observe que quebrei o comando em 4 linhas para melhorar a sua visibilidade, mas isto não é obrigatório na hora de digitar o comando. Veja também que não informei a senha para conexão em nenhum dos dois servidores o que fará o imapsync solicita-las assim que eu mandar o comando executar. Note ainda o uso das opções –idatefromheader e –skipsize –allowsizemismatch para conseguir copiar as mensagens do Gmail sem problemas.

Sincronizando duas contas de e-mail

O comando a seguir poderia ser executado pelo cron, ou outro agendador de tarefas para que periodicamente sincronizasse uma determinada pasta para uma outra conta qualquer
imapsync \
--host1 imap.minhaempresa.com --port1 993 --ssl1 --user1 welrbraga --authmech1 LOGIN --ssl1 --passfile1 senha1.txt \
--host2 imap.minhaempresa.com --port2 993 --ssl2 --user2 welingtonbraga --authmech2 LOGIN --passfile2 senha2.txt \
--folder Arquivado --delete2 --skipsize --allowsizemismatch
Perceba que neste exemplo ambas as contas estão no mesmo servidor (mas poderiam ser servidores diferentes), também foram usadas as opções “–passfile” para informar os arquivos contendo a senha de cada conta e ainda o uso da opção “–delete2″ que é a responsável por excluir as mensagens da segunda conta que já tenham sido excluídas da primeira. Caso eu quisesse sincronizar toda a conta bastaria omitir a opção “–folder”

Conclusão


Comparando ambos os exemplos dados percebe-se que seu uso é bem simples e na verdade poucas opções seriam usadas para mudar a forma de funcionamento. Sendo assim, escrever outras dezenas de exemplos seria improdutivo visto que não acrescentariam muito mais do que se pode entender com apenas estes dois modelos e da explicação das suas funções.
Caso fique alguma dúvida, como já disse antes,consulte a página de manual (man imapsync) e o help online (imapsync –help), mas se quiser também sinta-se a vontade a deixar um comentário no final desta página.

Referência


[1] Lamiral, Gilles. Imapsync Website. Disponível em <http://www.linux-france.org/prj/imapsync/>
Fonte: welrbraga

How to test an IMAP server by using telnet

What you need

  • The host name of the IMAP server (for use in the telnet command)
  • The IMAP user name (for use in the LOGIN command)
  • The IMAP user’s password (for use in the LOGIN command)

Encryption

For added security, you can encrypt your IMAP connection. This requires that your server supports SSL or TLS and that you have access to an SSL/TLS client program, for example OpenSSL, to use instead of telnet.
As the port-number normally is 993, an example OpenSSL command would be openssl s_client -connect imap.example.com:993 -quiet. (If you would like to see the public key of the server, as well as some other encryption-related information, omit -quiet.) The server should then start an IMAP session, displaying a greeting such as the * OK Dovecot ready example below.

What to do

The initial telnet: > symbolises your shell prompt.
telnet: > telnet imap.example.com imap
telnet: Trying 192.0.2.2...
telnet: Connected to imap.example.com.
telnet: Escape character is '^]'.
server: * OK Dovecot ready.
client: a1 LOGIN MyUsername MyPassword
server: a1 OK Logged in.
client: a2 LIST "" "*"
server: * LIST (\HasNoChildren) "." "INBOX"
server: a2 OK List completed.
client: a3 EXAMINE INBOX
server: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
server: * OK [PERMANENTFLAGS ()] Read-only mailbox.
server: * 1 EXISTS
server: * 1 RECENT
server: * OK [UNSEEN 1] First unseen.
server: * OK [UIDVALIDITY 1257842737] UIDs valid
server: * OK [UIDNEXT 2] Predicted next UID
server: a3 OK [READ-ONLY] Select completed.
client: a4 FETCH 1 BODY[]
server: * 1 FETCH (BODY[] {405}
server: Return-Path: sender@example.com
server: Received: from client.example.com ([192.0.2.1])
server:         by mx1.example.com with ESMTP
server:         id <20040120203404.CCCC18555.mx1.example.com@client.example.com>
server:         for <recipient@example.com>; Tue, 20 Jan 2004 22:34:24 +0200
server: From: sender@example.com
server: Subject: Test message
server: To: recipient@example.com
server: Message-Id: <20040120203404.CCCC18555.mx1.example.com@client.example.com>
server: 
server: This is a test message.
server: )
server: a4 OK Fetch completed.
client: a5 LOGOUT
server: * BYE Logging out
server: a5 OK Logout completed.


terça-feira, 20 de agosto de 2013

Instalando DenyHosts no Centos 6

About DenyHosts


DenyHosts is a security tool written in python that monitors server access logs to prevent brute force attacks on a virtual server. The program works by banning IP addresses that exceed a certain number of failed login attempts. 

Step One—Install Deny Hosts


We need to use a repository to install Deny Hosts on CentOS.
sudo rpm -Uvh http://mirror.metrocast.net/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
sudo yum install denyhosts

Once the program has finished downloading to the VPS, denyhosts is installed and configured. 

Step Two—Whitelist IP Addresses


After you install DenyHosts, make sure to whitelist your own IP address. Skipping this step will put you at risk of locking yourself out of your own virtual private server. 

Open up the list of allowed hosts:
nano /etc/hosts.allow

Under the description, add in any IP addresses that cannot afford to be banned from the server; you can write each one on a separate line, using this format:
sshd: 12.34.45.678

After making any changes, be sure to restart DenyHosts so that the new settings take effect on your virtual server:
/etc/init.d/denyhosts restart

Step Three—(Optional) Configure DenyHosts


DenyHosts is ready use as soon as the installation is over.

However if you want to customize the behavior of DenyHosts on your server, you can make the changes within the DenyHost configuration file:
# vim /etc/denyhosts.conf

sábado, 17 de agosto de 2013

Instalando OSLEC (Cancelador de ECHO)

cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.gz
tar -xvzf linux-2.6.28.tar.gz
mkdir /usr/src/dahdi/linux/drivers/staging
cp -fR /usr/src/linux-2.6.28/drivers/staging/echo /usr/src/dahdi/linux/drivers/staging
mkdir /usr/src/dahdi
cd /usr/src/dahdi
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.4.1.2+2.4.1.tar.gz
tar -zxvf dahdi-linux-complete-2.4.1.2+2.4.1.tar.gz
cp -fr /usr/src/dahdi-linux-complete-2.4.1.2+2.4.1 /usr/src/dahdi
sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi/linux/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi/linux/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi/linux/drivers/staging/echo/Kbuild
cd /usr/src/dahdi/linux
make
make install
# vim /etc/dahdi/system.conf
echocanceller=oslec,1-4

[root@asterisk]# lsmod |grep oslec
dahdi_echocan_oslec    36224  4
echo                   39040  1 dahdi_echocan_oslec
dahdi                 255124  25 dahdi_echocan_oslec,xpp,dahdi_transcode,wcb4xxp,wctdm,wcfxo,wctdm24xxp,wcte11xp,wct1xxp,wcte13xp,wcte12xp,dahdi_voicebus,wct4xxp
[root@asterisk asterisk]# lsdahdi
### Span  1: WCTDM/0 "Wildcard AEX410" (MASTER)
  1 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)
  2 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)
  3 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)
  4 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)



Aumentando a lista de comandos executados HISTSIZE

Adicione as alterações no final do arquivo /etc/profile ou do arquivo /etc/bashrc, usando seu editor de texto preferido, como o Vi, Vim, Emacs, Gedit e outros. 

Estas mudanças realizadas no /etc/profile valerão para todos os usuários do sistema operacional, a partir do próximo reboot. 

Ex.: 

# vim /etc/profile 

...
export HISTSIZE=100000
export HISTFILESIZE=200000
export HISTCONTROL=ignoredups:ignorespace

Estas mudanças realizadas no /etc/bashrc ou /etc/bash.bashrc, valerão para todos os usuários do sistema operacional, a partir do próximo logon. 

Ex.: 

# vim /etc/bashrc 

...
# vim:ts=4:sw=4
export HISTSIZE=100000
export HISTFILESIZE=200000
export HISTCONTROL=ignoredups:ignorespace

Configuração por perfil

Adicione as alterações no final de um dos arquivos ~/.bashrc, ou ~/.profile, ou ~/.bash_profile, localizados no path, /home/<user>/<filename>, no perfil do usuário desejado, usando seu editor de texto preferido. 

$ vim ~/.bashrc 

...
export HISTSIZE=100000
export HISTFILESIZE=200000
export HISTCONTROL=ignoredups:ignorespace

Ou: 

$ vim ~/.profile 

...
export HISTSIZE=100000
export HISTFILESIZE=200000
export HISTCONTROL=ignoredups:ignorespace

Ou: 

$ vim ~/.bash_profile 

...
export HISTSIZE=100000
export HISTFILESIZE=200000
export HISTCONTROL=ignoredups:ignorespace

Exemplos

Quantidades de linhas a serem armazenadas no histórico de comandos: 

HISTSIZE=100000

Tamanho máximo em bytes (B) que o arquivo será permitido atingir: 

HISTFILESIZE=200000

Não armazena no histórico, linhas de comandos duplicados: 

HISTCONTROL=ignoredups:ignorespace

Desabilitar o armazenamento de histórico: 

export HISTSIZE=0

Abaixo, opções para desabilitar o armazenamento de histórico para a sessão corrente. 

1. Desvia o histórico para o /dev/null

$ HISTFILE=/dev/null 

2. Armazena zero comandos no histórico: 

$ HISTSIZE=0 

3. Desabilita a variável de controle do histórico: 

$ unset HISTFILE 

4. Limpa o conteúdo do histórico na sessão corrente: 

$ history -c 

Mostrando a data e hora no comando history

Para adicionar a data e hora no comando history você precisa inserir o conteúdo "%h/%d - %H:%M:%S " na variável HISTTIMEFORMAT, então faça: 

# export HISTTIMEFORMAT="%h/%d - %H:%M:%S " 

Quando reiniciar sua máquina, ou fizer o logoff com o seu usuário, a variável automaticamente será desativada, ou melhor, não terá conteúdo, então você precisa adicionar no .bashrc do seu usuário. 

Se você estiver utilizando o usuário root, acesse: 

# vim /root/.bashrc 

E adicione ao final do arquivo a exportação da variável: 

export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

sexta-feira, 16 de agosto de 2013

Automatizando a manutenção de Logs do Windows (Apagando logs Antigos)

Automating the Process of Deleting Old Log Files

Many services and programs out there produce log files as an audit trail for everything they are doing, however few have a function which removes these files as they outlive their usefulness. As a result, these log files sit on your system eating up space (sometimes more than you know) and cluttering directories for those times you need to access them.

So if you don’t need these files, why keep them? We are going to show you how to easily remove these old log files to keep you system nice and tidy.

Of course, while the we are covering below are immediately useful for managing log files, you can also apply the same techniques to any other type of “expiring” file (such as backups).

Remove Files Based on Last Modified Date

If you want to clear your existing log files based solely on the last modified date of the file, all you have to do is use the FORFILES command. For example:

FORFILES /P “C:LogFiles” /S /D -7 /C “CMD /C DEL /F /Q @PATH”

The above command would delete all files from the “C:LogFiles” folder, and all sub-folders which have not been modified in the last week.

The FORFILES command is pretty flexible with the search pattern and date functions. For example, in place of a number, you can enter a date such as ‘-1/13/2010’ to delete files last modified prior to the specified date.

To get all the details on what FORFILES can do, view the online help using the following command from the command prompt:

FORFILES /?

Remove Files Based on a Date Pattern in the File Name

Many applications and services produce log files based on a date pattern as to have one log file per day (i.e. Log100113.txt, Backup-2010-01-13.zip, etc.). For these types of files, it is preferable to delete based on the date of the file incorporated into the file name rather than the last modified date. This is useful for scenarios such as keeping all log files for the past 3 months. Unfortunately, Windows does not have a native command with this type of logic but with a batch script we can easily handle this task.

There are examples included in the usage comments on the script, so it should be pretty easy to figure out.

The Script
@ECHO OFF
ECHO Delete By Date Pattern
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.

REM Delete/Select files based on a date which utilizes MM and/or DD for file naming patterns.
REM
REM Usage:
REM DeleteByDatePattern {/M | /D} NumberToKeep Path PatternPrefix PatternPostfix [/L | /DEL]
REM    /M     Specifies the pattern being used is based on months.
REM    /D     Specifies the pattern being used is based on days.
REM    NumberToKeep
REM           The number of months (/M) or days (/D) to keep, including the current.
REM           For example, entering 1 keeps only the current month/day and 6 would keep the current minus 5.
REM    Path   The root location to search. Subdirectories will be searched.
REM    PatternPrefix
REM           The file search pattern placed before of the month/day when building the search string.
REM    PatternPostfix
REM           The file search pattern placed after of the month/day when building the search string.
REM    /L     (optional) Lists all files matching the pattern, but does not delete them.
REM    /DEL   (optional) Deletes all files matching the pattern.
REM
REM Examples:
REM    DeleteByDatePattern /M 3 "%WinDir%system32LogFiles" ex?? ??.log /DEL
REM       Deletes all IIS log files (Windows Server 2003) except for the current and previous two months.
REM    DeleteByDatePattern /D 7 "D:Backup" *-????-??- .zip /DEL
REM       Deletes all zip files from the D:Backup folder except for the current week.
REM       The file name pattern assumed above is "*-YYYY-MM-DD.zip"
REM    DeleteByDatePattern /M 0 "C:" *( )* /L
REM       Prints a list of all files on the C drive matching the pattern: "*-MM-*" (where MM is replaced with 01-12)
REM    DeleteByDatePattern /D 14 "C:Logs" Log-???? .txt
REM       Prints a list of all patterns which would be processed by the script.

SETLOCAL EnableExtensions EnableDelayedExpansion

REM Assumes your Windows Date/Time settings are set to 'DayOfWeek M/D/YYYY' format.
REM If your format is different, you will need to alter the variables below so they align.
FOR /F "tokens=1,2,3,4 delims=/ " %%A IN ('DATE /T') DO (
   SET Month=%%B
   SET Day=%%C
   SET Year=%%D
)

IF /I {%1}=={/M} (
   SET Keep=%Month%
   SET Max=12
)
IF /I {%1}=={/D} (
   SET Keep=%Day%
   SET Max=31
   REM Working off of the previous month's max days.
   SET /A PrevMonth=%Month%-1
   IF !PrevMonth! EQU 2 (
      SET Max=28
      REM Leap years... add more as needed.
      IF /I %Year% EQU 2012 SET Max=29
      IF /I %Year% EQU 2016 SET Max=29
   )
   IF /I !PrevMonth! EQU 4 SET Max=30
   IF /I !PrevMonth! EQU 6 SET Max=30
   IF /I !PrevMonth! EQU 9 SET Max=30
   IF /I !PrevMonth! EQU 11 SET Max=30
)
SET Current=%Keep%
SET /A Keep=%Keep%-%2+1

REM Determine the range to be removed.
SET /A RemoveHighStart=%Current%+1
IF /I %Keep% LSS 1 (
   SET RemoveLow=0
   SET /A RemoveHighEnd=%Keep%+%Max%-1
) ELSE (
   SET /A RemoveLow=%Keep%-1
   SET RemoveHighEnd=%Max%
)

REM Process all less than the low range.
FOR /L %%Z IN (1,1,%RemoveLow%) DO CALL :Process %%Z %3 %4 %5 %6
REM Process all greater than the high range.
FOR /L %%Z IN (%RemoveHighStart%,1,%RemoveHighEnd%) DO CALL :Process %%Z %3 %4 %5 %6

ENDLOCAL
GOTO End

:Process
SET Key=0%1
SET Key=%Key:~-2%
SET Target="%~2%~3%Key%%~4"
ECHO Target Pattern: %Target%

IF /I {%5}=={/L} DIR %Target% /B /S
IF /I {%5}=={/DEL} DEL /F /S /Q %Target%
GOTO End

:End

Automating the Process

The FORFILES command is native to Windows, however the DeleteByDatePattern script should be placed in a folder defined in your Path variable (such as your Windows folder) so it can be called as though it were a native command. Once this is done, you can create a scheduled task which is either a single command (if you only need to delete from a single location) or a batch file (if you need to delete from multiple locations) which runs daily, weekly, monthly or whenever.

One more thing you can set and forget.

Links
Download Delete By Date Pattern script from Sysadmin Geek

segunda-feira, 12 de agosto de 2013

Configurando DKIM no Zimbra 8

DKIM-Signature a=rsa-sha1; q=dns;
d=example.com;
i=user@eng.example.com;
s=jun2005.eng; c=relaxed/simple;
t=1117574938; x=1118006938;
h=from:to:subject:date;
b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSb
av+yuU4zGeeruD00lszZVoG4ZHRNiYzR
Configure ZCS for DKIM Signing
/opt/zimbra/libexec/zmdkimkeyutil -a -d <example.com>
The public DNS record data that must be added for the domain to your DNS server is displayed. The public key DNS record appears as a DNS TXT-record that must be added for the domain to your DNS server.
Optional. To specify the number of bits for the new key, include -b in the command line, -b <####>. If you do not add the -b, the default setting is 1024 bits.
DKIM Data added to LDAP for domain example.com with selector B534F5FC-EAF5-11E1-A25D-54A9B1B23156
Public signature to enter into DNS:
B534F5FC-EAF5-11E1-A25D-54A9B1B23156._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ycHjGL/mJXEVlRZnxZL/VqaN/Jk9VllvIOTkKgwLSFtVsKC69kVaUDDjb3zkpJ6qpswjjOCO+0eGJZFA4aB4BQjFBHbl97vgNnpJq1sV3QzRfHrN8X/gdhvfKSIwSDFFl3DHewKDWNcCzBkNf5wHt5ujeavz2XogL8HfeL0bTwIDAQAB" ; ----- DKIM B534F5FC-EAF5-11E1-A25D-54A9B1B23156 for example.com
/opt/zimbra/opendkim/sbin/opendkim-testkey -d <example.com> -s <0E9F184A-9577-11E1-AD0E-2A2FBBAC6BCB> -x /opt/zimbra/conf/opendkim.conf
Update DKIM Data for a Domain
/opt/zimbra/libexec/zmdkimkeyutil -u -d <example.com>
Optional. To specify the number of bits for the new key, include -b in the command line, -b <####>. If you do not add the -b, the default setting is 1024 bits.
/opt/zimbra/opendkim/sbin/opendkim-testkey -d <example.com> -s <0E9F184A-9577-11E1-AD0E-2A2FBBAC6BCB> -x /opt/zimbra/conf/opendkim.conf
Remove DKIM Signing from ZCS
/opt/zimbra/libexec/zmdkimkeyutil -r -d example.com
Retrieve DKIM Data for a Domain
/opt/zimbra/libexec/zmdkimkeyutil -q -d example.com