Wie richte ich eine E-Mail-Whitelist mit nur procmailrc ein, um meine Kinder vor unerwünschten E-Mails zu schützen?

2226
hanleyp

Wie richte ich eine E-Mail-Whitelist mit nur procmailrc ein, um meine Kinder vor unerwünschten E-Mails zu schützen?

Ich verwende derzeit die Kindersicherung des Betriebssystems, aber das ist nur für den Computer gut, auf dem es aktiviert ist.

Ich verstehe, dass meine Kinder, wenn sie erwachsen werden, Schwierigkeiten bei der Auferlegung von technischen elterlichen Einschränkungen finden, aber ich möchte zumindest die Möglichkeiten verstehen, die ich bis dahin habe.

2
Ich habe dies gemacht, um Erinnerungen an mein Handy zu senden - ich werde das Rezept posten, wenn ich ssh auf meinem Server kann :) warren vor 14 Jahren 0
fügte das Whitelist-Rezept wie versprochen hinzu :) warren vor 14 Jahren 0
Nette Sachen. Ich muss das auch ausprobieren. pave vor 14 Jahren 0

4 Antworten auf die Frage

1
grawity

procmailkann nach der FromKopfzeile filtern, und es gibt viele Rezeptbeispiele.

# Hier werden alle E-Mails von der unten angegebenen Adresse verworfen. : 0 * ^ Von: idiot@somehost.com / dev / null 

Vergessen Sie jedoch nicht, dass dies procmailnur für lokal zugestellte Post funktioniert. Dies wirkt sich nicht auf Postfächer aus, auf die über IMAP oder Webmail zugegriffen wird.

Dies ist ein Blacklist-Rezept. Wissen Sie, wie man das Gegenteil macht? B. nur E-Mails von bestimmten Adressen zulassen. hanleyp vor 14 Jahren 0
Ändern Sie einfach das Rezept, um "$ " als Mailbox zu verwenden, und fügen Sie dann ein zweites Rezept hinzu, das den Rest nach "/ dev / null" leitet. grawity vor 14 Jahren 1
@ RoninToms Antwort ist einfacher und sachlicher. tripleee vor 10 Jahren 0
1
warren

Die, die ich verwende, um Nachrichten von mir an mein Telefon zu senden:

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 
Bitte beachten Sie auch: Ich sammle absichtlich nur E-Mails, die an eine Domäne gesendet werden, keine anderen, die auf demselben Server gehostet werden warren vor 14 Jahren 0
1
Ronin Tom

Ich denke, wir haben noch keine Lösung, die das anfängliche Problem genau löst. Daher möchte ich einen expliziteren Ansatz bieten. Nehmen wir an, unsere Whitelist sieht so aus:

white.domain.tld light.domain.tld 

Dann würde ich folgenden Empfang versuchen:

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

Dies würde alle E-Mails senden, die nicht von jemandem@white.domain.tld und nicht von jemandem@light.domain.tld stammen /dev/null. Die restlichen E-Mails werden an das Standardziel gesendet. Seien Sie sich bewusst, dass Sie sie \.in Ihrem Muster verwenden möchten, wenn Sie einen einzelnen Punkt abgleichen möchten. Das Muster .entspricht einem einzelnen Zeichen.

Wenn Sie eine kurze Whitelist haben, können Sie versuchen, durch Kombination der Muster einen noch kürzeren Empfang zu erzielen:

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

Seien Sie sich bewusst, ( )hier zu verwenden . Die Verwendung [ ]wäre ein Fehler.

1
Isaac

Ich bin nicht ganz sicher, woher ich das habe (ich weiß, dass ich es selbst nicht geschrieben habe), aber ich benutze es seit einiger .procmailrcZeit, um nur Nachrichten von einer Adresse weiterzuleiten, die in einer separaten Whitelist-Datei aufgeführt ist an eine bestimmte Ziel-E-Mail-Adresse:

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