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

Publicado por Fabio Soares Schmidt em 25/01/2012

[ Hits: 5.203 ]

 


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

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

SpamAssassin - Melhorando a eficácia do seu anti-spam

Dovecot - Mover Spam automaticamente para a pasta desejada

Conexões PPTP através de gateways Linux

Forçando o cache do Windowsupdate com Squid

Leitura recomendada

Resolvendo erro de "Erro! Conexão recusada" ao baixar emails do Yahoo pelo Evolution

Visualizando mensagem da fila do Postfix

Claws Mail - Erro na conexão com imap.google.com: login recusado [Resolvido]

Configurando contas do Hotmail e Yahoo no Evolution

Comandos básicos de vpopmail

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts