Existe uma maneira de filtrar e-mails na conta IMAP remota?


9

Situação: servidor de email com acesso somente IMAP. Problema: quero poder filtrar e-mails (coloque alguns e-mails em várias pastas, marque-os como lidos e assim por diante).

A maioria dos novos clientes de email tem essa capacidade, mas eu quero um programa de filtragem independente, pois preciso usar vários clientes de email para conectar-se a este servidor.

Geralmente - algo como procmail, mas trabalhando com IMAP.

O software será executado no Linux ou Solaris.


Respostas:


8

Um google rápido exibe o IMAPFilter que parece o que você deseja:

  • Pesquisa de mensagens usando muitos critérios disponíveis no protocolo IMAP, como:
    • Status (recente, não lido, etc.) de uma mensagem.
    • Tamanho de uma mensagem.
    • Idade de uma mensagem.
    • Correspondência de uma sequência ou de um padrão de expressão regular nos cabeçalhos ou no corpo de uma mensagem.
  • Capacidade de usar operadores lógicos (e / ou / não) ao pesquisar mensagens.
  • Diferentes recursos disponíveis para processar mensagens, incluindo:
    • Excluindo mensagens.
    • Movendo mensagens para uma caixa de correio no mesmo servidor ou em servidores diferentes
    • Copiando mensagens para uma caixa de correio no mesmo servidor ou em servidores diferentes.
    • Marcando mensagens ou alterando sinalizadores de mensagens.
  • Listagem das caixas de correio disponíveis e / ou assinadas, juntamente com o suporte para a extensão IMAP CHILDREN.
  • Criando, excluindo, renomeando, assinando ou cancelando a inscrição de caixas de correio
  • Suporte à internacionalização (I18N).
  • Suporte ao namespace do servidor usando a extensão IMAP NAMESPACE.
  • Conexões de imaps criptografadas por SSL (Secure Socket Layer) ou Transport Layer Security (TLS) (porta 993).
  • Conexões criptografadas usando a extensão IMAP STARTTLS.
  • Autenticação do usuário com o mecanismo de autenticação de resposta ao desafio (CRAM), especificamente CRAM-MD5.
  • Suporte a expressões regulares compatíveis com Perl (PCRE).

1

Dependendo do servidor IMAP, você pode simplesmente usar alguma implementação de peneira . Eu acho que o melhor suporte para peneira é fornecido por cyrus.


Bem - a solução que estou procurando não pode depender de forma alguma do servidor. Eu tenho que assumir que o servidor é apenas um IMAP idiota, sem suporte para nada inteligente.

1

Como você já mencionou, o procmail é a maneira certa de fazer isso, então você pode perguntar ao seu provedor de email se ele é compatível apenas com o caso - não dói.

Caso contrário, talvez a maneira mais fácil seja ter um cliente de email sempre aberto, que faça a classificação etc. Havia problemas de bloqueio com vários clientes acessando a mesma caixa de correio IMAP, mas não os vejo há anos.


Esta não é a resposta. A filtragem deve ocorrer no servidor IMAP, sobre o qual você não tem controle.
Reinierpost

1

Para uma leveza absoluta, você pode experimentar o Sift .


Eu gostaria de ter tentado isso antes do imapfilter.
Joshua K

Isso parece estar abandonado e sem manutenção, ao contrário do imapfilter. Corrija-me se eu estiver errado.
selurvedu 11/03


0

Nos sistemas operacionais Linux e Unix, você pode usar fetchmailpara pesquisar sua conta de email IMAP e passar novas mensagens para procmail. Você pode configurar o procmail para executar scripts com base em correspondências de padrão de expressão regular nas mensagens recebidas.

Para fazer isso, você precisará instalar os pacotes fetchmail e procmail. A configuração a seguir me permitiu executar um script para cada nova mensagem de email recebida em minha conta de email. Eu usei o Ubuntu 12.04 LTS.

Em ~/.fetchmailrc:

# .fetchmailrc checks my e-mail account for new messages, sends them to procmail

set logfile /home/myusername/fetchmail.log

poll mail.domain.com protocol IMAP
    user "emailaccountname"
    password 'emailpassword'
    folder 'INBOX'
    keep
    ssl
    mda "/usr/bin/procmail -f %F"

Observe a keepdiretiva acima, que garante que as mensagens não sejam removidas do servidor IMAP após serem recuperadas.

Em ~/.procmailrc:

# .procmailrc received e-mails from fetchmail and runs a script
PATH=/usr/bin:/usr/local/bin
LOGFILE=/home/username/procmail.log
SHELL=/bin/sh

# This rule triggers for every e-mail message:
:0
| `/home/username/myscript.sh`

Existem muitos tutoriais on-line para o fetchmail e o procmail, e também tutoriais sobre como integrar os dois (foi assim que eu vim com o acima).

Agora, se eu executar fetchmailou fetchmail -vo script for /home/username/myscript.shexecutado uma vez para cada nova mensagem. Posso executar o fetchmail em um cron ou configurar o fetchmail para ser executado como um daemon com a set daemon 600diretiva in .fetchmailrc(onde 600 é o número de segundos entre as pesquisas).


Esta não é a resposta. A filtragem deve ocorrer no servidor IMAP.
Reinierpost
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.