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.

hanleyp
fonte
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: [email protected]
/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.

grawity
fonte
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
! [email protected]

# push everything else to my normal user
:0 
* .
! mainuser
warren
fonte
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 [email protected] e não de [email protected] 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.

Ronin Tom
fonte
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!
[email protected]

# 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
Isaac
fonte