Formato dos cabeçalhos de SMTP para verificação do email da caixa de entrada

0

Estou procurando um procedimento simples para extrair e-mails da minha caixa de entrada em um arquivo para processamento adicional, usando, por exemplo, %código%. Com "extrato", quero dizer usar, e. regex para receber e-mails com um assunto específico.

Minha Caixa de entrada está acima de 1Gb, então eu uso o comando awk para obter a última parte. Aqui está um exemplo de duas mensagens:

From [email protected] Tue Nov 26 17:27:33 2013
Return-path: <[email protected]>
Envelope-to: [email protected]
Delivery-date: Tue, 26 Nov 2013 17:27:33 +0100
Received: from alfons.uib.no [2001:700:200:30::141] 
    by alfred.uib.no  with esmtp  (Exim 4.77)
    id 1VlLU5-0003Gg-8R; Tue, 26 Nov 2013 17:27:33 +0100
Received: from thoralf.uib.no (smtp.uib.no) [2001:700:200:13:129:177:13:16] 
    by alfons.uib.no  with esmtps (TLSv1:AES256-SHA:256) (Exim 4.77)
    id 1VlLU5-0002Po-4p; Tue, 26 Nov 2013 17:27:33 +0100
Received: from cipr064089.klientdrift.uib.no [129.177.64.89]:35068 
    by smtp.uib.no  with esmtpsa (Exim 4.69)
    id 1VlLU5-0006dY-35; Tue, 26 Nov 2013 17:27:33 +0100
Message-ID: <[email protected]>
Date: Tue, 26 Nov 2013 17:27:38 +0100
From: bb b <[email protected]>
Organization: Uni Research AS
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1
MIME-Version: 1.0
To: b b <[email protected]>
CC: Haakon Haegland <[email protected]>
Subject: Re: ddd
References: <[email protected]>
In-Reply-To: <[email protected]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-checked-clean: by exiscan on alfons.uib.no
X-Scanner: 2db488888a1c80ee768332c03a147d00 http://tjinfo.uib.no/virus.html
X-UiB-SpamFlag: NO UIB: -18 hits, 8.0 required
X-UiB-SpamReport: spamassassin found;
  -15 From is listed in 'whitelist_SA'
 -3.0 Message received from Norway
X-sender_host_address: 2001:700:200:13:129:177:13:16
X-sender_host_name: thoralf.uib.no
X-UID: 28258                                                 
Status: RO

On 11/26/2013 05:02 PM, b b wrote:
> ggg
> hhh

qqq


From [email protected] Tue Nov 26 17:33:10 2013
Return-path: <[email protected]>
Envelope-to: [email protected]
Delivery-date: Tue, 26 Nov 2013 17:33:10 +0100
Received: from alfons.uib.no [2001:700:200:30::141] 
    by alfred.uib.no  with esmtp  (Exim 4.77)
    id 1VlLZW-0004jv-7u; Tue, 26 Nov 2013 17:33:10 +0100
Received: from thoralf.uib.no (smtp.uib.no) [2001:700:200:13:129:177:13:16] 
    by alfons.uib.no  with esmtps (TLSv1:AES256-SHA:256) (Exim 4.77)
    id 1VlLZW-0002wL-3T; Tue, 26 Nov 2013 17:33:10 +0100
Received: from cipr064186.klientdrift.uib.no [129.177.64.186]:57257 
    by smtp.uib.no  with esmtpsa (Exim 4.69)
    id 1VlLZW-0006iZ-29; Tue, 26 Nov 2013 17:33:10 +0100
Message-ID: <[email protected]>
Date: Tue, 26 Nov 2013 17:33:01 +0100
From: b b <[email protected]>
Organization: Uni CIPR
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20131028 Thunderbird/17.0.10
MIME-Version: 1.0
To: a a <[email protected]>
CC: Haakon Haegland <[email protected]>
Subject: Re: ddd
References: <[email protected]> <[email protected]>
In-Reply-To: <[email protected]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-checked-clean: by exiscan on alfons.uib.no
X-Scanner: 467bf36c80a8700bd89776b495ccd761 http://tjinfo.uib.no/virus.html
X-UiB-SpamFlag: NO UIB: -17.9 hits, 8.0 required
X-UiB-SpamReport: spamassassin found;
  -15 From is listed in 'whitelist_SA'
 -3.0 Message received from Norway
  0.0 BODY: ReplaceTags: Contact
X-sender_host_address: 2001:700:200:13:129:177:13:16
X-sender_host_name: thoralf.uib.no
X-UID: 28259                                                 
Status: RO

txtxt

Eu acho que o formato deste e-mail é SMTP link ? (Eu também vi as palavras MIME e RFC usadas, não sei se estão relacionadas) Perguntas:

  • Como sei onde uma mensagem termina e outra começa?
  • Como posso usar uma ferramenta como tail para extrair mensagens com um determinado campo de assunto?
por Håkon Hægland 13.12.2013 / 08:49

2 respostas

5

O formato da mensagem é RFC 2282 , o formato de mensagem da Internet. O formato arquivo parece estar descrevendo o formato mbox, que é RFC 4155 .

De acordo com a RFC 4155, uma nova mensagem em um banco de dados mbox começa com a palavra-chave From , um espaço único, o endereço do remetente informado, um único espaço e a data UTC de quando a mensagem foi recebida. p>

Posteriormente, os campos de cabeçalho são separados por caracteres de nova linha e começam com uma letra. Se o primeiro caractere da nova linha é espaço em branco (geralmente uma aba eu acredito), então é uma continuação do valor da linha de cabeçalho anterior. As chaves de cabeçalho são separadas dos valores de cabeçalho por : (espaço de dois pontos).

O cabeçalho e o corpo são separados por uma linha em branco. Cada mensagem também é separada por um espaço em branco.

Quanto a extrair o assunto com awk , primeiro extraia os cabeçalhos e passe-o:

awk '/^Subject: .*/ {print substr($0,10)}'

Isto imprime a linha começando na posição 10.

    
por 13.12.2013 / 09:25
2

A mensagem na sua caixa de entrada é separada por uma nova linha dupla seguida por From (observe que não há : após de.

Essa é a resposta simples. É claro que você pode enviar um e-mail contendo um ou mais e-mails como texto, incluindo cabeçalhos e é onde as coisas ficam confusas.

Se o programa de envio (ou seus programas que gravam a caixa de entrada) não adicionar informações de comprimento, você deve confiar na heurística, uma simples e eficaz para ver a data e hora de recebimento dos e-mails, como sua caixa de entrada. é normalmente em carimbos de data e hora consecutivos. (mas você pode enviar um texto por e-mail com timestamps futuros "forjados").

Se você não tem e-mails sobre cabeçalhos de e-mail, você deve se sair bem com a nova linha dupla + From

    
por 13.12.2013 / 09:24