Cyrus IMAP: "Message contains bare newlines" (Erro ao importar mensagens)

Publicado por Fabio Soares Schmidt em 25/01/2012

[ Hits: 4.357 ]

 


Cyrus IMAP: "Message contains bare newlines" (Erro ao importar mensagens)



Ao tentar importar algumas mensagens no Cyrus IMAP, o servidor retorna a seguinte mensagem:
Message contains bare newlines

Na página do projeto Cyrus, no próprio FAQ, o problema já está relatado:

     "Message contains bare newlines

     Why does Cyrus reject messages with 'bare newlines'

     Please first read about Cyrus Interoperability.

     Bare newlines is a nono in an RFC822 message. You should first try to fix the software that is causing the problem.

     As it happens, the bare newlines-rejection has never been a problem for us."

O problema, portanto, se trata de 'quebra de linha', onde alguns caracteres que o Outlook (principalmente) utiliza para marcar o fim de uma linha de texto violam a 'RFC822', e o Cyrus IMAP é conhecido, além da sua boa performance e escalabilidade, por ser bastante rigoroso com RFCs.

Como não há qualquer documento na base de conhecimento pública da Microsoft que viabilize alterar o comportamento do Outlook/Exchange para corrigir este problema, portanto existem duas soluções:

I- Alterar o código do Cyrus para não rejeitar 'bare newlines'. Isso envolve aplicar um 'patch' já conhecido, muitas soluções que utilizam o Cyrus (SUSE e-mail server e Invoka, por exemplo) já optaram por este caminho.

II- Fazer com que o cliente que está importando a mensagem, identifique esse comportamento e corrija conforme a 'RFC822'.

Abaixo está o conteúdo do 'patch' para o Cyrus desconsiderar essa RFC. Foi feito para a versão 2.3.7, caso utilize alguma versão mais recente, provavelmente será necessário modificar:

— NEW FILE cyrus-imapd-2.3.7-nobarenewlinescheck.patch — — cyrus-imapd-2.3.7/imap/message.c 2006-10-28 22:18:08.000000000 +0200 +++ cyrus-imapd-2.3.7/imap/message.c.nobarenewlinescheck 2006-10-28 22:21:55.000000000 +0200 @@ -256,8 +256,9 @@ r = IMAP_MESSAGE_CONTAINSNULL; } else if (*p = ‘\n’) { - if (!sawcr && (inheader || !allow_null)) - r = IMAP_MESSAGE_CONTAINSNL; + /* Do *NOT* check for RFC compliant line breaks (bare newlines) */ + /* if (!sawcr && (inheader || !allow_null)) + r = IMAP_MESSAGE_CONTAINSNL; */ sawcr = 0; if (blankline) { inheader = 0;:


Para aplicar o 'patch', copie o conteúdo acima, salve o arquivo no diretório raiz dos fontes e execute o comando:

# patch -p1 < arquivo.patch

Feito isto, compile o Cyrus normalmente.

Fabio Soares Schmidt
http://respirandolinux.wordpress.com

Outras dicas deste autor

Postfix - Entregando para diferentes rotas no mesmo ambiente

Configurando o AMaViS em servidor dedicado

Cyrus IMAP: Muitas mensagens "fetching user_deny" no log

Cyrus Aggregator - Serviço Sieve não conecta no Backend [Resolvido]

Postfix - Criando regras condicionais

Leitura recomendada

Como visualizar o calendário do Outlook/Hotmail no Thunderbird

Postfix - Entregando para diferentes rotas no mesmo ambiente

Instalando pacotes de idiomas no Thunderbird pelo APT

Traduzindo Thunderbird para pt_BR na velocidade da luz

Migrando de Outlook Express para Evolution (DBX para MBX)

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts