如何配置 sendmail(或其他邮件服务器)以接受出站邮件,但不将其发送出去?

如何配置 sendmail(或其他邮件服务器)以接受出站邮件,但不将其发送出去?

是否可以将 sendmail 配置为接受所有出站电子邮件但不将其发送出去?要么它只能记录这些邮件以便稍后阅读,或者更好的是,如果可以将其配置为将所有出站邮件发送给预配置的收件人(无论电子邮件中指定了什么)。

我们致力于开发电子商务应用程序。我们的开发环境是 Ubuntu Desktop (11.10)。

我们在每个桌面上本地运行完整的应用程序堆栈 - Web 服务器、应用程序服务器、数据库等。

当某些事件发生时,我们的应用程序会发送电子邮件。

我们实际上不希望将电子邮件发送给预期的收件人,因为这不是来自生产环境。

我们希望应用程序认为电子邮件发送已成功。

我们希望事后看到发出的电子邮件。

注意,我们使用的是 Ubuntu。如果不是 sendmail,那么可能是其他邮件服务器?

答案1

您可以通过修改规则集 0 在 sendmail 中执行此操作。编辑您的/etc/mail/sendmail.mc包括(底部):

LOCAL_RULE_0 
R$* < @ $=w . > $*       $#local $: $1
R$* < @ $* . > $*        $#local $: user

规则集 0 为每个收件人选择一个投递代理。第一行检查收件人是否是本地用户。如果收件人是本地用户,则电子邮件地址的右侧包含在类 $=w 中,则收件人被视为本地人,检查停止。如果不包括在内,则邮件将投递给本地用户用户(您可以将其更改为您喜欢的任何系统用户)。

如果你想丢弃而不是交付给用户将第二行更改为:

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

在哪里位桶是定义在/etc/mail/别名

bit-bucket: /dev/null

newaliases编辑后不要忘记运行/etc/mail/别名文件。注意:您不能使用$#丢弃在规则集 0 中

不要复制粘贴上述代码片段。规则的左侧和右侧以制表符分隔,而不是空格。因此最好自己输入。

编辑后发送邮件你必须生产发送邮件配置文件然后重新启动 sendmail 守护进程。在 Debian 系统上,通过运行 来完成sendmailconfig

答案2

如果“预期收件人”数量可数,则使用别名或 virtusertable 拦截消息并在本地传递

相关内容