如何仅使用 procmailrc 设置电子邮件白名单来保护我的孩子免受垃圾邮件的侵害?
我目前使用操作系统家长控制,但这仅适用于启用该功能的计算机。
我知道,随着孩子们长大,他们会找到办法解决父母强加给他们的技术限制,但我至少想了解在此之前我所拥有的选择。
答案1
procmail
可以通过From
标题进行过滤,并且有很多菜谱示例。
# 这将丢弃从以下地址发送的所有邮件。 :0 *^来自:[电子邮件保护] /dev/null
但请不要忘记,这procmail
仅适用于本地投递的邮件。它不会影响通过 IMAP 或 Webmail 访问的邮箱。
答案2
我用来向手机发送信息的方法如下:
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
答案3
我认为我们还没有找到任何解决方案,可以解决最初的问题。因此,我想提供一种更明确的方法。假设我们的白名单如下所示:
white.domain.tld
light.domain.tld
然后我会尝试以下收据:
:0
* !^From.*@white\.domain\.tld
* !^From.*@light\.domain\.tld
/dev/null
这将发送所有不是来自[电子邮件保护]而不是来自[电子邮件保护]到/dev/null
。其余电子邮件将发送到默认目的地。\.
如果您喜欢匹配单个点,请注意在模式中使用 。该模式.
匹配单个字符。
如果您的白名单很短,您可以尝试通过组合模式来获得更短的收据:
:0
* !^From.*@(white|light)\.domain\.tld
/dev/null
请注意此处的使用( )
。使用[ ]
将是一个错误。
答案4
我完全不确定我从哪里得到这个(我知道这不是我自己写的),但我已经使用它一段.procmailrc
时间了,只将来自单独的白名单文件中列出的地址的消息转发到给定的目标电子邮件地址:
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