Maildir comprimido [era arquivos estranhos do Postfix Maildir]

1

Eu fui chamado para resolver uma situação de recuperação de um backup de emails de um servidor herdado que morreu.

Tendo arquivos Maildir, e com alguns dados de cabeçalho, eu poderia facilmente determinar com algum trabalho de detetive o servidor usado para executar uma combinação de postfix + dovecot, ao contrário do que eu estava dizendo de postfix + courier.

Então eu configurei um servidor Debian 9 com o Postfix 3.1.6 e o dovecot-imapd 2.2.27.

Depois de alguns ajustes, já estávamos vendo as pastas, mas os e-mails pareciam confusos.

Inspecionando os diretórios cur e new, os arquivos de e-mails pareciam o formato normal do Maildir, mas, ao abri-los, pareciam confusos.

Ran um comando file para encontrar as mensagens estão todas em um formato gzipped.

O que está acontecendo aqui, recebi um backup em que o administrador gzipou todos os arquivos de mensagens da caixa de e-mail antes de fazer o backup deles?

    
por Rui F Ribeiro 28.02.2018 / 22:24

1 resposta

3

Ao explorar ainda mais o assunto, senti que algo estava fora de lugar definitivamente.

Minhas suspeitas também aumentaram ainda mais, como quando soltando algumas mensagens, o nome foi atualizado para refletir o novo tamanho maior quando o DoVecot as viu.

Assim, após investigação adicional, o dovecot encontrado pode ter compressão no lugar.

De Ativar compactação no armazenamento do Dovecot

I’ve just discovered than compression can be applied on Dovecot mail storage.

Note that compression will only apply to “new” emails.

De Dovecot Maildir comprimido no Debian .

Add this into /etc/dovecot/conf.d/10*

# Enable zlib plugin globally for reading/writing:
mail_plugins = $mail_plugins zlib

# Enable these only if you want compression while saving:
plugin {
    zlib_save_level = 6 # 1..9; default is 6
    zlib_save = gz # or bz2, xz or lz4
}

Add this into /etc/dovecot/conf.d/20*

protocol imap {
   mail_plugins = zlib
}
protocol pop3 {
   mail_plugins = zlib
}

Reinicie o serviço dovecot :

service dovecot restart

As configurações de compactação serão aplicadas a todas as mensagens criadas após a alteração da configuração.

There are directions on Dovecot WiKi (Zlib plugin) that would help you compress already stored emails.

Do Dovecot WiKi (plugin Zlib)

The Zlib plugin can be used to read compressed mbox, maildir or dbox files. It can be also used to write (via IMAP, LDA and/or LMTP) compressed messages to dbox or Maildir mailboxes. Zlib plugin supports compression using zlib/gzip, bzlib/bzip2, liblzma/xz (v2.2.9+) and liblz4/lz4 (v2.2.11+).

......

Maildir

When this plugin is loaded Dovecot can read both compressed and uncompressed files from Maildir. If you've enabled both gzip and bzip2 support you can have files compressed with either one of them in the Maildir. The compression is detected by reading the first few bytes from the file and figuring out if it's a valid gzip or bzip2 header. The file name doesn't matter.

Como alternativa, não querendo lidar com caixas de correio compactadas devido a razões de desempenho, uma das abordagens para descompactá-las em massa é escrever um script bash.

O script atual tem algumas deficiências, mas a orientação geral é:

#!/bin/bash

TMPDIR="/tmp"

service dovecot stop

find  /home/*/Maildir -type f |

while read file
do
    file "$file" | grep gzip > /dev/null
    if [ $? -eq 0 ]
    then
        echo "$file"" gzipped...decompacting"
        mv "$file" $TMPDIR/$$.gz
        gunzip -c $TMPDIR/$$.gz > "$file"
        rm -f $TMPDIR/$$.gz 
    fi
done

find /home -name "dovecot.index.cache*" -delete

service dovecot start
    
por 28.02.2018 / 22:24