是否可以将 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 拦截消息并在本地传递