我有安装了Sendmail的CentOS服务器,并使用Fetchmail进行邮件检索。 我的电子邮件服务器工作正常,但我现在需要禁止用户发送电子邮件到外面。
我该如何让这个用户在本地networking(在同一个域名的电子邮件地址内)发送电子邮件,但阻止他们向外界发送电子邮件?
因为你想要的是比FEATURE(compat_check)更通用的,所以首先确保你的/etc/mail/sendmail.mc file没有启用它。 然后你可以编写你自己的check_compat版本(注意这里的单词倒check_compat )。 sendmail书(4e)在第259页和第260页有解答你的问题。
这里是第二个:在sendmail.mc文件的底部添加以下行
LOCAL_CONFIG Kput macro D{put1}empty1 D{put2}empty2 LOCAL_RULESETS STranslate R$* $$| $* $: $1 $| $2 Scheck_compat R$* $| $* $: $1 $| $>canonify $2 R$* $| $* $: $(put {put2} $@ $2 $) $1 R$* $: $>canonify $1 R$* $: $(put {put1} $@ $1 $) R$* $: $&{put1} $| $&{put2} # Now we can filter on sender and recipient Ruser < @ $=w . > $| $* < $=w . > $#OK Ruser < @ $=w . > $| $* $#discard $: $2
以下是发生的情况: Kput macro行定义了一个映射,当我们将某些值存储在macros中时将使用该映射。 我们要使用的macros定义在下一行,它们是put1和put2中的一些通用默认值(empty1和empty2),用于debugging。
当check_compat ,它是sender@address $| recipient@addressforms的单个参数 sender@address $| recipient@address 。 我们需要对这些地址进行封装,这在我们的例子中意味着将它们转换为user < @ address . >的formsuser < @ address . > user < @ address . > 。 在做任何事情之前,你几乎总是用sendmail封装地址。 check_compat的前两行处理收件人的地址并将其放入{put2}macros。
现在我们的工作空间(意味着规则集的其余部分在其上运行的string)只有发送者地址,我们也可以这样做。 这意味着如果check_compat在第五行停止,它的输出将如下所示:
sender < @ address . > $| recipient < @ address . >
因此,现在我们准备检查我们想要的任何组合。 系统中的本地用户的格式为user < @ $=w .> 。 $=wmacros包含您的域名,本地主机名,主机名,任何被认为是本地的值,包括/etc/mail/local-host-names 。 所以这行指示sendmail,如果user (其中“用户”应该被用户的用户名replace)发送电子邮件给任何本地用户(这是$* < @ $=w . >的含义)接受这封邮件并继续进行所有其他过滤活动。 但是,如果所述用户试图在其他地方发送邮件,则默默地放弃这一点。
完成编辑sendmail.mc ,需要运行/etc/mail/make来构buildsendmail.cf ,然后运行service sendmail restart以重新启动sendmail。 请记住,规则的左侧与右侧分开,而不是空格。 所以不要复制粘贴代码。 用手input。
上面还有一个规则,这是Translate 。 在testing模式下,您不能使用$| 直。 所以如果你想在生产之前testing你的规则,你必须使用它:
root@machine # sendmail -bt > Translate,check_compat sender@address $| recipient@address
看看会发生什么
从MSH软件使用MSHstream量策略 milter应用程序Sendmail和Postfix。
您只需要定义一个动作和两个需求,然后您就可以根据需要来阻止任何事情。
行动:
<block-message type =“discard”/>
条件:
<sender email =“[email protected]”/>
例外:
<recipient email =“* @ your.domain”field =“TO,CC,BCC”>
这个简单的configuration告诉MTA阻止所有来自[email protected]的消息,这些消息不会发送到您的域。 有了其他要求(条件),您可以更准确地定义要阻止的内容。
MSHstream量策略仍在不断发展,近端function将有更多function来pipe理和处理邮件stream量,如附件pipe理,自动回复,高级时间调度,修改邮件正文等等。