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

Publicado por Fabio Soares Schmidt em 25/01/2012

[ Hits: 5.365 ]

 


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

Liberar o MSN para usuários determinados

Forçando o cache do Windowsupdate com Squid

Postfix: Desabilitando SSLv3 (Poodle Vulnerability)

Dovecot: userdb reply doesn't contain uid (change userdb socket permissions)

Thunderbird: Desabilitando tela de importação de mensagens

Leitura recomendada

Instalação OpenWebmail e afins no FreeBSD

Integração Thunderbird + Firefox

Mantendo logs do SMTP para auditoria em servidores de grande movimento

Expresso Livre - Anexos e mensagens exportadas com 0 KB [Resolvido]

Whitelist e blacklist globais no Amavis-new

  

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