Как настроить белый список адресов электронной почты, используя только procmailrc, чтобы защитить своих детей от нежелательной почты?

1920
hanleyp

Как настроить белый список адресов электронной почты, используя только procmailrc, чтобы защитить своих детей от нежелательной почты?

В настоящее время я использую родительский контроль ОС, но это хорошо только для компьютера, на котором он включен.

Я понимаю, что когда мои дети вырастут, они найдут обходные пути для любых технических родительских ограничений, наложенных на них, но я хочу, по крайней мере, понять варианты, которые у меня есть до тех пор.

2
Я сделал это для отправки напоминаний на мой телефон - я отправлю рецепт, когда смогу ssh на мой сервер :) warren 14 лет назад 0
добавил рецепт белого списка как и обещал :) warren 14 лет назад 0
Хорошие вещи. Я должен попробовать это тоже. pave 14 лет назад 0

4 ответа на вопрос

1
grawity

procmailможно фильтровать по Fromзаголовку, и существует множество примеров рецептов.

# Это отбрасывает всю почту, отправленную с адреса ниже. : 0 * ^ От: idiot@somehost.com / DEV / нуль 

Но не забывайте, что procmailработает только с доставкой на месте. Это не повлияет на почтовые ящики, доступ к которым осуществляется через IMAP или веб-почту.

Это черный рецепт. Вы знаете, как сделать это наоборот? Такие, как разрешить только почту с определенных адресов. hanleyp 14 лет назад 0
Просто измените рецепт, чтобы использовать `$ ` в качестве почтового ящика, затем добавьте второй рецепт, который перенаправляет остальное в `/ dev / null`. grawity 14 лет назад 1
@ RoninTom ответ проще и ближе к делу. tripleee 10 лет назад 0
1
warren

Тот, который я использую для отправки сообщений от себя на мой телефон:

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 
также обратите внимание: я намеренно собираю только электронные письма, отправленные на один домен, а не любые другие, размещенные на одном сервере warren 14 лет назад 0
1
Ronin Tom

I think we have not any solution yet, that exactly solves the initial problem. Therefore, I would like to provide a more explicit approach. Lets suppose, that our whitelist looks like this:

white.domain.tld light.domain.tld 

Then I would try the following reciept:

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

This would send all emails that are not from somebody@white.domain.tld and not from somebody@light.domain.tld to /dev/null. The remaining emails are send to the default destination. Be aware to use \. in your pattern if you like to match a single dot. The pattern . matches a single character.

If you have a short whitelist, you could try to get an even shorter reciept by combining the patterns:

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

Be aware to use ( ) here. Using [ ] would be a mistake.

1
Isaac

I'm not at all sure where I got this from (I know I didn't write it myself), but I've been using it in a .procmailrc for a while now to forward only messages from an address listed in a separate whitelist file to a given target email address:

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 

Похожие вопросы