2

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

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

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

4 ответа4

1

Я не совсем уверен, откуда я это взял (я знаю, что сам не писал), но я уже некоторое время использую его в .procmailrc для пересылки только сообщений с адреса, указанного в отдельном файл белого списка на указанный адрес электронной почты:

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
1

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

white.domain.tld
light.domain.tld

Тогда я бы попробовал следующий рецепт:

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

При этом все электронные письма будут отправлены не от somebody@white.domain.tld и не от somebody@light.domain.tld в /dev/null . Оставшиеся электронные письма отправляются по умолчанию. Будьте в курсе, чтобы использовать \. в вашем шаблоне, если вы хотите соответствовать одной точке. Шаблон . соответствует одному символу.

Если у вас короткий белый список, вы можете попытаться получить еще более короткий повтор, получив комбинацию шаблонов:

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

Будьте внимательны, чтобы использовать ( ) здесь. Использование [ ] было бы ошибкой.

1

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

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
1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .