No meu servidor de e-mail executando o Postfix, quero rejeitar e-mails usando alguns scripts não latinos em seu assunto, em particular árabe e cirílico, já que nenhum dos meus usuários (família) fala idiomas que os utilizam.
Eu tentei com uma verificação de cabeçalho PCRE como esta:
/Subject:.*\p{Arabic}/i WARN Arabic detected
Infelizmente, isso não dispara um aviso quando envio um e-mail de teste ao meu servidor. Verifiquei que WARN
as mensagens aparecem no log do sistema usando uma /Subject:.*Test/i WARN Test
regra, que é acionada.
Como posso detectar árabe e cirílico no assunto usando o Postfix?
Para completar, no meu main.cf
incluo o header_checks
seguinte:
header_checks = pcre:/etc/postfix/header_checks
De acordo com RFC 5322, 3.6.5 , o
Subject
cabeçalho é definido comoe a RFC 5322, 2.2.1 define "não estruturado":
Como apenas caracteres US-ASCII são permitidos no
Subject
cabeçalho, qualquer caractere não-US-ASCII deve ser codificado como US-ASCII, e a RFC 2047 define um projeto de padrão para isso, que é amplamente utilizado. Por exemplo, com a codificação "Quoted-Printable", também conhecida como "Q" ( seção 4.2 ),Тест
se tornaSubject: =?UTF-8?Q?=D0=A2=D0=B5=D1=81=D1=82?=
متحان
se tornaSubject: =?UTF-8?Q?=D9=85=D8=AA=D8=AD=D8=A7=D9=86?=
.A correspondência no PCRE
header_checks
deve ser feita com essa codificação. No entanto, combinar blocos Unicode usando expressões regulares como PCRE é bastante difícil, como demonstra a tabela a seguir.=D0=80
=D3=BF
=D8=80
=DB=BF
Esta limitação também é mencionada na documentação do Postfix Built-in Content Inspection :
Eu sugeriria usar as regras do SpamAssassin. O adivinhador de idioma TextCat ainda
ok_languages
permite detectar idiomas do corpo da mensagem.RFC 2047 define como codificar conjuntos de caracteres não ASCII no cabeçalho Subject .
Essencialmente, ele usa
=?charset?encoding?encoded-text?=
ondecharset
pode ser qualquer conjunto de caracteres definido para MIME comoUTF-8
,encoding
éB
para base64 ouQ
para impressão entre aspas eencoded-text
é a linha de assunto real. Basta olhar o código-fonte de uma dessas mensagens codificadas e você terá uma ideia.