将所有传出邮件发送到/ dev / null


12

使用sendmail,您将如何将所有传出邮件发送到/ dev / null或仅阻止电子邮件排队或完全发送出去?

在开发nagios框上,我要防止发送邮件,以使通知不会发出。停止出站邮件将使我能够按原样测试nagios配置并防止虚假通知。


作为一个问题,删除了solaris标签,并且解决方案完全不是特定于操作系统的。
史蒂夫·施耐普

Answers:


8

我在开发箱中通过完全禁用sendmail,然后让一个简单的perl脚本侦听SMTP端口并将电子邮件转储到目录中来完成此操作。我确定可以使用sendmail配置,但是perl脚本要容易得多。精简如下:

#!/usr/bin/perl -w 
use Net::SMTP::Server; 
use Net::SMTP::Server::Client; 

$server = new Net::SMTP::Server || die("$!\n"); 

while($conn = $server->accept()) { 
  my $client = new Net::SMTP::Server::Client($conn) || 
    die("Unable to handle client connection: $!\n"); 
  $client->process || next; 

  # Here's where you can write it out or just dump it. Set $filename to 
  # where you want to write it
  open(MAIL,"> $filename") || die "$filename: $1"; 
  print(MAIL "$client->{MSG}\n"); 
  close(MAIL); 
} 

这是比我想象中更好的解决方案。谢谢。
cwebber 2011年

+1多么好的解决方案,我将要问同样的问题。
Kev

6

以下内容将所有内容发送到/ dev / null:

LOCAL_RULE_0
R$* < @ $* > $*       $#local $: bit-bucket

假设在您的/ etc / aliases中:

bit-bucket: /dev/null

注意不要只输入它-规则的两侧之间有一个制表符。
埃里卡·凯恩

您正在使用哪种电子邮件系统,以及在哪里添加该规则?
teknopaul

来自sendmail.org的标准sendmail。将该规则添加到sendmail.mc中,然后根据您的OS /发行版的具体情况生成sendmail.cf。
adamo

0

尝试在Linux上使用smtp-sink

$ smtp-sink -u后缀-c nynode.com:25 1000

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.