O meu bom amigo @elcio crava, com toda razão: 'todo programador deveria saber expressões regulares'. RegEx não são úteis apenas para a programação. Elas têm valor inestimável também para coisas do dia a dia, como mandar spammers à merda. Vejamos como, em uma linha.

grep -r '^From:' | \
sed -nr 's/.*<[A-Z0-9._%-+]+@([A-Z0-9.-]+\.[A-Z]{2,4})>.*/\L"\1"/pi' | \
sort -u | \
awk -vORS=', ' '{ print $1 }' | \
sed 's/,\s$/\n/' | \
fold -w 76 -s | \
sed -i -e 's/^/    /'

Isso tudo aí é uma só linha de comando que faz várias coisas. Vá para um diretório que contenha emails indesejados e rode este comando, copiando do começo ao fim.

Vejamos o que ele faz, lembrando que o | é apenas o pipe (redirecionador) padrão do Unix e o \, que na verdade é um nova linha escapada, é o continuador de comandos.

  1. grep: de modo recursivo (todos os arquivos e diretórios abaixo do diretório atual), procurar pela linha que comece com 'From:'. Esta linha é a parte do cabeçalho do email que indica o remetente da mensagem.
  2. sed: a partir do resultado do grep, o primeiro sed procura por endereços de email qualificados entre <> (o formato deles no cabeçalho) e que contenham qualquer combinação de caracteres antes ou depois do email propriamente dito (útil para descartar os nomes). Encontrado o email completo, captura a parte do domínio e imprime entre aspas.
  3. sort: ordena o resultado do sed alfabeticamente e remove as linhas repetidas.
  4. awk: troca a nova linha depois de cada domínio pelo seprador , (vírgula e espaço). Isso faz com que a lista de domínios ocupe apenas uma linha.
  5. sed: o segundo sed substitui , depois do último domínio da linha por uma nova linha.
  6. fold: esse comando pega a linha única de domínios e separa em linhas com no máximo 76 caracteres, levando em conta o espaço pra não cortar no meio de palavras.
  7. sed: o último sed adiciona quatro espaços no começo de cada linha separada anteriormente.

Pronto, agora é só você copiar sua lista de spammers e enfiar no seu script sieve ou em qualquer outro filtro que você desejar. Quer um exemplo?

# Regras com descartes. Não processa demais regras.
## Spammers, morram!
if anyof (
  # Por domínio.
  address :is :domain "from" [
    "example.com", "safado.com.br"
  ],
  # Por endereço.
  address :is "from" [
    "die@spammer.com", "morre@picareta.com.br"
  ]
)
{
  discard;
  stop;
}

Entenda o comando e a regra acima, modifique-os conforme a sua necessidade e seja feliz com seu inbox contendo apenas o que é útil.

E pra passar a régua: um excelente lugar para entender regex é brincando com o RegEx101. Eu mesmo aprendo muito com ele até hoje.