Regras de peneira de correio problemáticas

1

Eu preciso top classificar meus e-mails incomming usando essas três regras:

  1. se o email foi enviado para qualquer @ somedomain.tld, copie esse email para "somedomain_tld"
  2. se o email foi enviado para any other @ *. tld, copie esse email para "others_tlds". (qualquer outro="não somedomain.tld")
  3. O restante dos e-mails copia para uma terceira pasta "restante".

Estou usando as regras de peneira dovecot para fazer isso.

Existe uma condição adicional: as três regras acima devem ser aplicadas a todos os endereços "Para:" no email ... Assim, no caso mais complexo, o email deve ser copiado nas três pastas

por exemplo: o seguinte email deve ser copiado para as três pastas:

From: [email protected]
To: [email protected], [email protected], [email protected]
Subject: Test Email

This is a test email
  1. Por causa de "[email protected]" este e-mail deve ser copiado para "somedomain_tld"
  2. Por causa de "[email protected]", este email deve ser copiado para "others_tlds"
  3. Por causa de "[email protected]", este e-mail deve ser copiado para "rest"

A regra require e a primeira é fácil:

require ["fileinto","copy"];
if address :is :domain "to" "somedomain.tld" { fileinto :copy "somedomain_tld"; }

mas o segundo não sabe como fazê-lo:

if address :matches :domain "to" "*.tld" { fileinto :copy "others_tlds"; }

também corresponderá a somedomain.tld, o que não é o que se pretende ... (se eu tiver um email com "To: [email protected]", será copiado para somedomain_tld (OK) e others_tlds (BUG))

Para o nº 3, não tenho a menor ideia.

Eu também estava pensando em expressões regulares, mas não sei como expressar "todos os domínios, exceto este" em uma regex de peneira (ou qualquer outro estilo regex)

Alguém sabe como dobra a peneira do dovecot para fazer 1,2,3?

    
por Yanko Hernández Álvarez 08.08.2013 / 18:25

1 resposta

1

require ["fileinto"];
if header :contains "To" "domain.tld"
{
        fileinto "INBOX/domain_tld";
        stop;
}
if header :contains "To" ".tld"
{
        fileinto "INBOX/other_tld";
        stop;
}
if true
{
        fileinto "INBOX/rest";
        stop;
}
    
por 23.08.2013 / 02:04