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 (http://cyrusimap.web.cmu.edu/mediawiki/index.php/FAQ) o problema já é 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”, 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 esse problema, portanto existem duas soluções:

    • 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.
    • 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;:
Anúncios

Um comentário sobre “Cyrus Imap: “Message contains bare newlines” – Erro ao importar mensagens

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s