Como faço para configurar uma lista de permissões de e-mail usando apenas procmailrc para proteger meus filhos de e-mails indesejados?


2

Como faço para configurar uma lista de permissões de e-mail usando apenas procmailrc para proteger meus filhos de e-mails indesejados?

Atualmente, eu uso o controle dos pais do sistema operacional, mas isso só é bom para o computador em que ele está ativado.

Eu entendo que à medida que meus filhos crescerem, eles descobrirão o trabalho em torno de quaisquer restrições técnicas dos pais impostas a eles, mas eu quero pelo menos entender as opções que tenho até então.


Eu fiz isso para enviar lembretes para o meu telefone - eu vou postar a receita quando eu puder ssh para o meu servidor :)
warren

adicionou a receita da lista de permissões como prometido :)
warren

Coisas legais. Eu vou ter que tentar isso também.
pave

Respostas:


1

procmail pode filtrar pelo From cabeçalho, e há muitos exemplos de receita.

# This one discards all mail sent from the address below.
:0
* ^From: idiot@somehost.com
/dev/null

Mas não esqueça que procmail funciona apenas com correio entregue localmente. Não afetará as caixas de correio acessadas via IMAP ou webmail.


Esta é uma receita de lista negra. Você sabe como fazer o contrário? Tal como permitir apenas o correio de determinados endereços.
hanleyp

1
Apenas mude a receita para usar ${DEFAULT} como a caixa de correio, adicione uma segunda receita que direcione o resto para /dev/null.
grawity

@ Resposta de RoninTom é mais simples e mais ao ponto.
tripleee

1

O que eu uso para enviar mensagens de mim para o meu telefone:

VERBOSE=off
LOGFILE=/dev/null

# if it comes from a specific address(es), send to my cell
# it's be just as easy to whitelist a domain by adding another `|domain.tld` section to the bracketed regex
:0
* ^From.*[main.email.domain.tld|other.email.domain.tld]
* ^To.*datente
! 0000000000@vtext.com

# push everything else to my normal user
:0 
* .
! mainuser

note também: intencionalmente, só recolho e-mails enviados para o domínio, e não para outros hospedados no mesmo servidor.
warren

1

Acho que ainda não temos solução alguma, isso resolve exatamente o problema inicial. Portanto, gostaria de fornecer uma abordagem mais explícita. Vamos supor que nossa whitelist se parece com isso:

white.domain.tld
light.domain.tld

Então eu tentaria o seguinte recibo:

:0
* !^From.*@white\.domain\.tld
* !^From.*@light\.domain\.tld
/dev/null

Isso enviaria todos os e-mails que não são de somebody@white.domain.tld e não de somebody@light.domain.tld para /dev/null. Os emails restantes são enviados para o destino padrão. Esteja ciente de usar \. no seu padrão, se você gosta de combinar um único ponto. O padrão . corresponde a um único caractere.

Se você tiver uma lista de permissões curta, poderá tentar obter um recibo ainda mais curto combinando os padrões:

:0
* !^From.*@(white|light)\.domain\.tld
/dev/null

Esteja ciente de usar ( ) Aqui. Usando [ ] seria um erro.


1

Eu não tenho certeza de onde eu tirei isso (eu sei que não escrevi eu mesmo), mas eu tenho usado isso em um .procmailrc por um tempo agora para encaminhar apenas mensagens de um endereço listado em um arquivo whitelist separado para um determinado endereço de e-mail de destino:

PMDIR=$HOME/Procmail      # Make sure this directory exists!
TARGET=something@example.com

# allow any addresses listed in $PMDIR/whitelist
WHITELIST=$PMDIR/whitelist
FROM_ADDR=`formail -zxFrom: | sed 's/\(.*[^-_\.0-9a-zA-Z]\)\?\([-_\.0-9a-zA-Z]\+@[-_\.0-9a-zA-Z]\+\).*/\2/'`
:0
* ? fgrep -xs "$FROM_ADDR" "$WHITELIST"
! $TARGET
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.