Uma atualização recente do Exim adicionou isso à acl_smtp_data
ACL padrão:
.ifndef NO_CHECK_DATA_VERIFY_HEADER_SYNTAX
deny
!acl = acl_local_deny_exceptions
!verify = header_syntax
message = header syntax
log_message = header syntax ($acl_verify_message)
.endif
Isso faz com que algumas mensagens sejam rejeitadas. Por exemplo, o seguinte cabeçalho de uma mensagem de spam:
2020-03-02 09:22:48 1j8hHk-0000gS-3Y H=(static-181-143-69-27.une.net.co) [181.143.69.27] F=<[email protected]> rejected after DATA: header syntax (unqualified address not permitted: failing address in "From:" header is: =?utf-8?B?IkRhbmlrYSIgPERhbmlrYUB1bmUubmV0LmNvPg==?=): unqualified address not permitted: failing address in "From:" header is: =?utf-8?B?IkRhbmlrYSIgPERhbmlrYUB1bmUubmV0LmNvPg==?=
Decodificando o cabeçalho incorreto, obtemos:
00000000 22 58 69 6d 65 6e 61 22 20 3c 58 69 6d 65 6e 61 |"Ximena" <Ximena|
00000010 40 76 69 6c 2e 63 6f 6d 2e 75 61 3e |@vil.com.ua>|
0000001c
O que parece um valor perfeitamente bom para um From
cabeçalho para mim.
Corro o risco de rejeitar e-mails legítimos usando verify = header_syntax
, ou cabeçalhos como o acima são inválidos e seguros para serem rejeitados?
Aprofundando na RFC 2047:
Parece que um
encoded-word
pode ser usado para o texto que precede o endereço em um cabeçalho, mas não para um endereço em si. Portanto, é seguro usarverify = header_syntax
, desde que assumamos que o correio legítimo não conterá cabeçalhos que violem a RFC 2047 ao inserir endereços furtivos na parte codificada dos cabeçalhos.Por outro lado... e a RFC 6854 ? Isso permite cabeçalhos como:
para ser justo, o RFC também diz que essa sintaxe "é apenas para uso limitado" ("apropriado para uso apenas em circunstâncias limitadas ou únicas", por exemplo, experimentação, por RFC 2026 ). Então eu não vou perder muito sono com isso!
RFC2047 foi mal aplicado
a seção 5 permite três maneiras diferentes de usar palavras codificadas, o que não está de acordo com nenhuma delas.
O máximo que uma palavra codificada pode abranger é uma "frase" ou um "átomo"